Desarrolladores: Coffee, TheLuciferSausage…
Ya esta hecho el script tremchat.py:
#!/usr/bin/python from popen2 import popen2 from os import access, F_OK, system from sys import argv from urllib import urlopen, urlencode class Logger: def __init__(self, logname, url): self.players=0; self.r,self.w=popen2("tail -fn0 %s" % logname); self.url=url def nextline(self): return self.r.readline(); def say(self, rest): rest=rest.split(':'); who=rest[0] msg=':'.join(rest[1:]) #if msg[:5]=='!test': # print("bingo"); params=urlencode({'who':who, 'msg':msg}); u=urlopen(self.url, params); print(u.read()) def run(self): while(1): l=self.nextline() rdate=l[:7] cmd=l[7:].split(':')[0] rest=(':'.join(l[7:].split(':')[1:])).strip() if(cmd=='ClientConnect'): self.players+=1 elif(cmd=='ClientDisconnect'): self.players-=1 if self.players<0: self.players=0 elif(cmd=='InitGame'): self.players=0 elif(cmd=='say'): self.say(rest) else: continue if not len(argv)==3: print "Uso: %s <games.log> <url>" % argv[0] else: l=Logger(argv[1], argv[2]); l.run()
Lo he probado ejecutándolo de esta manera:
screen -dmS tremchat ./tremchat.py .tremulous/base/games.log http://tremulous-spain.com/tremchat/index.php
Para verlo funcionado http://tremulous-spain.com/tremchat/ Y el index.php que he usado para probar que funciona es este:
function colorize($s) { $colors=array('0'=>'#505050','1'=>'#AA0000', '2'=>'#00AA00','3'=>'#AAAA00','4'=>'#0000FF', '5'=>'#00AAAA','6'=>'#AA00AA','7'=>'white', '8'=>'#888888','9'=>'red'); $s=str_replace("&", "&",$s); $s=str_replace("<", "<",$s); $s=str_replace(">", ">",$s); $s='^7'.$s; $s=explode('^', $s); $o=''; foreach($s as $w) { if(strlen($w)>1) { $o.="<font color=\"{$colors[$w[0]]}\">".substr($w,1)."</font>"; } } return $o; } if($_SERVER['REQUEST_METHOD']=='POST' && $_SERVER['REMOTE_ADDR']=='78.47.88.170') { $f=fopen("log.html", "a+"); $who=colorize($_POST['who']); $msg=colorize($_POST['msg']); fwrite($f, "$who: $msg<br/>\n"); fclose($f); } else { ?> <html><header><title>Console</title></header><body style="color: #fff; background-color: #000;"> <?php include 'log.html'; ?> </body></html> <? } ?>