- Mitglied seit
- 21 Jan 2006
- Beiträge
- 1,314
- Punkte für Reaktionen
- 86
- Punkte
- 48
FBoxAPI
Dieses Projekt ist ein .NET Bibliothek für die TR-064 Schnittstelle der AVM Fritz!Box. Das Projekt ist eine Ausgliederung aus dem Addin für Microsoft Outlook: Fritz!Box Telefon-dingsbums V5 (github). Wie vielleicht einige wissen, hatte ich diese Schnittstelle bereits vor langer Zeit begonnen. Irgendwann hatte ich die Idee, diese Schnittstelle als eigenständiges Projekt auszugliedern. Es hat eine ganze Weile gedauert, bis ich den vorhandenen Code soweit angepasst hatte. Noch viel länger hat es gedauert, bis alle Services und Actions zusammengestellt waren.
Ich möchte noch ein paar allgemeine Worte verlieren:
- Als Basis dient die Dokumentation vom AVM: Apps / TR-064.
- Ich verwende selbst nur einen Bruchteil der verfügbaren Actions. Da die Services und Actions aus den vorliegenden Dokumentationen per Copy&Paste zusammengestellt wurden, kann ich Fehler nicht ausschließen. Es ist momentan illusorisch, das alles durchgetestet ist. Ich habe mir große Mühe gegeben und versucht potentielle Fehlerquellen gleich von vornherein auszuschließen. Falls jemand etwas finden, so bitte ich um eine Fehlermeldung.
- Die Bibliothek ist mit vb.net geschrieben. Mir ist bewusst, dass diese Sprache nicht sonderlich beliebt ist. So mancher Wunsch nach einer C#-Version wurde schon geäußert. Grundsätzlich bin ich dem nicht abgeneigt. Jedoch bin ich mit C# nicht so vertraut, so dass ich dies momentan vor mir her schiebe. Gerne können wir hierzu uns austauschen. Vielleicht gibt es sogar jemanden, der unterstützen möchte.
- Datentypen: Einige Actions liefern teils sehr viele Parameter (oft bei
GetInfo
) zurück. Damit nicht für jeden Parameter eine einzelne Variable definiert werden muss, werden diese Parameter in "Container"-Klassen zurückgegeben.
Verwendung
InitialisierungDie Verwendung ist recht einfach angedacht. Es muss eine neue
FBoxAPI.FritzBoxTR64
-Klasse instanziiert werden. Hierfür sind zwei Parameter erforderlich: IP-Adresse der Fritz!Box und die Anmeldeinformationen. Nutzername und Passwort werden in einer neuen Instanz der System.Net.NetworkCredential
-Klasse hinterlegt und übergeben. Es gibt mehrere Möglichkeiten die Schnittstelle zu initiieren.- Übergabe der benötigten Daten als Einzel-Parameter
- Dimensionierung einer
FBoxAPI.Settings
-Klasse, die alle notwendigen Daten enthält
Code:
Private Function GetSessionID() As String
' Bereitstellung der Variable(n), in die das Ergebnis gesetzt werden sollen.
Dim SessionID As String = "0000000000000000"
' Erstelle Anmeldeinformationen für die Fritz!Box bereit
Dim Nutzername As String = "Fritz"
Dim Passwort As String = "Box"
' Anmeldeinformationen können Nothing sein, falls nur Actions ausgeführt werden, die keine Anmeldung erfordern.
Dim Anmeldeinformationen As New Net.NetworkCredential(Nutzername, Passwort)
' Starte die TR-064 Schnittstelle zur Fritz!Box
Using FBoxTR064 As New FBoxAPI.FritzBoxTR64("192.168.178.1", Anmeldeinformationen)
' Auswahl des Service
With FBoxTR064.Deviceconfig
' Action ausführen
If .GetSessionID(SessionID) Then
' Alles OK: SessionID enthält eine gültige SessionID
Else
' Ein Fehler ist aufgetreten
End If
End With
End Using
Return SessionID
End Function
Code:
FBoxTR064 = New FBoxAPI.FritzBoxTR64(New FBoxAPI.Settings With {.Anmeldeinformationen = New Net.NetworkCredential(Nutzername, Passwort),
.FritzBoxAdresse = "192.168.178.1",
.FBAPIConnector = New FBoxAPIConnector,
.AuraService = True})
AuraService
der FBoxAPI.Settings
-Klasse möglich.Logging
Mit Hilfe des LogWriter-Schnittstelle kann eine eigene Routine verknüpft werden, die das Logging übernimmt. Die Schnittstelle gibt folgende relevante Daten in der Containerklasse
FBoxAPI.LogMessage
für das Logging aus:- Level (
System.Enum
) für das LogLevel (Trace bis Fatal) - Message (
System.String
) - Exception (
System.Exception
) - CallerMemberName (
System.String
) - CallerFilePath (
System.String
) - CallerClassName (
System.String
) - CallerLineNumber (
System.String
)
Beispiel für NLog:
Code:
Imports FBoxAPI
Friend Class FBoxAPILog
Implements ILogWriter
Private Property NLogger As Logger = LogManager.GetCurrentClassLogger
Public Sub LogMessage(MessageContainer As LogMessage) Implements ILogWriter.LogMessage
With MessageContainer
Dim LogEvent As New LogEventInfo(NLog.LogLevel.FromOrdinal(.Level),
.CallerClassName,
.Message)
LogEvent.SetCallerInfo(.CallerClassName, .CallerMemberName, .CallerFilePath, .CallerLineNumber)
NLogger.Log(LogEvent)
End With
End Sub
Public Sub Signal2FAuthentication(Methods As String) Implements ILogWriter.Signal2FAuthentication
' ...
End Sub
End Class
Zwei-Faktor-Authentifizierung
Die Nutzung der Zwei-Faktor-Authentifizierung kann ab Fritz!OS 7.39 nicht mehr deaktiviert werden. Das Setzen verschiedener Einstellungen bedarf nun einer zusätzlichen Bestätigung durch den Nutzer. Der Ablauf des Authentifizierungsprozesses ist in X_AVM-DE_Auth beschrieben. Sobald für eine Action eine eine Zwei-Faktor-Authentifizierung erforderlich ist, signalisiert diese API dies über die
FBoxAPIConnector
-Schnittstelle, welche hierfür mit der Routine Signal2FAuthentication
ergänzt wurde. Der Parameter Methods
enhält die erlaubten Methoden, z. B. button,dtmf;*14048
. Sobald der Nutzer die Authentifizierung durchgeführt hat, wird die ursprüngliche Action erneut ausgeführt. Die Ergebnisse des Authentifizierungsprozesses werden über die LogMessage
ausgegeben.- Über die Eigenschaft
AbortAuthentication
kann der API signalisiert werden, dass derAuthentifizierungsprozess abgebrochen werden soll. - Über die Eigenschaft
AuthenticationSuccesful
signalisiert die API, dass der Authentifizierungsprozess abgeschlossen wurde.
Code:
Imports FBoxAPI
Friend Class FBoxAPILog
Implements IFBoxAPIConnector
Public Sub LogMessage(MessageContainer As LogMessage) Implements IFBoxAPIConnector.LogMessage
' ...
End Sub
Public Property AbortAuthentication As Boolean Implements IFBoxAPIConnector.AbortAuthentication
Public Property AuthenticationSuccesful As Boolean Implements IFBoxAPIConnector.AuthenticationSuccesful
Public Sub Signal2FAuthentication(Methods As String) Implements IFBoxAPIConnector.Signal2FAuthentication
MsgBox(String.Format($"Zwei-Faktor-Authentifizierung: {Methods}"), MsgBoxStyle.Information, "Zwei-Faktor-Authentifizierung")
End Sub
End Class
- AURA (Dokumentation von @Black Senator)
- DeviceConfig
- DeviceInfo
- Hosts
- LANConfigSecurity
- LANEthernetInterfaceConfig
- LANHostConfigManagement
- Layer3Forwarding
- ManagementService
- Time
- UserInterface
- WANCommonInterfaceConfig
- WANEthernetLinkConfig
- WANDSLInterfaceConfig
- WANDSLLinkConfig
- WANIPConnection
- WANPPPConnection
- WLANConfiguration
- X_AVM-DE_AppSetup (Hinweis: Alle Argumente sind in der Dokumentation falsch angegeben. Der übliche Präfix
New
wurde nicht dargestellt.) - X_AVM-DE_Auth
- X_AVM-DE_Dect
- X_AVM-DE_Filelinks
- X_AVM-DE_HostFilter
- X_AVM-DE_Media
- X_AVM-DE_MyFritz
- X_AVM-DE_OnTel
- X_AVM-DE_RemoteAccess
- X_AVM-DE_Speedtest
- X_AVM-DE_Storage
- X_AVM-DE_TAM
- X_AVM-DE_UPnP
- X_AVM-DE_USPController
- X_AVM-DE_WANMobileConnection
- X_AVM-DE_WebDAVClient
- X_HomeAuto
- X_HomePlug
- X_VoIP
Hinweise zur AVM Dokumentation
- In der Dokumentation X_AVM-DE_AppSetup der Parameter
MyFritzDynDNSEnabled
der ActionGetAppRemoteInfo
aufgelistet. Dieser Parameter lautet aberNewMyFritzEnabled
.
--- Soweit erstmal. Dieser Beitrag wird sicher noch mehrfach überarbeitet.
GitHub - Kruemelino/FBoxAPI: This project is a .NET library for the TR-064 interface of the AVM Fritz!Box.
This project is a .NET library for the TR-064 interface of the AVM Fritz!Box. - Kruemelino/FBoxAPI
github.com
FBoxAPI 0.1.42
This project is a .NET library for the TR-064 and AHA interfaces of the AVM Fritz!Box.
www.nuget.org
Zuletzt bearbeitet: