diff options
author | makefu <root@pigstarter.de> | 2013-12-10 19:49:34 +0100 |
---|---|---|
committer | makefu <root@pigstarter.de> | 2013-12-10 19:49:34 +0100 |
commit | e847dd73730eb638d75e2d0cbc36340be7bb517e (patch) | |
tree | 26aa0e70c803ffb4d643e6f63ea05f8336668c57 /cholerab/cholerab-live/chol_net.py | |
parent | 9baf5c9a0a86cb94469eea069e984cc7253635b8 (diff) | |
parent | 93649c0d464de3b62dfd7fbc717386e6905bbbd2 (diff) |
Merge branch 'master' of https://github.com/krebscode/painload
Diffstat (limited to 'cholerab/cholerab-live/chol_net.py')
-rw-r--r-- | cholerab/cholerab-live/chol_net.py | 82 |
1 files changed, 0 insertions, 82 deletions
diff --git a/cholerab/cholerab-live/chol_net.py b/cholerab/cholerab-live/chol_net.py deleted file mode 100644 index ee0f5378..00000000 --- a/cholerab/cholerab-live/chol_net.py +++ /dev/null @@ -1,82 +0,0 @@ -from socket import socket, AF_INET,SOCK_DGRAM,IPPROTO_UDP,SOL_SOCKET,SO_REUSEADDR,IP_MULTICAST_TTL,IP_MULTICAST_LOOP,INADDR_ANY,inet_aton,IP_ADD_MEMBERSHIP,IPPROTO_IP -import struct -import threading -import logging -log = None -from select import select -GROUP = '224.110.42.23' -PORT = 42023 -log = logging.getLogger('CholerabNet') -class CholerabMulicastNet(threading.Thread): - def __init__(self,cholerab,group=GROUP,port=PORT): - threading.Thread.__init__(self) - self.cholerab=cholerab - self.group=group - self.port=port - self.initSocket() - def send_char(self,x,y,char): - """ translates given params into network message """ - self.send_mc("%s %d %d" %(str(ord(char)),x,y)) - def send_mc(self,arg): - """ Sends message via multicast""" - try: - log.debug("Sending '%s' to %s:%d" % (arg,self.group,self.port)) - self.ignore_next += 1# we need this to work together correctly with reused sockets - self.s.sendto("%s" % arg,0,(self.group,self.port)) - except Exception ,e: - self.ignore_next -=1 - log.error("IN send_mc:%s"%str(e)) - - def initSocket (self,rcv=1): - ''' Initializes a Multicast socket ''' - host = '' - log.debug("Setting up Multicast Socket") - self.s = socket(AF_INET,SOCK_DGRAM, IPPROTO_UDP) - self.s.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) - self.s.setsockopt(IPPROTO_IP, IP_MULTICAST_TTL, 32) - self.s.setsockopt(IPPROTO_IP,IP_MULTICAST_LOOP,1) # we do not want our own packets to be replayed - if rcv==1: - log.debug("Configuring for Read AND Write") - self.s.bind((host,PORT)) - mreq = struct.pack("4sl", inet_aton(GROUP), INADDR_ANY) - self.s.setsockopt(IPPROTO_IP,IP_ADD_MEMBERSHIP,mreq) - def run(self): - self.running = 1 - self.ignore_next = 0 - while self.running: - # break if we do not want to loop on - ready,output,exception = select([self.s],[],[],1) # try every second - for r in ready: - if r == self.s: - log.debug(str(self.ignore_next)) - (data,addr) = self.s.recvfrom(1024) - if not self.ignore_next: - log.debug("Received Data from %s, data %s"%(str(addr),str(data))) - self.receive_net(addr,data) - else: - self.ignore_next -= 1 - - def send_stupid(self,addr): - """ sends YOU ARE MADE OF STUPID to the right host """ - #TODO implement me - pass - - def receive_net(self,addr,data): - """ resolves which nick sent the message - TODO handle user resolution in mulicast """ - try: - address,port = addr - arr = str(data).split() - char = arr[0] - x = arr[1] - y = arr[2] - self.cholerab.write_char(int(x),int(y),chr(int(char))) - except Exception, e: - log.error("Triggered YOU ARE MADE OF STUPID: %s" % str(e)) - self.send_stupid(addr) - - def stop(self): - ''' - stops the whole treading stuff gracefully - ''' - self.running=0 |