Skip to content

Commit

Permalink
Plugin Mikrotik. First version
Browse files Browse the repository at this point in the history
  • Loading branch information
Serge Wagener committed Nov 2, 2023
1 parent 6d778a5 commit 80c3d0b
Show file tree
Hide file tree
Showing 9 changed files with 1,301 additions and 0 deletions.
380 changes: 380 additions & 0 deletions mikrotik/__init__.py

Large diffs are not rendered by default.

23 changes: 23 additions & 0 deletions mikrotik/locale.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# translations for the web interface
plugin_translations:
# Translations for the plugin specially for the web interface
'Port list': {'en': '=', 'de': 'Port Liste', 'fr': 'Liste des ports'}

'Default name': {'en': '=', 'de': 'Standardname', 'fr': 'Nom par défaut'}
'Comment': {'en': '=', 'de': 'Kommentar', 'fr': 'Commentaire'}
'Speed': {'en': '=', 'de': 'Geschwindigkeit', 'fr': 'Vitesse'}
'Up': {'en': '=', 'de': 'Benutzt', 'fr': 'Utilisé'}
'Enabled': {'en': '=', 'de': 'Aktiviert', 'fr': 'Activé'}

'POE Enabled': {'en': '=', 'de': 'POE aktiviert', 'fr': 'POE activé'}
'Identity': {'en': '=', 'de': 'Identität', 'fr': 'Identité'}
'API username': {'en': '=', 'de': 'API Benutzername', 'fr': "Nom de l'utilisateur API"}
'Model': {'en': '=', 'de': 'Modell', 'fr': 'Modèle'}
'Serial number': {'en': '=', 'de': 'Seriennummer', 'fr': 'Numéro de série'}
'RouterOS version': {'en': '=', 'de': 'RouterOS Version', 'fr': 'Version de RouterOS'}

# Alternative format for translations of longer texts:
'Hier kommt der Inhalt des Webinterfaces hin.':
de: '='
fr: "Voici viendra le contenue de l'interface web"
en: 'Here goes the content of the web interface.'
175 changes: 175 additions & 0 deletions mikrotik/plugin.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,175 @@
# Metadata for the plugin
plugin:
# Global plugin attributes
type: interface
description:
de: "Mikrotik RouterOS Switch management"
en: "Mikrotik RouterOS switch management"
fr: "Gestion de commutateur Mikrotik basé sur RouterOS"
maintainer: Foxi352
state: develop # change to ready when done with development
keywords: infrastructure network
version: 1.0.0
sh_minversion: 1.9
multi_instance: true
restartable: true
classname: MikrotikPlugin

parameters:
# Definition of parameters to be configured in etc/plugin.yaml (enter 'parameters: NONE', if section should be empty)

hostname:
type: str
mandatory: true
description:
de: "Hostname oder IP des Switches"
en: "Switch hostname or ip"
fr: "Nom d'hôte ou adresse ip du commutateur"

port:
type: int
default: 8729
description:
de: "API Port des Switches"
en: "Switch api port number"
fr: "Numéro de port de l'api du commutateur"

username:
type: str
default: "admin"
description:
de: "API Benutzername"
en: "API username"
fr: "Nom d'utilisateur de l'API"

password:
type: str
default: ""
description:
de: "API Password"
en: "API password"
fr: "Mot de passe de l'api"

cycle:
type: int
default: 15
description:
de: "Zeitlicher Abstand in Sekunden zwischen zwei Abfragen des Gerätes"
en: "Time in seconds between two queries of the device"
fr: "Temps en secondes entre deux requêtes de l'appareil"

item_attributes:
mikrotik_port:
type: str
description:
de: "Name des zu adressierenden Geräteanschlusses, Beispiel: ether1"
en: "Name of the device port to be addressed, example: ether1"
fr: "Nom du port de l'appareil à adresser, exemple : ether1"

mikrotik_parameter:
type: str
valid_list:
- "active"
- "enabled"
- "poe"
description:
de: "Parameter, auf den über den ausgewählten Anschluss zugegriffen werden soll"
en: "Parameter to be accessed on the selected port"
fr: "Paramètre à accéder sur le port sélectionné"

item_structs: NONE

plugin_functions:
get_port_status:
type: bool

description:
en: "Get actual port state. True = up, False = down"
de: "Aktuellen Port Status abfragen. True = in Betrieb, False = Aus"
fr: "Obtenir l'état actuel du port. True = Utilisé, False = Éteint"

parameters:
port:
type: str
description:
en: "Actual port name. If you renamed the switch port, use the new name you have it !"
de: "Aktueller Name des Anschlusses. Wenn Sie den Switchport umbenannt haben, verwenden Sie den neuen Namen, den Sie ihm gegeben haben!"
fr: "Nom actuel du port. Si vous avez renommé le port du commutateur, utilisez le nouveau nom que vous lui avez donné !"

get_port_enabled:
type: bool

description:
en: "Get port enabled state. True = enabled, False = disabled"
de: "Port Status abfragen. True = aktiviert, False = deaktiviert"
fr: "Obtenir l'état du port. True = activé, False = désactivé"

parameters:
port:
type: str
description:
en: "Actual port name. If you renamed the switch port, use the new name you have it !"
de: "Aktueller Name des Anschlusses. Wenn Sie den Switchport umbenannt haben, verwenden Sie den neuen Namen, den Sie ihm gegeben haben!"
fr: "Nom actuel du port. Si vous avez renommé le port du commutateur, utilisez le nouveau nom que vous lui avez donné !"

get_port_poe:
type: bool

description:
en: "Get port POE state. True = enabled, False = disabled"
de: "Port POE Status abfragen. True = aktiviert, False = deaktiviert"
fr: "Obtenir l'état de POE du port. True = activé, False = désactivé"

parameters:
port:
type: str
description:
en: "Actual port name. If you renamed the switch port, use the new name you have it !"
de: "Aktueller Name des Anschlusses. Wenn Sie den Switchport umbenannt haben, verwenden Sie den neuen Namen, den Sie ihm gegeben haben!"
fr: "Nom actuel du port. Si vous avez renommé le port du commutateur, utilisez le nouveau nom que vous lui avez donné !"

set_port_enabled:
type: bool

description:
en: "Enable or disable specific port"
de: "Anschluss aktivieren oder deaktivieren"
fr: "Activer ou désactiver un port spécifique"

parameters:
port:
type: str
description:
en: "Actual port name. If you renamed the switch port, use the new name you have it !"
de: "Aktueller Name des Anschlusses. Wenn Sie den Switchport umbenannt haben, verwenden Sie den neuen Namen, den Sie ihm gegeben haben!"
fr: "Nom actuel du port. Si vous avez renommé le port du commutateur, utilisez le nouveau nom que vous lui avez donné !"
state:
type: bool
description:
en: "Wanted port enabled state (true = enabled, false = disabled)"
de: "Gewünschter Aktivierungsstatus (true = aktiviert, false = deaktiviert)"
fr: "État d'activation souhaité (true = activé, false = désactivé)"

set_port_poe:
type: bool

description:
en: "Set poe output for specific port"
de: "Poe Ausgabe für einen bestimmten Anschluss einstellen"
fr: "Définir la sortie poe pour un port spécifique"

parameters:
port:
type: str
description:
en: "Actual port name. If you renamed the switch port, use the new name you have it !"
de: "Aktueller Name des Anschlusses. Wenn Sie den Switchport umbenannt haben, verwenden Sie den neuen Namen, den Sie ihm gegeben haben!"
fr: "Nom actuel du port. Si vous avez renommé le port du commutateur, utilisez le nouveau nom que vous lui avez donné !"
state:
type: bool
description:
en: "Wanted POE state (true = auto-on, false = off)"
de: "Gewünschter POE-Status (true = auto-on, false = off)"
fr: "État POE souhaité (true = auto-on, false = off)"

logic_parameters: NONE
1 change: 1 addition & 0 deletions mikrotik/requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
RouterOS-7-api
98 changes: 98 additions & 0 deletions mikrotik/user_doc.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
.. index:: Plugins; mikrotik
.. index:: mikrotik

========
mikrotik
========

Hier sollte eine allgemeine Beschreibung stehen, wozu das Plugin gut ist (was es tut).

.. image:: webif/static/img/plugin_logo.png
:alt: plugin logo
:width: 300px
:height: 300px
:scale: 50 %
:align: left


Anforderungen
=============

Anforderungen des Plugins auflisten. Werden spezielle Soft- oder Hardwarekomponenten benötigt?


Notwendige Software
-------------------

* die
* benötigte
* Software
* auflisten

Dies beinhaltet Python- und SmartHomeNG-Module

Unterstützte Geräte
-------------------

* die
* unterstütze
* Hardware
* auflisten

|
Konfiguration
=============

Die Plugin Parameter und die Informationen zur Item-spezifischen Konfiguration des Plugins sind
unter :doc:`/plugins_doc/config/sample` beschrieben.

plugin.yaml
-----------

Bitte die Dokumentation lesen, die aus den Metadaten der plugin.yaml erzeugt wurde.


items.yaml
----------

Bitte die Dokumentation lesen, die aus den Metadaten der plugin.yaml erzeugt wurde.


logic.yaml
----------

Bitte die Dokumentation lesen, die aus den Metadaten der plugin.yaml erzeugt wurde.


Funktionen
----------

Bitte die Dokumentation lesen, die aus den Metadaten der plugin.yaml erzeugt wurde.

|
Beispiele
=========

Hier können ausführlichere Beispiele und Anwendungsfälle beschrieben werden. (Sonst ist der Abschnitt zu löschen)

|
Web Interface
=============

Die Datei ``dev/sample_plugin/webif/templates/index.html`` sollte als Grundlage für Webinterfaces genutzt werden. Um Tabelleninhalte nach Spalten filtern und sortieren zu können, muss der entsprechende Code Block mit Referenz auf die relevante Table ID eingefügt werden (siehe Doku).

SmartHomeNG liefert eine Reihe Komponenten von Drittherstellern mit, die für die Gestaltung des Webinterfaces genutzt werden können. Erweiterungen dieser Komponenten usw. finden sich im Ordner ``/modules/http/webif/gstatic``.

Wenn das Plugin darüber hinaus noch Komponenten benötigt, werden diese im Ordner ``webif/static`` des Plugins abgelegt.

|
Version History
===============

In diesem Abschnitt kann die Versionshistorie dokumentiert werden, falls der Plugin Autor dieses möchte. Diese Abschnitt
ist optional.

Loading

0 comments on commit 80c3d0b

Please sign in to comment.