Releases: kainann/CircusVOIP
CircusVOIP Server V0.1.1
Changelog v0.1.1 — Serveur
Nouveautes
Securite renforcee
-
TLS auto-signe active par defaut : le serveur genere automatiquement
un certificatcert.pem+key.pemau premier demarrage et accepte
uniquement les connexions chiffreeswss://. Plus de tokens en clair
sur le reseau. Aucune configuration requise cote utilisateur. Les
fichiers cert sont reutilises aux demarrages suivants (si supprimes,
ils sont regeneres). -
Auth partagee positions/audio : un client doit d'abord
s'authentifier sur le serveur positions, qui lui remet un ticket
temporaire pour acceder au serveur audio. Impossible de se connecter
directement a l'audio en contournant les checks du serveur positions. -
Anti-bruteforce serveur audio : 5 echecs d'authentification en
60s declenchent un ban de 600s sur l'IP fautive. Le serveur positions
avait deja cette protection en v0.1.0. -
Rate limiting : limite le nombre de messages par seconde qu'un
client deja authentifie peut envoyer (50/100 msg/s cote positions,
60/120 trames/s cote audio). Protege contre un membre malveillant ou
un client bogue qui floode le serveur.
Nouveau fichier source
circusvoip_security.py: module commun regroupant la logique
d'authentification (lockout, rate limit, registre de tickets) et la
generation du certificat TLS. Importe par les deux serveurs et par
le client.
Compatibilite
Le serveur v0.1.1 N'EST PAS compatible avec les clients v0.1.1. Le
client v0.1.1 essaie de se connecter en ws:// non chiffre, le serveur
v0.1.1 ne repond qu'en wss://. Les joueurs doivent installer le
client v0.1.2 en meme temps que tu mets a jour ton serveur.
Dependances ajoutees
Le serveur a maintenant besoin de deux dependances Python (au lieu
d'une seule auparavant) :
pip install websockets cryptography
cryptography est utilise pour generer le certificat TLS auto-signe.
Mise a jour depuis v0.1.0
Avec l'installeur (Windows)
Telecharger CircusVOIP_Server_Setup_v0.1.1.exe et le lancer. L'install
detecte la v0.1.0 et propose la mise a jour. Le token et les channels
sont preserves.
A la main (Linux)
Si tu hebergeas depuis le code source (clone Git) :
cd CircusVOIP/server
git pull
# Dans un venv :
./venv/bin/pip install websockets cryptography
# Ou en systeme (Ubuntu 22+/24+ requiert --break-system-packages) :
# sudo pip3 install websockets cryptography --break-system-packages
Puis redemarrer les services :
systemctl restart circusvoip-server circusvoip-audio
(adapter selon ton setup ; si tu n'utilises pas systemd, kill puis
relance les python3 circusvoip_*_server.py --headless)
Securite : ce qui est protege et ce qui ne l'est pas
Protege
- Sniffing passif : les tokens et conversations transitent
chiffres. Un attaquant qui ecoute le reseau (Wi-Fi public, etc.) ne
voit rien d'exploitable. - Bruteforce du token : 5 essais ratees suffisent pour un ban de
10 minutes sur l'IP. - Flood applicatif : un client malveillant ne peut pas saturer le
serveur de messages.
Pas protege
- MITM cible : le certificat auto-signe chiffre mais
n'authentifie pas l'identite du serveur. Un attaquant determine
qui se ferait passer pour le serveur pourrait theoriquement
intercepter, a condition d'avoir aussi le token. - Compromission du PC qui heberge : si le serveur tourne sur ton PC
perso, un attaquant qui exploite une faille de Python ou des libs
accede a tout le PC. Heberger sur un VPS dedie (3-5 EUR/mois) limite
les degats en cas de souci. - Saturation reseau : si quelqu'un cible ton IP avec un DDoS, le
rate limiting applicatif ne couvre pas la bande passante. Seul ton
hebergeur peut filtrer ce niveau.
Pour un usage plus serieux
Si tu publies a un cercle plus large et veux un certificat valide CA :
- Avoir un nom de domaine (ex:
voip.monsite.fr) - Mettre Caddy ou nginx devant ton serveur Python
- Caddy gere Let's Encrypt automatiquement
- Le client se connecte en
wss://voip.monsite.fravec verification
d'identite stricte
Le code actuel reste compatible : il suffit de pointer le reverse
proxy vers 127.0.0.1:8888 cote serveur Python, et de ne pas exposer
les ports 8888/8889 sur Internet ouvert (seul 443 du reverse proxy
est public).
CircusVOIP Client V0.1.2
Changelog v0.1.2 — Client
Corrections critiques
Crash silencieux du thread OCR au SIGN FLIP BASCULE
Un crash NameError: name 'SIGN_NEAR_ZERO' is not defined dans la
boucle OCR rendait le client inutilisable des qu'il rencontrait le
phenomene de SIGN FLIP BASCULE en jeu. Le client perdait l'OCR sans
message clair (regression du 08/05). Correction d'une reference vers
le module _sco_mod.
Zones non reconnues a Levski et Pyro
Trois zones du HUD Star Citizen n'etaient pas dans la whitelist du
parser :
levski_v2_bottomdeck(les niveaux inferieurs de Levski)locationharvestableobjectcontainer_ab_pyro_int_enctr_001(les
RAB sur Pyro)- Equivalence OCR
6 <-> bajoutee (corrige les cidpyroblus comme
pyro1apres canonicalisation, qui cassait la portee audio entre
joueurs dans Pyro 6gb)
Sans ces correctifs, l'audio de proximite ne fonctionnait pas dans ces
zones (les joueurs etaient consideres comme n'etant pas dans la meme
zone, donc inaudibles meme cote a cote).
Securite
Connexion chiffree (wss://)
Le client se connecte maintenant au serveur en wss:// (TLS auto-signe
genere par le serveur). Les tokens et conversations ne transitent plus
en clair sur le reseau.
Le client n'authentifie pas strictement l'identite du serveur
(certificat auto-signe non verifie), mais la connexion est chiffree, ce
qui empeche le sniffing passif des tokens et conversations sur le
reseau (Wi-Fi public, reseau d'entreprise, etc.).
Compatibilite serveur
Le client v0.1.2 N'EST PAS compatible avec un serveur v0.1.0. Le
serveur doit etre en v0.1.1 ou plus recent pour accepter ce client.
Mettez a jour le serveur de votre groupe en meme temps que le client.
Ameliorations interface
- Titre de la fenetre affiche dynamiquement la version chargee depuis
circusvoip_version.json(avant : titre hardcode a "0.1"
independamment de la version reelle). - Libelles renommes pour plus de clarte :
MUTE PROXIMITE->MUTE AUDIO PROXIMITEMUTE RADIO->MUTE AUDIO RADIO
Mise a jour depuis v0.1.1
Telecharger CircusVOIP_Client_Setup_v0.1.2.exe et le lancer.
L'installeur detecte la v0.1.1, propose la mise a jour, et conserve les
parametres (channels radio, profils, configuration audio).
Pour le serveur
Le serveur v0.1.0 n'est PAS compatible avec ce client. L'admin du
serveur doit mettre a jour vers la v0.1.1 :
➡️ CircusVOIP_Server_Setup_v0.1.1.exe (voir release server-v0.1.1)
CircusVOIP Server V0.1.0
Première release publique du serveur CircusVOIP.
Installation
Téléchargez CircusVOIP_Server_Setup_v0.1.0.exe ci-dessous et lancez-le.
L'installeur inclut :
- CircusVOIP Server : le serveur de positions (port 8888) et le serveur audio (port 8889)
- CircusVOIP Admin : la console d'administration (création de canaux, profils, kick, etc.)
Configuration requise (côté hébergeur)
- Windows 10 / 11
- Connexion réseau accessible aux clients :
- LAN (joueurs sur le même réseau) : aucune config particulière
- Internet : ouvrir les ports TCP 8888 et TCP 8889 sur le routeur (port forwarding) ou utiliser un VPN type Tailscale
Premier lancement
Au premier lancement, un mot de passe est généré automatiquement. Communiquez-le aux joueurs avec l'IP de la machine.
Self-host alternatif
Pour héberger le serveur sur une machine dédiée (VPS, PC secondaire) avec les sources Python directement, voir le README.
CircusVOIP Client V0.1.1
Correctif de l'OCR pour le client CircusVOIP.
Corrections
- OCR réparé : l'OCR ne parvenait pas à s'initialiser et ne pouvait donc pas lire la position du joueur. C'est corrigé.
Mise à jour depuis la v0.1.0
Téléchargez CircusVOIP_Client_Setup_v0.1.1.exe ci-dessous et lancez-le.
Configuration requise
Identique à la v0.1.0 — voir le README.
CircusVOIP Client v0.1.0
Première release publique du client CircusVOIP.
Installation
Téléchargez CircusVOIP_Client_Setup_v0.1.0.exe ci-dessous et lancez-le.
Configuration requise
- Windows 10 / 11
- Star Citizen lancé (pour l'OCR de position)
- Un micro
- L'adresse IP et le mot de passe d'un serveur CircusVOIP
- Carte graphique NVIDIA recommandée (CUDA accélère l'OCR)
Fonctionnalités
- Audio de proximité basé sur la position lue par OCR
- Radio par canaux et par profils (PTT)
- Mode RP : filtre radio appliqué selon le port du casque
- Overlays flottants au-dessus du jeu
Voir le README pour la prise en main complète.