vpn integration
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
import os
|
||||
|
||||
from django.conf import settings
|
||||
|
||||
import traceback
|
||||
@@ -21,6 +23,24 @@ class Transmission:
|
||||
|
||||
def __init__(self):
|
||||
self.client = Client(**settings.TRANSMISSION)
|
||||
self.update_vpn_port()
|
||||
|
||||
def update_vpn_port(self):
|
||||
"""Lit le port forwarded par Gluetun et met à jour Transmission si nécessaire"""
|
||||
port_file = "/tmp/gluetun/forwarded_port"
|
||||
if os.path.exists(port_file):
|
||||
try:
|
||||
with open(port_file) as f:
|
||||
vpn_port = int(f.read().strip())
|
||||
|
||||
# Récupère le port actuel configuré dans Transmission
|
||||
current_settings = self.client.get_session()
|
||||
if current_settings.peer_port != vpn_port:
|
||||
self.client.set_session(peer_port=vpn_port)
|
||||
# Optionnel: loguer le changement
|
||||
print(f"Transmission peer-port updated to {vpn_port}")
|
||||
except Exception as e:
|
||||
print(f"Error updating Transmission port: {e}")
|
||||
|
||||
def add_torrent(self, file, file_mode="file_object"):
|
||||
match file_mode:
|
||||
@@ -53,6 +73,34 @@ class Transmission:
|
||||
def delete(self, hash_string):
|
||||
return self.client.remove_torrent(hash_string, delete_data=True)
|
||||
|
||||
def get_diagnostics(self):
|
||||
"""
|
||||
Retourne des informations détaillées sur l'état de Transmission et du VPN.
|
||||
Utile pour le debug via le shell Django.
|
||||
"""
|
||||
session = self.client.get_session()
|
||||
|
||||
# 1. Vérification du port VPN (Lecture du fichier Gluetun)
|
||||
port_file = "/tmp/gluetun/forwarded_port"
|
||||
vpn_port = None
|
||||
if os.path.exists(port_file):
|
||||
with open(port_file, "r") as f:
|
||||
vpn_port = f.read().strip()
|
||||
|
||||
# 2. Test de connectivité du port (via l'API Transmission)
|
||||
# Ceci demande à Transmission de vérifier si son port est ouvert sur internet
|
||||
port_is_open = self.client.port_test()
|
||||
|
||||
return {
|
||||
"transmission_version": session.version,
|
||||
"config_peer_port": session.peer_port,
|
||||
"gluetun_forwarded_port": vpn_port,
|
||||
"port_test_success": port_is_open,
|
||||
"download_dir": session.download_dir,
|
||||
"rpc_version": session.rpc_version,
|
||||
"peer_port_random_on_start": session.peer_port_random_on_start,
|
||||
}
|
||||
|
||||
|
||||
transmission_handler = Transmission()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user