Golang Docs config
Dieses Modul ist verantwortlich für das speichern und verarbeiten von Nutzer Konfiguration. Via dem Konfigurationsmodul, andere Module können Einstellungen registrieren oder sie können den Wert einer Einstllungen erhalten und ihr entsprechend reagieren.
Alle Globalen Einstellungen werden in der config.json
Datei gespeichert lokaliesiert in dem root Daten Verzeichnis. Die config.json
Datei wird beim starten gelesen und bei Änderungen beschrieben.
Änderungen zu Einstellungen treten direkt in Kraft wenn nichts anderes notiert ist.
Jedes Konfigurations Gegenstand ist Kategorisiert via zwei Attributen. Das erlaubt dem Portmaster UI einfach Einstellungen zu filtern, basierend auf Nutzer Präferenz. Ein nutzer kann fortgeschrittene Einstellungen als Vereinfachung verstecken oder sie für mehr Kontrolle anzeigen lassen. Diese 2 Attribute sind:
Zeigt die technische Komplexität einer Einstellung an. Mögliche Werte sind:
User
): Eine leichte Einstellung die leicht verstanden werden kann.Expert
): Eine komplexere Einstellung die mehr Kontrolle bietet, aber nicht ohne technsiches Verständnis verstanden werden kann.Developer
): Eine komplexe Einstellung die nur für Entwicklung, testen oder diagnose genutzt werden sollte. Diese Einstellung könnte Dinge kaputt machen.Merke: Wenn komplexe einstellngen versteckt sind, haben ihre konfigurationen noch immer einen Effekt.
Merke: im Code wird der "UI Modus" ExpertiseLevel
genannt
Zeigt die Stabilität einer Einstellung, beziehungsweise die stabilität einer Funktion/Funktionalität kontrolliert von einer Einstellung. Die möglichen Werte sind:
Merke: Wenn du von einer eher instabilen Funktion zu einer weniger Experimentellen Funktions Modus wechselst, wird das Portmaster UI die Beta/Experimentellen Funktionen verstecken und der Portmaster CoreService wird alle versteckten Regeln ignorieren und stattessen deren Standards verwenden. Nur wenn du wieder in Beta/Experimentell wechselst werden deine definierten Einstellungen wieder einen Effekt haben.
Merke: im code heißt die “Feature Stability” ReleaseLevel
.
Merke: Manche Experimentellen Einstellungen sind als Standard eingeschalten da das Ausschalten von ihnen das Experiment ist, diese Einstllungen existieren für das Testen und diagnostizieren.
Merke: Konfigurationen können von App Einstellungen überschrieben werden.
Golang Docs status
Das Status Modul behält die derzeitige Netzwerk Bewertung im Auge. Es stellt außerdem Information über das Netzwerk Umfeld zur verfügung welche von dem Network Environment module stammen, wie den derzeitigen online Status und captive Portale.
Da das Status Modul immer über die derzeitige Netzwerk Bewertung bescheid weiß, hilft es andren Modulen Konfigurationen zu Interpretieren, da diese selsbt nicht immer wissen wie sie ensprechend einer Einstellung agieren müssen.
Als Beispiel: Wenn die Einstellung zu "Block Internet Access" zu "Danger" gesetzt ist, weiß ein anderes Modul über den Wert "Danger" bescheid, weiß aber nicht ob die derzeitige Verbindung blockiert oder nicht blockiert werden sollte. Sie können diese Problem lösen indem sie das Netzerk Status Modul fragen, welches mit der nötigen Handlung antworted.
Wenn "Block Internet Acces" zu "Danger" gesetzt ist , wird das Status Modul wie folgt antworten:
False
, blockiere nichtFalse
, blockiere nichtTrue
, blockiere Internet ZugriffGolang Docs netenv
Das Netzwerk Umgebungs Modul behält die Umgebung des Netzwerks im Auge.
Zuerst überwacht es ob das Gerät online ist. Es erhält hinwweise von anderen Modulen ob etwas ein Fehler ist und überprüft dann die Verbindung mithilfe einer Test-Domäne. In diesem Prozess erkennt es auch ob ees ein captive portal gibt das HTTP Anfragen abfängt und informiert den Nutzer.
Es bietet auch Information über den derzeitigen Gateway/Router und Namenserver welche auf dem System konfiguriert sind. Diese könnten entweder von DHCP geboten werden oder manuell konfiguriert werden, welche nicht zu unterscheiden sind von dem Portmaster Core Service
Golang Docs Netzwerk Netzwerk/Packet Netzwerk/Status
Dieses Modul verwaltet information über Netzwerk Verbindungen überwacht von dem Portmaster Core Service und bietet Zugriff auf den System Netzwerk Status Tabellen und kann Netzwerkpackete analysieren.
Zusätzlich zu dem bereitstellen von einer Menge von "glue code" für andere Module, ist es auch verantwortlich für das behandeln von Verbindungs inspektion, bei der Module mehr Information über Netzwerk Packete erhalten können um sich bei dem machen von Entscheidungen helfen zu lassen.
Die Netzwerk Status Information wird via Virtuellen Datenbanken ausgesetzt.
Golang Docs firewall/Abhören
Das Abhör Modul variiert je nach den verschiedene Platformen (Betriebssysteme). Es hat einen einzigen Sinn: das Weiterleiten von beobachteter Netzwerk Packete zu der Firewall und Entscheidungen zurück zu der System Integrations Schicht zu leiten.
Golang Docs Prozess
Das Prozess Modul ist verantwortlich dafür Netzwerk Packete zu Prozessen zuzuschreiben. Sowie dem Sammeln von Prozess information und der instandhatlung deren Internen Status
Golang Docs Profil
Merke: Im Code werden die App Einstellungen Profiles gennant.
Das App Einstellungs Modul ist verantwortlich für das erstellen und verwalten von Profilen. Es ist der Ort an dem andere Module über Einstellungen fragen.
Eine Profil ist eine Sammlung von Einstellungen verbunden zu spezifischen Applikationen oder Prozessen. Sie werden automaitsch erstellt wenn eine App/Prozess zum ersten mal im Netzwerk gesehen wird. Diese Profile werden in local
erstellt und sind derzeit zu einem Pfad oder Binärdatei gebunden. Zusätzlich, wird Prozess Information wie der Menschliche Prozess Name gesammelt und zu dem Profil hinzugefügt
Das App Einstellungs Modul ist der Aufbewahrungsort all dieser Profile. Daher ist es der Ort an dem andere Module über Einstellungen fragen.
Ein Beispiel könnte sein: "Ist es dem Prozess XYZ erlaubt sich mit dem Internet zu verbinden?". Nachdem die Abrage erhalten wurde, schaut sich das App Einstellung Modul das App Profil von XYZ und gibt den Wert für die Konfiguration wieder. Oder wenn kein Wert gesetzt ist, nimmt es stattdessen den Wert der Globalen Einstellungen.
Änderungen der Profile Treten direkt für alle neuen Verbindungen in Kraft, aber nicht für berreits aktzeptierte.
Profile überlagern mit Globale Einstellungen. Das erlaubt einer Applikation - oder eher ihrem Profil globale Einstellungen zu überschreiben. Aber Profile überlagern sich auch gegenseitig. Diese Struktur bietet volle Flexibilität für fortgeschrittenere Nutzun in der Zukunft.
Merke: Eine Einstellung für eine Applikation überschreibt normalerweise die globalen Einstellungen. Es gibt allerdings Einstellungen, die mit der globalen Einstellung gestapelt werden. Diese werden in dem UI makiert.
Golang Docs firewall
Die Firewall behandet den Entscheidungs Prozess der Netzwerk Pakete
Manche Speziele Verbindungen werden “fast-tracked” und werden nicht weiter verarbeitet, und werden auch nicht im Monitor angezeigt, diese sind:
Für alle anderen Packete, sucht der Portmaster Core Service nach internen verbindungen und weißt auf die Verbindung zu dem Prozess der die Verbindung initialisieren oder aktzeptieren will. Bis Jetzt wurde jedes Packet parallel verarbeitet, aber sobald die Verbindung gefunden wird, werden Packete von der Verbindung zu der sie gehören gereiht. Das erlaubt Portmaster Core Service Packete einer einzelnen Verbindung nacheinander zu betrachten.
jetzt wird das Packet und die Verbindung an den Privacy Filter übergeben.