Example #1
0
 def on_pubmsg(self, serv, ev):
     """Handles the messages on the chan"""
     author = ev.source.nick
     raw_msg = ev.arguments[0]
     self.log.add_cache(author, raw_msg)  # Log each line
     msg = raw_msg.strip()
     http_re = r"http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]" +\
               r"|(?:%[0-9a-fA-F][0-9a-fA-F]))+"
     urls = re.findall(http_re, msg)
     # If found some urls in the message, handles them
     if len(urls) > 0:
         self.lien.on_links(serv, author, urls)
     # If "perdu" or "jeu" or "game" or "42"  in the last message, do Jeu
     if ("perdu" in msg or "jeu" in msg or "game" in msg or "42" in msg) \
        and random.randint(0, 10) == 7:
         self.jeu(serv)
     msg = msg.split(':', 1)
     if(msg[0].strip() == self.connection.get_nickname() and
        (config.get("authorized") == [] or
        author in config.get("authorized"))):
         try:
             msg = shlex.split(msg[1])
         except ValueError:
             self.say(serv, 'Oops.')
             return
         msg[0] = msg[0].lower()
         self.historique.add(author, msg[0])
         if msg[0] in self.rules:
             try:
                 self.rules[msg[0]]['action'](serv, author, msg)
             except InvalidArgs:
                 if config.get("debug"):
                     tools.warning("Debug : " + str(msg))
                 self.aide(serv, author, msg)
         elif msg[0] == "<3" or msg[0] == "♥":
             self.ans(serv, author, "Merci " + author +
                      ", moi aussi je t'aime très fort ! #Kikoo")
         else:
             self.ans(serv, author, "Je n'ai pas compris…")
     elif(msg[0].strip().lower() == "aziz" and
          (config.get("authorized") == [] or
           author in config.get("authorized"))):
         # Easter egg
         try:
             msg = shlex.split(msg[1])
         except ValueError:
             self.say(serv, 'Oops.')
             return
         msg[0] = msg[0].lower()
         if msg[0] == "lumiere":
             self.historique.add(author, msg[0])
             try:
                 self.rules[msg[0]]['action'](serv, author, msg)
             except InvalidArgs:
                 if config.get("debug"):
                     tools.warning("Debug : " + str(msg))
                 self.aide(serv, author, msg)
Example #2
0
 def save(self):
     try:
         with open(self.config_path + "config.json", 'w') as fh:
             fh.write(json.dumps(self.config,
                                 sort_keys=True,
                                 indent=4,
                                 separators=(',', ': ')))
     except IOError:
         tools.warning("Could not write config file.")
         sys.exit(1)
Example #3
0
 def load(self):
     try:
         folder_exists = make_sure_path_exists(self.config_path)
         if(folder_exists and
            os.path.isfile(self.config_path + "config.json")):
             initialized = True
         else:
             initialized = False
     except OSError:
         tools.warning("Unable to create ~/.config folder.")
         sys.exit(1)
     if not initialized:
         self.initialize()
         tools.warning("Config initialized to its default values. " +
                       "Edit " + self.config_path + "config.json prior to "
                       "running jarvis again.")
         sys.exit()
     else:
         try:
             with open(self.config_path + "config.json", 'r') as fh:
                 self.config = json.load(fh)
         except (ValueError, IOError):
             tools.warning("Config file could not be read.")
             sys.exit(1)
     if self.get("version") != self.VERSION:
         self.set("version", self.VERSION)
         self.save()
         tools.warning("Updated Jarvis version to " + self.VERSION)
Example #4
0
 def pgsql_connect(self, serv):
     if self.bdd is None:
         try:
             self.bdd = psycopg2.connect(**config.get("pgsql"))
             self.bdd.set_isolation_level(0)  # Set autocommit
         except psycopg2.Error as err:
             if config.get("debug"):
                 print(datetime.datetime.now().timestamp())
                 tools.warning("Debug : " + str(err))
             if err.errno == psycopg2.errorcode.ER_ACCESS_DENIED_ERROR:
                 serv.say("Accès refusé à la BDD.")
             elif err.errno == psycopg2.errorcode.ER_BAD_DB_ERROR:
                 serv.say("La base PostgreSQL n'existe pas.")
             return None
     elif self.bdd.closed > 0:
         self.bdd.reconnect()
     return self.bdd
Example #5
0
    to_send = []

    try:
        print('Logging as ' + config.get("imap_user") + '… ', end='')
        conn.login(config.get("imap_user"), config.get("imap_password"))
    except:
        print('Failed')
        print(sys.exc_info()[1])
        sys.exit(1)
    print('Logged in')

    try:
        bdd = mysql.connector.connect(**config.get("mysql"))
        bdd_cursor = bdd.cursor()
    except mysql.connector.Error as err:
        tools.warning(err)
        sys.exit(1)

    try:
        # Fetch new emails in INBOX, using uids
        conn.select("inbox")
        result, data = conn.uid('search', None, "ALL")
        uids_list = data[0].split()
        for uid in uids_list:
            result, data = conn.uid("fetch", uid, "(RFC822)")
            parsed = handle_raw_email(data[0][1])

            if parsed[0] == "sympa":
                query = "UPDATE moderation SET moderated=%s WHERE \
                         token=%s AND liste=%s"
                if parsed[1] == "rejeté":