Spaces:
Sleeping
Sleeping
File size: 3,490 Bytes
2303553 206ad0b 2303553 76fd605 2303553 206ad0b ea6d989 2303553 ea6d989 2303553 76fd605 ea6d989 2303553 ea6d989 2303553 206ad0b 76fd605 206ad0b 76fd605 206ad0b 2070c08 206ad0b e5f9727 206ad0b 901822a e5f9727 901822a e5f9727 901822a 206ad0b 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 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 |
import os
import tools
import paramiko
#import compiler
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")
#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)
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):
with sftp.open(dir_data, 'rb') as archivo:
# Leer el contenido del archivo como bytes
contenido = archivo.read()
# print("Imprimiendo contenido: ", contenido)
# print("El tipo de contenido obtenido es: ", type(contenido))
#Decodificar pq viene codificado del server (codificado en bytes) no encriptado.
texto = contenido.decode('utf-8')
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 cierraConexion(ssh, sftp ):
sftp.close()
ssh.close() |