示例#1
0
    def work(self):
        local_filename, headers = urllib.request.urlretrieve(self.url)
        local_file_size = os.stat(local_filename).st_size

        with open(local_filename, 'rt', encoding='utf-8') as file:
            if self.prev_file_size != local_file_size:
                found_pos_key = False
                found_neg_key = False
                found_keyword = ""

                line_count = 0

                for line in file:
                    #print("line # " + str(line_count) + ": " + line + "\n")
                    line_count = line_count + 1
                    if not globs.monitor_finished:
                        for keyword in self.keywords:
                            #print("testing keyword " + keyword + "\n")
                            if re.match("\^", keyword):
                                if not re.search(keyword, line, re.IGNORECASE):
                                    #print(line + " neg-matches " + keyword + "\n")
                                    found_neg_key = True
                            else:
                                if re.search(keyword, line, re.IGNORECASE):
                                    #print(line + " matches " + keyword + "\n")
                                    found_pos_key = True
                                    found_keyword = keyword
                                    break

                if not globs.monitor_finished:
                    if found_pos_key == True:
                        self.queue_and_email(found_keyword)
                        self.prev_file_size = local_file_size
                    elif found_pos_key == False and found_neg_key == False:
                        self.queue_and_email(found_keyword)
                        self.prev_file_size = local_file_size
                    else:
                        messenger = Messenger([])
                        messenger.queue_message(self.url, "no incident")
                        self.prev_file_size = local_file_size
            else:
                messenger = Messenger([])
                messenger.queue_message(self.url, "no change")

        return self.prev_file_size
示例#2
0
    def queue_and_email(self, found_keyword):
        def email(found_keyword):
            def parse_url(url):
                new_url = ""
                if re.match("https:", url):
                    new_url = url[8:]
                elif re.match("http:", url):
                    new_url = url[7:]
                elif re.match("www.", url):
                    new_url = url[4:]
                return new_url

            new_url = parse_url(self.url)

            address = self.username + "@gmail.com"
            msg = "New incident at " + new_url + "\n" + "(found keyword: " + found_keyword + ")"

            username = self.username
            password = self.password

            # Start the server using gmail's servers
            server = smtplib.SMTP('smtp.gmail.com:587')
            server.starttls()
            server.login(username, password)
            server.sendmail(address, address, msg)

            # Log off
            server.quit()

        info = []
        info.append(found_keyword)
        info.append(self.url)
        messenger = Messenger([])
        messenger.queue_message(info, "new incident")

        if self.username:
            messenger.queue_message(self.username, "email")
            email(found_keyword)
示例#3
0
    def run(self):
        # GLOBAL USE
        self.start_time = time.time()

        if self.duration != "None":
            self.dur_in_seconds = int(self.duration) * 60 * 60

            while self.current_time < self.dur_in_seconds:
                url_count = -1
                if not globs.monitor_finished:
                    for url in self.urls:
                        url_count = url_count + 1
                        if not globs.monitor_finished:
                            stats = self.create_worker(
                                url, self.keywords[url_count], self.username,
                                self.password,
                                self.prev_file_size_list[url_count], url_count)

                            self.current_time = time.time()
                            self.current_time = self.current_time - self.start_time
                        else:
                            break

                    messenger = Messenger([])
                    messenger.queue_message(str(self.frequency), "sleeping")
                    messenger.send_messages()
                    self.doze(self.freq_in_seconds)
                else:
                    break

            messenger.queue_message("", "finished")
            messenger.send_messages()

        elif self.duration == "None":
            while not globs.monitor_finished:
                url_count = -1
                for url in self.urls:
                    url_count = url_count + 1
                    if not globs.monitor_finished:
                        self.create_worker(url, self.keywords[url_count],
                                           self.username, self.password,
                                           self.prev_file_size_list[url_count],
                                           url_count)
                    else:
                        break

                messenger = Messenger([])
                messenger.queue_message(str(self.frequency), "sleeping")
                messenger.send_messages()
                self.doze(self.freq_in_seconds)