Chatavion, une messagerie passe-partout

Conçue pour fonctionner sur des réseaux instables

a marqué ce sujet comme résolu.

@A-312 J’ai regardé ta PR, ça a l’air très bien, sauf que je n’y comprends rien. :D Est-ce qu’on pourrait s’appeler pour que tu m’expliques cette structure et le fonctionnement de ta version ? As-tu testé et éprouvé le programme ?

Question licence, je partirais plutôt sur du CC BY-NC-SA.

@A-312 J’ai regardé ta PR, ça a l’air très bien, sauf que je n’y comprends rien. :D Est-ce qu’on pourrait s’appeler pour que tu m’expliques cette structure et le fonctionnement de ta version ? As-tu testé et éprouvé le programme ?

Vince

J’ai testé le client et le serveur s’il se lançait mais je n’ai pas testé le serveur en profondeur

Question licence, je partirais plutôt sur du CC BY-NC-SA.

Les licences CC ne s’applique pas pour du code explication ici

Pour l’explication :

J’ai séparé la logique de la vue. J’appelle logique tout ce qui est communication et gestion des DNS de ton application. J’appelle vue, tout ce qui est readline, affichage des messages, etc… D’ailleurs si on compare les dépendance de dnscom (voir package.json) et chatavion (voir package.json), on constate que la logique et la vue sont séparées chacune de leur côté.

Ainsi si quelqu’un veut utiliser ton module pour faire sa propre interface via electronJS, NW.js, il pourra facilement en faisant un require('dnscom').

J’ai fais un rapide README.md pour dnscom.

Dans package.json j’ai indiqué que le point d’entrée quand on fait require('dnscom') soit : bin/index.js. Allons voir ./packages/dnscom/bin/index.js :

  1. Ligne 11, je déclare ma classe DNSCom.
  2. Ligne 15, j’initie le prototype de ma classe et je la met en retour de mon module, ainsi lorsqu’un dev fera require('dnscom'), il obtiendra cette nouvelle classe.
  3. Ligne 24 et 35, je défini dnscom.createServer et dnscom.createClient qui initie les classes définit respectivement dans ./server.js et ./client.js.
  4. ./server.js et ./client.js suivent le même résonnement que index.js.

J’ai aussi fais un rapide README.md pour chatavion.

On constate que j’utilise npm run server et npm run server. Ces commandes sont définies dans package.json.

  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node ./bin/index.js",
    "client": "node ./bin/index.js --client",
    "server": "node ./bin/index.js --server"
  },

Grâce à yargs-parser, tu peux utiliser des commandes. Soit pour démarrer la partie serveur, soit la partie client. Et on constate que j’utilise le module dnscom pour envoyer ou récupérer des messages.

Sans la partie avec git :

# {commande git}
# Puis :
$ cd ./packages/chatavion/
$ npm install
$ npm run server
$ npm run client

Pour copier ma branche avec git, il me semble que tu dois faire :

git remote add a312 https://github.com/A-312/chatavion/
git fetch a312
git checkout --track a312/nodeway

@A-312 Avec git init avant tout dans le répertoire, c’est bon pour l’installation. Mais au fonctionnement, ta version ne fonctionne pas chez moi, ça ne me renvoie aucun message. Pas un souci de serveur, ma version fonctionne normalement. Le serveur a crashé à un moment à cause d’une exception non gérée, faudra que je me penche dessus (paquet mal formé je pense - note à moi-même, regarder le message d’erreur dans nohup.out).

Je me rends compte que je me suis mal exprimé : ce que j’ai testé, c’est ton client uniquement, pour utiliser avec mon serveur. Ton client + mon serveur = client ne fonctionne pas, mon client + mon serveur = tout fonctionne.

L’histoire du serveur qui a crashé n’a rien à voir avec toi, c’est arrivé il y a quelques jours, je m’en suis rendu compte en regardant des logs.

Avec mon dernier commit, le serveur marche quelques soit la version.

Je ne sais pas pourquoi le client ne marche plus, j’ai dû oublier de commit un changement. Je regarde ça un peu plus tard dans la journée.

EDIT:

copier/coller foireux !

s -> g...
s -> g...
+0 -0

J’ai mis à jour mon environnement depuis ton dépôt, ça ne marche pas mieux (dnscom:client No result for TXT Client, will try AAAA).

Je réfléchissais à ce que je voulais pour Chatavion. C’est une réflexion globale, pour poser mes idées, pas adressée à quelqu’un en particulier. J’imagine un serveur qui s’installe en faisant apt-get install chatavion (ou autre gestionnaire de paquet bien sûr), pourquoi pas avec le client en même temps. Le serveur se lancerait en faisant service chataviond start. Le client, avec la commande chatavion (paramétrage interactif) ou chatavion --dns 1.1.1.1 --server xxx.chatavion.xyz. En tout cas, pour le client Linux. L’idée "ultime" pour le moment est de faire une application Android. J’en ai fait dans mes études, c’est parti très très loin, j’avais passé le rattrapage. :-°

J’ai oublié de push. -.-"

image.png
image.png

Je réfléchissais à ce que je voulais pour Chatavion. C’est une réflexion globale, pour poser mes idées, pas adressée à quelqu’un en particulier.

C’est pour ça que j’ai structuré le code en deux packages. ;)

Et… toujours pas. Comment se fait-il que sur ta version, le serveur par défaut proposé est 127.0.0.1, alors que sur ma version, c’est 8.8.8.8 (serveur par défaut de l’environnement) ?

Vince

A défaut d’un système de configuration j’ai changé la valeur manuellement (pour ne pas réécrire 30 fois la même valeur) dans le fichier et j’ai oublié de rechanger

image.png image.png

https://github.com/A-312/chatavion/tree/nodeway

J’ai mis à jour mon environnement depuis ton dépôt, ça ne marche pas mieux (dnscom:client No result for TXT Client, will try AAAA).

Je réfléchissais à ce que je voulais pour Chatavion. C’est une réflexion globale, pour poser mes idées, pas adressée à quelqu’un en particulier. J’imagine un serveur qui s’installe en faisant apt-get install chatavion (ou autre gestionnaire de paquet bien sûr), pourquoi pas avec le client en même temps. Le serveur se lancerait en faisant service chataviond start. Le client, avec la commande chatavion (paramétrage interactif) ou chatavion --dns 1.1.1.1 --server xxx.chatavion.xyz. En tout cas, pour le client Linux. L’idée "ultime" pour le moment est de faire une application Android. J’en ai fait dans mes études, c’est parti très très loin, j’avais passé le rattrapage. :-°

Vince

Bonne idée, avec /etc/chataviond.conf pour la configuration et tout ce qui va avec ;) Peut-être penser à un conteneur en plus (Docker, OpenShift, ce que tu veux) ?

Miaou ! 😺

Il est temps de vous présenter ce qui se trame en coulisses depuis septembre dernier. Vous en rêviez (en tout cas moi, oui :-° ), on l’a fait : l’application Android Chatavion est disponible ! :magicien:

L’équipe de développeurs l’avait présentée à l’université Gustave Eiffel il y a environ 2 mois. Pour rappel, le principe de Chatavion est de permettre l’échange de messages textes depuis des hotspots Wi-Fi sans être authentifié. L’app est fonctionnelle, vous pouvez l’installer depuis le Play Store. Vous trouverez l’APK et le code source sur le Github de Léo Buzelin, un des développeurs.

Sur ce même Github, vous trouverez aussi le programme serveur sous forme d’archive Java, donc à priori exécutable sur n’importe quel système.

Pour que vous puissiez tester l’appli, j’ai créé une communauté zds@chatavion.com qui peut servir de sandbox (ce n’est pas une adresse mail, c’est le nom à saisir dans l’appli !).

Cette version de Chatavion n’est pas rétrocompatible avec les versions que j’ai conçues en NodeJS. Aussi, notez que l’appli comme le programme serveur n’est pas exempt de bugs. La plupart se résolvent en vidant le cache et les données de l’appli sur Android.

Info technique : par défaut, l’app tente des échanges en HTTP puis bascule sur DNS en cas d’échec. Pour accélérer le chargement dans les cas où HTTP est impossible (hotspot non authentifié notamment), vous pouvez forcer le DNS comme prioritaire dans les paramètres.

Interface d'accès à Chatavion

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte