mirror of https://github.com/OpenIPC/python-dvr
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.4 KiB
55 lines
1.4 KiB
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
import os, sys, struct, json
|
|
from time import sleep
|
|
from socket import *
|
|
from datetime import *
|
|
|
|
if len(sys.argv) > 1:
|
|
port = sys.argv[1]
|
|
else:
|
|
print("Usage: %s [Port]" % os.path.basename(sys.argv[0]))
|
|
port = input("Port(default 15002): ")
|
|
if port == "":
|
|
port = "15002"
|
|
server = socket(AF_INET, SOCK_STREAM)
|
|
server.bind(("0.0.0.0", int(port)))
|
|
# server.settimeout(0.5)
|
|
server.listen(1)
|
|
|
|
log = "info.txt"
|
|
|
|
|
|
def tolog(s):
|
|
logfile = open(datetime.now().strftime("%Y_%m_%d_") + log, "a+")
|
|
logfile.write(s)
|
|
logfile.close()
|
|
|
|
|
|
def GetIP(s):
|
|
return inet_ntoa(struct.pack("<I", int(s, 16)))
|
|
|
|
|
|
while True:
|
|
try:
|
|
conn, addr = server.accept()
|
|
head, version, session, sequence_number, msgid, len_data = struct.unpack(
|
|
"BB2xII2xHI", conn.recv(20)
|
|
)
|
|
sleep(0.1) # Just for recive whole packet
|
|
data = conn.recv(len_data)
|
|
conn.close()
|
|
reply = json.loads(data, encoding="utf8")
|
|
print(datetime.now().strftime("[%Y-%m-%d %H:%M:%S]>>>"))
|
|
print(head, version, session, sequence_number, msgid, len_data)
|
|
print(json.dumps(reply, indent=4, sort_keys=True))
|
|
print("<<<")
|
|
tolog(repr(data) + "\r\n")
|
|
except (KeyboardInterrupt, SystemExit):
|
|
break
|
|
# except:
|
|
# e = 1
|
|
# print "no"
|
|
server.close()
|
|
sys.exit(1)
|
|
|