source: CMTManagement/utils/bd_client_web.py

Last change on this file was 421, checked in by garonne, 17 years ago
  • Property svn:executable set to *
File size: 3.7 KB
Line 
1#!/usr/bin/env python
2# #sys.path.insert (0,"/var/www/cgi-bin")
3
4import sys
5import os
6import commands
7import cgi
8import traceback
9import string
10import re
11import socket
12
13ROOTPATH="/tmp"
14CGISH_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>
20body
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}
28a {color: #99ff99; text-decoration: none}
29a:hover {color: #00FF00}
30hr {color: #00ff00}
31.cursor {color:#002000;background-color:#00cc00}
32form {
33        font-family: "Courier New", Courier, mono;
34        color: #00CC00;
35        background-color: #003300;
36}
37input {
38        font-family: "Courier New", Courier, mono;
39        color: #00CC00;
40        background-color: #003300;
41        padding: 3px;
42        border: 0;
43}
44textarea {
45        font-family: "Courier New", Courier, mono;
46        color: #00CC00;
47        background-color: #003300;
48}
49</style>
50<script language="JavaScript">
51function firstFocus()
52{if (document.forms.length > 0)
53{var TForm = document.forms[0];
54for (i=0;i<TForm.length;i++){
55if ((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"""
79def page (result = ''):
80        """Return the main form"""
81        return CGISH_HTML % {'SHELL_OUTPUT':result}
82
83def 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
113def 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
128sys.path.insert (0,"/usr/local/apache/cgi-bin")
129sys.stderr = sys.stdout
130
131print "Content-type: text/html"
132print
133
134try:
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
143except:
144        print "\n\n<pre>"
145        traceback.print_exc()
146        print "</pre>"
147
148
Note: See TracBrowser for help on using the repository browser.