Bonjour,
J’ai comme projet la réalisation d’une application en Python. J’ai vu qu’il y a pas mal de pythoneux par ici, j’espère que je pourrai venir vous embêter de temps en temps avec mes questions (j’ai déjà commencé )
Le but
Le but du logiciel est le partage d’écrans entre élèves et professeur durant des séances de cours informatiques: il sera utilisé dans notre association1, si j’arrive à le rendre fonctionnel. Je sais qu’il existe déjà des programmes pour ça (epoptes, italc), mais ils ont quelques inconvénients:
- Ils fonctionnent sur le modèle client/serveur et maître/élève. Je ne souhaite pas faire de distinction forte entre élève et enseignant, car chacun peut être enseignant.
- Ils sont plutôt destinés à être utilisés dans une salle équipée d’ordinateurs. Dans notre cas, chacun a sa propre machine.
- Les «maîtres» ont trop de pouvoir sur les ordinateurs des élèves: l’utilisateur doit garder le contrôle de son ordinateur.
L’interface
L’interface principale du logiciel se logera dans la barre système. Ici, un menu donnera les possibilités suivantes:
- Partager son écran avec un utilisateur (ou tous)
- Donner la main à un utilisateur
- Demander à prendre la main sur un ordinateur
- Demander à voir l’écran d’un ordinateur
- Partager des fichiers
- Envoyer des messages
- Gérer les utilisateurs
- Paramètres, options
- Infobulles
Contraintes
- Le logiciel devra fonctionner impérativement sous Gnu/Linux, mais j’essaie de garder une certaine compatibilité avec Windows.
- Les clients doivent se trouver tout seuls sur le réseau
- Les clients doivent être authentifiés
- Les connexions doivent être chiffrées
Choix techniques
Le logiciel devant être portable, j’ai choisi de le coder en Python (et parce que Python c’est fun ). Le code sera également auditable. Pour l’interface, j’ai choisi d’utiliser PyQt5, car cette bibliothèque permet de mettre une icône dans la barre système. De plus, elle est bien intégrée sur les différents OS. Le partage des écrans se fera avec VNC et ssVNC: parce que ça fonctionne 23! Mais cela pourrait changer par la suite. La sécurisation des connexion se fait avec TLS (ssl)
Avancée
Je suis débutant avec Python, et j’apprends beaucoup. Je teste plusieurs solutions avant de trouver les bons outils et les bonnes solutions. L’état actuel est une maquette «proof of concept» qui n’est pas encore fonctionnelle. Ce que j’arrive à faire pour le moment:
- J’ai un menu dans la barre système
- Avec des sous-menus!
- Je peux ajouter des utilisateurs dans une liste
- Un thread écoute sur le réseau l’arrivée d’utilisateurs, et ajoute les ajoute dans la liste
- Un thread envoie des messages sur le réseau en broadcast (pour se présenter)
- L’interface communique avec les threads réseau.
- Je sais faire une connexion chiffrée entre deux utilisateurs authentifiés
- Programme de test : en cliquant sur un bouton du menu, un message est envoyé par le thread "parler", est reçu par le thread "ecouter", qui va appeler une méthode de l’interface Qt afin d’ajouter un utilisateur dans la liste.
Reste à faire
- Gérer les utilisateurs et les certificats
- Implémenter toutes les fonctionnalités (partage d’écran, messages, envoi de fichiers…)
- Plein de bricoles!
Licence:
Le logiciel sera libre (GPL probablement). Il a pour vocation à être utilisé par notre association, mais s’il peut servir à d’autres j’en serai très heureux.
Voilà
Si vous avez des commentaires, des idées, des remarques… Je vous écoute! Pour voir l’état actuel: