178
def writeheaderplain(request):
179
request.send_response(200)
180
request.send_header('Content-type', 'text/plain; charset=%s' % \
181
sys.getdefaultencoding())
182
request.send_header('Server', config['version'])
183
request.end_headers()
185
def writeheaderhtml(request):
186
request.send_response(200)
187
request.send_header('Content-type', 'text/html; charset=%s' % \
188
sys.getdefaultencoding())
189
request.send_header('Server', config['version'])
190
request.end_headers()
171
192
def webheader(request):
172
193
""" create web header """
173
194
request.wfile.write('<form action="dispatch">')
179
200
% ' '.join(cmndslist))
180
201
request.wfile.write('use chan #channel to provide a channel for \
181
202
channel related commands<br>example: search http chan #dunkbots<br><br>')
182
for i in cfg.get('showplugs'):
183
request.wfile.write("<a href='/%s'>%s</a>" % (i, i))
184
request.wfile.write(" ")
203
#for i in cfg.get('showplugs'):
204
# request.wfile.write("<a href='/%s'>%s</a>" % (i, i))
205
# request.wfile.write(" ")
185
206
request.wfile.write('<br>')
208
def sendresult(request, result, how=[]):
211
if type(result) == types.StringType:
216
output = escape(output)
217
request.wfile.write(output)
219
request.wfile.write("<br>")
220
request.wfile.write("\n")
223
def makeresult(request):
225
result = request.server.do(request)
187
232
class BotHTTPRequestHandler(BaseHTTPRequestHandler):
189
234
""" bots request handler class """
192
237
""" called on GET """
193
238
ip = self.client_address[0]
194
239
if not cfg.get('whitelistenable') and ip in cfg.get('blacklist'):
195
rlog(5, 'webserver', 'denied %s' % ip)
240
rlog(100, 'webserver', 'denied %s' % ip)
196
241
self.send_error(404)
198
243
if cfg.get('whitelistenable') and ip not in cfg.get('whitelist'):
199
rlog(5, 'webserver', 'denied %s' % ip)
244
rlog(100, 'webserver', 'denied %s' % ip)
200
245
self.send_error(404)
202
pathin = unquote_plus(self.path)
203
if pathin.endswith('&how=direct'):
204
self.send_response(200)
205
self.send_header('Content-type', 'text/plain; charset=%s' % \
206
sys.getdefaultencoding())
207
self.send_header('Server', config['version'])
209
self.path = self.path[:-11]
210
result = self.server.do(self)
212
self.wfile.write("%s\n\n" % escape(str(i)))
214
if pathin.endswith('&how=noescape'):
215
self.send_response(200)
216
self.send_header('Content-type', 'text/plain; charset=%s' % \
217
sys.getdefaultencoding())
218
self.send_header('Server', config['version'])
220
self.path = self.path[:-13]
221
result = self.server.do(self)
223
self.wfile.write("%s\n" % str(i))
226
self.send_response(200)
227
self.send_header('Content-type', 'text/html; charset=%s' % \
228
sys.getdefaultencoding())
229
self.send_header('Server', config['version'])
231
self.wfile.write(focustxt)
232
self.wfile.write("<h1>GOZERBOT</h1>")
234
self.wfile.write(endtxt)
236
result = self.server.do(self)
238
self.send_response(200)
239
self.send_header('Content-type', 'text/html; charset=%s' % \
240
sys.getdefaultencoding())
241
self.send_header('Server', config['version'])
243
self.wfile.write(focustxt)
244
self.wfile.write("<h1>GOZERBOT</h1>")
246
self.wfile.write('<h2>results</h2>')
248
self.wfile.write("%s<br>" % escape(str(i)))
249
self.wfile.write(endtxt)
247
if self.path == '/' or self.path.startswith('/dispatch'):
248
writeheaderhtml(self)
249
self.wfile.write(focustxt)
250
self.wfile.write("<h1>GOZERBOT</h1>")
252
self.wfile.write(endtxt)
253
result = makeresult(self)
255
self.wfile.write('<h2>results</h2>')
256
sendresult(self, result, ['break', 'escape'])
257
elif self.path.startswith('/json'):
258
result = makeresult(self)
259
self.wfile.write(result)
261
result = makeresult(self)
263
writeheaderplain(self)
264
sendresult(self, result)
266
writeheaderplain(self)
267
sendresult(self, 'no data')
253
270
#localhost - - [18/Mar/2006 14:51:53] "GET / HTTP/1.1" 200 -
254
271
def log_request(self, code, size='-'):