Spaces:
Sleeping
Sleeping
Moibe
commited on
Commit
·
4d7403b
1
Parent(s):
53423e3
Optimización seguridad obtención data
Browse files- avaimet.py +3 -3
- funciones.py +70 -70
- main.py +75 -76
avaimet.py
CHANGED
@@ -32,10 +32,10 @@ def obtenData(sftp, dir_data):
|
|
32 |
with sftp.open(dir_data, 'rb') as archivo:
|
33 |
# Leer el contenido del archivo como bytes
|
34 |
contenido = archivo.read()
|
35 |
-
|
36 |
print("Imprimiendo contenido: ", contenido)
|
37 |
-
print("
|
38 |
-
|
|
|
39 |
return contenido
|
40 |
|
41 |
def obtenCaja(userfile):
|
|
|
32 |
with sftp.open(dir_data, 'rb') as archivo:
|
33 |
# Leer el contenido del archivo como bytes
|
34 |
contenido = archivo.read()
|
|
|
35 |
print("Imprimiendo contenido: ", contenido)
|
36 |
+
print("El tipo de contenido obtenido es: ", type(contenido))
|
37 |
+
print("Esperando 32 segundos, porque analizaremos como es data y como extraer un renglón.")
|
38 |
+
time.sleep(32)
|
39 |
return contenido
|
40 |
|
41 |
def obtenCaja(userfile):
|
funciones.py
CHANGED
@@ -1,70 +1,70 @@
|
|
1 |
-
import time
|
2 |
-
import avaimet
|
3 |
-
|
4 |
-
def getData():
|
5 |
-
|
6 |
-
#Genera conexión inicial.
|
7 |
-
sshListo, sftpListo = avaimet.conecta()
|
8 |
-
#Obtiene la caja donde está guardados los tokens.
|
9 |
-
dir_data = avaimet.obtenDirData()
|
10 |
-
|
11 |
-
data = avaimet.obtenData(sftpListo, dir_data)
|
12 |
-
#Cierra la conexión.
|
13 |
-
avaimet.cierraConexion(sshListo, sftpListo)
|
14 |
-
|
15 |
-
return data
|
16 |
-
|
17 |
-
def getTokens(userfile):
|
18 |
-
|
19 |
-
#Genera conexión inicial.
|
20 |
-
sshListo, sftpListo = avaimet.conecta()
|
21 |
-
#Obtiene la caja donde está guardados los tokens.
|
22 |
-
caja = avaimet.obtenCaja(userfile)
|
23 |
-
#Obtiene los tokens que hay en esa caja.
|
24 |
-
tokens = avaimet.obtenTokens(sftpListo, caja)
|
25 |
-
#Cierra la conexión.
|
26 |
-
avaimet.cierraConexion(sshListo, sftpListo)
|
27 |
-
|
28 |
-
return tokens
|
29 |
-
|
30 |
-
def authorize(tokens, work):
|
31 |
-
|
32 |
-
print(f"Task received : {work}, type: {type(work)} ...")
|
33 |
-
|
34 |
-
##Ésta sección se reutilizará si en lugar de pasar el parámetro token, se pasa el parámetro userfile.
|
35 |
-
#Actualmente no lo pedimos porque es el developer el que pone la cantidad de tokens que el usuario tiene para...
|
36 |
-
#...evitar otra vuelta al server, por mayor certeza o seguridad se puede hacer esa ida.
|
37 |
-
#En un futuro incluso se pueden hacer los dos tipos de autorización en dos endpoints distintos. O en un solo endpoint con...
|
38 |
-
#...las dos opciones.
|
39 |
-
|
40 |
-
#Genera conexión inicial.
|
41 |
-
#sshListo, sftpListo = avaimet.conecta()
|
42 |
-
#Obtiene la caja donde está guardados los tokens.
|
43 |
-
#caja = avaimet.obtenCaja(userfile)
|
44 |
-
#Obtiene los tokens que hay en esa caja.
|
45 |
-
#tokens = avaimet.obtenTokens(sftpListo, caja)
|
46 |
-
|
47 |
-
#True si autoriza o false si no autoriza.
|
48 |
-
result = avaimet.autoriza(tokens, work)
|
49 |
-
|
50 |
-
#Cierra la conexión.
|
51 |
-
#avaimet.cierraConexion(sshListo, sftpListo)
|
52 |
-
|
53 |
-
return result
|
54 |
-
|
55 |
-
def debitTokens(userfile, work):
|
56 |
-
|
57 |
-
print(f"Task received : {work}, type: {type(work)} ...")
|
58 |
-
|
59 |
-
#Genera conexión inicial.
|
60 |
-
sshListo, sftpListo = avaimet.conecta()
|
61 |
-
#Obtiene la caja donde está guardados los tokens.
|
62 |
-
caja = avaimet.obtenCaja(userfile)
|
63 |
-
#Obtiene los tokens que hay en esa caja.
|
64 |
-
tokens = avaimet.obtenTokens(sftpListo, caja)
|
65 |
-
#Aplica las reglas de ésta app para debitar lo correspondiente.
|
66 |
-
resultado_debitado = avaimet.restaToken(sftpListo, caja, tokens, work)
|
67 |
-
#Cierra la conexión.
|
68 |
-
avaimet.cierraConexion(sshListo, sftpListo)
|
69 |
-
|
70 |
-
return resultado_debitado
|
|
|
1 |
+
import time
|
2 |
+
import avaimet
|
3 |
+
|
4 |
+
def getData():
|
5 |
+
|
6 |
+
#Genera conexión inicial.
|
7 |
+
sshListo, sftpListo = avaimet.conecta()
|
8 |
+
#Obtiene la caja donde está guardados los tokens.
|
9 |
+
dir_data = avaimet.obtenDirData()
|
10 |
+
#Obtiene el json con los datos.
|
11 |
+
data = avaimet.obtenData(sftpListo, dir_data)
|
12 |
+
#Cierra la conexión.
|
13 |
+
avaimet.cierraConexion(sshListo, sftpListo)
|
14 |
+
|
15 |
+
return data
|
16 |
+
|
17 |
+
def getTokens(userfile):
|
18 |
+
|
19 |
+
#Genera conexión inicial.
|
20 |
+
sshListo, sftpListo = avaimet.conecta()
|
21 |
+
#Obtiene la caja donde está guardados los tokens.
|
22 |
+
caja = avaimet.obtenCaja(userfile)
|
23 |
+
#Obtiene los tokens que hay en esa caja.
|
24 |
+
tokens = avaimet.obtenTokens(sftpListo, caja)
|
25 |
+
#Cierra la conexión.
|
26 |
+
avaimet.cierraConexion(sshListo, sftpListo)
|
27 |
+
|
28 |
+
return tokens
|
29 |
+
|
30 |
+
def authorize(tokens, work):
|
31 |
+
|
32 |
+
print(f"Task received : {work}, type: {type(work)} ...")
|
33 |
+
|
34 |
+
##Ésta sección se reutilizará si en lugar de pasar el parámetro token, se pasa el parámetro userfile.
|
35 |
+
#Actualmente no lo pedimos porque es el developer el que pone la cantidad de tokens que el usuario tiene para...
|
36 |
+
#...evitar otra vuelta al server, por mayor certeza o seguridad se puede hacer esa ida.
|
37 |
+
#En un futuro incluso se pueden hacer los dos tipos de autorización en dos endpoints distintos. O en un solo endpoint con...
|
38 |
+
#...las dos opciones.
|
39 |
+
|
40 |
+
#Genera conexión inicial.
|
41 |
+
#sshListo, sftpListo = avaimet.conecta()
|
42 |
+
#Obtiene la caja donde está guardados los tokens.
|
43 |
+
#caja = avaimet.obtenCaja(userfile)
|
44 |
+
#Obtiene los tokens que hay en esa caja.
|
45 |
+
#tokens = avaimet.obtenTokens(sftpListo, caja)
|
46 |
+
|
47 |
+
#True si autoriza o false si no autoriza.
|
48 |
+
result = avaimet.autoriza(tokens, work)
|
49 |
+
|
50 |
+
#Cierra la conexión.
|
51 |
+
#avaimet.cierraConexion(sshListo, sftpListo)
|
52 |
+
|
53 |
+
return result
|
54 |
+
|
55 |
+
def debitTokens(userfile, work):
|
56 |
+
|
57 |
+
print(f"Task received : {work}, type: {type(work)} ...")
|
58 |
+
|
59 |
+
#Genera conexión inicial.
|
60 |
+
sshListo, sftpListo = avaimet.conecta()
|
61 |
+
#Obtiene la caja donde está guardados los tokens.
|
62 |
+
caja = avaimet.obtenCaja(userfile)
|
63 |
+
#Obtiene los tokens que hay en esa caja.
|
64 |
+
tokens = avaimet.obtenTokens(sftpListo, caja)
|
65 |
+
#Aplica las reglas de ésta app para debitar lo correspondiente.
|
66 |
+
resultado_debitado = avaimet.restaToken(sftpListo, caja, tokens, work)
|
67 |
+
#Cierra la conexión.
|
68 |
+
avaimet.cierraConexion(sshListo, sftpListo)
|
69 |
+
|
70 |
+
return resultado_debitado
|
main.py
CHANGED
@@ -1,77 +1,76 @@
|
|
1 |
-
from fastapi import FastAPI
|
2 |
-
import funciones
|
3 |
-
|
4 |
-
app = FastAPI()
|
5 |
-
|
6 |
-
@app.get("/")
|
7 |
-
def start():
|
8 |
-
|
9 |
-
return {"Status":"Deployed"}
|
10 |
-
|
11 |
-
## GET DATA ##
|
12 |
-
|
13 |
-
#Vía Path
|
14 |
-
@app.get("/getData/")
|
15 |
-
def getData():
|
16 |
-
data = funciones.getData()
|
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 |
-
print("Tipo de resultado:", type(tokens))
|
77 |
return tokens
|
|
|
1 |
+
from fastapi import FastAPI
|
2 |
+
import funciones
|
3 |
+
|
4 |
+
app = FastAPI()
|
5 |
+
|
6 |
+
@app.get("/")
|
7 |
+
def start():
|
8 |
+
|
9 |
+
return {"Status":"Deployed"}
|
10 |
+
|
11 |
+
## GET DATA ##
|
12 |
+
|
13 |
+
#Vía Path
|
14 |
+
@app.get("/getData/")
|
15 |
+
def getData():
|
16 |
+
data = funciones.getData()
|
17 |
+
print("Tipo de resultado:", type(data))
|
18 |
+
return data
|
19 |
+
|
20 |
+
#Vía Query
|
21 |
+
#Quizá no es necesaria vía Query porque no pide parámetros.
|
22 |
+
@app.get("/getDataQ/")
|
23 |
+
def getData():
|
24 |
+
data = funciones.getData()
|
25 |
+
print("Tipo de resultado:", type(data))
|
26 |
+
return data
|
27 |
+
|
28 |
+
|
29 |
+
## GET TOKENS ##
|
30 |
+
|
31 |
+
#Vía Path
|
32 |
+
@app.get("/getTokens/{userfile}")
|
33 |
+
def getTokens(userfile: str):
|
34 |
+
tokens = funciones.getTokens(userfile)
|
35 |
+
print("Tipo de resultado:", type(tokens))
|
36 |
+
return tokens
|
37 |
+
|
38 |
+
#Vía Query
|
39 |
+
@app.get("/getTokensQ/")
|
40 |
+
def getTokens(userfile: str = "gAAAAABmEZA4SLBC2YczouOrjIEi9WNCNGOIvyUcqBUnzxNsftXTdy54KaX9x8mAjFkABSI6FJrdZDQKk_5lpJOgJoMChxlniw=="):
|
41 |
+
tokens = funciones.getTokens(userfile)
|
42 |
+
print("Tipo de resultado:", type(tokens))
|
43 |
+
return tokens
|
44 |
+
|
45 |
+
## AUTHORIZE WORK ##
|
46 |
+
|
47 |
+
#Vía Parameters
|
48 |
+
@app.get("/authorize/{tokens}/{work}")
|
49 |
+
def authorize(tokens: int, work: str):
|
50 |
+
autorizacion = funciones.authorize(tokens, work)
|
51 |
+
print("Tipo de resultado:", type(autorizacion))
|
52 |
+
return autorizacion
|
53 |
+
|
54 |
+
#Vía Query
|
55 |
+
@app.get("/authorizeQ/")
|
56 |
+
def authorize(tokens: int, work: str = "picswap"):
|
57 |
+
autorizacion = funciones.authorize(tokens,work)
|
58 |
+
print("Tipo de resultado:", type(autorizacion))
|
59 |
+
return autorizacion
|
60 |
+
|
61 |
+
|
62 |
+
## DEBIT TOKENS ##
|
63 |
+
|
64 |
+
#Vía Parámeters
|
65 |
+
@app.get("/debitTokens/{userfile}/{work}")
|
66 |
+
def debitTokens(userfile: str, work: str):
|
67 |
+
tokens = funciones.debitTokens(userfile,work)
|
68 |
+
print("Tipo de resultado:", type(tokens))
|
69 |
+
return tokens
|
70 |
+
|
71 |
+
#Vía Query
|
72 |
+
@app.get("/debitTokensQ/")
|
73 |
+
def debitTokens(userfile: str, work: str = "picswap"):
|
74 |
+
tokens = funciones.debitTokens(userfile,work)
|
75 |
+
print("Tipo de resultado:", type(tokens))
|
|
|
76 |
return tokens
|