Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- import socket
- import threading
- import signal
- import re
- import time
- keys = [('o', '32894623d6789efa', 'a24c0b16a2b64235'),
- ('e', 'a24c0b16a2b64235', '1ff39f02f6ffb05c'),
- ('o', '1ff39f02f6ffb05c', '2ed6ed3e1078937b'),
- ('e', '2ed6ed3e1078937b', 'a8eff9cc3d39b999'),
- ('o', 'a8eff9cc3d39b999', 'd5071099f8fe8596'),
- ('e', 'd5071099f8fe8596', '32894623d6789efa')];
- keynum = 0
- def loadKeys(uip, umcast, ulogin, upasswd):
- print "Request keys, ulogin = " + ulogin
- global keynum
- if ulogin == "getstream":
- global keynum
- keynum += 1
- if keynum == len(keys):
- keynum = 0
- return keys[keynum]
- # def loadKeys(uip, umcast, ulogin, upasswd)
- def checkLoginPasswd(ulogin, upasswd):
- if(ulogin == 'getstream') : return 0
- elif(ulogin == 'user1'):
- if(upasswd != 'pass1') : return 202
- else : return 201
- return 0
- class CSThread(threading.Thread):
- def __init__(self, channel, details):
- self.channel = channel
- self.details = details
- threading.Thread.__init__(self)
- def run(self):
- umcast = '0'
- ulogin = '0'
- upasswd = '0'
- query = self.channel.recv(256)
- aquery = re.findall(r"\w+\=[\w\.]+", query)
- for varval in aquery:
- avarval = varval.split('=')
- if avarval[0] == 'mcast': umcast = avarval[1]
- elif avarval[0] == 'login': ulogin = avarval[1]
- elif avarval[0] == 'passwd': upasswd = avarval[1]
- (parity, key1, key2) = loadKeys(self.details[0], umcast, ulogin, upasswd)
- retCode = checkLoginPasswd(ulogin, upasswd)
- msgString = ''
- if(retCode == 0):
- msgString = 'biss:' + parity + ':' + key1 + ':' + key2
- else:
- msgString = 'error:' + str(retCode)
- self.channel.send('HTTP/1.1 200 OK\r\n'
- 'Server: keysrv v.0.0\r\n'
- 'Content-Type: text/plain charset=utf-8\r\n\r\n'
- + msgString + '\n')
- # if parity == 'e':
- # key1 is even
- # key2 is odd
- self.channel.close()
- # class CSThread
- def handlerQuit(signum, frame):
- print '\rBye!'
- exit(1)
- # + main
- signal.signal(signal.SIGQUIT, handlerQuit)
- signal.signal(signal.SIGINT, handlerQuit)
- srv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- srv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
- srv.bind(('', 602))
- srv.listen(10)
- while 1:
- channel, details = srv.accept()
- CSThread(channel, details).start()
- # - main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement