def handle_request(self, request): # authorize a request before handling it... scheme = get_header(AUTHORIZATION, request.header) if scheme: scheme = scheme.lower() if scheme == "basic": cookie = get_header(AUTHORIZATION, request.header, 2) try: decoded = as_string(decodestring(as_bytes(cookie))) except: print_function("malformed authorization info <%s>" % cookie) request.error(400) return auth_info = decoded.split(":", 1) if self.authorizer.authorize(auth_info): self.pass_count.increment() request.auth_info = auth_info self.handler.handle_request(request) else: self.handle_unauthorized(request) # elif scheme == 'digest': # print 'digest: ',AUTHORIZATION.group(2) else: print("unknown/unsupported auth method: %s" % scheme) self.handle_unauthorized(request) else: # list both? prefer one or the other? # you could also use a 'nonce' here. [see below] # auth = 'Basic realm="%s" Digest realm="%s"' % (self.realm, self.realm) # nonce = self.make_nonce (request) # auth = 'Digest realm="%s" nonce="%s"' % (self.realm, nonce) # request['WWW-Authenticate'] = auth # print 'sending header: %s' % request['WWW-Authenticate'] self.handle_unauthorized(request)
def handle_request (self, request): # authorize a request before handling it... scheme = get_header (AUTHORIZATION, request.header) if scheme: scheme = scheme.lower() if scheme == 'basic': cookie = get_header (AUTHORIZATION, request.header, 2) try: decoded = as_string(decodestring(as_bytes(cookie))) except: print_function('malformed authorization info <%s>' % cookie) request.error (400) return auth_info = decoded.split(':', 1) if self.authorizer.authorize (auth_info): self.pass_count.increment() request.auth_info = auth_info self.handler.handle_request (request) else: self.handle_unauthorized (request) #elif scheme == 'digest': # print 'digest: ',AUTHORIZATION.group(2) else: print('unknown/unsupported auth method: %s' % scheme) self.handle_unauthorized(request) else: # list both? prefer one or the other? # you could also use a 'nonce' here. [see below] #auth = 'Basic realm="%s" Digest realm="%s"' % (self.realm, self.realm) #nonce = self.make_nonce (request) #auth = 'Digest realm="%s" nonce="%s"' % (self.realm, nonce) #request['WWW-Authenticate'] = auth #print 'sending header: %s' % request['WWW-Authenticate'] self.handle_unauthorized (request)
def handle_read(self): data = self.recv(512) if not data: print_function('\nclosed.') self.sock_channel.close() try: self.close() except: pass data = data.replace('\n', '\r\n') self.sock_channel.push(data)
def handle_read (self): data = self.recv(512) if not data: print_function('\nclosed.') self.sock_channel.close() try: self.close() except: pass data = data.replace('\n', '\r\n') self.sock_channel.push (data)
# first grab the timestamp ts = sock.recv (1024)[:-2] sock.send (hex_digest (ts+password) + '\r\n') while 1: d = sock.recv (1024) if not d: lock.release() print('Connection closed. Hit <return> to exit') thread.exit() sys.stdout.write (d) sys.stdout.flush() def writer (lock, sock, barrel="just kidding"): while lock.locked(): sock.send ( sys.stdin.readline()[:-1] + '\r\n' ) if __name__ == '__main__': if len(sys.argv) == 1: print('Usage: %s host port') sys.exit(0) print_function('Enter Password: '******'') p = raw_input() s = socket.socket (socket.AF_INET, socket.SOCK_STREAM) s.connect((sys.argv[1], int(sys.argv[2]))) l = thread.allocate_lock() l.acquire() thread.start_new_thread (reader, (l, s, p)) writer (l, s)
def error(self, url, error): print_function(url, error)
def found_terminator(self): if not self.sent_auth: self.push(hex_digest(self.timestamp + self.password) + '\r\n') self.sent_auth = 1 else: print_function()
data = monitor_client.recv(self, block_size) if data: return self.incoming.decrypt(data) else: return data def hex_digest(s): m = md5.md5() m.update(s) return ''.join([hex(ord(x))[2:] for x in m.digest()]) if __name__ == '__main__': if len(sys.argv) == 1: print_function('Usage: %s host port' % sys.argv[0]) sys.exit(0) if '-e' in sys.argv: encrypt = 1 sys.argv.remove('-e') else: encrypt = 0 sys.stderr.write('Enter Password: '******'stty -echo') p = raw_input() print_function() finally:
def found_terminator (self): if not self.sent_auth: self.push (hex_digest (self.timestamp + self.password) + '\r\n') self.sent_auth = 1 else: print_function()
def recv (self, block_size): data = monitor_client.recv (self, block_size) if data: return self.incoming.decrypt (data) else: return data def hex_digest (s): m = md5.md5() m.update(s) return ''.join([hex (ord (x))[2:] for x in m.digest()]) if __name__ == '__main__': if len(sys.argv) == 1: print_function('Usage: %s host port' % sys.argv[0]) sys.exit(0) if '-e' in sys.argv: encrypt = 1 sys.argv.remove ('-e') else: encrypt = 0 sys.stderr.write ('Enter Password: '******'stty -echo') p = raw_input() print_function() finally: