diff --git a/oxi/interfaces/models/quasar.py b/oxi/interfaces/models/quasar.py
new file mode 100644
index 0000000..f01a005
--- /dev/null
+++ b/oxi/interfaces/models/quasar.py
@@ -0,0 +1,21 @@
+from oxi.interfaces import BaseDevice, register_parser
+
+
+@register_parser(["quasar", "qos"])
+class Quasar(BaseDevice):
+ template = "quasar.ttp"
+
+ def interfaces(self) -> list[dict]:
+ inter = self.raw["interfaces"]
+ # test = self.raw["mass"]
+ print(inter)
+ # print(test)
+ return inter
+
+
+if __name__ == "__main__":
+ with open("./test7.txt") as file:
+ data = file.read()
+ quasar = Quasar(data)
+ qt = quasar.parse()
+ print(qt)
diff --git a/oxi/interfaces/models/templates/quasar.ttp b/oxi/interfaces/models/templates/quasar.ttp
new file mode 100644
index 0000000..45ded7a
--- /dev/null
+++ b/oxi/interfaces/models/templates/quasar.ttp
@@ -0,0 +1,61 @@
+
+Базовый шаблон для нового устройства. Скопируйте этот файл, переименуйте
+в <vendor>.ttp и заполните группы под формат конфигурации вашего устройства.
+
+Обязательные группы: system, interfaces.
+Опциональная группа: vlans — добавляйте только если устройство поддерживает VLAN.
+
+--- Группа system ---
+Должна возвращать одиночный словарь с полями:
+ model (str) — модель устройства
+ serial_number (str) — серийный номер
+ version (str) — версия прошивки
+
+--- Группа interfaces ---
+Должна возвращать список словарей. Каждый элемент:
+ interface (str) — имя интерфейса (alias поля name)
+ ip_address (str|None) — IPv4-адрес
+ mask (int|None) — длина префикса (напр. 24)
+ description (str|None) — описание интерфейса
+
+ Если устройство возвращает маску в виде 255.255.255.0, конвертируйте
+ её в prefix length в методе interfaces() класса устройства.
+
+--- Группа vlans ---
+Должна возвращать список словарей. Каждый элемент:
+ id (int) — номер VLAN (alias поля vlan_id)
+ description (str|None) — название VLAN (alias поля name)
+
+--- Полезные модификаторы TTP ---
+ {{ field | ORPHRASE }} — одно слово или фраза до конца строки
+ {{ field | _start_ }} — начало новой записи группы
+ {{ field | strip('"') }} — убрать кавычки
+ {{ field | replace("yes","True") }} — замена подстроки
+ {{ field | exclude("pattern") }} — пропустить строку при совпадении
+ {{ ignore }} — захватить и выбросить значение
+ {{ ignore('.*') }} — выбросить всё до конца строки
+
+Подробнее: docs/templates.md
+
+
+default_system = {
+ "model": "",
+ "serial_number": "",
+ "version": ""
+}
+
+
+
+# Engine {{ version }}
+# Product Name {{ model }}
+# Product Serial Number {{ serial_number }}
+
+
+
+{{ ignore("\s*") }}config {{ interface }} ipv4 address {{ ip_address }}/{{ mask }} gateway {{ gateway }} {{ ignore }}
+
+
+
+{{ ignore("\s*") }}config interface {{ interface | _start_ }} fec none mode force-up enable
+{{ ignore("\s*") }}config interface {{ interface | _start_ }} description {{ description | ORPHRASE | strip('"')}}
+
\ No newline at end of file