-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathServer3.py
118 lines (105 loc) · 3.82 KB
/
Server3.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
import sys
import socket
import select
import re
import threading
import os
HOST = ''
SOCKET_LIST = []
RECV_BUFFER = 2048
PORT = 3333
directory = '/Users/Sean/Documents/Server3/'
server2Files = []
class ProxyThread(threading.Thread):
def __init__(self,proxyAddress,proxysocket):
threading.Thread.__init__(self)
self.psocket = proxysocket
def run(self):
newData = ''
#self.csocket.send(bytes("Hi, This is from Server..",'utf-8'))
while True:
message = self.psocket.recv(RECV_BUFFER)
print (message)
message2 = message.split()
if message2[0] == 'Request:':
fileName = message2[1]
for j in server3Files:
if fileName == j.name:
version = j.version
fileDirectory = directory, fileName
fileDirectory2 = ''.join(fileDirectory)
f = open(fileDirectory2, "r")
l = f.read(2048)
message = ["Version: ", str(version), ' ', l]
message2 = ''.join(message)
print('sending..')
self.psocket.send(message2)
f.close()
break
elif message2[0] == "FILE_UPDATE:":
fileName = message2[1]
fileDirectory = directory, fileName
fileDirectory2 = ''.join(fileDirectory)
length = len(message2)
newData = message2[3]
x = 4
while (x!=length):
newData = newData + ' ' + message2[x]
x = x + 1
f = open(fileDirectory2, "w")
f.write(newData)
newData = ''
f.close()
break
elif message2[0] == 'VERSION_UPDATE:':
fileName = message2[1]
for j in server3Files:
if fileName == j.name:
j.version = j.version + 1
print('updated')
fileDirectory = directory, fileName
fileDirectory2 = ''.join(fileDirectory)
length = len(message2)
newData = message2[3]
x = 4
while (x!=length):
newData = newData + ' ' + message2[x]
x = x + 1
f = open(fileDirectory2, "w")
f.write(newData)
newData = ''
f.close()
break
elif message2[0] == 'VersionCheck:':
fileName = message2[1]
for i in server3Files:
if fileName == i.name:
version = i.version
self.psocket.send(str(version))
elif message2[0] == "NO_UPDATE:":
print('Unmodified')
break
else:
break
print ("Client has disconnected...")
class file(object):
def __init__(self, name=None, version=None):
self.name = name
self.version = version
def Server():
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server.bind((HOST, PORT))
direct = os.listdir(directory)
for item in direct:
file1 = file(item, 0)
server2Files.append(file1)
print("Server started")
print("Waiting for proxy request..")
while True:
server.listen(1)
proxysock, proxyAddress = server.accept()
newthread = ProxyThread(proxyAddress, proxysock)
newthread.start()
if __name__ == "__main__":
sys.exit(Server())