mirror of
https://github.com/SebastianObi/LXMF-Tools.git
synced 2025-12-22 10:27:12 +00:00
Cleanup
This commit is contained in:
10
README.md
10
README.md
@@ -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.
|
||||
|
||||
|
||||
10
README_de.md
10
README_de.md
@@ -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.
|
||||
|
||||
|
||||
@@ -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 =
|
||||
@@ -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]
|
||||
@@ -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 =
|
||||
@@ -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]
|
||||
@@ -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.
|
||||
@@ -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 :)
|
||||
@@ -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 :)
|
||||
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
@@ -1,2 +0,0 @@
|
||||
rns
|
||||
lxmf
|
||||
@@ -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.
|
||||
@@ -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 :)
|
||||
@@ -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 :)
|
||||
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
@@ -1,4 +0,0 @@
|
||||
rns
|
||||
lxmf
|
||||
psycopg2
|
||||
psycopg2-binary
|
||||
Reference in New Issue
Block a user