Skip to content
Snippets Groups Projects
Select Git revision
  • 86d57a6574b56e85fd63719e3840349eceaaf2b7
  • master default
  • wink/trng
  • patch-3
  • patch-2
  • patch-1
  • micro-modules
  • color-2
  • color-html-3
  • color-html-2
  • color-html
  • ch3/api-speed-eval2
  • rahix/bma
  • freertos-btle
  • schneider/mp-for-old-bl
  • ch3/leds-api
  • ch3/genapi-refactor
  • ch3/dual-core
  • dualcore
19 results

FreeRTOS_UDP_IP.h

Blame
  • Forked from card10 / firmware
    Source project has a limited visibility.
    websocket_helper.py 1.59 KiB
    import sys
    try:
        import ubinascii as binascii
    except:
        import binascii
    try:
        import uhashlib as hashlib
    except:
        import hashlib
    
    DEBUG = 0
    
    def server_handshake(sock):
        clr = sock.makefile("rwb", 0)
        l = clr.readline()
        #sys.stdout.write(repr(l))
    
        webkey = None
    
        while 1:
            l = clr.readline()
            if not l:
                raise OSError("EOF in headers")
            if l == b"\r\n":
                break
        #    sys.stdout.write(l)
            h, v = [x.strip() for x in l.split(b":", 1)]
            if DEBUG:
                print((h, v))
            if h == b'Sec-WebSocket-Key':
                webkey = v
    
        if not webkey:
            raise OSError("Not a websocket request")
    
        if DEBUG:
            print("Sec-WebSocket-Key:", webkey, len(webkey))
    
        d = hashlib.sha1(webkey)
        d.update(b"258EAFA5-E914-47DA-95CA-C5AB0DC85B11")
        respkey = d.digest()
        respkey = binascii.b2a_base64(respkey)[:-1]
        if DEBUG:
            print("respkey:", respkey)
    
        sock.send(b"""\
    HTTP/1.1 101 Switching Protocols\r
    Upgrade: websocket\r
    Connection: Upgrade\r
    Sec-WebSocket-Accept: """)
        sock.send(respkey)
        sock.send("\r\n\r\n")
    
    
    # Very simplified client handshake, works for MicroPython's
    # websocket server implementation, but probably not for other
    # servers.
    def client_handshake(sock):
        cl = sock.makefile("rwb", 0)
        cl.write(b"""\
    GET / HTTP/1.1\r
    Host: echo.websocket.org\r
    Connection: Upgrade\r
    Upgrade: websocket\r
    Sec-WebSocket-Key: foo\r
    \r
    """)
        l = cl.readline()
    #    print(l)
        while 1:
            l = cl.readline()
            if l == b"\r\n":
                break
    #        sys.stdout.write(l)