Compare commits

..

13 Commits

Author SHA1 Message Date
Nicolas Arenas 84c7aa8e29 Merge branch 'update_torrent_clients'
ogclient/pipeline/head This commit looks good Details
2025-06-27 08:10:43 +02:00
Nicolas Arenas 2a92557bbc Updated Changelog 2025-06-27 08:07:33 +02:00
Nicolas Arenas b410403ea5 missing changes in last commit 2025-06-27 08:03:43 +02:00
Nicolas Arenas 5ea6489b41 missing changes in last commit 2025-06-27 07:46:16 +02:00
Nicolas Arenas 155f4b95b8 Merge pull request 'refs #2340: Replaces ctorrent with aria2c and mktorrent' (#73) from update_torrent_clients into main
ogclient/pipeline/head This commit looks good Details
Reviewed-on: #73
2025-06-27 07:02:53 +02:00
Nicolas Arenas 4ae16782ca updated changelog 2025-06-27 06:53:51 +02:00
Nicolas Arenas 5321325142 refs #2340: Replaces ctorrent with aria2c and mktorrent 2025-06-26 18:44:31 +02:00
Natalia Serrano 4c191aa730 Merge pull request 'fix-syntax-and-others' (#72) from fix-syntax-and-others into main
ogclient/pipeline/head This commit looks good Details
ogclient/pipeline/tag This commit looks good Details
Reviewed-on: #72
2025-06-26 13:39:31 +02:00
Natalia Serrano e3f5470fce refs #2331 fix syntax and other errors 2025-06-26 13:37:33 +02:00
Natalia Serrano 13ebbc2939 refs #2319 widen a check for None 2025-06-26 13:26:49 +02:00
Natalia Serrano 9cc67bbf1f Merge pull request 'refs #2316 prevent Configurar.py from messing with the browser' (#71) from configurar-coproc into main
ogclient/pipeline/head This commit looks good Details
ogclient/pipeline/tag This commit looks good Details
Reviewed-on: #71
2025-06-25 11:22:25 +02:00
Natalia Serrano 78f27b724e refs #2316 prevent Configurar.py from messing with the browser 2025-06-25 11:21:53 +02:00
Natalia Serrano b78fb6f900 Merge pull request 'refs #2314 fix bugs' (#70) from fix-bugs into main
ogclient/pipeline/head This commit looks good Details
ogclient/pipeline/tag This commit looks good Details
Reviewed-on: #70
2025-06-25 11:18:08 +02:00
5 changed files with 97 additions and 40 deletions

View File

@ -5,6 +5,31 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [0.22.1] - 2025-06-27
### Fixed
- Included some changes that should be in the previous version
## [0.22.0] - 2025-06-26
### Changed
- Changed torrent client from ctorrent to aria2c
- Updated ogCreateTorrent function replaced ctorrent with mktorrent
## [0.21.1] - 2025-06-26
### Fixed
- Fixed syntax and other errors
## [0.21.0] - 2025-06-25
### Changed
- Prevent Configurar.py from messing with the browser
## [0.20.3] - 2025-06-25
### Fixed

View File

@ -47,9 +47,6 @@ prog = os.path.basename(__name__)
#param = ''.join(sys.argv[2:]).replace(' ', '').replace('\t', '')
param = sys.argv[2]
# Activa navegador para ver progreso
coproc = subprocess.Popen (['/opt/opengnsys/bin/browser', '-qws', 'http://localhost/cgi-bin/httpd-log.sh'])
# Leer los dos bloques de parámetros, separados por '!'.
tbprm = param.split ('!')
pparam = tbprm[0] # General disk parameters
@ -71,7 +68,6 @@ for item in tbprm:
# Error si no se define el parámetro de disco (dis).
if dis is None:
coproc.kill()
sys.exit (ogGlobals.OG_ERR_FORMAT)
# Toma valores de distribución de particiones, separados por "%".
@ -101,13 +97,12 @@ for item in tbprm:
elif 'ope' == k: ope = int (v)
missing_params = []
if par is None: missing_params.append ('par')
if cpt is None: missing_params.append ('cpt')
if sfi is None: missing_params.append ('sfi')
if tam is None: missing_params.append ('tam')
if par is None or 'None' == par: missing_params.append ('par')
if cpt is None or 'None' == cpt: missing_params.append ('cpt')
if sfi is None or 'None' == sfi: missing_params.append ('sfi')
if tam is None or 'None' == tam: missing_params.append ('tam')
if missing_params:
print (f'partition data ({item}) missing required parameters ({' '.join (missing_params)})')
coproc.kill()
sys.exit (1)
# Componer datos de particionado.
@ -153,7 +148,6 @@ if 'CACHE' in sparam:
rc = SystemLib.ogExecAndLog ('command', [f'{ogGlobals.OGSCRIPTS}/initCache', tch])
if not rc:
SystemLib.ogRaiseError (['log', 'session'], ogGlobals.OG_ERR_CACHE, f'initCache failed')
coproc.kill()
sys.exit (1)
# Definir particionado.
@ -161,7 +155,6 @@ SystemLib.ogEcho (['session', 'log'], None, f'[50] {ogGlobals.lang.MSG_HELP_ogCr
SystemLib.ogEcho (['session', 'log'], None, f' ogCreatePartitions {dis} {' '.join (tbp)}')
res = SystemLib.ogExecAndLog ('command', [f'{ogGlobals.OGPYFUNCS}/ogCreatePartitions', str(dis)] + tbp)
if not res:
coproc.kill()
SystemLib.ogRaiseError (['log', 'session'], ogGlobals.OG_ERR_GENERIC, f'ogCreatePartitions {dis} {' '.join (tbp)}')
sys.exit (1)
SystemLib.ogExecAndLog ('command', [f'{ogGlobals.OGPYFUNCS}/ogUpdatePartitionTable'])
@ -177,7 +170,6 @@ for p in range (1, maxp+1):
retval = SystemLib.ogExecAndLog ('command', [f'{ogGlobals.OGPYFUNCS}/ogFormatCache'])
else:
SystemLib.ogEcho (['session', 'log'], None, f' ogFormatFs {dis} {p} {tbf[p]}')
coproc.kill()
retval = SystemLib.ogExecAndLog ('command', [f'{ogGlobals.OGPYFUNCS}/ogFormatFs', str(dis), str(p), tbf[p]])
if not retval:
SystemLib.ogRaiseError (['session', 'log'], ogGlobals.OG_ERR_GENERIC, f'ogFormatFs {dis} {p} {tbf[p]}')
@ -190,5 +182,4 @@ SystemLib.ogEcho (['session', 'log'], None, f'{ogGlobals.lang.MSG_INTERFACE_END}
# Retorno
#___________________________________________________________________
coproc.kill()
sys.exit (0)

View File

@ -671,7 +671,7 @@ def ogTorrentStart (disk=None, par=None, container=None, torrentfile=None, torre
SystemLib.ogRaiseError ([], ogGlobals.OG_ERR_NOTFOUND, f'device or torrentfile {dev_err} not found')
return
if subprocess.run (['ctorrent', '-x', source]).returncode: ## if True, then ctorrent failed
if subprocess.run (['aria2c', '-S', source]).returncode: ## if True, then aria2c failed
SystemLib.ogRaiseError ([], ogGlobals.OG_ERR_NOTFOUND, '')
return None
@ -697,24 +697,36 @@ def ogTorrentStart (disk=None, par=None, container=None, torrentfile=None, torre
OPTION = None
cwd = os.getcwd()
# si No fichero .bf, y Si fichero destino imagen ya descargada y su chequeo fue comprobado en su descarga inicial.
if not os.path.exists (f'{source}.bf') and os.path.exists (target):
# si No fichero .aria2, y Si fichero destino imagen ya descargada y su chequeo fue comprobado en su descarga inicial.
if not os.path.exists (f'{target}.aria2') and os.path.exists (target):
print ('imagen ya descargada')
if 'seeder' != mode: return 'success' ## return any true value
print ('MODE seeder ctorrent')
print ('MODE seeder aria2c')
os.chdir (dirsource)
subprocess.run (['timeout', '--signal', 'INT', time, 'ctorrent', '-f', source])
aria2_cmd = [
"aria2c",
"--check-integrity=true",
"--bt-seed-unverified=true",
"--disable-ipv6",
"--seed-ratio=0.0",
f"--seed-time={time}",
"--enable-dht=false",
"--enable-peer-exchange=false",
f"--dir={dirsource}",
f"{source}"
]
subprocess.run (aria2_cmd)
os.chdir (cwd)
return 'success'
#Si no existe bf ni fichero destino descarga inicial.
if not os.path.exists (f'{source}.bf') and not os.path.exists (target):
#Si no existe bf ni fichero destino descarga inicial.
if not os.path.exists (f'{target}.aria2') and not os.path.exists (target):
print ('descarga inicial')
OPTION = 'DOWNLOAD'
# Si fichero bf descarga anterior no completada -.
if os.path.exists (f'{source}.bf') and os.path.exists (target):
if os.path.exists (f'{target}.aria2') and os.path.exists (target):
print ('Continuar con Descargar inicial no terminada.')
OPTION = 'DOWNLOAD'
@ -723,25 +735,51 @@ def ogTorrentStart (disk=None, par=None, container=None, torrentfile=None, torre
os.chdir (dirsource)
if 'peer' == mode:
print ('Donwloading Torrent as peer')
# Creamos el fichero de resumen por defecto
open (f'{source}.bf', 'w').close()
# ctorrent controla otro fichero -b ${SOURCE}.bfog
ctorrent_cmd = ['ctorrent', '-f', '-c', '-X', f'sleep {time}; kill -2 $(pidof ctorrent)', '-C', '100', source, '-s', target, '-b', f'{source}.bfog']
SystemLib.ogEcho(["session","log"],"warning",f'Starting PeerTorrent download in PEER mode')
aria2_cmd = [
"aria2c",
"--enable-dht=false",
"--enable-peer-exchange=false",
"--disable-ipv6" ,
f"--seed-time={time}",
f"--dir={dirsource}",
f"{source}"
]
elif 'leecher' == mode:
print ('Donwloading Torrent as leecher')
ctorrent_cmd = ['ctorrent', source, '-X', 'sleep 30; kill -2 $(pidof ctorrent)', '-C', '100', '-U', '0']
SystemLib.ogEcho(["session","log"],"warning",f'Starting PeerTorrent download in LEECHER mode')
aria2_cmd = [
"aria2c",
"--enable-dht=false",
"--enable-peer-exchange=false",
"--disable-ipv6" ,
"--seed-time=0",
f"--dir={dirsource}",
f"{source}"
]
elif 'seeder' == mode:
print ('MODE seeder ctorrent')
# Creamos el fichero de resumen por defecto
open (f'{source}.bf', 'w').close()
# ctorrent controla otro fichero -b ${SOURCE}.bfog
ctorrent_cmd = ['ctorrent', '-f', '-c', '-X', f'sleep {time}; kill -2 $(pidof ctorrent)', '-C', '100', source, '-s', target, '-b', f'{source}.bfog']
print ('MODE seeder aria2c')
SystemLib.ogEcho(["session","log"],"warning",f'Starting PeerTorrent download in SEEDER mode')
aria2_cmd = [
"aria2c",
"--check-integrity=true",
"--bt-seed-unverified=true",
"--disable-ipv6" ,
"--seed-ratio=0.0",
f"--seed-time={time}",
"--enable-dht=false",
"--enable-peer-exchange=false",
f"--dir={dirsource}", f"{source}"
]
else:
print ('this should not happen')
return None
print (f'executing ctorrent: {' '.join(ctorrent_cmd)}')
subprocess.run (ctorrent_cmd)
SystemLib.ogEcho(["session","log"],"warning",f'Launching torrent command: {aria2_cmd}')
subprocess.run (aria2_cmd)
os.chdir (cwd)
@ -811,11 +849,13 @@ def ogCreateTorrent (disk=None, par=None, container=None, file=None, ip_bttrack=
cwd = os.getcwd()
os.chdir (os.path.dirname (source))
print (f'ctorrent -t {os.path.basename (source)} -u http://{ip_bttrack}:6969/announce -s {source}.torrent')
subprocess.run (['ctorrent', '-t', os.path.basename (source), '-u', f'http://{ip_bttrack}:6969/announce', '-s', f'{source}.torrent'])
print (f'mktorrent -a http://{ip_bttrack}:6969/announce -o {source}.torrent {source}')
subprocess.run (['mktorrent' , '-a', f'http://{ip_bttrack}:6969/announce', '-o', f'{source}.torrent', source])
os.chdir (cwd)
#/**
# ogUpdateCacheIsNecesary [ str_repo ] Relative_path_file_OGIMG_with_/
#@brief Comprueba que el fichero que se desea almacenar en la cache del cliente, no esta.

View File

@ -140,7 +140,7 @@ def main (disk, par, repo, imgname):
# Evaluar variable de engine.cfg para reducir el sistema de archivos en la creacion
if ogGlobals.IMGREDUCE:
SystemLib.ogEcho (['log', 'session'], None, f'[30] {ogGlobals.lang.MSG_HELP_ogReduceFs}')
SystemLib.ogExecAndLog ('command', [f'{ogGlobals.OGPYFUNCS}/ogReduceFs}', disk, par])
SystemLib.ogExecAndLog ('command', [f'{ogGlobals.OGPYFUNCS}/ogReduceFs', disk, par])
newsizefs = FileSystemLib.ogGetFsSize (disk, par)
timeaux = time.time() - time1
SystemLib.ogEcho (['log', 'session'], None, f' {ogGlobals.lang.MSG_SCRIPTS_TIME_PARTIAL} ( {newsizefs} KB ) : {int (timeaux/60)}m {int (timeaux%60)}s')
@ -157,7 +157,7 @@ def main (disk, par, repo, imgname):
with open (ogGlobals.OGLOGCOMMAND, 'w') as fd: fd.write ('')
time2 = time.time()
SystemLib.ogEcho (['log', 'session'], None, f'[40] {ogGlobals.lang.MSG_HELP_ogCreateImage} : ogCreateImage {disk} {par} {repo} {imgname} {ogGlobals.IMGPROG} {ogGlobals.IMGCOMP}')
if not SystemLib.ogExecAndLog ('command', [f'{ogGlobals.OGPYFUNCS}/ogCreateImage}', disk, par, repo, f'/{imgname}', ogGlobals.IMGPROG, ogGlobals.IMGCOMP]):
if not SystemLib.ogExecAndLog ('command', [f'{ogGlobals.OGPYFUNCS}/ogCreateImage', disk, par, repo, f'/{imgname}', ogGlobals.IMGPROG, ogGlobals.IMGCOMP]):
SystemLib.ogRaiseError ([], ogGlobals.OG_ERR_IMAGE, 'ogCreateImage')
sys.exit (1)
resumecreateimage = subprocess.run (['grep', 'Total Time:', ogGlobals.OGLOGCOMMAND], capture_output=True, text=True).stdout

View File

@ -156,9 +156,10 @@ CacheLib.ogMountCache()
imgdir = FileLib.ogGetParentPath ('CACHE', f'/{path}')
if not imgdir:
SystemLib.ogEcho (['log', 'session'], None, f'[5] {ogGlobals.lang.MSG_HELP_ogMakeDir} "{path} {os.path.dirname (path)}".')
FileLib.ogMakeDir ('CACHE', os.path.dirname (f'/{path}'))
imgdir = ogGetParentPath ('CACHE', f'/{path}')
FileLib.ogMakeDir (container='CACHE', file=os.path.dirname (f'/{path}'))
imgdir = FileLib.ogGetParentPath ('CACHE', f'/{path}')
if not imgdir:
SystemLib.ogRaiseError ('session', ogGlobals.OG_ERR_IMAGE, 'no directory for images')
sys.exit (1)
t0 = time.time()