MCPcopy
hub / github.com/iBaa/PlexConnect / Run

Function Run

DNSServer.py:314–442  ·  view source on GitHub ↗
(cmdPipe, param)

Source from the content-addressed store, hash-verified

312
313
314def Run(cmdPipe, param):
315 if not __name__ == '__main__':
316 signal.signal(signal.SIGINT, signal.SIG_IGN)
317
318 dinit(__name__, param) # init logging, DNSServer process
319
320 cfg_IP_self = param['IP_self']
321 cfg_Port_DNSServer = param['CSettings'].getSetting('port_dnsserver')
322 cfg_IP_DNSMaster = param['CSettings'].getSetting('ip_dnsmaster')
323
324 try:
325 DNS = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
326 DNS.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
327 DNS.settimeout(5.0)
328 DNS.bind((cfg_IP_self, int(cfg_Port_DNSServer)))
329 except Exception, e:
330 dprint(__name__, 0, "Failed to create socket on UDP port {0}: {1}", cfg_Port_DNSServer, e)
331 sys.exit(1)
332
333 intercept = [param['HostToIntercept']]
334 restrain = []
335
336 if param['CSettings'].getSetting('use_custom_dns_bind_ip') == "True":
337 cfg_IP_self = param['CSettings'].getSetting('custom_dns_bind_ip')
338 else:
339 cfg_IP_self = param['IP_self']
340
341 if param['CSettings'].getSetting('intercept_atv_icon')=='True':
342 intercept.append('a1.phobos.apple.com')
343 dprint(__name__, 0, "Intercept Atv Icon: Enabled")
344 if param['CSettings'].getSetting('prevent_atv_update')=='True':
345 restrain = ['mesu.apple.com', 'appldnld.apple.com', 'appldnld.apple.com.edgesuite.net']
346 dprint(__name__, 0, "Prevent Atv Update: Enabled")
347
348 dprint(__name__, 0, "***")
349 dprint(__name__, 0, "DNSServer: Serving DNS on {0} port {1}.", cfg_IP_self, cfg_Port_DNSServer)
350 dprint(__name__, 1, "intercept: {0} => {1}", intercept, cfg_IP_self)
351 dprint(__name__, 1, "restrain: {0} => 127.0.0.1", restrain)
352 dprint(__name__, 1, "forward other to higher level DNS: "+cfg_IP_DNSMaster)
353 dprint(__name__, 0, "***")
354
355 try:
356 while True:
357 # check command
358 if cmdPipe.poll():
359 cmd = cmdPipe.recv()
360 if cmd=='shutdown':
361 break
362
363 # do your work (with timeout)
364 try:
365 data, addr = DNS.recvfrom(1024)
366 dprint(__name__, 1, "DNS request received!")
367 dprint(__name__, 1, "Source: "+str(addr))
368
369 #print "incoming:"
370 #printDNSdata(data)
371

Callers 1

DNSServer.pyFile · 0.70

Calls 4

dinitFunction · 0.85
dprintFunction · 0.85
DNSToHostFunction · 0.85
getSettingMethod · 0.45

Tested by

no test coverage detected