Code: Alles auswählen
Connected by ('127.0.0.1', 33264)
DEBUG eine action
Traceback (most recent call last):
File "/home/hmm/Desktop/remin/main.py", line 136, in ?
handleClient(conn, addr)
File "/home/hmm/Desktop/remin/main.py", line 42, in handleClient
resp =socket.recv(512)
File "/usr/lib/python2.4/socket.py", line 136, in _dummy
raise error(EBADF, 'Bad file descriptor')
socket.error: (9, 'Bad file descriptor')
Code: Alles auswählen
import socket
import cgi
class Season:
def __init__(self):
self.data = {}
def get(self, varName):
return self.data[varName]
def set(self, varName, value):
self.data[varname] = value
def addDict(self, varname, value):
self.data[varname].update(value)
def addList(self, varname, value):
self.data[varname].append(value)
def rm(self, varName):
del self.data[varname] #vieleicht anderes
class Utils:
def check(self, dict, *keys):
for key in keys:
if not dict.has_key():
return False
return True
def formatCmds(self, dict):
retval = ""
for key, val in dict.iteritems():
retval+= "<br><br><center>---"+ key +"---</center><br>" + val
return retval
def handleClient(socket, ip):
resp =socket.recv(512)
method, req, proto = resp.split(" ", 2)#vileicht auch 2
#try:
if method == "GET":
try:
query = req.split("?")[1]
except:
query = ""
elif method == "POST":
query = resp.split("\r\n\r\n")[1]
#except.. . .er.b
param = cgi.parse_qs(query)
html = ""
if param.has_key("action"):
print "DEBUG eine action"
action = param["action"]
if not SEASONS.has_key(ip):
socket.send("access denied!!!, login first")
socket.close()
return
if action == "login":
if not utils.check(param, "login", "pwd"):
socket.send(utils.missingInputs())
socket.close()
return
if param["login"] in users.keys() and users[param["login"]] == param["pwd"]:
SEASONS.update({ip: Season()})
else:
html+= "false password or username"
elif action == "cmd":
if param.has_key(cmd):#noch clear implementieren
cmdResp = os.system(cmd)#vieleicht anderes
SEASON[ip].set({})
SEASON[ip].addDict({cmd: cmdResp})
html+= """
<html>
<body>
<table height=100% width=100% border=3>
<tr>
<td>
<form action="" method="get">
cmd <input name="cmd" size="20">
<input type="hidden" name="action" value="cmd">
<input type="submit" value="r00t">
</form>
</td>
<td>
""" + utils.formatCmds(cmds) + """
</td>
</tr>
</table>
"""
elif action == "edit":
pass
else: #also keine action
print "DEBUG keine action"
html+= """
<html>
<body>
<form action="" method="get">
login: <input name="login" size="20"><br>
password: <input name="pwd" type:password size="20"><br>
<input type="hidden" name="action" value="login">
<input type="submit" value="login">
</form>
</body>
</html>
"""
socket.send(html)
socket.close()#################
if __name__ == "__main__":
global utils #ist gloabal noetig?
utils = Utils()
global SEASONS
SEASONS = {} #ist gloabal noetig?
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("", 80))
s.listen(10)
conn, addr = s.accept()
print 'Connected by', addr
while 1:
handleClient(conn, addr)
conn.close()
print "test"