Reputation: 500
Hi I have this code for my variables post, I want this always listening and receiving post requests, works fine but after receiving the first varibles follows the script running but no longer get the post varibles.
Only works well once, then have to restart the python script.
import BaseHTTPServer
import urlparse
import os
HOST_NAME = ''
PORT_NUMBER=8000
postVars = ''
class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler):
def do_POST(s):
global postVars
s.send_response(200)
s.end_headers()
varLen = int(s.headers['Content-Length'])
postVars = s.rfile.read(varLen)
#print postVars
server_class = BaseHTTPServer.HTTPServer
httpd = server_class((HOST_NAME, PORT_NUMBER), MyHandler)
try:
httpd.handle_request()
except KeyboardInterrupt:
pass
#print postVars
qs = dict( (k, v if len(v)>1 else v[0] )
for k, v in urlparse.parse_qs(postVars).iteritems() )
#print qs
pass = qs['pass']
domain = qs['domain']
user = qs['user']
os.system("./createuser.sh %s %s %s" % (pass,user,domain))
httpd.serve_forever()
thank for all
Upvotes: 2
Views: 91
Reputation: 9240
If you call serve_forever
you can't do anything in this thread. Do tasks in another thread or loop and call handle_request
.
HOST_NAME = ''
PORT_NUMBER=8000
postVars = ''
class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler):
def do_POST(s):
global postVars
s.send_response(200)
s.end_headers()
varLen = int(s.headers['Content-Length'])
postVars = s.rfile.read(varLen)
#print postVars
server_class = BaseHTTPServer.HTTPServer
httpd = server_class((HOST_NAME, PORT_NUMBER), MyHandler)
while True:
try:
httpd.handle_request()
except KeyboardInterrupt:
pass
qs = dict( (k, v if len(v)>1 else v[0] )
for k, v in urlparse.parse_qs(postVars).iteritems() )
pass = qs['pass']
domain = qs['domain']
user = qs['user']
os.system("./createuser.sh %s %s %s" % (pass,user,domain))
Upvotes: 1
Reputation: 6575
The error is in the end of your script. You take some name to vars, but get another one.
change this
pase = qs['pass']
dominio = qs['domain']
usuario = qs['user']
os.system("./createuser.sh %s %s %s" % (pass,user,domain))
httpd.serve_forever()
for this
passwd = qs['pass']
domain = qs['domain']
username = qs['user']
os.system("./createuser.sh %s %s %s" % (passwd, username, domain))
httpd.serve_forever()
Just typo :-)
Upvotes: 1