forked from plexinc/PlexConnect
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPlexConnect.py
executable file
·82 lines (61 loc) · 2.12 KB
/
PlexConnect.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
#!/usr/bin/python
"""
PlexConnect
Sources:
inter-process-communication (queue): http://pymotw.com/2/multiprocessing/communication.html
"""
import sys, time
import socket
from multiprocessing import Process, Queue
import PlexGDM
import DNSServer, WebServer
import Settings
from Debug import * # dprint()
def getIP_self():
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(('1.2.3.4', 1000))
IP = s.getsockname()[0]
dprint('PlexConnect', 0, "IP_self: "+IP)
return IP
if __name__=="__main__":
dprint('PlexConnect', 0, "***")
dprint('PlexConnect', 0, "PlexConnect")
dprint('PlexConnect', 0, "Press ENTER to shut down.")
dprint('PlexConnect', 0, "***")
cmd_DNSServer = Queue()
cmd_WebServer = Queue()
param = {}
param['IP_self'] = getIP_self()
if Settings.getPlexGDM()==True:
PlexGDM.Run()
param['IP_PMS'] = PlexGDM.getIP_PMS()
param['Port_PMS'] = PlexGDM.getPort_PMS()
param['Addr_PMS'] = PlexGDM.getIP_PMS()+':'+str(PlexGDM.getPort_PMS())
else:
param['IP_PMS'] = Settings.getIP_PMS()
param['Port_PMS'] = Settings.getPort_PMS()
param['Addr_PMS'] = Settings.getIP_PMS()+':'+str(Settings.getPort_PMS())
p_DNSServer = Process(target=DNSServer.Run, args=(cmd_DNSServer, param))
p_DNSServer.start()
time.sleep(0.1)
if not p_DNSServer.is_alive():
dprint('PlexConnect', 0, "DNSServer not alive. Shutting down.")
sys.exit(1)
p_WebServer = Process(target=WebServer.Run, args=(cmd_WebServer, param))
p_WebServer.start()
time.sleep(0.1)
if not p_WebServer.is_alive():
dprint('PlexConnect', 0, "WebServer not alive. Shutting down.")
cmd_DNSServer.put('shutdown')
p_DNSServer.join()
sys.exit(1)
try:
key = raw_input()
except KeyboardInterrupt:
dprint('PlexConnect', 0, "^C received.")
finally:
dprint('PlexConnect', 0, "Shutting down.")
cmd_DNSServer.put('shutdown')
cmd_WebServer.put('shutdown')
p_DNSServer.join()
p_WebServer.join()