POS-Printer/server.py

97 lines
3.0 KiB
Python

import socket
import urllib.parse
HOST = ''
PORT = 8000
content = b'''HTTP/1.x 200 OK
Content-Type: text/html
<head>
<meta http-equiv="refresh" content="1; url=http://chat.pedantries.com/fax/">
<title>WOW</title>
</head>
<html>
<p>Wow, Python Server</p>
</html>
'''
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
while True:
s.listen(3)
conn, addr = s.accept()
request = conn.recv(4096)
# print (request)
try:
method = request.decode().split(' ')[0]
except:
print ("Unexpected method:", request)
if method == 'POST':
try:
ctype = request.decode().split('Content-Type: ')[1].splitlines()[0]
except:
print ("Unexpected ctype:", request)
# print (ctype)
# ctype = ctype[1].splitlines()[0]
# src = request.decode().split(' ')[1]
body = request.decode().split('\r\n\r\n', 1)[1]
try:
single = body.split('&',1)
sender = single[0].split('=',1)
except:
print ("Unexpected body:", request)
# print (request)
#print (request.decode())
#print (request.decode('utf-8'))
# print (single)
#print (ctype)
#print ("----------------------------------------------")
if method == 'POST' and ctype == 'application/x-www-form-urlencoded':
try:
message = single[1].split('=',1)
except:
print ("Unexpected error:", request)
# print (message[1][:-1])
# print (message[1][:-1], bytes)
# print (message[1][:-1].encode())
# print ("&&&&&&&&&&&&&&&&&")
# m = message[1].replace("b", "").replace("'", "")
# print (m)
with open('/dev/usb/lp0', 'w', encoding='gbk') as printer:
# printer.write('\n'+str(addr)+'\n')
printer.write(str(request.decode())+'\n')
# printer.write('\n'*2+str(body)+'\n')
# printer.write(single[0]+'\n')
# printer.write(single[1]+'\n')
# printer.write(sender[0]+'\n')
m = urllib.parse.unquote(message[1])
#o = str(m).encode('gb2312').decode('latin2')
#p = str(m).encode()
printer.write('\x1b\x61\x01')
printer.write('\x1b\x21\x30')
printer.write("您有一条新短信,请查收!"+'\n')
printer.write('\x1b\x61\x00')
printer.write('\x1b\x21\x00')
printer.write('\x1b\x45\x01')
printer.write(urllib.parse.unquote(sender[1])+'\n')
printer.write('\x1b\x45\x00')
#printer.write(urllib.parse.unquote(message[1], encoding="utf-8")+'\n')
try:
printer.write(m+'\n')
except:
print ("Error from Printer:", m)
#printer.write(p+'\n')
#print (sender)
#print (message[1])
#print (ctype)
#print (urllib.parse.unquote(message[1])+'\n')
#print (urllib.parse.unquote(message[1], encoding="utf-8")+'\n')
conn.sendall(content)
conn.close()