This repository has been archived by the owner on Feb 22, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
client.py
executable file
·127 lines (110 loc) · 4.35 KB
/
client.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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#!/env/bin/python
import hashlib
import json
import random
import string
import sys
import time
import numpy
import zmq
from termcolor import colored
import fclient
import ffile
#client data
client = json.dumps({'ip': '', 'port': '', 'data': {}})
client = json.loads(client)
context = zmq.Context()
socket = context.socket(zmq.REP)
socket_send = context.socket(zmq.REQ)
def get_id(my_ip):
client['ip'], client['port'] = my_ip.split(':')
socket.bind('tcp://*:' + client['port'])
def main():
global client, socket, socket_send
my_ip = some_ip = ''
if len(sys.argv) == 3:
some_ip = sys.argv[2]
elif len(sys.argv) == 2:
print 'Number 1'
else:
print 'No argv'
if len(sys.argv) >= 2:
my_ip = sys.argv[1]
get_id(my_ip) # Arguments to variables python
fclient.client_info(client)
fclient.clear()
print colored(
'Welcome to CHORD simulation', 'yellow', attrs=['bold']), colored(
'Terminal', 'yellow')
try:
while True:
print colored(
'(Type help or -h for more information)',
'yellow',
attrs=['reverse'])
inp = raw_input(colored('$ >> ', 'cyan'))
inp = inp.split()
if inp[0] == 'help' or inp[0] == '-h':
fclient.options()
elif inp[0] == 'send' or inp[0] == '-s':
send_req = fclient.send_msg(client, some_ip, inp)
if send_req == 'Err: No file':
print colored('Send a correct file', 'red')
else:
socket_send = context.socket(zmq.REQ)
socket_send.connect('tcp://' + send_req['to'])
socket_send.send(json.dumps(send_req))
message = socket_send.recv()
print colored(message, 'green')
elif inp[0] == 'ls':
fclient.list_file(client)
elif inp[0] == '-rm' or inp[0] == 'remove':
remove_req = fclient.remove_msg(client, some_ip, inp)
if remove_req == 'Err: No file':
print colored('Send a correct file', 'red')
else:
socket_send = context.socket(zmq.REQ)
socket_send.connect('tcp://' + remove_req['to'])
socket_send.send(json.dumps(remove_req))
message = socket_send.recv()
print colored(message, 'green')
elif inp[0] == '-g' or inp[0] == 'get':
get_req = fclient.get_msg(client, some_ip, inp)
socket_send = context.socket(zmq.REQ)
socket_send.connect('tcp://' + get_req['to'])
socket_send.send(json.dumps(get_req))
message = socket_send.recv()
print colored(message, 'green')
message = socket.recv()
message = json.loads(message)
print message
socket.connect('tcp://' + message['from'])
socket.send('Thanks <3')
if message['info'] == 'No':
print colored(
'File does not exist in DHT',
'red',
attrs=['bold'])
else:
ffile.write_file(message['info'])
elif inp[0] == 'exit':
print colored('See you later', 'yellow')
break
else:
print colored('Type a correct option', 'red')
#
# socket_send.connect('tcp://' + inp[0])
# print colored(
# 'connection to ' + 'tcp://' + inp[0],
# 'yellow',
# attrs=['bold'])
# socket_send.send(json.dumps({'msg': ':)'}))
# message = socket_send.recv()
# print colored(message, 'green')
print ''
except KeyboardInterrupt:
print ''
print colored('See you later', 'yellow')
exit(0)
if __name__ == '__main__':
main()