-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.py
68 lines (60 loc) · 2.12 KB
/
server.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
import os
import sys
import log
import logging
import archive
import methods
import config
config.basepath = os.path.dirname(os.path.realpath(__file__))
if not os.geteuid() == 0:
sys.exit('Script must be run as root')
#load the config
if not config.load():
sys.exit(config.message)
if __name__ == '__main__':
# define the server
from SimpleXMLRPCServer import SimpleXMLRPCServer
from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler
# Restrict to a particular path.
class RequestHandler(SimpleXMLRPCRequestHandler):
rpc_paths = (config.paths)
def do_GET(self):
filepath = archive.parse_archive_url(self.path)
if type(filepath) is bool:
self.send_response(404)
return False
if not os.path.isfile(filepath):
self.send_response(404)
return False
self.send_response(200)
self.send_header('Content-type','archive/tar')
self.end_headers()
f = open(filepath)
self.wfile.write(f.read())
f.close()
return
# Create server
server = SimpleXMLRPCServer((config.host_name, config.port), requestHandler=RequestHandler)
server.register_introspection_functions()
# declare methods
server.register_function(methods.ping)
server.register_function(methods.get_sim_users)
server.register_function(methods.get_sim_user)
server.register_function(methods.get_sims_by_user)
server.register_function(methods.get_sim)
server.register_function(methods.show_log)
server.register_function(methods.run_sim)
server.register_function(methods.os_save_oar)
server.register_function(methods.os_load_oar)
server.register_function(methods.delete_oar)
server.register_function(methods.os_save_iar)
server.register_function(methods.os_load_iar)
server.register_function(methods.delete_iar)
# Run the server's main loop
logging.main_logger.critical("[server] Pyosmw server starting on host %s and port %s." % (config.host_name,config.port))
try:
server.serve_forever()
except KeyboardInterrupt:
logging.main_logger.critical("[server] Pyosmw server interrupted.")
server.server_close()
sys.exit(0)