From a3cbf01d83c85fad5a41c4a49aa2718e0976fe22 Mon Sep 17 00:00:00 2001 From: Yang Yuechun <younggy1997@outlook.com> Date: Tue, 18 Dec 2018 15:24:25 -0600 Subject: [PATCH] server --- server/__pycache__/gns3.cpython-36.pyc | Bin 5644 -> 7687 bytes server/__pycache__/gns3_helper.cpython-36.pyc | Bin 0 -> 1016 bytes server/client.py | 24 ++--- server/gns3.py | 78 ++++++++++++---- server/gns3_helper.py | 29 ++++++ server/index_instruction.txt | 16 +++- server/server.py | 83 +++++++++++------- 7 files changed, 164 insertions(+), 66 deletions(-) create mode 100644 server/__pycache__/gns3_helper.cpython-36.pyc create mode 100644 server/gns3_helper.py diff --git a/server/__pycache__/gns3.cpython-36.pyc b/server/__pycache__/gns3.cpython-36.pyc index 0d46a1e4e32c07ca592b45698856de2191a0415a..53742264b3cf9ba6d500f54ddb1cc925e0791cdd 100644 GIT binary patch literal 7687 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 delta 1514 zcmbtUO>fgc5cM{$9TGbqPMXG{N$NzUwJ0el5=c-!PN*jiaA_li8?Z5v(%7tRpsh+J zF1>JKZ%F(DE|fpOi4zjynkzp732|U&oshI7DX5Y1)`@rL&D(i12dl4_t94n9U456o ze>lf+-?^brjXvL^Ur+c@70@)g$LV)IzC@eRN+ap{P3#-ZcH8JUrsXvfp6|FrzYk-d zkuXCK|6C?t;+o<=a#!q*SFgF--8?)PM3*!)OTMWpxstt1-b$qniSE}$oTdv-0>}Uf zfE0iNkfESQaGov=$;8d)t&Z&(0dC_gyavt?a`dU23%Mj&Ln^7s>-%u78|$4jTIP<p zdvR}N_tKt@@W1o(j2{;uSiB!>Tn;IggKhbSiQgn<$OU<WrNNG$$lr*#fqz{85I;T( zibrYBFy6p5o4!S<*-bsAn>~Sx(FG|ehj5YJib~?iYZFouj+LY#m{!~JtwC1$e<T#1 z?I-jsOo-#ir=*BVL`$#PQTkuM90D^zmv<e{4^6?Wz&rwep!-H?&ob?1u;m)2^)RrF zR_C$v3b=R*94buVdCH}doALUSGhv)w`3I(B9z04H+HW*x`cIub%lE;S2SbDiYanh7 zuKuXF(BUJ<CTb(^(?wM2YapqVc>A;hLZgxgii)b_g>sh$onD$^Z4v4g!;UOd34hgs z{7}k;@ueW=Gi9{UZ+BY^ZvndT#15D+0lJZKP1kGuUl|Q8_E@iPo|X=u1LdPc_UOK5 zHF*i7<=KT{nK*Ne{lP#RjImjWqyo^f%i$tG31A*T1E>I00Tuuj0U-F$jAPS|4Z7&+ ZmSYBO>jt7bJaBpxMUlkwh$lP6?cV~i5u*SA diff --git a/server/__pycache__/gns3_helper.cpython-36.pyc b/server/__pycache__/gns3_helper.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..745646374da305b41ff475d36728bc237db394c5 GIT binary patch literal 1016 zcmZ8fO>f#j5Z$%cU}!<1<v@DMp%)I+O(7MLqN-AJMpdhR$ZF*p??OzB?d~opL2#n~ zrRrbWYft$LJ$1$qpf%dZ&YKU<%yYL^tN#3W{3Wyr`ArTU3+}Jss1pEAI8BI8xaCuB zbM}My7I%0F{%ua*lXm$IqR3$JwBH@}o}ZufJA#XsogNoa=R6vXI^y(n$Vc7&a2Q1q z#^U3^VQ}8SQ44@ESrJVpR9kDhqMWX*8-GbJ$=7!)J0>f(v?n$P-;#0bf)tirSoYRp zYYGw0n#ym5cV|O}12JU6mcUW+z4eJ`m;moff)fl3F)R(I!j#jDiy-EHHJ4c~q>hC$ zZk~jCl*#F$hHiB-%Xz2;Z<h=kr>bij1s%jG28BA#QiJ&u5oxGp?6J_M6y~`|xp8tC zr@HN!>ORRZOf?LuhR_JS!>=F~6@L+V1pE0j^gbvdl{XC|?^391o#oyvjrDD?eU&F7 z(d(WCQJ5>8r6QQi04qi!)j|gISk1yDUKIU#P--ruhwTSfB7sq#<+rA>nJn11hB~Ph z0HKUlx2I0)^oTYAT`C`eZzn5Cx|3Cd@vp2mp9@Lft}Kw$URod+1rY&3AhbYWZXXl4 zfmFbwaQA%afG=+ag--wkZ5D#MJ3%W0znsMBH7?&NW|0(nk=U8pZk7k9cS!E-7mJ6O zv{zS_(BD8(9f~VmELK6NB0K<SGgCbXtN~>h5`G17la4wTV#)^k@3+0rdknN{0&KR8 s`>xX#{EAIK0lv+Ot~M>;>Ls$9qW_h5FQyrvCE^v1sc;t8VwPL~3qHvJSO5S3 literal 0 HcmV?d00001 diff --git a/server/client.py b/server/client.py index 54a6846..3a3f2d5 100644 --- a/server/client.py +++ b/server/client.py @@ -2,14 +2,16 @@ import socket -TCP_IP = '127.0.0.1' -TCP_PORT = 5005 +# TCP_IP = '127.0.0.1' +# TCP_PORT = 5006 BUFFER_SIZE = 1024 +UDP_IP = "127.0.0.1" +UDP_PORT = 5005 +# MESSAGE = "Hello, World!" -s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) -s.connect((TCP_IP, TCP_PORT)) +sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) +# sock.connect((TCP_IP, TCP_PORT)) -#print index instruction f = open('index_instruction.txt', 'r') file_contents = '' file_contents += f.read() @@ -22,15 +24,15 @@ while 1: index = input() while not index: index = input(file_contents) - s.send(index.encode('utf-8')) - data = s.recv(BUFFER_SIZE).decode('utf-8') + sock.sendto(index.encode('utf-8'), (UDP_IP, UDP_PORT)) + msg, addr = sock.recvfrom(BUFFER_SIZE) + data = msg.decode() text += data while text.find('END') == -1: - data = s.recv(BUFFER_SIZE).decode('utf-8') + msg, addr = sock.recvfrom(BUFFER_SIZE) + data = msg.decode() text += data print(text[:-3]) if text[:-3] == 'close': break -s.close() - -# print("received text:", text) \ No newline at end of file +# sock.close() diff --git a/server/gns3.py b/server/gns3.py index 5b4142d..a23a96f 100644 --- a/server/gns3.py +++ b/server/gns3.py @@ -90,7 +90,7 @@ GNS3_AUTH = HTTPBasicAuth(GNS3_USERNAME, GNS3_PASSWORD) ##########Appliance ################################################################################ -def gns3_get_appliances_list(): +def get_appliances_list(): r = requests.get('{0}/{1}'.format(GNS3_ADDR, GNS3_URLS['appliances']), auth=GNS3_AUTH) return r.json() @@ -100,22 +100,22 @@ def gns3_get_appliances_list(): ##########Drawing ################################################################################ -def gns3_get_drawings_list(project_id): +def get_drawings_list(project_id): drawings_url = GNS3_URLS['drawings'].format(project_id=project_id) r = requests.get('{0}/{1}'.format(GNS3_ADDR, drawings_url), auth=GNS3_AUTH) return r.json() -def gns3_get_drawing(project_id, drawing_id): +def get_drawing(project_id, drawing_id): drawing_url = GNS3_URLS['drawing_instance'].format(project_id=project_id, drawing_id=drawing_id) r = requests.get('{0}/{1}'.format(GNS3_ADDR, drawing_url), auth=GNS3_AUTH) return r.json() -def gns3_update_drawing(project_id, drawing_id): +def update_drawing(project_id, drawing_id): drawing_url = GNS3_URLS['drawing_instance'].format(project_id=project_id, drawing_id=drawing_id) r = requests.put('{0}/{1}'.format(GNS3_ADDR, drawing_url), auth=GNS3_AUTH) return r.json() -def gns3_delete_drawing(project_id, drawing_id): +def delete_drawing(project_id, drawing_id): drawing_url = GNS3_URLS['drawing_instance'].format(project_id=project_id, drawing_id=drawing_id) r = requests.delete('{0}/{1}'.format(GNS3_ADDR, drawing_url), auth=GNS3_AUTH) #TODO what do we return? @@ -127,25 +127,25 @@ def gns3_delete_drawing(project_id, drawing_id): #########Server ################################################################################ -def gns3_dump_debug_info(): +def dump_debug_info(): r = requests.post('{0}/{1}'.format(GNS3_ADDR, GNS3_URLS['debug']), auth=GNS3_AUTH) #TODO what do we return? return r -def gns3_get_settings(): +def get_settings(): r = requests.get('{0}/{1}'.format(GNS3_ADDR, GNS3_URLS['settings']), auth=GNS3_AUTH) return r.json() -def gns3_shutdown_server(): +def shutdown_server(): r = requests.get('{0}/{1}'.format(GNS3_ADDR, GNS3_URLS['shutdown']), auth=GNS3_AUTH) #TODO what do we return? return r -def gns3_get_version(): +def get_version(): r = requests.get('{0}/{1}'.format(GNS3_ADDR, GNS3_URLS['version']), auth=GNS3_AUTH) return r.json() -def gns3_compare_version(version_to_compare): +def compare_version(version_to_compare): r = requests.post('{0}/{1}'.format(GNS3_ADDR, GNS3_URLS['version']), auth=GNS3_AUTH, json={'version': str(version_to_compare)}) return r @@ -154,20 +154,64 @@ def gns3_compare_version(version_to_compare): ################################################################################ ##########Implementation ################################################################################ -def gns3_nodes_information(project_id): +def nodes_information(project_id): url = GNS3_URLS['nodes'].format(project_id=project_id) r = requests.get('{0}/{1}'.format(GNS3_ADDR, url), auth=GNS3_AUTH) return r.json() -def gns3_links_information(project_id): +def links_information(project_id): url = GNS3_URLS['links'].format(project_id=project_id) r = requests.get('{0}/{1}'.format(GNS3_ADDR, url), auth=GNS3_AUTH) return r.json() +def node_create(project_id, name): + para = '{"compute_id": "local", "name": "'+str(name)+'", "node_type": "vpcs"}' + url = GNS3_URLS['nodes'].format(project_id=project_id) + r = requests.post('{0}/{1}'.format(GNS3_ADDR, url), auth=GNS3_AUTH, data=para) + return r.json() + +def node_delete(project_id, node_id): + url = GNS3_URLS['nodes'].format(project_id=project_id) + r = requests.delete('{0}/{1}/{2}'.format(GNS3_ADDR, url, node_id), auth=GNS3_AUTH) + return r + +def link_create(project_id, node_id_1, node_id_2, adapter_1, adapter_2, port_1, port_2): + para = '{"nodes": [{"adapter_number": '+adapter_1+', "label": {"text": "Text", "x": 0, "y": 0}, "node_id": "'+node_id_1+'", "port_number": '+port_1+'}, {"adapter_number": '+adapter_2+', "node_id": "'+node_id_2+'", "port_number": '+port_2+'}]}' + r = requests.post('{0}/{1}'.format(GNS3_ADDR, url), auth=GNS3_AUTH, data=para) + return r + +def link_delete(): + return + +def node_start_all(project_id): + url = GNS3_URLS['start_all_nodes'].format(project_id=project_id) + r = requests.post('{0}/{1}'.format(GNS3_ADDR, url), auth=GNS3_AUTH) + return r + +def node_stop_all(project_id): + url = GNS3_URLS['stop_all_nodes'].format(project_id=project_id) + r = requests.post('{0}/{1}'.format(GNS3_ADDR, url), auth=GNS3_AUTH) + return r + +def node_suspend_all(project_id): + url = GNS3_URLS['suspend__all_nodes'].format(project_id=project_id) + r = requests.post('{0}/{1}'.format(GNS3_ADDR, url), auth=GNS3_AUTH) + return r + +def node_start(): + return + +def node_stop(): + return + +def node_suspend(): + return + + #Testing -# print(gns3_get_version()) -# gns3_get_settings() -# print(gns3_shutdown_server()) -# print(gns3_compare_version('2.1.12dev1')) -# print(gns3_get_drawings_list('a')) \ No newline at end of file +# print(get_version()) +# get_settings() +# print(shutdown_server()) +# print(compare_version('2.1.12dev1')) +# print(get_drawings_list('a')) \ No newline at end of file diff --git a/server/gns3_helper.py b/server/gns3_helper.py new file mode 100644 index 0000000..2ef94a2 --- /dev/null +++ b/server/gns3_helper.py @@ -0,0 +1,29 @@ +import gns3 + +project_id ='83b40958-ede6-4dec-9cff-e11bdf38bbcc' + +def update_nodes_info(): + nodes_info = [] + info = gns3.nodes_information(project_id) + data = '' + for node in info: + node_info = {} + node_info['name'] = node.get('name') + node_info['node_id'] = node.get('node_id') + if node.get('properties').get('platform'): + node_info['platform'] = node.get('properties').get('platform') + nodes_info.append(node_info) + print('nodes updated') + return nodes_info + +def update_links_info(): + links_info = [] + info = gns3.links_information(project_id) + for link in info: + link_info = {} + link_info['link_id'] = link.get('link_id') + link_info['node_id_1'] = link.get('nodes')[0].get('node_id') + link_info['node_id_2'] = link.get('nodes')[1].get('node_id') + links_info.append(link_info) + print('link updated') + return links_info \ No newline at end of file diff --git a/server/index_instruction.txt b/server/index_instruction.txt index 8f2fc13..f02ed0b 100644 --- a/server/index_instruction.txt +++ b/server/index_instruction.txt @@ -1,10 +1,18 @@ Provided functionality in GNS3: 0: version information -1: drawing list -2: setting information -3: nodes information -4: links information +1: nodes information +2: links information +3: create node +4: delete node +5: create link +6: delete link +7: start all nodes +8: stop all nodes +9: suspend all nodes +10: start one node +11: stop one node +12: suspend one node -1: close connection Enter index: \ No newline at end of file diff --git a/server/server.py b/server/server.py index ea4d0b1..21081ac 100644 --- a/server/server.py +++ b/server/server.py @@ -2,61 +2,76 @@ import socket import gns3 +import gns3_helper as gn +import time -TCP_IP = '127.0.0.1' -TCP_PORT = 5005 +# TCP_IP = '127.0.0.1' +# TCP_PORT = 5006 BUFFER_SIZE = 1024 # Normally 1024, but we want fast response project_id ='83b40958-ede6-4dec-9cff-e11bdf38bbcc' +UDP_IP = "127.0.0.1" +UDP_PORT = 5005 -s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) -s.bind((TCP_IP, TCP_PORT)) -s.listen(1) +sock = socket.socket(socket.AF_INET, # Internet + socket.SOCK_DGRAM) # UDP +sock.bind((UDP_IP, UDP_PORT)) + +# s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +# s.bind((TCP_IP, TCP_PORT)) +# s.listen(1) + +# conn, addr = s.accept() +# print('Connection address:', addr) + +############update information######### +nodes_info = gn.update_nodes_info() +links_info = gn.update_links_info() -conn, addr = s.accept() -print('Connection address:', addr) while 1: - index = conn.recv(BUFFER_SIZE).decode('utf-8') + msg, addr = sock.recvfrom(BUFFER_SIZE) + index = msg.decode('utf-8') if index == '0': - data = str(gns3.gns3_get_version())+str('END') + data = str(gns3.get_version())+str('END') elif index == '1': - data = str(gns3.gns3_get_drawings_list(project_id))+str('END') + nodes_info = gn.update_nodes_info() + data = str(nodes_info)+str('END') elif index == '2': - data = str(gns3.gns3_get_settings())+str('END') + links_info = gn.update_links_info() + data = str(links_info)+str('END') elif index == '3': - info = gns3.gns3_nodes_information(project_id) - data = '' - for nodes in info: - data += str('name: ') + str(nodes.get('name')) + '\n' - data += str('node_id: ') + str(nodes.get('node_id')) + '\n' - if nodes.get('properties').get('platform'): - data += str('platform: ') + str(nodes.get('properties').get('platform')) + '\n' - data += '\n' - data += str('END') + nodes_info = gn.update_nodes_info() + name = len(nodes_info)+1 + # gns3.node_create(project_id, name) + data = str(gns3.node_create(project_id, name))+str('END') + # data = str('OK 4') elif index == '4': - info = gns3.gns3_links_information(project_id) - data = '' - for links in info: - data += str('link_id: ') + str(links.get('link_id')) + '\n' - nodes = links.get('nodes') - for node in nodes: - data += str('node_id: ') + str(node.get('node_id')) + '\n' - data += '\n' - data += str('END') + nodes_info = gn.update_nodes_info() + node_id = nodes_info[-1].get('node_id') + data = str(gns3.node_delete(project_id, node_id))+str('END') + + elif index == '7': + data = str(gns3.node_start_all(project_id))+str('END') + + elif index == '8': + data = str(gns3.node_stop_all(project_id))+str('END') + + elif index == '9': + data = str(gns3.node_suspend_all(project_id))+str('END') elif index == '-1': data = str('close')+str('END') - conn.send(data.encode('utf-8')) # echo - break + + elif not index: break + else: data = str('incorrect msg')+str('END') - conn.send(data.encode('utf-8')) # echo - -conn.close() + sock.sendto(data.encode('utf-8'), addr) # echo +# conn.close() -- GitLab