sock=socket.socket()
try:
# On établit la connexion sur port 4242
- sock.connect(("127.0.0.1",4242))
+ sock.connect((config.nk_server, config.nk_port))
# On passe en SSL
sock=ssl.wrap_socket(sock,ca_certs='../keys/ca_.crt')
# On fait un hello
- sock.write('hello "Basile"')
+ sock.write('["hello", "Basile"]')
# On récupère la réponse du hello
out=sock.read()
out=json.loads(out)
def login_NK(username,password,typ="bdd"):
sock=connect_NK()
if typ=="special": # ça c'est pour Basile lui-même
- masque='["note"]'
+ masque='[]'
elif typ=="bdd":
- masque='[["all"],["all"],false]'
+ masque='[[], [], true]'
try:
# Basile a un compte special user
- commande='login [%s,%s,"%s",%s]'%(json.dumps(username),json.dumps(password),typ,masque)
+ commande='["login", [%s,%s,"%s",%s]]'%(json.dumps(username),json.dumps(password),typ,masque)
sock.write(commande)
out=sock.read()
except Exception as exc:
class CrashError(Exception):
"""Pour pouvoir faire crasher Basile, parce que ça a l'air drôle"""
- pass
+ def __init__(self, msg=u""):
+ Exception.__init__(self, msg)
def bot_unicode(chain):
try:
elif cmd=="crash":
if auteur in self.overops:
log(self.serveur,"priv",auteur," ".join(message)+"[successful]")
- self.crash()
+ self.crash("priv", auteur)
else:
notunderstood=True
elif cmd=="reload":
if len(message)==1:
if self.identities.has_key(auteur):
try:
- self.nk.write('search ["x",["pseudo"],%s]'%(json.dumps(self.identities[auteur])))
+ self.nk.write('["search", ["x",["pseudo"],%s]]'%(json.dumps(self.identities[auteur])))
ret=json.loads(self.nk.read())
solde=ret["msg"][0]["solde"]
pseudo=ret["msg"][0]["pseudo"]
serv.privmsg(canal,"Je ne connais pas ton pseudo note.")
elif auteur in self.ops:
try:
- self.nk.write('search ["x",["pseudo"],%s]'%(json.dumps(message[1])))
+ self.nk.write('["search", ["x",["pseudo"],%s]]'%(json.dumps(message[1])))
ret=json.loads(self.nk.read())
solde=ret["msg"][0]["solde"]
pseudo=ret["msg"][0]["pseudo"]
self.reload(canal)
elif cmd == "crash":
if auteur in self.overops:
- self.crash()
+ self.crash(auteur, message)
elif cmd in ["part","leave","dégage","va-t-en","tut'tiresailleurs,c'estmesgalets"]:
if auteur in self.ops and (not (canal in self.stay_channels)
or auteur in self.overops):
if self.identities.has_key(auteur):
pseudo=self.identities[auteur]
try:
- self.nk.write('search ["x",["pseudo"],%s]'%(json.dumps(pseudo)))
+ self.nk.write('["search", ["x",["pseudo"],%s]]'%(json.dumps(pseudo)))
ret=json.loads(self.nk.read())
solde=ret["msg"][0]["solde"]
pseudo=ret["msg"][0]["pseudo"]
else:
self.serv.privmsg(auteur,"Config reloaded")
- def crash(self):
- raise CrashError
+ def crash(self, chan="nowhere", who="nobody"):
+ where = u"en privé" if chan == "priv" else u"sur le chan %s" % chan
+ raise CrashError(u"Crash demandé par %s %s" % (who, where))
def start_as_daemon(self, outfile):
sys.stderr = Logger(outfile)