Aller au contenu principal

Serveur de la passerelle SMSWithoutBorders

Les serveurs passerelles permettent aux utilisateurs de se synchroniser et de communiquer avec le module éditeur.

:::conseil Ce que vous apprendrez

  • Comment configurer et utiliser le serveur Gateway La version la plus récente de ce guide se trouve dans le github reposistory

Le frontend s'intègre à ces services. Il se peut que vous deviez les configurer en fonction de la section sur laquelle vous travaillez.

:::

Exigences

  • python3

Fonctionnalités

Il devrait être hébergé au même endroit que Publisher,parce que Publisher n'est pas directement exposé au web.

Installation

https://github.com/smswithoutborders/SMSWithoutBorders-Gateway-Server.git
git submodule update --force --recursive --init --remote
cd SMSWithoutBorders-Gateway-Server
python3 -m virtualenv venv
. venv/bin/activate
pip3 install -r requirements.txt

Optionnellement, lancez make pour installer les hooks git

Structure du répertoire

/gateway_server
Contient la passerelle server websocket qui est nécessaire pour synchroniser les utilisateurs.

Configuration

Configuration de l'API de la passerelle

  • Copiez les fichiers de configuration et modifiez le fichier
cp confs/example.conf.ini confs/conf.ini

Configuration du serveur de passerelle

  • Copiez les fichiers de configuration et modifiez le fichier
cp gateway_server/confs/example.conf.ini gateway_server/confs/conf.ini

Utilisation

API de la passerelle

Démarrer manuellement l'API de la passerelle
. venv/bin/activate
python3 main.py

*Obtenir la liste des nœuds disponibles `/seeds

` Par exemple

curl localhost:6969/seeds -H "Content-Type: application/json"

Retours

[
{
"IMSI": "sample_IMSI",
"LPS": 1648206122.81431,
"MSISDN": "sample_MSISDN",
"seed_type": "seed"
}
]
  • Ajouter une passerelle aux passerelles actives /ping

Par exemple

curl -X POST \
localhost:6969/seeds/ping \
-d '{"IMSI":"sample_IMSI", "MSISDN":"sample_MSISDN", "seed_type":"seed"}' \
-H "Content-Type: application/json"

Renvoie le LPS de la session en cours. LPS = Dernière session ping

Synchronisation

La synchronisation est nécessaire pour permettre aux utilisateurs d'acquérir les clés de sécurité, les plateformes et les passerelles disponibles.

Configuration manuelle des sessions websocket
. venv/bin/activate
python3 gateway_server/sessions_websocket.py
Configurations

Toutes les configurations pour les websockets peuvent être faites dans le fichier conf.ini dans le répertoiregateway_server
session_change_limit : Nombre de fois où le websocket du client recevra des urls de changement de session. session_sleep_timeout : Nombre de secondes de sommeil après l'envoi d'une url de changement de session au client. session_paused_timeout : Nombre de secondes à rester en état de pause avant de fermer la connexion

Flux de synchronisation
  1. Commencez par demander une nouvelle session.

GET /<api-version>/sync/users/<user-id>

Il renvoie une chaîne d'url à laquelle les clients websocket peuvent se connecter. Les utilisateurs peuvent commencer à communiquer avec l'URL renvoyée ou les scanner via la fonction QR scan de l'application. renvoyée ou les scanner grâce à la fonction QR scan de l'application. La fréquence de changement des urls de synchronisation dépend des paramètres de configuration [synchro dépend des paramètres de configuration [sync] session_sleep_timeout` (par défaut = 15 secondes).

Le nombre total de changements par fréquence peut être modifié dans [sync] session_change_limit (valeur par défaut = 3 fois) \N- Le nombre total de changements par fréquence peut être modifié dans [sync] session_change_limit (valeur par défaut = 3 fois).

'', 200session créée

'', 500 une erreur s'est produite, vérifiez les journaux de débogage

  1. Une fois que l'url de synchronisation est connectée et commence le traitement, le websocket envoie un texte de pause 201- pause.
    L'utilisateur commence à s'authentifier et à ajouter ses politiques de sécurité à son dossier sur le serveur.

  2. Une fois que l'utilisateur a effectué la poignée de main nécessaire et que l'échange d'informations a commencé, le websocket envoie un texte d'accusé de réception \N- ack. texte d'accusé de réception 200- ack`.

Essais

python -m unittest gateway_server/test/UTestUsers.py

https://github.com/vi/websocat

Manjaro

sudo pacman -S websocat jq

Test de websocket

websocat ws://localhost:6996/v2/sync/init/111/000
  • Essais RSA Encryption/Decryption Cela nécessitera des fichiers pem. Copiez-les dans le répertoire test/ pour permettre l'exécution des tests.
python -m unittest test/security_rsa.py
  • Essais Entire Handshake process Cela nécessitera des fichiers pem. Copiez-les dans le répertoire test/ pour permettre l'exécution des tests.
./test/handshake.sh