Пример #1
0
    def security_check_message(self, bot, update):
        """ Test message for security violations """

        # Remove accents from letters (é->e, ñ->n, etc...)
        message = unidecode.unidecode(update.message.text)
        # TODO: Replace lookalike unicode characters:
        # https://github.com/wanderingstan/Confusables

        if self.message_ban_re and self.message_ban_re.search(message):
            print('message_ban')
            # Logging
            log_message = "Ban message match: {}".format(
                update.message.text.encode('utf-8'))
            if self.debug:
                update.message.reply_text(log_message)
            print(log_message)
            for notify_user_id in self.notify_user_ids:
                bot.send_message(chat_id=notify_user_id, text=log_message)
            # Any message that causes a ban gets deleted
            update.message.delete()
            # Ban the user
            self.ban_user(update)
            # Log in database
            s = session()
            userBan = UserBan(user_id=update.message.from_user.id,
                              reason=update.message.text)
            s.add(userBan)
            s.commit()
            s.close()

        elif self.message_hide_re and self.message_hide_re.search(message):
            print('message_hide')
            # Logging
            log_message = "Hide match: {}".format(
                update.message.text.encode('utf-8'))
            if self.debug != False:
                update.message.reply_text(log_message)

            for notify_user_id in self.notify_user_ids:
                bot.send_message(chat_id=notify_user_id, text=log_message)
            # Delete the message
            update.message.delete()
            # Log in database
            s = session()
            messageHide = MessageHide(user_id=update.message.from_user.id,
                                      message=update.message.text)
            s.add(messageHide)
            s.commit()
            s.close()
Пример #2
0
 def attachment_check(self, bot, update):
     """ Hide messages with attachments (except photo or video) """
     if (update.message.audio or update.message.document
             or update.message.game or update.message.voice):
         # Logging
         if update.message.document:
             # GIFs are documents and allowed
             mime_type = update.message.document.mime_type
             if mime_type and mime_type in self.allowed_mime_types:
                 return
             log_message = "❌ HIDE DOCUMENT: {}".format(
                 update.message.document.__dict__)
         else:
             log_message = "❌ HIDE NON-DOCUMENT ATTACHMENT"
         if self.debug:
             update.message.reply_text(log_message)
         print(log_message)
         # Delete the message
         update.message.delete()
         # Log in database
         s = session()
         messageHide = MessageHide(user_id=update.message.from_user.id,
                                   message=update.message.text)
         s.add(messageHide)
         s.commit()
         s.close()
         # Notify channel
         if self.notify_chat:
             bot.send_message(chat_id=self.notify_chat, text=log_message)
Пример #3
0
    def log_message(self, user_id, user_message, chat_id):

        if user_message is None:
            user_message = "[NO MESSAGE]"

        try:
            s = session()
            language_code = english_message = ""
            polarity = subjectivity = 0.0
            try:
                # translate to English & log the original language
                translator = Translator()
                translated = translator.translate(user_message)
                language_code = translated.src
                english_message = translated.text
                # run basic sentiment analysis on the translated English string
                analysis = TextBlob(english_message)
                polarity = analysis.sentiment.polarity
                subjectivity = analysis.sentiment.subjectivity
            except Exception as e:
                print("Error translating message: {}".format(e))
            msg1 = Message(user_id=user_id,
                           message=user_message,
                           chat_id=chat_id,
                           language_code=language_code,
                           english_message=english_message,
                           polarity=polarity,
                           subjectivity=subjectivity)
            s.add(msg1)
            s.commit()
            s.close()
        except Exception as e:
            print("Error logging message: {}".format(e))
            print(traceback.format_exc())
Пример #4
0
    def security_check_username(self, bot, update):
        """ Test username for security violations """

        full_name = "{} {}".format(update.message.from_user.first_name,
                                   update.message.from_user.last_name)
        if self.name_ban_re and self.name_ban_re.search(full_name):
            # Logging
            log_message = "❌ 🙅‍♂️ BAN MATCH FULL NAME: {}".format(
                full_name.encode('utf-8'))
            if self.debug:
                update.message.reply_text(log_message)
            print(log_message)
            # Ban the user
            self.ban_user(update)
            # Log in database
            s = session()
            userBan = UserBan(user_id=update.message.from_user.id,
                              reason=log_message)
            s.add(userBan)
            s.commit()
            s.close()
            # Notify channel
            if self.notify_chat:
                bot.send_message(chat_id=self.notify_chat, text=log_message)

        if self.name_ban_re and self.name_ban_re.search(
                update.message.from_user.username or ''):
            # Logging
            log_message = "❌ 🙅‍♂️ BAN MATCH USERNAME: {}".format(
                update.message.from_user.username.encode('utf-8'))
            if self.debug:
                update.message.reply_text(log_message)
            print(log_message)
            # Ban the user
            self.ban_user(update)
            # Log in database
            s = session()
            userBan = UserBan(user_id=update.message.from_user.id,
                              reason=log_message)
            s.add(userBan)
            s.commit()
            s.close()
            # Notify channel
            if self.notify_chat:
                bot.send_message(chat_id=self.notify_chat, text=log_message)
Пример #5
0
 def log_message(self, user_id, user_message):
     try:
         s = session()
         msg1 = Message(user_id=user_id, message=user_message)
         s.add(msg1)
         s.commit()
         s.close()
     except Exception as e:
         print("Error: {}".format(e))
Пример #6
0
    def security_check_username(self, bot, update):
        """ Test username for security violations """

        full_name = (update.message.from_user.first_name + " " +
                     update.message.from_user.last_name)
        if self.name_ban_re and self.name_ban_re.search(full_name):
            # Logging
            log_message = "Ban match full name: {}".format(
                full_name.encode('utf-8'))
            if self.debug:
                update.message.reply_text(log_message)

            for notify_user_id in self.notify_user_ids:
                print(notify_user_id, "gets notified")
                bot.send_message(chat_id=notify_user_id, text=log_message)
            # Ban the user
            self.ban_user(update)
            # Log in database
            s = session()
            userBan = UserBan(user_id=update.message.from_user.id,
                              reason=log_message)
            s.add(userBan)
            s.commit()
            s.close()

        if self.name_ban_re and self.name_ban_re.search(
                update.message.from_user.username or ''):
            # Logging
            log_message = "Ban match username: {}".format(
                update.message.from_user.username.encode('utf-8'))
            if self.debug:
                update.message.reply_text(log_message)
            print(log_message)
            for notify_user_id in self.notify_user_ids:
                bot.send_message(chat_id=notify_user_id, text=log_message)
            # Ban the user
            self.ban_user(update)
            # Log in database
            s = session()
            userBan = UserBan(user_id=update.message.from_user.id,
                              reason=log_message)
            s.add(userBan)
            s.commit()
            s.close()
Пример #7
0
    def id_exists(self, id_value):
        s = session()
        bool_set = False
        for id1 in s.query(User.id).filter_by(id=id_value):
            if id1:
                bool_set = True

        s.close()

        return bool_set
Пример #8
0
    def security_check_message(self, bot, update):
        """ Test message for security violations """

        # Remove accents from letters (é->e, ñ->n, etc...)
        message = unidecode.unidecode(update.message.text)
        print("teste: " + self.message_hide_re.pattern)
	print("teste 2" + self.message_hide_patterns)
	# TODO: Replace lookalike unicode characters:
        # https://github.com/wanderingstan/Confusables

        if self.message_ban_re and self.message_ban_re.search(message):
            # Ban the user
            if self.debug:
                update.message.reply_text("DEBUG: Ban message match: {}".format(update.message.text.encode('utf-8')))
            print("Ban message match: {}".format(update.message.text.encode('utf-8')))
            # Any message that causes a ban gets deleted
            update.message.delete()
            # Ban the user
            self.ban_user(update)
            # Log in database
            s = session()
            userBan = UserBan(
                user_id=update.message.from_user.id,
                reason=update.message.text)
            s.add(userBan)
            s.commit()
            s.close()

        elif self.message_hide_re and self.message_hide_re.search(message):
            # Delete the message
            if self.debug:
                update.message.reply_text("DEBUG: Hide match: {}".format(update.message.text.encode('utf-8')))
            print("Hide match: {}".format(update.message.text.encode('utf-8')))
            update.message.delete()
            # Log in database
            s = session()
            messageHide = MessageHide(
                user_id=update.message.from_user.id,
                message=update.message.text)
            s.add(messageHide)
            s.commit()
            s.close()
Пример #9
0
 def add_user(self, user_id, first_name, last_name, username):
     try:
         s = session()
         user = User(id=user_id,
                     first_name=first_name,
                     last_name=last_name,
                     username=username)
         s.add(user)
         s.commit()
         s.close()
         return self.id_exists(user_id)
     except Exception as e:
         print("Error: {}".format(e))
 def select_city(msg):
     rospy.loginfo('Measurement selection task: {}'.format(msg.data))
     s = session()
     for city_name in msg.data.split(', '):
         try:
             city = s.query(City).filter(City.name == city_name).one()
             for m in s.query(Measurement).filter(Measurement.city_id == city.id):
                 res = String()
                 res.data = '{0} => {1} : {2} {3}'.format(city_name, m.stamp, m.value, m.unit)
                 pub.publish(res)
         except:
             pass
     rospy.wait_for_service('liability/finish')
     try:
         finish()
     except rospy.ServiceException as e:
         print("Service call failed: {}".format(e))
Пример #11
0
    def security_check_message(self, bot, update):
        """ Test message for security violations """

        if not update.message.text:
            return

        # Remove accents from letters (é->e, ñ->n, etc...)
        message = unidecode.unidecode(update.message.text)
        # TODO: Replace lookalike unicode characters:
        # https://github.com/wanderingstan/Confusables

        # Hide forwarded messages
        if update.message.forward_date is not None:
            # Logging
            log_message = "❌ HIDE FORWARDED: {}".format(
                update.message.text.encode('utf-8'))
            if self.debug:
                update.message.reply_text(log_message)
            print(log_message)
            # Delete the message
            update.message.delete()
            # Log in database
            s = session()
            messageHide = MessageHide(user_id=update.message.from_user.id,
                                      message=update.message.text)
            s.add(messageHide)
            s.commit()
            s.close()
            # Notify channel
            bot.sendMessage(chat_id=self.notify_chat, text=log_message)

        if self.message_ban_re and self.message_ban_re.search(message):
            # Logging
            log_message = "❌ 🙅‍♂️ BAN MATCH: {}".format(
                update.message.text.encode('utf-8'))
            if self.debug:
                update.message.reply_text(log_message)
            print(log_message)
            # Any message that causes a ban gets deleted
            update.message.delete()
            # Ban the user
            self.ban_user(update)
            # Log in database
            s = session()
            userBan = UserBan(user_id=update.message.from_user.id,
                              reason=update.message.text)
            s.add(userBan)
            s.commit()
            s.close()
            # Notify channel
            bot.sendMessage(chat_id=self.notify_chat, text=log_message)

        elif self.message_hide_re and self.message_hide_re.search(message):
            # Logging
            log_message = "❌ 🙈 HIDE MATCH: {}".format(
                update.message.text.encode('utf-8'))
            if self.debug:
                update.message.reply_text(log_message)
            print(log_message)
            # Delete the message
            update.message.delete()
            # Log in database
            s = session()
            messageHide = MessageHide(user_id=update.message.from_user.id,
                                      message=update.message.text)
            s.add(messageHide)
            s.commit()
            s.close()
            # Notify channel
            bot.sendMessage(chat_id=self.notify_chat, text=log_message)
Пример #12
0

def load_beers(session):
    with open('seed_data/u.beers') as data:
        reader = csv.reader(data, delimiter='|')
        for row in reader:
            beer = model.Beer(id=row[0], name=row[1], brewer=row[2],\
                origin=row[3], style=row[4], abv=row[5], link=row[6],\
                image=row[7])
            session.add(beer)


def load_ratings(session):
    with open('seed_data/u.ratings') as data:
        reader = csv.reader(data, delimiter='|')
        for row in reader:
            rating = model.Rating(user_id=row[0], beer_id=row[1],\
                rating=row[2])
            session.add(rating)


def main(session):
    load_users(session)
    load_beers(session)
    load_ratings(session)
    session.commit()


if __name__ == "__main__":
    s = model.session()
    main(s)
Пример #13
0
                id=row[0],
                name=row[1],
                brewer=row[2],
                origin=row[3],
                style=row[4],
                abv=row[5],
                link=row[6],
                image=row[7],
            )
            session.add(beer)


def load_ratings(session):
    with open("seed_data/u.ratings") as data:
        reader = csv.reader(data, delimiter="|")
        for row in reader:
            rating = model.Rating(user_id=row[0], beer_id=row[1], rating=row[2])
            session.add(rating)


def main(session):
    load_users(session)
    load_beers(session)
    load_ratings(session)
    session.commit()


if __name__ == "__main__":
    s = model.session()
    main(s)