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)
Exemple #2
0
    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)
Exemple #3
0
    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)
Exemple #4
0
    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)
Exemple #6
0
 def error(self, url, error):
     print_function(url, error)
Exemple #7
0
 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()
Exemple #8
0
        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:
Exemple #9
0
 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()
Exemple #10
0
    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: