(cmdPipe, param)
| 312 | |
| 313 | |
| 314 | def 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 |
no test coverage detected