Changeset 2254:bacfcc1256ca
- Timestamp:
- 08/26/08 17:37:16 (3 months ago)
- Branch:
- default
- Files:
-
- 1 removed
- 4 modified
-
gozerbot/generic.py (modified) (2 diffs)
-
gozerbot/net/cloud.py (modified) (5 diffs)
-
gozerbot/net/server.py (deleted)
-
gozerbot/rest/server.py (modified) (4 diffs)
-
gozerplugs/plugs/cloud.py (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
gozerbot/generic.py
r2247 r2254 302 302 return name 303 303 304 def whichmodule(): 305 """ return plugin from which function is called """ 306 try: 307 frame = sys._getframe(1) 308 plugfile = frame.f_back.f_code.co_filename[:-3].split('/') 309 lineno = frame.f_back.f_lineno 310 mod = [] 311 for i in plugfile[::-1]: 312 mod.append(i) 313 if i == 'gozerplugs' or i == 'gozerbot': 314 break 315 modstr = '.'.join(mod[::-1]) + ':' + str(lineno) 316 except AttributeError: 317 modstr = None 318 del frame 319 return modstr 320 304 321 def stripident(userhost): 305 322 """ strip ident char from userhost """ … … 354 371 txt = str(txt) 355 372 t = time.time() 356 outtxt = "[%s %s] (%s) %s\n" % (dmy(t), uurminsec(t), descr, \ 373 mod = whichmodule() 374 if mod and descr in mod: 375 descr = mod 376 outtxt = "[%s %s] (%s) %s\n" % (dmy(t), uurminsec(t), descr, txt) 377 sys.stdout.write(outtxt) 378 sys.stdout.flush() 379 if not nofile and logfile: 380 rlogfile(level, descr, txt) 381 for cb in logcallbacks: 382 try: 383 cb(outtxt) 384 except Exception, ex: 385 handle_exception(log=False) 386 387 def log(level, txt, nofile=False): 388 """ log text if level >= loglevel """ 389 if not logging_enabled: 390 return 391 if level >= config['loglevel']: 392 txt = str(txt) 393 t = time.time() 394 outtxt = "[%s %s] (%s) %s\n" % (dmy(t), uurminsec(t), whichmodule(), \ 357 395 txt) 358 396 sys.stdout.write(outtxt) 359 397 sys.stdout.flush() 360 398 if not nofile and logfile: 361 rlogfile(level, descr, txt)399 rlogfile(level, outtxt, txt) 362 400 for cb in logcallbacks: 363 401 try: -
gozerbot/net/cloud.py
r2253 r2254 5 5 __copyright__ = 'this file is in the public domain' 6 6 7 from gozerbot.generic import rlog 7 from gozerbot.generic import rlog, whichmodule 8 8 from gozerbot.persiststate import PersistState 9 9 from gozerbot.net.client import Client … … 11 11 from gozerbot.thr import start_new_thread 12 12 from gozerbot.datadir import datadir 13 from gozerbot.net.server import server14 13 from gozerbot.contrib.simplejson import dumps 15 14 import asyncore, time, os … … 84 83 if persist: 85 84 self.persist(name, url) 86 rlog(10, 'net.cloud', 'added %s node <%s>' % (name, url))85 rlog(10, whichmodule(), 'added %s node <%s>' % (name, url)) 87 86 return self.nodes[url] 88 87 89 def start(self ):90 self.boot( )88 def start(self, booturl=None): 89 self.boot(booturl) 91 90 for name, url in self.startup['start'].iteritems(): 92 91 self.add(name, url) 93 self.joinall() 94 92 95 93 def persist(self, name, url): 96 94 self.startup.set('start', name, url) … … 159 157 client = Client("%s/gozernet/+join/" % url).addcb(cb) 160 158 else: 161 client = Client('http:// 213.196.7.59:10101/gozernet/+join/').addcb(cb)159 client = Client('http://gozerbot.org:10101/gozernet/+join/').addcb(cb) 162 160 client.add(name=name, port=port) 163 164 def joinall(self):165 for item in self.nodes.values():166 self.join(item.url)167 start_new_thread(asyncore.loop, (), {'use_poll': True })168 161 169 162 def boot(self, node=None): … … 186 179 def cb(client, result): 187 180 if result.error: 188 rlog(10, self.url, "can't sync: %s" % result.error)181 rlog(10, url, "can't sync: %s" % result.error) 189 182 return 190 183 for node in result.data: -
gozerbot/rest/server.py
r2245 r2254 34 34 self.state.define('whitelist', []) 35 35 self.state.define('blacklist', []) 36 self.state.define('disable', []) 36 37 self.poll = select.poll() 37 38 self.poll.register(self) … … 96 97 rlog(10, self.name, '%s %s handler added' % (splitted, type)) 97 98 99 def enable(self, what): 100 try: 101 self.state['disable'].remove(what) 102 rlog(10, self.name, 'enabled %s' % what) 103 except ValueError: 104 pass 105 106 def disable(self, what): 107 self.state['disable'].append(what) 108 rlog(10, self.name, 'enabled %s' % what) 109 98 110 def do(self, request): 99 111 """ do a request """ … … 106 118 splitted.append(i) 107 119 splitted = tuple(splitted) 120 if splitted not in self.state['allow']: 121 request.send_error(404) 122 return 108 123 request.splitted = splitted 109 124 request.value = None … … 247 262 248 263 except ImportError: 249 rlog(10, 'rest server', 'no SSL detected .. see python-openssl')264 rlog(10, 'rest.server', 'no SSL detected .. see python-openssl') 250 265 -
gozerplugs/plugs/cloud.py
r2253 r2254 10 10 from gozerbot.plughelp import plughelp 11 11 from gozerbot.net.cloud import cloud 12 from gozerbot.net.server import serverinit, servershutdown 12 from gozerbot.rest.server import RestServerAsync, RestRequestHandler 13 from gozerbot.contrib.simplejson import dumps 13 14 from gozerbot.persistconfig import PersistConfig 14 15 from gozerbot.plugins import plugins … … 24 25 cfg.define('name' , socket.getfqdn()) 25 26 cfg.define('port' , 10101) 27 cfg.define('disable', []) 28 cfg.define('booturl', 'http://gozerbot.org/') 26 29 27 30 waitre = re.compile(' wait (\d+)', re.I) 28 29 31 hp = "%s:%s" % (cfg.get('host'), cfg.get('port')) 30 32 url = "http://%s" % hp 33 server = None 31 34 32 35 def nodes_GET(server, request): … … 68 71 def init(): 69 72 """ init the cloud plugin """ 73 global server 70 74 if not cfg.get('enable'): 71 75 return 1 72 76 try: 73 server = serverinit(cfg.get('host'), cfg.get('port')) 74 time.sleep(1) 75 server.addhandler('/gozernet/nodes/', 'GET', nodes_GET) 76 server.addhandler('/gozernet/+ping/', 'GET', ping_GET) 77 server.addhandler('/gozernet/+join/', 'POST', join_POST) 78 server.addhandler('/gozernet/+auth/', 'POST', auth_POST) 79 cloud.add(hp, url) 80 start_new_thread(asyncore.loop, (), {'use_poll': True }) 81 rlog(10, 'cloud', 'total of %s nodes' % size()) 77 server = RestServerAsync((cfg.get('host'), cfg.get('port')), \ 78 RestRequestHandler) 79 if server: 80 server.start() 81 rlog(10, 'cloud', 'running at %s:%s' % (cfg.get('host'), cfg.get('port'))) 82 server.addhandler('/gozernet/+ping/', 'GET', ping_GET) 83 server.addhandler('/gozernet/nodes/', 'GET', nodes_GET) 84 server.addhandler('/gozernet/+join/', 'POST', join_POST) 85 server.addhandler('/gozernet/+auth/', 'POST', auth_POST) 86 for mount in cfg.get('disable'): 87 server.disable(mount) 88 cloud.start(cfg.get('booturl')) 89 start_new_thread(asyncore.loop, (), {'use_poll': True }) 90 rlog(10, 'cloud', 'total of %s nodes' % size()) 82 91 except Exception, ex: 83 92 handle_exception() … … 85 94 def shutdown(): 86 95 """ shutdown the cloud plugin """ 87 try: 88 servershutdown() 96 global server 97 if not server: 98 return 1 99 try: 100 server.stop = True 101 server.server_close() 102 time.sleep(2) 89 103 except Exception, ex: 90 104 handle_exception() … … 310 324 cmnds.add('cloud-join', handle_cloudjoin, 'OPER') 311 325 examples.add('cloud-join', 'join node with <name>' , 'net-join gozerbot') 326 327 def handle_cloudallow(bot, ievent): 328 """ cloud-allow .. allow a server mountpoint """ 329 if not cfg.get('enable'): 330 ievent.reply('cloud is not enabled') 331 return 332 if not ievent.rest: 333 ievent.missing('<server mount>') 334 return 335 server.enable(('gozernet', ievent.rest)) 336 ievent.reply('%s allowed' % ievent.rest) 337 338 cmnds.add('cloud-allow', handle_cloudallow, 'OPER') 339 examples.add('cloud-allow', 'allow execution of a server mountpoint', \ 340 'cloud-allow join') 341 342 def handle_clouddisallow(bot, ievent): 343 """ cloud-disallow .. disallow a mount point""" 344 if not cfg.get('enable'): 345 ievent.reply('cloud is not enabled') 346 return 347 if not ievent.rest: 348 ievent.missing('<server mount>') 349 return 350 server.disable(('gozernet', ievent.rest)) 351 ievent.reply('%s disallowed' % ievent.rest) 352 353 cmnds.add('cloud-disallow', handle_clouddisallow, 'OPER') 354 examples.add('cloud-disallow', 'disallow execution of a server mountpoint', \ 355 'cloud-disallow join')
