Moibe commited on
Commit
ea6d989
·
1 Parent(s): 173e96c

Ready to Go

Browse files
Files changed (7) hide show
  1. .gitignore +1 -0
  2. app.py +15 -13
  3. avaimet.py +54 -42
  4. compiler.py +16 -9
  5. generador💡.py +16 -0
  6. nycklar/nodes.py +2 -1
  7. requirements.txt +2 -1
.gitignore CHANGED
@@ -1,3 +1,4 @@
1
  /venv/
2
  nycklar
3
  __pycache__
 
 
1
  /venv/
2
  nycklar
3
  __pycache__
4
+ flagged
app.py CHANGED
@@ -1,20 +1,22 @@
1
- import gradio as gr
2
  import avaimet
3
-
4
- def authenticate(username, password):
5
- usuarios = [("usuario1", "contrasena1"), ("usuario2", "contrasena2")]
6
- for u, p in usuarios:
7
- if username == u and password == p:
8
- return True
9
- return False
10
 
11
  def getAccess(userfile):
 
 
 
 
 
 
 
 
 
 
 
12
 
13
- tokens = avaimet.do(userfile)
14
-
15
- return tokens
16
 
17
  iface = gr.Interface(fn=getAccess, inputs="text", outputs="text")
18
 
19
- #iface.launch()
20
- iface.launch(auth=authenticate)
 
1
+ import time
2
  import avaimet
3
+ import gradio as gr
 
 
 
 
 
 
4
 
5
  def getAccess(userfile):
6
+
7
+ sshListo, sftpListo = avaimet.conecta()
8
+
9
+ #Obtiene la caja donde está guardados los tokens.
10
+ caja = avaimet.obtenCaja(userfile)
11
+
12
+ tokens = avaimet.obtenTokens(sftpListo, caja)
13
+
14
+ resultado_final = avaimet.aplicaReglas(sftpListo, caja, tokens)
15
+
16
+ avaimet.cierraConexion(sshListo, sftpListo)
17
 
18
+ return resultado_final
 
 
19
 
20
  iface = gr.Interface(fn=getAccess, inputs="text", outputs="text")
21
 
22
+ iface.launch()
 
avaimet.py CHANGED
@@ -4,69 +4,81 @@ import paramiko
4
  import compiler
5
  import nycklar.nodes as nodes
6
 
 
7
 
8
- def do(userfile):
9
-
10
- #Carga la firma digital para saber que confío en mi servidor de OpalStack.
11
  ssh = paramiko.SSHClient()
12
  ssh.load_host_keys("nycklar/itrst")
13
 
14
  #Ahora obtendremos nuestra secret key para poder entrar a ese servidor.
15
- # Obtiene la ruta del directorio actual
16
  project_dir = os.getcwd()
17
- print("Esto es projectdir: ", project_dir)
18
- path_completo = os.path.join(project_dir, "nycklar")
 
 
19
 
20
- print("Éste es el path_completo: ", path_completo)
21
-
22
- # Crea la ruta completa al archivo `go`
23
- key_filename = os.path.join(path_completo, "go")
24
 
25
- #Imprimo el path del id_rsa
26
- print("Esto es key_filename: ", key_filename)
27
 
28
- #Conexión hacia el servidor con tus credenciales.
29
- #Al tener una key no requieres el password.
30
- ssh.connect(nodes.realm, username=nodes.master, key_filename=key_filename)
31
- print(ssh)
32
- time.sleep(3)
33
- #Una vez que tenemos la conexión ssh, creamos un sftp (SSH File Transfer Protocol)
34
- sftp = ssh.open_sftp()
35
- print(sftp)
36
- time.sleep(3)
37
 
38
-
39
  # Ruta del archivo remoto
40
  ruta_remota = nodes.avaimentekijä
41
- print("Ésta es la ruta_remota: ", ruta_remota)
42
- username = compiler.do(userfile)
43
- print("Username es: ", username)
44
- archivo_remoto = ruta_remota + username
45
- print("Éste es el archivo remoto: ", archivo_remoto)
46
- time.sleep(6)
 
 
 
 
 
 
47
 
 
 
 
 
 
 
 
48
 
49
- with sftp.open(archivo_remoto, 'rb') as archivo:
50
- # Leer el contenido del archivo como bytes
51
- contenido_bytes = archivo.read()
 
 
 
 
52
 
53
- # Decodificar los bytes a Unicode usando la codificación UTF-8
54
- contenido_unicode = contenido_bytes.decode('utf-8')
55
 
56
- # Agregar el texto "- Revisado." al string
57
- contenido_final = int(contenido_unicode) - 1
 
58
 
59
- contenido_final = str(contenido_final)
60
 
61
- # Imprimir el contenido
62
- print(contenido_final)
63
 
64
- # Abrir el archivo remoto en modo escritura
65
- with sftp.open(archivo_remoto, 'w') as archivo:
 
 
 
 
 
66
  # Escribir el contenido final en el archivo
67
  archivo.write(contenido_final)
68
 
 
 
 
 
69
  sftp.close()
70
  ssh.close()
71
-
72
- return contenido_final
 
4
  import compiler
5
  import nycklar.nodes as nodes
6
 
7
+ def conecta():
8
 
9
+ #Digital Signature.
 
 
10
  ssh = paramiko.SSHClient()
11
  ssh.load_host_keys("nycklar/itrst")
12
 
13
  #Ahora obtendremos nuestra secret key para poder entrar a ese servidor.
 
14
  project_dir = os.getcwd()
15
+ key_filename = os.path.join(project_dir, "nycklar", "go")
16
+
17
+ ssh.connect(nodes.realm, username=nodes.master, key_filename=key_filename)
18
+ sftp = ssh.open_sftp()
19
 
20
+ return ssh, sftp
 
 
 
21
 
22
+ def obtenCaja(userfile):
 
23
 
 
 
 
 
 
 
 
 
 
24
 
25
+
26
  # Ruta del archivo remoto
27
  ruta_remota = nodes.avaimentekijä
28
+ print("Encoding...")
29
+ userfile_codificado = userfile.encode("utf-8")
30
+ print(f"El userfile sin la b, se decodifica y queda: {userfile_codificado} y es del tipo {type(userfile_codificado)} ...")
31
+ time.sleep(3)
32
+
33
+
34
+
35
+ # print("convirtiendo a bytes")
36
+ # bytes_userfile = bytes(userfile)
37
+ # print(f"El userfile se convirtio via bytes en userfile_codificado es: {bytes_userfile} y es del tipo {type(bytes_userfile)} ...")
38
+ # time.sleep(15)
39
+
40
 
41
+
42
+
43
+ print("Estoy afuera, enviando al compiler.")
44
+ username = compiler.do(userfile_codificado)
45
+ print("Username es: ", username)
46
+ caja = ruta_remota + username + ".txt"
47
+ print("Éste es el archivo remoto: ", caja)
48
 
49
+ return caja
50
+
51
+ def obtenTokens(sftp, caja):
52
+
53
+ with sftp.open(caja, 'rb') as archivo:
54
+ # Leer el contenido del archivo como bytes
55
+ contenido_bytes = archivo.read()
56
 
57
+ # Decodificar los bytes a Unicode usando la codificación UTF-8
58
+ contenido_unicode = contenido_bytes.decode('utf-8')
59
 
60
+ return contenido_unicode
61
+
62
+ def aplicaReglas(sftp, caja, tokens):
63
 
64
+ # print(f"Si entré a aplicaReglas y los argumentos que traigo son ")
65
 
66
+ # Agregar el texto "- Revisado." al string
67
+ contenido_final = int(tokens) - 1
68
 
69
+ contenido_final = str(contenido_final)
70
+
71
+ # Imprimir el contenido
72
+ print(contenido_final)
73
+
74
+ #Actualiza el nuevo valor en el servidor en modo escritura.
75
+ with sftp.open(caja, 'w') as archivo:
76
  # Escribir el contenido final en el archivo
77
  archivo.write(contenido_final)
78
 
79
+ return contenido_final
80
+
81
+ def cierraConexion(ssh, sftp ):
82
+
83
  sftp.close()
84
  ssh.close()
 
 
compiler.py CHANGED
@@ -1,15 +1,22 @@
1
- from cryptography.fernet import Fernet
2
  import nycklar.nodes as nodes
 
3
 
4
- def do(userfile):
5
 
6
- key = Fernet.generate_key()
7
- fernet = Fernet(key)
8
 
9
- string_original = "oldball182ls"
10
- string_encriptado = fernet.encrypt(string_original.encode("utf-8"))
11
- string_desencriptado = fernet.decrypt(userfile).decode("utf-8")
 
 
 
 
 
12
 
13
- print(f"String original: {string_original}")
14
- print(f"String encriptado: {string_encriptado}")
15
  print(f"String desencriptado: {string_desencriptado}")
 
 
 
 
1
+ import time
2
  import nycklar.nodes as nodes
3
+ from cryptography.fernet import Fernet
4
 
5
+ def do(desencriptable):
6
 
7
+ print("El tipo de desencriptable desde adentro es es del tipo: ", type(desencriptable))
8
+ time.sleep(8)
9
 
10
+ #key = Fernet.generate_key()
11
+ key = nodes.key
12
+ print("Esto es la KEY: ", key)
13
+ time.sleep(1)
14
+ fernet = Fernet(key)
15
+ print("Esto es Fernet: ", fernet)
16
+
17
+ string_desencriptado = fernet.decrypt(desencriptable).decode("utf-8")
18
 
 
 
19
  print(f"String desencriptado: {string_desencriptado}")
20
+ time.sleep(5)
21
+
22
+ return string_desencriptado
generador💡.py ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import time
2
+ import nycklar.nodes as nodes
3
+ from cryptography.fernet import Fernet
4
+
5
+ key = nodes.key
6
+ print("Esto es la KEY: ", key)
7
+ time.sleep(1)
8
+ fernet = Fernet(key)
9
+ print("Esto es Fernet: ", fernet)
10
+
11
+ string_original = "revgenlabs"
12
+ string_encriptado = fernet.encrypt(string_original.encode("utf-8"))
13
+ string_desencriptado = fernet.decrypt(string_encriptado).decode("utf-8")
14
+
15
+ print("Guarda esto: ", string_encriptado)
16
+ print("Viene de aquí: ", string_desencriptado)
nycklar/nodes.py CHANGED
@@ -1,4 +1,5 @@
1
  master = "moibe"
2
  realm = "opal2.opalstack.com"
3
  avaimentekijä = "/home/moibe/apps/holocards/sulkusers/"
4
- user=b'gAAAAABmEH_v7ibmmMR7KrnZWoNthxQGpEtaQXmcNzzP9kG_h1z_pKuvOz9mkYXZbmbUYxcKTuYndONeRpBEXgsin_2rDDcv0w=='
 
 
1
  master = "moibe"
2
  realm = "opal2.opalstack.com"
3
  avaimentekijä = "/home/moibe/apps/holocards/sulkusers/"
4
+ key=b'kiSHsm7Y0hbyNdcFIav6OMT39gi29nIzT-rCrr0Tyc8='
5
+ user=b'gAAAAABmEZA4SLBC2YczouOrjIEi9WNCNGOIvyUcqBUnzxNsftXTdy54KaX9x8mAjFkABSI6FJrdZDQKk_5lpJOgJoMChxlniw=='
requirements.txt CHANGED
@@ -1 +1,2 @@
1
- paramiko==3.4.0
 
 
1
+ paramiko==3.4.0
2
+ fernet