This commit is contained in:
SebastianObi
2025-01-25 13:28:11 +01:00
parent 7803809d36
commit 1e9dfdd526
20 changed files with 0 additions and 5887 deletions

View File

@@ -32,12 +32,6 @@ This program executes any text received by message as a system command and retur
For more information, see the detailed [README.md](lxmf_cmd).
## lxmf_distribution_group
This program provides an email like distribution group for the "Communicator" app. Which is another project that is not part of this github. It will distribute incoming LXMF messages to multiple recipients.
For more information, see the detailed [README.md](lxmf_distribution_group).
## lxmf_distribution_group_extended
This program provides an email like distribution group. It will distribute incoming LXMF messages to multiple recipients. Since this program acts as a normal LXMF endpoint, all compatible chat applications can be used. In addition to simple messaging, there is a simple command-based user interface. Where all relevant actions for daily administration can be performed. The basic configuration is done in the configuration files. There are various options to adapt the entire behavior of the group to personal needs. This distribution group is much more than a standard email distribution group. It emulates advanced group functions with automatic notifications etc. Different user permissions can be defined. For each user type, the range of functions can be defined individually. The normal users have only small rights. While a moderator or admin can perform everything necessary by simple commands. Once the basic configuration is done, everything else can be done by LXMF messages as commands.
@@ -60,10 +54,6 @@ For more information, see the detailed [README.md](lxmf_echo).
For more information, see the detailed [README.md](lxmf_propagation).
## lxmf_provisioning
For more information, see the detailed [README.md](lxmf_provisioning).
## lxmf_terminal
This program provides a complete terminal session on the server. Any commands can be executed on the target device. The communication is done by single LXMF messages. This offers the advantage that simple terminal commands can be used by any LXMF capable application.

View File

@@ -33,12 +33,6 @@ Dieses Programm führt jeden per Nachricht empfangenen Text als Systembefehl aus
Weitere Informationen finden Sie in der ausführlichen [README.md](lxmf_cmd).
## lxmf_distribution_group
Dieses Programm bietet eine E-Mail-ähnliche Verteilergruppe für die "Communicator" app. Welches ein anderes Projekt ist, das nicht Teil dieses github ist. Es verteilt eingehende LXMF-Nachrichten an mehrere Empfänger.
Weitere Informationen finden Sie in der ausführlichen [README.md](lxmf_distribution_group).
## lxmf_distribution_group_extended
Dieses Programm bietet eine E-Mail-ähnliche Verteilergruppe. Es verteilt eingehende LXMF-Nachrichten an mehrere Empfänger. Da dieses Programm wie ein normaler LXMF-Endpunkt agiert, können alle kompatiblen Chat-Anwendungen verwendet werden. Zusätzlich zum einfachen Messaging gibt es eine einfache kommandobasierte Benutzeroberfläche. Hier können alle relevanten Aktionen für die tägliche Verwaltung durchgeführt werden. Die Grundkonfiguration wird in den Konfigurationsdateien vorgenommen. Es gibt verschiedene Optionen, um das gesamte Verhalten der Gruppe an die eigenen Bedürfnisse anzupassen. Diese Verteilergruppe ist viel mehr als eine Standard-E-Mail-Verteilergruppe. Sie emuliert erweiterte Gruppenfunktionen mit automatischen Benachrichtigungen usw. Es können verschiedene Benutzerberechtigungen definiert werden. Für jeden Benutzertyp kann der Funktionsumfang individuell festgelegt werden. Die normalen Benutzer haben nur geringe Rechte. Während ein Moderator oder Admin mit einfachen Befehlen alles Notwendige erledigen kann. Ist die Grundkonfiguration einmal erledigt, kann alles Weitere über LXMF-Nachrichten als Befehle erfolgen.
@@ -61,10 +55,6 @@ Weitere Informationen finden Sie in der ausführlichen [README.md](lxmf_echo).
Weitere Informationen finden Sie in der ausführlichen [README.md](lxmf_propagation).
## lxmf_provisioning
Weitere Informationen finden Sie in der ausführlichen [README.md](lxmf_provisioning).
## lxmf_terminal
Dieses Programm bietet eine vollständige Terminalsitzung auf dem Server. Es können beliebige Befehle auf dem Zielgerät ausgeführt werden. Die Kommunikation erfolgt über einzelne LXMF-Nachrichten. Dies bietet den Vorteil, dass einfache Terminalbefehle von jeder LXMF-fähigen Anwendung genutzt werden können.

View File

View File

@@ -1,83 +0,0 @@
#### Main program settings ####
[main]
fields_announce = True
fields_message = True
#### LXMF connection settings ####
[lxmf]
destination_type_conv = 6
display_name = Test Channel
propagation_node_auto = True
try_propagation_on_fail = Yes
announce_startup = Yes
announce_periodic = Yes
announce_periodic_interval = 30 #Minutes
sync_startup = Yes
sync_periodic = Yes
sync_periodic_interval = 5 #Minutes
sync_limit = 0
#### Telemetry settings ####
[telemetry]
location_enabled = False
location_lat = 0
location_lon = 0
state_enabled = False
state_data = 0
#### Message settings ####
[message]
deny_fields = 0xB2
fields_remove = 0x02,0x03,0x04,0x09,0xA2,0xA8,0xAE,0xB8,0xB9,0xBA
fields_remove_anonymous = 0x02,0x03,0x04,0x09,0xA2,0xA8,0xAC,0xAE,0xB5,0xB8,0xB9,0xBA
#### User rights assignment ####
[rights]
admin = receive,send,anonymous,join
mod = receive,send,anonymous,join
user = receive,join
guest = receive,join
wait = join
#### User cmd assignment ####
[cmd]
admin = update,update_all,leave,announce,sync
mod = update,update_all,leave
user = leave
guest = leave
wait = leave
[cmd_menu]
admin = invite
mod = invite
user = invite
guest =
wait =
[cmd_src]
admin = kick,block,unblock,right_admin,right_mod,right_user,right_guest
mod = kick,block,unblock,right_user,right_guest
user =
guest =
wait =
#### User config assignment ####
[config]
admin = tx_enabled=True,group_enabled=True
mod = tx_enabled=True,group_enabled=True
user =
guest =
wait =

View File

@@ -1,39 +0,0 @@
[main]
enabled = True
auto_add_user_announce = False
auto_add_user_announce_hop_min = 0
auto_add_user_announce_hop_max = 0
auto_add_user_message = True
auto_add_user_type = user
auto_add_cluster = True
auto_add_router = True
invite_user = True
invite_user_type = user
allow_user = True
allow_user_type = user
deny_user = True
deny_user_type = block_wait
description = This channel is for a first test of functionality. # Group description
welcome = Welcome. # Welcome message
[topics]
[admin]
[mod]
[user]
[guest]
[wait]
[block_admin]
[block_mod]
[block_user]
[block_guest]
[block_wait]

View File

@@ -1,83 +0,0 @@
#### Main program settings ####
[main]
fields_announce = True
fields_message = True
#### LXMF connection settings ####
[lxmf]
destination_type_conv = 4
display_name = Test Group
propagation_node_auto = True
try_propagation_on_fail = Yes
announce_startup = Yes
announce_periodic = Yes
announce_periodic_interval = 30 #Minutes
sync_startup = Yes
sync_periodic = Yes
sync_periodic_interval = 5 #Minutes
sync_limit = 0
#### Telemetry settings ####
[telemetry]
location_enabled = False
location_lat = 0
location_lon = 0
state_enabled = False
state_data = 0
#### Message settings ####
[message]
deny_fields = 0xB2
fields_remove = 0x09,0xA2,0xBA
fields_remove_anonymous = 0x02,0x03,0x04,0x09,0xA2,0xA8,0xAC,0xAE,0xB5,0xB8,0xB9,0xBA
#### User rights assignment ####
[rights]
admin = receive,send,receive_join,receive_leave,receive_invite,receive_kick,receive_block,receive_unblock,join
mod = receive,send,receive_join,receive_leave,receive_invite,receive_kick,receive_block,receive_unblock,join
user = receive,send,receive_join,receive_leave,receive_invite,receive_kick,receive_block,receive_unblock,join
guest = receive,join
wait = join
#### User cmd assignment ####
[cmd]
admin = update,update_all,leave,announce,sync
mod = update,update_all,leave
user = leave
guest = leave
wait = leave
[cmd_menu]
admin = invite
mod = invite
user = invite
guest =
wait =
[cmd_src]
admin = kick,block,unblock,right_admin,right_mod,right_user,right_guest
mod = kick,block,unblock,right_user,right_guest
user =
guest =
wait =
#### User config assignment ####
[config]
admin =
mod =
user =
guest =
wait =

View File

@@ -1,39 +0,0 @@
[main]
enabled = True
auto_add_user_announce = False
auto_add_user_announce_hop_min = 0
auto_add_user_announce_hop_max = 0
auto_add_user_message = True
auto_add_user_type = user
auto_add_cluster = True
auto_add_router = True
invite_user = True
invite_user_type = user
allow_user = True
allow_user_type = user
deny_user = True
deny_user_type = block_wait
description = This group is for a first test of functionality. # Group description
welcome = Welcome. # Welcome message
[topics]
[admin]
[mod]
[user]
[guest]
[wait]
[block_admin]
[block_mod]
[block_user]
[block_guest]
[block_wait]

View File

@@ -1,4 +0,0 @@
# Examples
This folder contains sample configurations for different application environments or scenarios.
Copy these files accordingly to the appropriate configuration folder. Then customize the content of these files to your needs.

View File

@@ -1,305 +0,0 @@
# lxmf_distribution_group
This program provides an email like distribution group for the "Communicator" app. Which is another project that is not part of this github. It will distribute incoming LXMF messages to multiple recipients.
For more information, see the configuration options (at the end of the program files). Everything else is briefly documented there. After the first start this configuration will be created as default config in the corresponding file.
### Features
- Compatible with (Communicator which is another project that is not part of this github)
- Server/Node based message routing and processing
- Direct or propagated message delivery (receive/send)
- Simple group functions (As in other messenger apps)
- User authorization and permissions
- Different user types with different permissions
- Automatic or manual group joining
- Easy configuration within readable config files
- Multiple language support (English & German are predifined)
## Examples of use
### Local self-sufficient group
In a small group of people, this group software can be hosted on a centrally located node. This then allows users to communicate with each other via this group.
### Multiple local self-sufficient group
On the same node/server several groups can be operated independently of each other. How this works is described below in the installation instructions.
### General info how the messages are transported
All messages between client<->group-server are transported as single 1:1 messages in the LXMF/Reticulum network.
Accordingly, encryption takes place between these end points.
If a direct delivery of the message does not work, it is sent to a propagation node. There it is stored temporarily and can be retrieved by the client later.
There is no central server for communication between the individual groups. This offers the advantage that all groups work autonomously. A failure of a group only affects this one local group.
## Current Status
It should currently be considered beta software and still work in progress.
All core features are implemented and functioning, but additions will probably occur as real-world use is explored.
There may be errors or the compatibility after an update is no longer guaranteed.
The full documentation is not yet available. Due to lack of time I can also not say when this will be further processed.
## Development Roadmap
- Planned, but not yet scheduled
- Complete documentation
## Screenshots / Usage examples
<img src="../docs/screenshots/lxmf_distribution_group_01.png" width="200px"><img src="../docs/screenshots/lxmf_distribution_group_02.png" width="200px"><img src="../docs/screenshots/lxmf_distribution_group_03.png" width="200px"><img src="../docs/screenshots/lxmf_distribution_group_04.png" width="200px"><img src="../docs/screenshots/lxmf_distribution_group_05.png" width="200px"><img src="../docs/screenshots/lxmf_distribution_group_06.png" width="200px"><img src="../docs/screenshots/lxmf_distribution_group_07.png" width="200px"><img src="../docs/screenshots/lxmf_distribution_group_08.png" width="200px">
## Installation manual
### Install:
- Install all required prerequisites. (Default Reticulum installation. Only necessary if reticulum is not yet installed.)
```bash
apt update
apt upgrade
apt install python3-pip
pip install pip --upgrade
reboot
pip3 install rns
pip3 install pyserial netifaces
pip3 install lxmf
```
- Change the Reticulum configuration to suit your needs and use-case.
```bash
nano /.reticulum/config
```
- Download the [file](lxmf_distribution_group.py) from this repository.
```bash
wget https://raw.githubusercontent.com/SebastianObi/LXMF-Tools/main/lxmf_distribution_group/lxmf_distribution_group.py
```
- Make it executable with the following command
```bash
chmod +x lxmf_distribution_group.py
```
### Start:
- Start it
```bash
./lxmf_distribution_group.py
```
- After the first start edit the configuration file to suit your needs and use-case. The file location is displayed.
- Example minimal configuration (override of the default config `config.cfg`). These are the most relevant settings that need to be adjusted. All other settings are in `config.cfg`
```bash
nano /root/.lxmf_distribution_group/config.cfg.owr
```
```bash
# This is the user configuration file to override the default configuration file.
# All settings made here have precedence.
# This file can be used to clearly summarize all settings that deviate from the default.
# This also has the advantage that all changed settings can be kept when updating the program.
#### LXMF connection settings ####
[lxmf]
# The name will be visible to other peers
# on the network, and included in announces.
# It is also used in the group description/info.
display_name = Distribution Group
# Set propagation node automatically.
propagation_node_auto = True
# Try to deliver a message via the LXMF propagation network,
# if a direct delivery to the recipient is not possible.
try_propagation_on_fail = Yes
#### Telemetry settings ####
[telemetry]
location_enabled = False
location_lat = 0
location_lon = 0
state_enabled = False
state_data = 0
```
- Start it again. Finished!
```bash
./lxmf_distribution_group.py
```
### Run as a system service/deamon:
- Create a service file.
```bash
nano /etc/systemd/system/lxmf_distribution_group.service
```
- Copy and edit the following content to your own needs.
```bash
[Unit]
Description=lxmf_distribution_group
After=multi-user.target
[Service]
# ExecStartPre=/bin/sleep 10
Type=simple
Restart=always
RestartSec=3
User=root
Group=root
ExecStart=/root/lxmf_distribution_group.py
[Install]
WantedBy=multi-user.target
```
- Enable the service.
```bash
systemctl enable lxmf_distribution_group
```
- Start the service.
```bash
systemctl start lxmf_distribution_group
```
### Start/Stop service:
```bash
systemctl start lxmf_distribution_group
systemctl stop lxmf_distribution_group
```
### Enable/Disable service:
```bash
systemctl enable lxmf_distribution_group
systemctl disable lxmf_distribution_group
```
### Run several instances (To copy the same application):
- Run the program with a different configuration path.
```bash
./lxmf_distribution_group.py -p /root/.lxmf_distribution_group_2nd
./lxmf_distribution_group.py -p /root/.lxmf_distribution_group_3nd
```
- After the first start edit the configuration file to suit your needs and use-case. The file location is displayed.
### First usage:
- With a manual start via the console, the own group LXMF address is displayed:
```
[] ...............................................................................
[] LXMF - Address: <801f48d54bc71cb3e0886944832aaf8d>
[] ...............................................................................`
```
- This address is also annouced at startup in the default setting.
- If auto add user is active (default) you can simply send a first message via Sideband/NomadNet to this address. After that you are a member of the group and can use the functions.
- Alternatively, the users can also be entered manually in the `data.cfg` file. It is necessary to add an admin user here to use all commands via LXMF messages!
- Now the group can be used.
### Startup parameters:
```bash
usage: lxmf_distribution_group.py [-h] [-p PATH] [-pr PATH_RNS] [-pl PATH_LOG] [-l LOGLEVEL] [-s] [--exampleconfig] [--exampleconfigoverride] [--exampledata]
LXMF Distribution Group - Server-Side group functions for LXMF based apps
optional arguments:
-h, --help show this help message and exit
-p PATH, --path PATH Path to alternative config directory
-pr PATH_RNS, --path_rns PATH_RNS
Path to alternative Reticulum config directory
-pl PATH_LOG, --path_log PATH_LOG
Path to alternative log directory
-l LOGLEVEL, --loglevel LOGLEVEL
-s, --service Running as a service and should log to file
--exampleconfig Print verbose configuration example to stdout and exit
--exampleconfigoverride
Print verbose configuration example to stdout and exit
--exampledata Print verbose configuration example to stdout and exit
```
### Config/data files:
- config.cfg
This is the default config file.
- config.cfg.owr
This is the user configuration file to override the default configuration file.
All settings made here have precedence.
This file can be used to clearly summarize all settings that deviate from the default.
This also has the advantage that all changed settings can be kept when updating the program.
- data.cfg
This is the data file. It is automatically created and saved/overwritten.
It contains data managed by the software itself.
If manual adjustments are made here, the program must be shut down first!
## Configuration manual (Examples)
The configurations shown here are only a part of the total configuration.
It only serves to show the configuration that is necessary and adapted for the respective function.
All configurations must be made in the file `config.cfg.owr`.
All possible settings can be seen in the default configuration file `config.cfg`.
### Announcement of the group:
- `config.cfg.owr`
```
[lxmf]
announce_startup = Yes
announce_startup_delay = 0 #Seconds
announce_periodic = Yes
announce_periodic_interval = 120 #Minutes
```
### Message propagation - Send:
- `config.cfg.owr`
```
[lxmf]
desired_method = direct #direct/propagated
propagation_node = ca2762fe5283873719aececfb9e18835
propagation_node_auto = True
try_propagation_on_fail = Yes
```
### Message propagation - Receive (Sync from node):
- `config.cfg.owr`
```
[lxmf]
propagation_node = ca2762fe5283873719aececfb9e18835
propagation_node_auto = True
sync_startup = Yes
sync_startup_delay = 30 #Seconds
sync_periodic = Yes
sync_periodic_interval = 30 #Minutes
sync_limit = 8
```
## Admin manual
This guide applies to all admins. Here are briefly explained the administative possibilities.
An administartor has correspondingly higher permissions and more commands are available. In general, the permissions can be freely defined. All users/admins etc. can also generally have the same permissions.
## User manual
This guide applies to users or admins. Here are briefly explained the normal possibilities of the software.
### Start/Join the group:
Just send a first message to the group address with Sideband/NomadNet.
However, this is only possible if automatic joining of the group is activated.
## FAQ
### Why this server based group function and no direct groups in the client software?
At the time of the development of these group functions there is no other possibility to use groups via Sideband/Nomadnet. Therefore this software was developed as a workaround.
This software also offers other functions than a normal group broadcast.
### How do I start with the software?
You should read the `Installation manual` section. There everything is explained briefly. Just work through everything from top to bottom :)

View File

@@ -1,302 +0,0 @@
# lxmf_distribution_group
Dieses Programm bietet eine E-Mail-ähnliche Verteilergruppe für die "Communicator" app. Welches ein anderes Projekt ist, das nicht Teil dieses github ist. Es verteilt eingehende LXMF-Nachrichten an mehrere Empfänger.
Weitere Informationen finden Sie in den Konfigurationsoptionen (am Ende der Programmdateien). Alles Weitere ist dort kurz dokumentiert. Nach dem ersten Start wird diese Konfiguration als Standardkonfiguration in der entsprechenden Datei angelegt.
### Merkmale
- Kompatibel mit (Communicator welches ein anderes Projekt ist, das nicht Teil dieses github ist)
- Server-/Node-basierte Nachrichtenweiterleitung und -verarbeitung
- Direkte oder propagierte Nachrichtenzustellung (Empfangen/Senden)
- Einfache Gruppenfunktionen (wie in anderen Messenger-Apps)
- Benutzerautorisierung und Berechtigungen
- Verschiedene Benutzertypen mit unterschiedlichen Berechtigungen
- Automatischer oder manueller Gruppenbeitritt
- Einfache Konfiguration in lesbaren Konfigurationsdateien
- Unterstützung mehrerer Sprachen (Englisch & Deutsch sind voreingestellt)
## Beispiele für die Verwendung
### Lokale autarke Gruppe
In einer kleinen Gruppe von Personen kann diese Gruppensoftware auf einem zentral gelegenen Knoten gehostet werden. Dies ermöglicht es den Nutzern, über diese Gruppe miteinander zu kommunizieren.
### Mehrere lokale autarke Gruppen
Auf demselben Knoten/Server können mehrere Gruppen unabhängig voneinander betrieben werden. Wie das funktioniert, wird weiter unten in der Installationsanleitung beschrieben.
### Allgemeine Informationen zum Transport der Nachrichten
Alle Nachrichten zwischen Client<->Gruppenserver werden als einzelne 1:1 Nachrichten im LXMF/Reticulum Netzwerk transportiert.
Dementsprechend findet zwischen diesen Endpunkten eine Verschlüsselung statt.
Wenn eine direkte Zustellung der Nachricht nicht funktioniert, wird sie an einen Propagierungsknoten gesendet. Dort wird sie zwischengespeichert und kann später vom Client abgerufen werden.
Es gibt keinen zentralen Server für die Kommunikation zwischen den einzelnen Gruppen. Dies bietet den Vorteil, dass alle Gruppen autonom arbeiten. Ein Ausfall einer Gruppe betrifft nur diese eine lokale Gruppe.
## Aktueller Status
Es handelt sich derzeit um eine Betasoftware, die noch in Arbeit ist.
Alle Kernfunktionen sind implementiert und funktionieren, aber Ergänzungen werden wahrscheinlich auftreten, wenn die reale Nutzung erforscht wird.
Es kann zu Fehlern kommen oder die Kompatibilität nach einem Update ist nicht mehr gewährleistet.
Die vollständige Dokumentation ist noch nicht verfügbar. Aus Zeitmangel kann ich auch nicht sagen, wann diese weiterbearbeitet werden wird.
## Entwicklungsfahrplan
- Geplant, aber noch nicht terminiert
- Vollständige Dokumentation
## Bilder/ Verwendungsbeispiele
<img src="../docs/screenshots/lxmf_distribution_group_01.png" width="200px"><img src="../docs/screenshots/lxmf_distribution_group_02.png" width="200px"><img src="../docs/screenshots/lxmf_distribution_group_03.png" width="200px"><img src="../docs/screenshots/lxmf_distribution_group_04.png" width="200px"><img src="../docs/screenshots/lxmf_distribution_group_05.png" width="200px"><img src="../docs/screenshots/lxmf_distribution_group_06.png" width="200px"><img src="../docs/screenshots/lxmf_distribution_group_07.png" width="200px"><img src="../docs/screenshots/lxmf_distribution_group_08.png" width="200px">
## Installations Handbuch
### Installation:
- Installieren Sie alle erforderlichen Voraussetzungen. (Standardinstallation von Reticulum. Nur erforderlich, wenn Reticulum noch nicht installiert ist).
```bash
apt update
apt upgrade
apt install python3-pip
pip install pip --upgrade
reboot
pip3 install rns
pip3 install pyserial netifaces
pip3 install lxmf
```
- Ändern Sie die Reticulum-Konfiguration entsprechend Ihren Anforderungen und Ihrem Anwendungsfall.
```bash
nano /.reticulum/config
```
- Laden Sie die [Datei](lxmf_distribution_group.py) aus diesem Repository herunter.
```bash
wget https://raw.githubusercontent.com/SebastianObi/LXMF-Tools/main/lxmf_distribution_group/lxmf_distribution_group.py
```
- Machen Sie es mit folgendem Befehl ausführbar
```bash
chmod +x lxmf_distribution_group.py
```
### Starten:
- Start mit
```bash
./lxmf_distribution_group.py
```
- Nach dem ersten Start bearbeiten Sie die Konfigurationsdatei, um sie an Ihre Bedürfnisse und Ihren Anwendungsfall anzupassen. Der Speicherort der Datei wird angezeigt.
- Beispiel einer Minimalkonfiguration (Überschreibung der Standardkonfiguration `config.cfg`). Dies sind die wichtigsten Einstellungen, die angepasst werden müssen. Alle anderen Einstellungen befinden sich in `config.cfg`.
```bash
nano /root/.lxmf_distribution_group/config.cfg.owr
```
```bash
# This is the user configuration file to override the default configuration file.
# All settings made here have precedence.
# This file can be used to clearly summarize all settings that deviate from the default.
# This also has the advantage that all changed settings can be kept when updating the program.
#### LXMF connection settings ####
[lxmf]
# The name will be visible to other peers
# on the network, and included in announces.
# It is also used in the group description/info.
display_name = Distribution Group
# Set propagation node automatically.
propagation_node_auto = True
# Try to deliver a message via the LXMF propagation network,
# if a direct delivery to the recipient is not possible.
try_propagation_on_fail = Yes
#### Telemetry settings ####
[telemetry]
location_enabled = False
location_lat = 0
location_lon = 0
state_enabled = False
state_data = 0
```
- Starten Sie erneut. Fetig!
```bash
./lxmf_distribution_group.py
```
### Als Systemdienst/Dämon ausführen:
- Erstellen Sie eine Servicedatei.
```bash
nano /etc/systemd/system/lxmf_distribution_group.service
```
- Kopieren Sie den folgenden Inhalt und passen Sie ihn an Ihre eigenen Bedürfnisse an.
```bash
[Unit]
Description=lxmf_distribution_group
After=multi-user.target
[Service]
# ExecStartPre=/bin/sleep 10
Type=simple
Restart=always
RestartSec=3
User=root
ExecStart=/root/lxmf_distribution_group.py
[Install]
WantedBy=multi-user.target
```
- Aktivieren Sie den Dienst.
```bash
systemctl enable lxmf_distribution_group
```
- Starten Sie den Dienst.
```bash
systemctl start lxmf_distribution_group
```
### Dienst starten/stoppen:
```bash
systemctl start lxmf_distribution_group
systemctl stop lxmf_distribution_group
```
### Aktivieren/Deaktivieren des Dienstes:
```bash
systemctl enable lxmf_distribution_group
systemctl disable lxmf_distribution_group
```
### Mehrere Instanzen ausführen (um dieselbe Anwendung zu kopieren):
- Führen Sie das Programm mit einem anderen Konfigurationspfad aus.
```bash
./lxmf_distribution_group.py -p /root/.lxmf_distribution_group_2nd
./lxmf_distribution_group.py -p /root/.lxmf_distribution_group_3nd
```
- Nach dem ersten Start bearbeiten Sie die Konfigurationsdatei, um sie an Ihre Bedürfnisse und Ihren Anwendungsfall anzupassen. Der Speicherort der Datei wird angezeigt.
### Erste Verwendung:
- Bei einem manuellen Start über die Konsole wird die eigene Gruppen-LXMF-Adresse angezeigt:
```
[] ...............................................................................
[] LXMF - Address: <801f48d54bc71cb3e0886944832aaf8d>
[] ...............................................................................`
```
- In der Standardeinstellung wird diese Adresse auch beim Start bekannt gegeben.
- Wenn auto add user aktiv ist (Standardeinstellung), können Sie einfach eine erste Nachricht über Sideband/NomadNet an diese Adresse senden. Danach sind Sie Mitglied der Gruppe und können die Funktionen nutzen.
- Alternativ können die Benutzer auch manuell in der Datei `data.cfg` eingetragen werden. Es ist notwendig, hier einen Admin-Benutzer hinzuzufügen, um alle Befehle über LXMF-Nachrichten nutzen zu können!
- Nun kann die Gruppe benutzt werden.
### Parameter für die Inbetriebnahme:
```bash
usage: lxmf_distribution_group.py [-h] [-p PATH] [-pr PATH_RNS] [-pl PATH_LOG] [-l LOGLEVEL] [-s] [--exampleconfig] [--exampleconfigoverride] [--exampledata]
LXMF Distribution Group - Server-seitige Gruppenfunktionen für LXMF-basierte Anwendungen
optionale Argumente:
-h, --help diese Hilfemeldung anzeigen und beenden
-p PATH, --path PATH Pfad zum alternativen Konfigurationsverzeichnis
-pr PATH_RNS, --path_rns PATH_RNS
Pfad zum alternativen Reticulum-Konfigurationsverzeichnis
-pl PATH_LOG, --path_log PATH_LOG
Pfad zum alternativen Protokollverzeichnis
-l LOGLEVEL, --loglevel LOGLEVEL
-s, --service Läuft als Dienst und sollte sich in der Datei
--exampleconfig Ausführliches Konfigurationsbeispiel nach stdout ausgeben und beenden
--exampleconfigoverride
Ausführliches Konfigurationsbeispiel nach stdout ausgeben und beenden
--exampledata Ausführliches Konfigurationsbeispiel nach stdout ausgeben und beenden
```
### Configurationsdaten Dateien:
- config.cfg
Dies ist die Standardkonfigurationsdatei.
- config.cfg.owr
Dies ist die Benutzerkonfigurationsdatei, die die Standardkonfigurationsdatei außer Kraft setzt.
Alle hier vorgenommenen Einstellungen haben Vorrang.
In dieser Datei können alle vom Standard abweichenden Einstellungen übersichtlich zusammengefasst werden.
Dies hat auch den Vorteil, dass alle geänderten Einstellungen bei einer Aktualisierung des Programms beibehalten werden können.
- data.cfg
Dies ist die Datendatei. Sie wird automatisch erstellt und gespeichert/überschrieben.
Sie enthält Daten, die von der Software selbst verwaltet werden.
Wenn hier manuelle Anpassungen vorgenommen werden, muss das Programm vorher beendet werden!
## Konfigurationshandbuch (Beispiele)
Die hier gezeigten Konfigurationen sind nur ein Teil der Gesamtkonfiguration.
Sie dienen nur dazu, die für die jeweilige Funktion notwendige und angepasste Konfiguration zu zeigen.
Alle Konfigurationen müssen in der Datei `config.cfg.owr` vorgenommen werden.
Alle möglichen Einstellungen sind in der Standard-Konfigurationsdatei `config.cfg` zu sehen.
### Ankündigung der Gruppe:
- `config.cfg.owr`
```
[lxmf]
announce_startup = Yes
announce_startup_delay = 0 #Seconds
announce_periodic = Yes
announce_periodic_interval = 120 #Minutes
```
### Message propagation - Senden:
- `config.cfg.owr`
```
[lxmf]
desired_method = direct #direct/propagated
propagation_node = ca2762fe5283873719aececfb9e18835
try_propagation_on_fail = Yes
```
### Message propagation - Empfang(Sync vom Knoten):
- `config.cfg.owr`
```
[lxmf]
propagation_node = ca2762fe5283873719aececfb9e18835
sync_startup = Yes
sync_startup_delay = 30 #Seconds
sync_periodic = Yes
sync_periodic_interval = 30 #Minutes
sync_limit = 8
```
## Administratoren Handbuch
Dieses Handbuch gilt für alle Admins. Hier werden die administrativen Möglichkeiten kurz erläutert.
Ein Administartor hat entsprechend höhere Rechte und es stehen mehr Befehle zur Verfügung. Generell können die Berechtigungen frei definiert werden. Alle Benutzer/Admins etc. können auch generell die gleichen Berechtigungen haben.
## User Handbuch
Diese Anleitung gilt für Benutzer oder Administratoren. Hier werden kurz die normalen Möglichkeiten der Software erklärt.
### Starten Sie die Gruppe und treten Sie ihr bei:
Senden Sie einfach eine erste Nachricht an die Gruppenadresse mit Sideband/NomadNet.
Dies ist jedoch nur möglich, wenn der automatische Beitritt zur Gruppe aktiviert ist.
## FAQ
### Warum diese serverbasierte Gruppenfunktion und keine direkten Gruppen in der Client-Software?
Zum Zeitpunkt der Entwicklung dieser Gruppenfunktionen gab es keine andere Möglichkeit, Gruppen über Sideband/Nomadnet zu verwenden. Daher wurde diese Software als Workaround entwickelt.
Diese Software bietet auch andere Funktionen als eine normale Gruppenübertragung.
### Wie kann ich mit der Software beginnen?
Sie sollten den Abschnitt `Installationsanleitung` lesen. Dort ist alles kurz erklärt. Gehen Sie einfach alles von oben nach unten durch :)

View File

File diff suppressed because it is too large Load Diff

View File

@@ -1,12 +0,0 @@
[Unit]
Description=lxmf_distribution_group
After=multi-user.target
[Service]
ExecStartPre=/bin/sleep 5
Type=simple
Restart=always
RestartSec=3
User=root
ExecStart=/root/LXMF-Tools/lxmf_distribution_group/lxmf_distribution_group.py
[Install]
WantedBy=multi-user.target

View File

@@ -1,2 +0,0 @@
rns
lxmf

View File

View File

@@ -1,4 +0,0 @@
# Examples
This folder contains sample configurations for different application environments or scenarios.
Copy these files accordingly to the appropriate configuration folder. Then customize the content of these files to your needs.

View File

@@ -1,278 +0,0 @@
# lxmf_provisioning
This program offers the possibility of provisioning clients. This includes, for example: The announcement of software updates. Registration of new users. Saving telemetry data that the clients send to the server. The data is stored in a PostgreSQL database. The source code can of course be customized to store the data in a different way.
For more information, see the configuration options (at the end of the program files). Everything else is briefly documented there. After the first start this configuration will be created as default config in the corresponding file.
### Features
- Compatible with all Reticulum managed apps (Communicator which is another project that is not part of this github)
- Announcement of the server and software versions
- User registration
- Collection of telemetry data
- Storage of data in PostgreSQL, ...
## Examples of use
### General info how the messages/data are transported
All announcements are transmitted unencrypted with their own type/name which is not shown in the Nomadnet/Sideband announcement list.
All messages between client<->server are transported as single 1:1 messages in the LXMF/Reticulum network.
Accordingly, encryption takes place between these end points.
## Current Status
It should currently be considered beta software and still work in progress.
All core features are implemented and functioning, but additions will probably occur as real-world use is explored.
There may be errors or the compatibility after an update is no longer guaranteed.
The full documentation is not yet available. Due to lack of time I can also not say when this will be further processed.
## Screenshots / Usage examples
## Installation manual
### Install:
- Install all required prerequisites. (Default Reticulum installation. Only necessary if reticulum is not yet installed.)
```bash
apt update
apt upgrade
apt install python3-pip
pip install pip --upgrade
reboot
pip3 install rns
pip3 install pyserial netifaces
pip3 install lxmf
```
- Change the Reticulum configuration to suit your needs and use-case.
```bash
nano /.reticulum/config
```
- Download the [file](lxmf_provisioning.py) from this repository.
```bash
wget https://raw.githubusercontent.com/SebastianObi/LXMF-Tools/main/lxmf_provisioning/lxmf_provisioning.py
```
- Make it executable with the following command
```bash
chmod +x lxmf_provisioning.py
```
### Start:
- Start it
```bash
./lxmf_provisioning.py
```
- After the first start edit the configuration file to suit your needs and use-case. The file location is displayed.
- Example minimal configuration (override of the default config `config.cfg`). These are the most relevant settings that need to be adjusted. All other settings are in `config.cfg`
```bash
nano /root/.lxmf_provisioning/config.cfg.owr
```
```bash
[lxmf]
announce_periodic = Yes
announce_periodic_interval = 15 #Minutes
[database]
host = 127.0.0.1
port = 5432
user = postgres
password = password
database = test
table_registration = tbl_account
table_telemetry = tbl_telemetry
[features]
announce_versions = True
registration = True
telemetry = True
[data]
v_s = 0.1.4 #Version software
v_c = 2022-11-29 20:00 #Version config
v_d = 2022-11-29 20:00 #Version data
v_a = 2022-11-29 20:00 #Version auth
u_s = https:// #URL Software
```
- Start it again. Finished!
```bash
./lxmf_provisioning.py
```
### Run as a system service/deamon:
- Create a service file.
```bash
nano /etc/systemd/system/lxmf_provisioning.service
```
- Copy and edit the following content to your own needs.
```bash
[Unit]
Description=LXMF Provisioning Daemon
After=multi-user.target
[Service]
# ExecStartPre=/bin/sleep 10
Type=simple
Restart=always
RestartSec=3
User=root
Group=root
ExecStart=/root/lxmf_provisioning.py
[Install]
WantedBy=multi-user.target
```
- Enable the service.
```bash
systemctl enable lxmf_provisioning
```
- Start the service.
```bash
systemctl start lxmf_provisioning
```
### Start/Stop service:
```bash
systemctl start lxmf_provisioning
systemctl stop lxmf_provisioning
```
### Enable/Disable service:
```bash
systemctl enable lxmf_provisioning
systemctl disable lxmf_provisioning
```
### Run several instances (To copy the same application):
- Run the program with a different configuration path.
```bash
./lxmf_provisioning.py -p /root/.lxmf_provisioning_2nd
./lxmf_provisioning.py -p /root/.lxmf_provisioning_3nd
```
- After the first start edit the configuration file to suit your needs and use-case. The file location is displayed.
### First usage:
- With a manual start via the console, the own LXMF address is displayed:
```
[] ...............................................................................
[] LXMF - Address: <801f48d54bc71cb3e0886944832aaf8d>
[] ...............................................................................`
```
- This address is also annouced at startup in the default setting.
- This provisioning server address must be added to the clients.
- Now the software can be used.
### Startup parameters:
```bash
usage: lxmf_provisioning.py [-h] [-p PATH] [-pr PATH_RNS] [-pl PATH_LOG] [-l LOGLEVEL] [-s] [--exampleconfig] [--exampleconfigoverride]
LXMF Provisioning Server -
optional arguments:
-h, --help show this help message and exit
-p PATH, --path PATH Path to alternative config directory
-pr PATH_RNS, --path_rns PATH_RNS
Path to alternative Reticulum config directory
-pl PATH_LOG, --path_log PATH_LOG
Path to alternative log directory
-l LOGLEVEL, --loglevel LOGLEVEL
-s, --service Running as a service and should log to file
--exampleconfig Print verbose configuration example to stdout and exit
--exampleconfigoverride
Print verbose configuration example to stdout and exit
```
### Config/data files:
- config.cfg
This is the default config file.
- config.cfg.owr
This is the user configuration file to override the default configuration file.
All settings made here have precedence.
This file can be used to clearly summarize all settings that deviate from the default.
This also has the advantage that all changed settings can be kept when updating the program.
## Configuration manual (Examples)
The configurations shown here are only a part of the total configuration.
It only serves to show the configuration that is necessary and adapted for the respective function.
All configurations must be made in the file `config.cfg.owr`.
All possible settings can be seen in the default configuration file `config.cfg`.
### Standard function (Announce versions, user registration, telemetry):
- `config.cfg.owr`
```
[lxmf]
announce_periodic = Yes
announce_periodic_interval = 15 #Minutes
[database]
host = 127.0.0.1
port = 5432
user = postgres
password = password
database = test
table_registration = tbl_account
table_telemetry = tbl_telemetry
[features]
announce_versions = True
registration = True
telemetry = True
[data]
v_s = 0.1.4 #Version software
v_c = 2022-11-29 20:00 #Version config
v_d = 2022-11-29 20:00 #Version data
v_a = 2022-11-29 20:00 #Version auth
u_s = https:// #URL Software
```
### Custom function (Announce versions):
- `config.cfg.owr`
```
[lxmf]
announce_periodic = Yes
announce_periodic_interval = 15 #Minutes
[features]
announce_versions = True
registration = False
telemetry = False
[data]
v_s = 0.1.4 #Version software
v_c = 2022-11-29 20:00 #Version config
v_d = 2022-11-29 20:00 #Version data
v_a = 2022-11-29 20:00 #Version auth
u_s = https:// #URL Software
```
## Admin manual
This guide applies to all admins. Here are briefly explained the administative possibilities.
## User manual
This guide applies to users or admins. Here are briefly explained the normal possibilities of the software.
## FAQ
### How do I start with the software?
You should read the `Installation manual` section. There everything is explained briefly. Just work through everything from top to bottom :)

View File

@@ -1,261 +0,0 @@
# lxmf_provisioning
Dieses Programm bietet die Möglichkeit, Clients zu provisionieren. Dazu gehört zum Beispiel: Die Ankündigung von Software-Updates. Die Registrierung neuer Benutzer. Die Speicherung von Telemetriedaten, die die Clients an den Server senden. Die Daten werden in einer PostgreSQL-Datenbank gespeichert. Der Quellcode kann natürlich angepasst werden, um die Daten auf eine andere Weise zu speichern.
Weitere Informationen finden Sie in den Konfigurationsoptionen (am Ende der Programmdateien). Alles Weitere ist dort kurz dokumentiert. Nach dem ersten Start wird diese Konfiguration als Standardkonfiguration in der entsprechenden Datei angelegt.
### Eigenschaften
- Ankündigung der Server- und Softwareversionen
- Registrierung der Benutzer
- Sammlung von Telemetriedaten
- Speicherung der Daten in PostgreSQL, ...
## Beispiele für die Verwendung
### Allgemeine Informationen, wie die Nachrichten/Daten transportiert werden
Alle Ansagen werden unverschlüsselt mit ihrem eigenen Typ/Namen übertragen, der nicht in der Nomadnet/Sideband-Ansagenliste angezeigt wird.
Alle Nachrichten zwischen Client<->Server werden als einzelne 1:1 Nachrichten im LXMF/Reticulum Netzwerk transportiert.
Dementsprechend findet zwischen diesen Endpunkten eine Verschlüsselung statt.
## Aktueller Status
Es handelt sich derzeit um eine Betasoftware, die noch in Arbeit ist.
Alle Kernfunktionen sind implementiert und funktionieren, aber Ergänzungen werden wahrscheinlich auftreten, wenn die reale Nutzung erforscht wird.
Es kann zu Fehlern kommen oder die Kompatibilität nach einem Update ist nicht mehr gewährleistet.
Die vollständige Dokumentation ist noch nicht verfügbar. Aus Zeitmangel kann ich auch nicht sagen, wann diese weiterbearbeitet werden wird.
## Bilder / Verwendungsbeispiele
## Installations Handbuch
### Installieren:
- Installieren Sie alle erforderlichen Voraussetzungen. (Standardinstallation von Reticulum. Nur erforderlich, wenn Reticulum noch nicht installiert ist).
```bash
apt update
apt upgrade
apt install python3-pip
pip install pip --upgrade
reboot
pip3 install rns
pip3 install pyserial netifaces
pip3 install lxmf
```
- Ändern Sie die Reticulum-Konfiguration entsprechend Ihren Anforderungen und Ihrem Anwendungsfall.
```bash
nano /.reticulum/config
```
- Laden Sie die [Datei](lxmf_provisioning.py) aus diesem Repository herunter.
```bash
wget https://raw.githubusercontent.com/SebastianObi/LXMF-Tools/main/lxmf_provisioning/lxmf_provisioning.py
```
- Machen Sie es mit folgendem Befehl ausführbar
```bash
chmod +x lxmf_provisioning.py
```
### Starten:
- Starte mit
```bash
./lxmf_provisioning.py
```
- Nach dem ersten Start bearbeiten Sie die Konfigurationsdatei, um sie an Ihre Bedürfnisse und Ihren Anwendungsfall anzupassen. Der Speicherort der Datei wird angezeigt.
- Beispiel einer Minimalkonfiguration (Überschreibung der Standardkonfiguration `config.cfg`). Dies sind die wichtigsten Einstellungen, die angepasst werden müssen. Alle anderen Einstellungen befinden sich in `config.cfg`.
```bash
nano /root/.lxmf_provisioning/config.cfg.owr
```
```bash
```
- Starten Sie erneut. Fertig!
```bash
./lxmf_provisioning.py
```
### Als Systemdienst/Dämon ausführen:
- Erstellen Sie eine Servicedatei.
```bash
nano /etc/systemd/system/lxmf_provisioning.service
```
- Kopieren Sie den folgenden Inhalt und passen Sie ihn an Ihre eigenen Bedürfnisse an.
```bash
[Unit]
Description=LXMF Provisioning Daemon
After=multi-user.target
[Service]
# ExecStartPre=/bin/sleep 10
Type=simple
Restart=always
RestartSec=3
User=root
ExecStart=/root/lxmf_provisioning.py
[Install]
WantedBy=multi-user.target
```
- Aktivieren Sie den Dienst.
```bash
systemctl enable lxmf_provisioning
```
- Starten Sie den Dienst.
```bash
systemctl start lxmf_provisioning
```
### Dienst starten/stoppen:
```bash
systemctl start lxmf_provisioning
systemctl stop lxmf_provisioning
```
### Dienst aktivieren/deaktivieren:
```bash
systemctl enable lxmf_provisioning
systemctl disable lxmf_provisioning
```
### Führen Sie mehrere Instanzen aus (Kopieren der gleichen Anwendung):
- Führen Sie das Programm mit einem anderen Konfigurationspfad aus.
```bash
./lxmf_provisioning.py -p /root/.lxmf_provisioning_2nd
./lxmf_provisioning.py -p /root/.lxmf_provisioning_3nd
```
- Nach dem ersten Start bearbeiten Sie die Konfigurationsdatei, um sie an Ihre Bedürfnisse und Ihren Anwendungsfall anzupassen. Der Speicherort der Datei wird angezeigt.
### Erste Verwendung:
- Bei einem manuellen Start über die Konsole wird die eigene LXMF-Adresse angezeigt:
```
[] ...............................................................................
[] LXMF - Address: <801f48d54bc71cb3e0886944832aaf8d>
[] ...............................................................................`
```
- In der Standardeinstellung wird diese Adresse auch beim Start bekannt gegeben.
- Diese Provisioning-Server-Adresse muss den Clients hinzugefügt werden.
- Nun kann die Software verwendet werden.
### Startup Parameter:
```bash
usage: lxmf_provisioning.py [-h] [-p PATH] [-pr PATH_RNS] [-pl PATH_LOG] [-l LOGLEVEL] [-s] [--exampleconfig] [--exampleconfigoverride]
LXMF Provisioning Server -
optionale Argumente:
-h, --help diese Hilfemeldung anzeigen und beenden
-p PATH, --path PATH Pfad zum alternativen Konfigurationsverzeichnis
-pr PATH_RNS, --path_rns PATH_RNS
Pfad zum alternativen Reticulum-Konfigurationsverzeichnis
-pl PATH_LOG, --path_log PATH_LOG
Pfad zum alternativen Protokollverzeichnis
-l LOGLEVEL, --loglevel LOGLEVEL
-s, --service Läuft als Dienst und Loggt in Datei
--exampleconfig Ausführliches Konfigurationsbeispiel nach stdout ausgeben und beenden
--exampleconfigoverride
Ausführliches Konfigurationsbeispiel nach stdout ausgeben und beenden
```
### Configurationsdaten Dateien:
- config.cfg
Dies ist die Standardkonfigurationsdatei.
- config.cfg.owr
Dies ist die Benutzerkonfigurationsdatei, die die Standardkonfigurationsdatei außer Kraft setzt.
Alle hier vorgenommenen Einstellungen haben Vorrang.
In dieser Datei können alle vom Standard abweichenden Einstellungen übersichtlich zusammengefasst werden.
Dies hat auch den Vorteil, dass alle geänderten Einstellungen bei einer Aktualisierung des Programms beibehalten werden können.
## Konfigurations Handbuch (Beispiele)
Die hier gezeigten Konfigurationen sind nur ein Teil der Gesamtkonfiguration.
Sie dient nur dazu, die für die jeweilige Funktion notwendige und angepasste Konfiguration zu zeigen.
Alle Konfigurationen müssen in der Datei `config.cfg.owr` vorgenommen werden.
Alle möglichen Einstellungen sind in der Standard-Konfigurationsdatei `config.cfg` zu sehen.
### Standardfunktion (Versionen ankündigen, Benutzerregistrierung, Telemetrie):
- `config.cfg.owr`
```
[lxmf]
announce_periodic = Yes
announce_periodic_interval = 15 #Minutes
[database]
host = 127.0.0.1
port = 5432
user = postgres
password = password
database = test
table_registration = tbl_account
table_telemetry = tbl_telemetry
[features]
announce_versions = True
registration = True
telemetry = True
[data]
v_s = 0.1.4 #Version software
v_c = 2022-11-29 20:00 #Version config
v_d = 2022-11-29 20:00 #Version data
v_a = 2022-11-29 20:00 #Version auth
u_s = https:// #URL Software
```
### Benutzerdefinierte Funktion (Versionen ankündigen):
- `config.cfg.owr`
```
[lxmf]
announce_periodic = Yes
announce_periodic_interval = 15 #Minutes
[database]
host = 127.0.0.1
port = 5432
user = postgres
password = password
database = test
table_registration = tbl_account
table_telemetry = tbl_telemetry
[features]
announce_versions = True
registration = False
telemetry = False
[data]
v_s = 0.1.4 #Version software
v_c = 2022-11-29 20:00 #Version config
v_d = 2022-11-29 20:00 #Version data
v_a = 2022-11-29 20:00 #Version auth
u_s = https:// #URL Software
```
## Handbuch für Administratoren
Dieses Handbuch gilt für alle Admins. Hier werden die administrativen Möglichkeiten kurz erläutert.
## Benutzerhandbuch
Diese Anleitung gilt für Benutzer oder Administratoren. Hier werden kurz die normalen Möglichkeiten der Software erklärt.
## FAQ
### Wie kann ich mit der Software beginnen?
Sie sollten den Abschnitt `Installationsanleitung` lesen. Dort ist alles kurz erklärt. Gehen Sie einfach alles von oben nach unten durch :)

View File

File diff suppressed because it is too large Load Diff

View File

@@ -1,12 +0,0 @@
[Unit]
Description=lxmf_provisioning
After=multi-user.target
[Service]
ExecStartPre=/bin/sleep 5
Type=simple
Restart=always
RestartSec=3
User=root
ExecStart=/root/LXMF-Tools/lxmf_provisioning/lxmf_provisioning.py
[Install]
WantedBy=multi-user.target

View File

@@ -1,4 +0,0 @@
rns
lxmf
psycopg2
psycopg2-binary