-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathq2_functions.py
112 lines (83 loc) · 2.66 KB
/
q2_functions.py
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
import json
import socket
def recebe_arq(arq, tcp):
with open(arq, 'wb') as f:
while True:
print ('receiving data...')
data = tcp.recv(1024) #recebe bytes do arquivo
print('data=%s', (data))
if not data:
break
if data == b'FIM': #verifica se já recebeu todo o arquivo
break
f.write(data) #escreve bytes em um arquivo
f.close()
print('Concluido')
def send_arq(arq, con):
f = open(arq,'rb')
data = f.read(1024) #lê bytes do arquivo
while (data):
con.send(data) #envia os bytes
data = f.read(1024)
f.close()
print ('Arquivo enviado')
#as funções abaixo acessam o arquivo de dados diretamente
#lê todo o arquivo de dados e o carrega em json
def get_users(fname):
arq = open(fname, 'r')
content = arq.read()
arq.close()
if not content.startswith('{'): #verifica se o arquivo está vazio
data = json.loads('{}')
else:
with open(fname) as f:
data = json.load(f)
f.close()
return data
#adiciona um novo usuário ao arquivo
def add_user(fname, username, password):
success = False
data = get_users(fname) #lê o arquivo
#verifica se o usuário já existe
if not username in data:
data[username] = {'password' : password, 'pastas' : []}
with open(fname, 'w') as f:
json.dump(data, f)
f.close()
success = True #usuário adicionado
return success
#adiciona pasta à lista de pastas de um usuário
def new_pasta(fname, user, nome_pasta):
success = False
data = get_users(fname)
if user in data: #verifica se usuário existe
data[user]['pastas'].append(nome_pasta)
with open(fname, 'w') as f:
json.dump(data, f)
f.close()
success = True #pasta adicionada
return success
#faz autenticação do usuário
def autentication(fname, user, password):
data = get_users(fname)
if not user in data: #verifica se o usuário existe
return False
elif data[user]['password'] == password:
#verifica se a senha está correta
return True
else:
return False
#verifica se o usuário tem acesso a determinada pasta
def permission(fname, user, nome_pasta):
data = get_users(fname)
if not user in data:
return False
elif nome_pasta in data[user]['pastas']:
#verifica se a pasta está na lista de pastas do usuário
return True
else: return False
#retorna a lista de pastas de um usuário
def get_pastas(fname, user):
data = get_users(fname)
pastas = data[user]['pastas']
return pastas