Compare commits

..

No commits in common. "6083e8bbdedc1ffb662c79170f0515d6f0010b49" and "62ff1a5257c1e16112290e4553a043280224044a" have entirely different histories.

10 changed files with 247 additions and 356 deletions

File diff suppressed because it is too large Load Diff

View File

@ -140,16 +140,16 @@ def create_torrent(file_path, torrent_file, datafullsum):
# Ejecutamos el comando en el sistema, e imprimimos el resultado:
try:
journal.send(f"createTorrentSum.py: Running command: {' '.join(splitted_cmd)}", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send(f"createTorrentSum.py: Running command: {' '.join(splitted_cmd)}", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
result = subprocess.run(splitted_cmd, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
journal.send(f"createTorrentSum.py: Command ReturnCode: {result.returncode}", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send(f"createTorrentSum.py: Command ReturnCode: {result.returncode}", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
print(f"ReturnCode: {result.returncode}")
except subprocess.CalledProcessError as error:
journal.send(f"createTorrentSum.py: Command error: {error}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send(f"createTorrentSum.py: Command error: {error}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api")
print(f"ReturnCode: {error.returncode}")
print(f"Error Output: {error.stderr.decode()}")
except Exception as error:
journal.send(f"createTorrentSum.py: Command exception: {error}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send(f"createTorrentSum.py: Command exception: {error}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api")
print(f"Se ha producido un error inesperado: {error}")
@ -158,14 +158,14 @@ def update_repo_info():
Como se ve, es necesario que el script se ejecute como sudo, o dará error.
"""
try:
journal.send("createTorrentSum.py: Running script 'updateRepoInfo.py'...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("createTorrentSum.py: Running script 'updateRepoInfo.py'...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
result = subprocess.run(['sudo', 'python3', update_repo_script], check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
except subprocess.CalledProcessError as error:
journal.send(f"createTorrentSum.py: 'updateRepoInfo.py' error: {error}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send(f"createTorrentSum.py: 'updateRepoInfo.py' error: {error}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api")
print(f"Error Output: {error.stderr.decode()}")
sys.exit(3)
except Exception as error:
journal.send(f"createTorrentSum.py: 'updateRepoInfo.py' exception: {error}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send(f"createTorrentSum.py: 'updateRepoInfo.py' exception: {error}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api")
print(f"Se ha producido un error inesperado: {error}")
sys.exit(4)
@ -187,18 +187,18 @@ def main():
# Si no existe el archivo de imagen, imprimimos un mensaje de error y salimos del script:
if not os.path.exists(file_path):
journal.send("createTorrentSum.py: Image not found", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("createTorrentSum.py: Image not found", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api")
print("Image file doesn't exist")
sys.exit(2)
# Si la imagen está bloqueada, imprimimos un mensaje de error y salimos del script:
if os.path.exists(f"{file_path}.lock"):
journal.send("createTorrentSum.py: Image is locked", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("createTorrentSum.py: Image is locked", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api")
print("Image is locked")
sys.exit(3)
# Creamos un archivo de bloqueo:
journal.send("createTorrentSum.py: Creating '.lock' file...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("createTorrentSum.py: Creating '.lock' file...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
open(f"{file_path}.lock", "w").close()
# Construimos las rutas completas de los archivos ".size", ".sum", ".full.sum" y ".torrent":
@ -209,51 +209,51 @@ def main():
# Creamos el archivo ".size" (pque almacenará el tamaño del archivo), siempre que no exista:
if not os.path.exists(size_file):
journal.send("createTorrentSum.py: Creating '.size' file...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("createTorrentSum.py: Creating '.size' file...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
print("Creating '.size' file...")
with open(size_file, 'w') as file:
datasize = os.path.getsize(file_path)
file.write(str(datasize))
else:
journal.send("createTorrentSum.py: '.size' file exists", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("createTorrentSum.py: '.size' file exists", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
print("Size file exists")
# Creamos el archivo ".sum" (para transferencias Unicast y Multicast), siempre que no exista:
if not os.path.exists(sum_file):
journal.send("createTorrentSum.py: Creating '.sum' file...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("createTorrentSum.py: Creating '.sum' file...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
print("Creating '.sum' file...")
with open(sum_file, 'w') as file:
datasum = get_md5_sum(file_path)
file.write(datasum)
else:
journal.send("createTorrentSum.py: '.sum' file exists", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("createTorrentSum.py: '.sum' file exists", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
print("Sum file exists")
# Creamos el archivo ".full.sum" (para transferencias P2P), siempre que no exista:
if not os.path.exists(fullsum_file):
journal.send("createTorrentSum.py: Creating '.full.sum' file...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("createTorrentSum.py: Creating '.full.sum' file...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
print("Creating '.ful.sum' file...")
with open(fullsum_file, 'w') as file:
datafullsum = get_md5_fullsum(file_path)
file.write(datafullsum)
else:
journal.send("createTorrentSum.py: '.full.sum' file exists", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("createTorrentSum.py: '.full.sum' file exists", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
print("Fullsum file exists")
# Creamos el archivo ".torrent" (siempre que no exista):
if not os.path.exists(torrent_file):
journal.send("createTorrentSum.py: Creating '.torrent' file...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("createTorrentSum.py: Creating '.torrent' file...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
create_torrent(file_path, torrent_file, datafullsum)
else:
journal.send("createTorrentSum.py: '.torrent' file exists", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("createTorrentSum.py: '.torrent' file exists", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
print("Torrent file exists")
# Eliminamos el archivo de bloqueo:
journal.send("createTorrentSum.py: Removing '.lock' file...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("createTorrentSum.py: Removing '.lock' file...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
os.remove(f"{file_path}.lock")
# Actualizamos la información del repositorio, ejecutando el script "updateRepoInfo.py":
journal.send("createTorrentSum.py: Updating repository info...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("createTorrentSum.py: Updating repository info...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
print("Updating Repository Info...")
update_repo_info()

View File

@ -122,21 +122,21 @@ def export_image(file_path, remote_host, remote_user):
#ssh_client.connect(remote_host, 22, remote_user, 'opengnsys') # Así se haría con password
sftp_client = ssh_client.open_sftp()
except Exception as error_description:
journal.send(f"exportImage.py: Connection exception: {error_description}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send(f"exportImage.py: Connection exception: {error_description}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api")
print(f"Connection has returned an exception: {error_description}")
sys.exit(4)
# Comprobamos si la imagen ya existe en el equipo remoto, en cuyo caso devolvemos un error y salimos del script:
try:
sftp_client.stat(file_path)
journal.send("exportImage.py: Image already exists on remote repository", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("exportImage.py: Image already exists on remote repository", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api")
print("Image already exists on remote repository.")
sys.exit(5)
except IOError:
print("As expected, image doesn't exist on remote repository.")
# Creamos un archivo de bloqueo en el servidor remoto:
journal.send("exportImage.py: Creating '.lock' file...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("exportImage.py: Creating '.lock' file...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
sftp_client.open(f"{file_path}.lock", 'w')
# Exportamos la imagen al servidor remoto, junto con sus archivos asociados:
@ -144,15 +144,15 @@ def export_image(file_path, remote_host, remote_user):
sftp_client.put(f"{file_path}{ext}", f"{file_path}{ext}")
# Renombramos el archivo remoto ".info.checked" a ".info", para que lo pille el script "updateRepoInfo.py":
journal.send("exportImage.py: Renaming '.info.checked' file to '.info'...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("exportImage.py: Renaming '.info.checked' file to '.info'...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
sftp_client.rename(f"{file_path}.info.checked", f"{file_path}.info")
# Eliminamos el archivo de bloqueo del servidor remoto:
journal.send("exportImage.py: Removing '.lock' file...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("exportImage.py: Removing '.lock' file...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
sftp_client.remove(f"{file_path}.lock")
# Cerramos el cliente SSH y el cliente SFTP:
journal.send("exportImage.py: Closing remote connection...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("exportImage.py: Closing remote connection...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
ssh_client.close()
sftp_client.close()
@ -174,13 +174,13 @@ def main():
# Si no existe el archivo de imagen, imprimimos un mensaje de error y salimos del script:
if not os.path.exists(file_path):
journal.send("exportImage.py: Image not found", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("exportImage.py: Image not found", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api")
print("Image file doesn't exist")
sys.exit(2)
# Si la imagen está bloqueada, imprimimos un mensaje de error y salimos del script:
if os.path.exists(f"{file_path}.lock"):
journal.send("exportImage.py: Image is locked", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("exportImage.py: Image is locked", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api")
print("Image is locked.")
sys.exit(3)

View File

@ -123,7 +123,7 @@ def import_image(file_path, remote_host, remote_user):
#ssh_client.connect(remote_host, 22, remote_user, 'opengnsys') # Así se haría con password
sftp_client = ssh_client.open_sftp()
except Exception as error_description:
journal.send(f"importImage.py: Connection exception: {error_description}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send(f"importImage.py: Connection exception: {error_description}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api")
print(f"Connection has returned an exception: {error_description}")
sys.exit(2)
@ -131,25 +131,25 @@ def import_image(file_path, remote_host, remote_user):
try:
sftp_client.stat(file_path)
except IOError:
journal.send("importImage.py: Remote image not found", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("importImage.py: Remote image not found", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api")
print("Remote image doesn't exist")
sys.exit(3)
# Comprobamos si la imagen remota está bloqueada, en cuyo caso devolvemos un error y salimos del script,
try: # y en caso contrario la importamos (junto con todos sus archivos asociados):
sftp_client.stat(f"{file_path}.lock")
journal.send("importImage.py: Remote image is locked", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("importImage.py: Remote image is locked", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api")
print("Remote image is locked.")
sys.exit(4)
except IOError:
print("Importing remote image...")
journal.send("importImage.py: Creating '.lock' file...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("importImage.py: Creating '.lock' file...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
open(f"{file_path}.lock", "w").close() # Creamos un archivo de bloqueo
for ext in extensions:
sftp_client.get(f"{file_path}{ext}", f"{file_path}{ext}")
# Cerramos el cliente SSH y el cliente SFTP:
journal.send("importImage.py: Closing remote connection...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("importImage.py: Closing remote connection...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
ssh_client.close()
sftp_client.close()
@ -160,14 +160,14 @@ def update_repo_info():
Como se ve, es necesario que el script se ejecute como sudo, o dará error.
"""
try:
journal.send("importImage.py: Running script 'updateRepoInfo.py'...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("importImage.py: Running script 'updateRepoInfo.py'...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
result = subprocess.run(['sudo', 'python3', update_repo_script], check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
except subprocess.CalledProcessError as error:
journal.send(f"importImage.py: 'updateRepoInfo.py' error: {error}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send(f"importImage.py: 'updateRepoInfo.py' error: {error}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api")
print(f"Error Output: {error.stderr.decode()}")
sys.exit(2)
except Exception as error:
journal.send(f"importImage.py: 'updateRepoInfo.py' exception: {error}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send(f"importImage.py: 'updateRepoInfo.py' exception: {error}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api")
print(f"Se ha producido un error inesperado: {error}")
sys.exit(3)
@ -195,15 +195,15 @@ def main():
import_image(file_path, remote_host, remote_user)
# Renombramos el archivo ".info.checked" a ".info", para que lo pille el script "updateRepoInfo.py":
journal.send("importImage.py: Renaming '.info' file to '.info.checked'...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("importImage.py: Renaming '.info' file to '.info.checked'...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
os.rename(f"{file_path}.info.checked", f"{file_path}.info")
# Eliminamos el archivo de bloqueo:
journal.send("importImage.py: Removing '.lock' file...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("importImage.py: Removing '.lock' file...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
os.remove(f"{file_path}.lock")
# Actualizamos la información del repositorio, ejecutando el script "updateRepoInfo.py":
journal.send("importImage.py: Updating repository info...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("importImage.py: Updating repository info...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
print("Updating Repository Info...")
update_repo_info()

View File

@ -38,19 +38,19 @@ def run_bittornado(repo_path):
# Creamos una lista con el comando "btlaunchmany.bittornado" y sus parámetros, y lo imprimimos con espacios:
splitted_cmd = f"btlaunchmany.bittornado {repo_path}".split()
print(f"Sending command: {' '.join(splitted_cmd)}")
journal.send(f"runTorrentSeeder.py: Running command: {' '.join(splitted_cmd)}", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send(f"runTorrentSeeder.py: Running command: {' '.join(splitted_cmd)}", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
# Ejecutamos el comando "btlaunchmany.bittornado" en el sistema, e imprimimos el resultado:
try:
result = subprocess.run(splitted_cmd, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
journal.send(f"runTorrentSeeder.py: Command ReturnCode: {result.returncode}", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send(f"runTorrentSeeder.py: Command ReturnCode: {result.returncode}", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
print(f"Bittornado ReturnCode: {result.returncode}")
except subprocess.CalledProcessError as error:
journal.send("runTorrentSeeder.py: Process finalized", PRIORITY=journal.LOG_WARNING, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("runTorrentSeeder.py: Process finalized", PRIORITY=journal.LOG_WARNING, SYSLOG_IDENTIFIER="ogrepo-api")
print(f"Bittornado ReturnCode: {error.returncode}")
print(f"Bittornado Error Output: {error.stderr.decode()}")
except Exception as error:
journal.send(f"runTorrentSeeder.py: Command exception: {error}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send(f"runTorrentSeeder.py: Command exception: {error}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api")
print(f"Unexpected bittornado error: {error}")
@ -65,10 +65,10 @@ def main():
"""
# Finalizamos el proceso "btlaunchmany.bittornado" (en caso de que estuviera corriendo):
try:
journal.send("runTorrentSeeder.py: Killing process 'btlaunchmany.bittornado'...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("runTorrentSeeder.py: Killing process 'btlaunchmany.bittornado'...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
subprocess.run(f"pkill btlaunchmany".split(), check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
except Exception as error_description:
journal.send("runTorrentSeeder.py: No 'btlaunchmany.bittornado' process running", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("runTorrentSeeder.py: No 'btlaunchmany.bittornado' process running", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
print(f"No btlaunchmany.bittornado process running? Returned error: {error_description}")
# Ejecutamos el comando "btlaunchmany.bittornado" (para hacer seed de los torrents):

View File

@ -46,19 +46,19 @@ def run_bttrack(repo_path):
# Creamos una lista con el comando "bttrack" y sus parámetros, y lo imprimimos con espacios:
splitted_cmd = f"bttrack --port {bttrack_port} --dfile {bttrack_dfile} --save_dfile_interval {bttrack_interval} --reannounce_interval {bttrack_interval} --logfile {bttrack_log} --allowed_dir {repo_path} --allow_get {bttrack_allow_get}".split()
print(f"Sending command: {' '.join(splitted_cmd)}")
journal.send(f"runTorrentTracker.py: Running command: {' '.join(splitted_cmd)}", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send(f"runTorrentTracker.py: Running command: {' '.join(splitted_cmd)}", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
# Ejecutamos el comando "bttrack" en el sistema, e imprimimos el resultado:
try:
result = subprocess.run(splitted_cmd, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
journal.send(f"runTorrentTracker.py: Command ReturnCode: {result.returncode}", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send(f"runTorrentTracker.py: Command ReturnCode: {result.returncode}", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
print(f"Bttrack ReturnCode: {result.returncode}")
except subprocess.CalledProcessError as error:
journal.send("runTorrentTracker.py: Process finalized", PRIORITY=journal.LOG_WARNING, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("runTorrentTracker.py: Process finalized", PRIORITY=journal.LOG_WARNING, SYSLOG_IDENTIFIER="ogrepo-api")
print(f"Bttrack ReturnCode: {error.returncode}")
print(f"Bttrack Error Output: {error.stderr.decode()}")
except Exception as error:
journal.send(f"runTorrentTracker.py: Command exception: {error}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send(f"runTorrentTracker.py: Command exception: {error}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api")
print(f"Unexpected bttrack error: {error}")
@ -73,15 +73,15 @@ def main():
"""
# Finalizamos el proceso "bttrack" (en caso de que estuviera corriendo):
try:
journal.send("runTorrentTracker.py: Killing process 'bttrack'...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("runTorrentTracker.py: Killing process 'bttrack'...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
subprocess.run(f"pkill bttrack".split(), check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
except Exception as error_description:
journal.send("runTorrentTracker.py: No 'bttrack' process running", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("runTorrentTracker.py: No 'bttrack' process running", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
print(f"No bttrack process running? Returned error: {error_description}")
# Si existe el archivo "/tmp/dstate", lo eliminamos:
if os.path.exists(bttrack_dfile):
journal.send("runTorrentTracker.py: Removing '/tmp/dstate'...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("runTorrentTracker.py: Removing '/tmp/dstate'...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
os.remove(bttrack_dfile)
# Esperamos 2 segundos:

View File

@ -99,16 +99,16 @@ def get_repo_iface():
Como se ve, es necesario que el script se ejecute como sudo, o dará error.
"""
try:
journal.send("sendFileMcast.py: Running script 'getRepoIface.py'...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("sendFileMcast.py: Running script 'getRepoIface.py'...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
result = subprocess.run(['sudo', 'python3', repo_iface_script], check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
repo_iface = result.stdout.decode().strip() # Es necesario poner "strip", o dará error.
return repo_iface
except subprocess.CalledProcessError as error:
journal.send(f"sendFileMcast.py: 'getRepoIface.py' error: {error}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send(f"sendFileMcast.py: 'getRepoIface.py' error: {error}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api")
print(f"Error Output: {error.stderr.decode()}")
sys.exit(3)
except Exception as error:
journal.send(f"sendFileMcast.py: 'getRepoIface.py' exception: {error}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send(f"sendFileMcast.py: 'getRepoIface.py' exception: {error}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api")
print(f"Se ha producido un error inesperado: {error}")
sys.exit(4)
@ -145,7 +145,7 @@ def main():
cerror = "8x8/128"
# Obtenemos y almacenamos la interfaz del repositorio, mediante el script "getRepoIface.py":
journal.send("sendFileMcast.py: Getting repository interface...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("sendFileMcast.py: Getting repository interface...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
repo_iface = get_repo_iface()
# Creamos una lista con el comando a enviar (esto es requerido por la función "subprocess.run").
@ -172,16 +172,16 @@ def main():
# Ejecutamos el comando en el sistema, e imprimimos el resultado:
try:
journal.send(f"sendFileMcast.py: Running command: {' '.join(splitted_cmd)}", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send(f"sendFileMcast.py: Running command: {' '.join(splitted_cmd)}", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
result = subprocess.run(splitted_cmd, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
journal.send(f"sendFileMcast.py: Command ReturnCode: {result.returncode}", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send(f"sendFileMcast.py: Command ReturnCode: {result.returncode}", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
print(f"ReturnCode: {result.returncode}")
except subprocess.CalledProcessError as error:
journal.send("sendFileMcast.py: Process finalized", PRIORITY=journal.LOG_WARNING, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("sendFileMcast.py: Process finalized", PRIORITY=journal.LOG_WARNING, SYSLOG_IDENTIFIER="ogrepo-api")
print(f"ReturnCode: {error.returncode}")
print(f"Error Output: {error.stderr.decode()}")
except Exception as error:
journal.send(f"sendFileMcast.py: Command exception: {error}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send(f"sendFileMcast.py: Command exception: {error}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api")
print(f"Se ha producido un error inesperado: {error}")

View File

@ -148,19 +148,19 @@ def main():
splitted_cmd = f"uftp -M {ip} -p {port} -L {log_file} -o -D {cache_path} -Y aes256-cbc -h sha256 -e rsa -c -K 1024 -R {bitrate} {file_path}".split()
print(f"Sending command: {' '.join(splitted_cmd)}")
journal.send(f"sendFileUFTP.py: Running command: {' '.join(splitted_cmd)}", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send(f"sendFileUFTP.py: Running command: {' '.join(splitted_cmd)}", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
# Ejecutamos el comando en el sistema, e imprimimos el resultado:
try:
result = subprocess.run(splitted_cmd, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
journal.send(f"sendFileUFTP.py: Command ReturnCode: {result.returncode}", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send(f"sendFileUFTP.py: Command ReturnCode: {result.returncode}", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
print(f"ReturnCode: {result.returncode}")
except subprocess.CalledProcessError as error:
journal.send("sendFileUFTP.py: Process finalized", PRIORITY=journal.LOG_WARNING, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("sendFileUFTP.py: Process finalized", PRIORITY=journal.LOG_WARNING, SYSLOG_IDENTIFIER="ogrepo-api")
print(f"ReturnCode: {error.returncode}")
print(f"Error Output: {error.stderr.decode()}")
except Exception as error:
journal.send(f"sendFileUFTP.py: Command exception: {error}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send(f"sendFileUFTP.py: Command exception: {error}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api")
print(f"Se ha producido un error inesperado: {error}")

View File

@ -178,14 +178,14 @@ def update_trash_info():
Como se ve, es necesario que el script se ejecute como sudo, o dará error.
"""
try:
journal.send("updateRepoInfo.py: Running script 'updateTrashInfo.py'...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("updateRepoInfo.py: Running script 'updateTrashInfo.py'...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
result = subprocess.run(['sudo', 'python3', update_trash_script], check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
except subprocess.CalledProcessError as error:
journal.send(f"updateRepoInfo.py: 'updateTrashInfo.py' error: {error}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send(f"updateRepoInfo.py: 'updateTrashInfo.py' error: {error}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api")
print(f"Error Output: {error.stderr.decode()}")
sys.exit(3)
except Exception as error:
journal.send(f"updateRepoInfo.py: 'updateTrashInfo.py' exception: {error}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send(f"updateRepoInfo.py: 'updateTrashInfo.py' exception: {error}", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api")
print(f"Se ha producido un error inesperado: {error}")
sys.exit(4)
@ -202,35 +202,35 @@ def main():
# Comprobamos si tenemos permisos de escritura sobre el directorio que contiene el archivo "repoinfo.json"
# ("/opt/opengnsys/etc"), y en caso contrario lanzamos una excepción:
if not os.access(os.path.dirname(info_file), os.W_OK):
journal.send(f"updateRepoInfo.py: Cant't access to '{info_file}' directory", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send(f"updateRepoInfo.py: Cant't access to '{info_file}' directory", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api")
raise PermissionError(f"Cannot access {info_file}")
# Comprobamos si existe el archivo "repoinfo.json", y en caso contrario lo creamos:
if not os.path.exists(info_file):
journal.send("updateRepoInfo.py: Creating empty json file...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("updateRepoInfo.py: Creating empty json file...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
print("Creating empty json file...")
create_empty_json()
# Comprobamos si tenemos permisos de escritura sobre el archivo, y en caso contrario lanzamos un error:
if not os.access(info_file, os.W_OK):
journal.send(f"updateRepoInfo.py: Cant't write on '{info_file}'", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send(f"updateRepoInfo.py: Cant't write on '{info_file}'", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api")
raise PermissionError(f"Cannot access {info_file}")
# Llamamos a la función "check_files", para añadir al archivo json las imágenes aun no añadidas
# (que son las que tienen asociado un archivo ".info", aun no renombrado o eliminado):
journal.send("updateRepoInfo.py: Checking file images...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("updateRepoInfo.py: Checking file images...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
print("Checking file images...")
check_files()
# Llamamos a la función "remove_from_json", para eliminar del archivo json las imágenes que fueron eliminadas del repositorio
# (solo si el archivo tiene contenido, o dará error):
if os.path.getsize(info_file) > 0:
journal.send("updateRepoInfo.py: Removing deleted images from json file...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("updateRepoInfo.py: Removing deleted images from json file...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
print("Removing deleted images...")
remove_from_json()
# Actualizamos la información de la papelera, ejecutando el script "updateTrashInfo.py":
journal.send("updateRepoInfo.py: Updating trash info...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("updateRepoInfo.py: Updating trash info...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
print("Updating Trash Info...")
update_trash_info()

View File

@ -194,37 +194,37 @@ def main():
"""
# Comprobamos si existe el directorio correspondiente a la papelera, y en caso contrario lo creamos:
if not os.path.exists(trash_path):
journal.send("updateTrashInfo.py: Creting trash folder...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("updateTrashInfo.py: Creting trash folder...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
print("Creating trash folder...")
create_trash_folder()
# Comprobamos si tenemos permisos de escritura sobre el directorio que contiene el archivo "trashinfo.json"
# ("/opt/opengnsys/etc"), y en caso contrario lanzamos una excepción:
if not os.access(os.path.dirname(info_file), os.W_OK):
journal.send(f"updateTrashInfo.py: Cant't access to '{info_file}' directory", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send(f"updateTrashInfo.py: Cant't access to '{info_file}' directory", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api")
raise PermissionError(f"Cannot access {info_file}")
# Comprobamos si existe el archivo "trashinfo.json", y en caso contrario lo creamos:
if not os.path.exists(info_file):
journal.send("updateTrashInfo.py: Creating empty json file...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("updateTrashInfo.py: Creating empty json file...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
print("Creating empty json file...")
create_empty_json()
# Comprobamos si tenemos permisos de escritura sobre el archivo, y en caso contrario lanzamos un error:
if not os.access(info_file, os.W_OK):
journal.send(f"updateTrashInfo.py: Cant't write on '{info_file}'", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send(f"updateTrashInfo.py: Cant't write on '{info_file}'", PRIORITY=journal.LOG_ERR, SYSLOG_IDENTIFIER="ogrepo-api")
raise PermissionError(f"Cannot access {info_file}")
# Llamamos a la función "check_files", para añadir al archivo json las imágenes aun no añadidas
# (que son las que tienen asociado un archivo ".info.checked"):
journal.send("updateTrashInfo.py: Checking file images...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("updateTrashInfo.py: Checking file images...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
print("Checking file images...")
check_files()
# Llamamos a la función "remove_from_json", para eliminar del archivo json las imágenes que ya no están en la papelera
# (solo si el archivo tiene contenido, o dará error):
if os.path.getsize(info_file) > 0:
journal.send("updateTrashInfo.py: Removing inexistent images from json file...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api_DEBUG")
journal.send("updateTrashInfo.py: Removing inexistent images from json file...", PRIORITY=journal.LOG_INFO, SYSLOG_IDENTIFIER="ogrepo-api")
print("Removing inexistent images...")
remove_from_json()