Spaces:
Running
Running
File size: 4,535 Bytes
2303553 206ad0b 2303553 817b819 206ad0b ea6d989 2303553 ea6d989 2303553 bc4002b 817b819 bc4002b 2303553 4c364b1 1f4aacc bc4002b 30d819a 817b819 ea6d989 2303553 ea6d989 2303553 206ad0b 76fd605 206ad0b 76fd605 206ad0b 2070c08 206ad0b e5f9727 322b12a 5f45547 322b12a 2070c08 b85eeeb 2303553 206ad0b 2303553 b85eeeb ea6d989 b783901 ea6d989 07c0be5 2303553 9d70e15 07c0be5 ea6d989 a500260 a6c4531 a500260 a6c4531 a500260 bde1b8e a500260 901822a a500260 b953771 c167925 2303553 07c0be5 b953771 1f4d4dd b953771 1f4d4dd 2303553 ea6d989 661e819 ea6d989 2303553 817b819 0ad66b3 817b819 c2f4f33 ea6d989 2303553 1f4d4dd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 |
import os
import tools
import paramiko
import nycklar.nodes as nodes
#AVAIMET CONTIENE LAS FUNCIONES QUE INTERACTUAN CON EL SERVIDOR REMOTO.
def conecta():
#Digital Signature.
ssh = paramiko.SSHClient()
ssh.load_host_keys("nycklar/itrst")
#Future: Para usar ésto el método connnect necesitaría aceptar la pk como var string.
#go = os.getenv("go")
#llave = paramiko.RSAKey(data=base64.b64decode(nycklar.go.texto))
#clientPrivateKey = paramiko.RSAKey.from_private_key(nycklar.go.texto)
#Ahora obtendremos nuestra secret key para poder entrar a ese servidor.
project_dir = os.getcwd()
#Ruta de go.
key_filename = os.path.join(project_dir, "nycklar", "go")
ssh.connect(nodes.realm, username=nodes.master, key_filename=key_filename)
#ssh.connect(nodes.realm, username=nodes.master, pkey=llave)
sftp = ssh.open_sftp()
return ssh, sftp
def obtenDireccionArchivo(archivo):
#Archivo puede ser data.py o flagsnovelty.py
# Ruta del archivo remoto (también general para todo lo que vive en holocards).
ruta_remota = nodes.users_data
path_archivo = ruta_remota + archivo
return path_archivo
def obtenContenidoArchivo(sftp, dir_data):
try:
with sftp.open(dir_data, 'rb') as archivo:
contenido = archivo.read()
texto = contenido.decode('utf-8')
except Exception as e:
texto = f"Error al leer el archivo: {e}"
print(texto)
return texto
return texto
def obtenCaja(userfile, env):
#Codifica y descomprime el string para obtener un user.
username = tools.decompileUser(userfile)
# Ruta del archivo remoto
ruta_remota = nodes.users_credits + env + "/"
caja = ruta_remota + username + ".txt"
return caja
def obtenTokens(sftp, caja):
with sftp.open(caja, 'rb') as archivo:
# Leer el contenido del archivo como bytes
contenido_bytes = archivo.read()
# Decodificar los bytes a Unicode usando la codificación UTF-8
tokens = contenido_bytes.decode('utf-8')
tokens = int(tokens)
return tokens
def autoriza(tokens, work):
#print(tokens)
#Standard cost.
costo_tarea = 2
#Aplica reglas de cobro de tokens.
#Posteriormente las equivalencias de tareas y costos vendrán de una tabla aparte.
#Por ahora se definen via éste IF:
if work == 'picswap':
costo_tarea = 1
print(f"Work: {work}, tokens cost: {costo_tarea}")
else:
print("The work specified doesn't exists.")
return False
#Ahora evaluaremos si se tiene el suficiente crédito como para ejecutar la tarea.
if tokens >= costo_tarea:
#print("Tarea autorizada...")
result = True
else:
print("Tarea no autorizada, no tienes suficientes tokens...")
result = False
return result
def restaToken(sftp, caja, tokens, work):
#Standard cost.
cuantos = 2
#Aplica reglas de cobro de tokens.
if work == 'picswap':
cuantos = 1
print(f"Work: {work}, tokens cost: {cuantos}")
else:
print("The work specified doesn't exists.")
# Agregar el texto "- Revisado." al string
contenido_final = int(tokens) - cuantos
contenido_final = str(contenido_final)
# Imprimir el contenido
print(contenido_final)
#Actualiza el nuevo valor en el servidor en modo escritura.
with sftp.open(caja, 'w') as archivo:
# Escribir el contenido final en el archivo
archivo.write(contenido_final)
contenido_final = int(contenido_final)
return contenido_final
def modificaQuota(sftp, dir_quota, quota, costo_proceso):
print("Éste es quota: ", quota)
print("Éste es costo_proceso: ", costo_proceso)
#Standard cost.
#cuantos = 30
#Aplica reglas de quotas dinámicas.
# if work == 'picswap':
# cuantos = 1
# print(f"Work: {work}, tokens cost: {cuantos}")
# else:
# print("The work specified doesn't exists.")
# Agregar el texto "- Revisado." al string
contenido_final = int(quota) - int(costo_proceso)
contenido_final = str(contenido_final)
# Imprimir el contenido
print(contenido_final)
#Actualiza el nuevo valor en el servidor en modo escritura.
with sftp.open(dir_quota, 'w') as archivo:
# Escribir el contenido final en el archivo
archivo.write(contenido_final)
contenido_final = int(contenido_final)
return contenido_final
def cierraConexion(ssh, sftp ):
sftp.close()
ssh.close() |