import socket
import sys
import os
import base64

def prep():
    srv_sock = '/tmp/myapp.sock'
    try:
        os.unlink(srv_sock)
    except:
        if os.path.exists(srv_sock):
            raise
    sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
    try:
        print('Setting up server socket on %s\n' % srv_sock)
        sock.bind(srv_sock)
        sock.listen(1)
        print('Success, listening on unix domain socket %s\n' % srv_sock)
        return(sock)
    except Exception as e:
        print(e)
        return False

def main():
    sock = prep()
    if not sock:
        return False
    while True:
        connection, client_address = sock.accept()
        try:
            buffer = ''
            rcvd_bytes = 0
            while True:
                data = connection.recv(1024)
                rcvd_bytes = rcvd_bytes + len(data)
                if not data:
                    print('Finished receiving data\n')
                    break
                buffer = buffer + data.decode()
            buffer = buffer[:-1]
            # print(base64.b64encode(buffer.rstrip('\x00')))
            print('Total bytes received bytes: %s\n' % len(buffer))
        finally:
            print('Closing the connection\n')
            connection.close()
            print('Connection closed\n')

if __name__=="__main__":
    main()
