Exemplo n.º 1
0
def needUpdate():
    print '页面变动导致爬虫失效,请联系作者更新程序 [email protected]'
    mail_msg = 'check your github and update it'
    send_mail(title='[!]wooyunMonitor-needUpdate',
              content=mail_msg,
              to_list=['*****@*****.**'])
    return
Exemplo n.º 2
0
def send_email(sender, instance, **kwargs):
    if not instance.action and instance.content != '':
        message = {
            'text': instance.content_html,
        }
        template = 'correspondence'
        send_mail(instance.theme, instance.email, message, instance.name,
                  template)
        Correspondence.objects.filter(id=instance.id).update(action=True)
Exemplo n.º 3
0
 def error_log_once(self, text='default error (once)'):
     try:
         is_error_file = open('./isopen_xy.txt', 'r')
     except:
         is_error_file = open('./isopen_xy.txt', 'w')
     if '1' not in is_error_file.read():
         print 'writting error to log...'
         self.error_log(text)
     else:
         print 'already written to log'
     is_error_file.close()
     sendmail.send_mail('BJTU_Library system error once !', 'error text!')
Exemplo n.º 4
0
 def error_log_once(self, text='default error (once)'):
     try:
         is_error_file = open('./isopen_xy.txt', 'r')
     except:
         is_error_file = open('./isopen_xy.txt', 'w')
     if '1' not in is_error_file.read():
         print 'writting error to log...'
         self.error_log(text)
     else:
         print 'already written to log'
     is_error_file.close()
     sendmail.send_mail('BJTU_Library system error once !', 'error text!')
Exemplo n.º 5
0
    def send_to_client(self, request, obj):
        subject = settings.SUBJECT_MAIL.get(obj.category, )
        template = settings.TEMPLATE_MAIL.get(obj.category, )

        message = Promotion.objects.obj_contents(obj.category, obj.language)
        if message is None:
            messages.error(request,
                           _('Promotion on this language does not exist'))
        else:
            err = send_mail(subject, obj.email, message, obj.company, template,
                            obj.language)
            if err:
                messages.error(request,
                               _('There was an error sending the email: '))
                messages.add_message(request, messages.ERROR, str(err)[1:-2])
            else:
                Clients.objects.filter(uuid=obj.uuid).update(count=obj.count +
                                                             1)
                messages.info(request,
                              _("Message was successfully sent to client"))
        translation.deactivate()
        return redirect(
            reverse_lazy('admin:clients_clients_change', args=[
                obj.uuid,
            ]))
Exemplo n.º 6
0
 def _is_success(self, text):
     """
     接受最终的html内容,判断是否成功,并触发日志记录和邮件提醒
     """
     if '<h5 id="MessageTip">已经存在有效的预约记录。</h5>' in text:
         self.clear_error_once('[done!] You already ordered a seat!')
     elif '<h5 id="MessageTip">选择的日期不允许预约。</h5>' in text:
         self.clear_error_once('[done!] Date is wrong!')
     elif '<h5 id="MessageTip">所选座位已经被预约。</h5>' in text:
         self.clear_error_once('[done!] This seat is not available, maybe taken by others!')
     elif '<h5 id="MessageTip">座位预约成功' in text:
         self.clear_error_once('[done!] Success! An email is sending to you!')
         sendmail.send_mail('BJTU Library Seat_NO:' + self.seatNO + 'ordered!',
                            'Sending by robot. Do not reply this mail!', self.mailto)
     else:
         self.error_log_once('Error! 302 to login page')
Exemplo n.º 7
0
def marketMonitor(baseURL, fileName):
    log_file = os.path.join(
        os.path.split(os.path.realpath(__file__))[0], fileName)
    f = open(log_file, 'r')
    log_p = f.readline().strip()
    p = int(log_p)
    f.close()

    count = 0
    mail_msg = '<br>'  # 待发送的邮件内容
    found = False

    # 提取信息
    par = r'<td valign="top" style="padding-left:20px">\s*?<h2>([\s|\S]*?)</h2>\s*?<p>([\s|\S]*?)</p>\s*?<p>([\s|\S]*?)</p>\s*?<p>([\s|\S]*?)</p>'

    while (1):
        p += 1
        count += 1
        url = baseURL + str(p)
        c = requests.get(url=url,
                         headers=h).content.decode('utf-8').replace('\n', '')
        if count > 100:
            needUpdate()
            break
        if '<p><a href="/index.php">' in c:
            break
        elif '<span class="num">' in c:
            found = True
            mail_msg += '<p>' + url + '<br>'
            for each in re.findall(par, c)[0]:
                print each
                mail_msg += each + '<br>'
            mail_msg += '--------------</p>'
            print p
        else:
            needUpdate()
            break

    if found:
        f = open(log_file, 'w')
        f.write(str(p - 1))
        f.close()
        send_mail(title='[!]wooyun-market',
                  content=mail_msg,
                  to_list=mail_list)
Exemplo n.º 8
0
 def _is_success(self, text):
     """
     接受最终的html内容,判断是否成功,并触发日志记录和邮件提醒
     """
     if '<h5 id="MessageTip">已经存在有效的预约记录。</h5>' in text:
         self.clear_error_once('[done!] You already ordered a seat!')
     elif '<h5 id="MessageTip">选择的日期不允许预约。</h5>' in text:
         self.clear_error_once('[done!] Date is wrong!')
     elif '<h5 id="MessageTip">所选座位已经被预约。</h5>' in text:
         self.clear_error_once(
             '[done!] This seat is not available, maybe taken by others!')
     elif '<h5 id="MessageTip">座位预约成功' in text:
         self.clear_error_once(
             '[done!] Success! An email is sending to you!')
         sendmail.send_mail(
             'BJTU Library Seat_NO:' + self.seatNO + 'ordered!',
             'Sending by robot. Do not reply this mail!', self.mailto)
     else:
         self.error_log_once('Error! 302 to login page')
Exemplo n.º 9
0
def marketMonitor(baseURL, fileName):
    log_file = os.path.join(os.path.split(os.path.realpath(__file__))[0], fileName)
    f = open(log_file, "r")
    log_p = f.readline().strip()
    p = int(log_p)
    f.close()

    count = 0
    mail_msg = "<br>"  # 待发送的邮件内容
    found = False

    # 提取信息
    par = r'<td valign="top" style="padding-left:20px">\s*?<h2>([\s|\S]*?)</h2>\s*?<p>([\s|\S]*?)</p>\s*?<p>([\s|\S]*?)</p>\s*?<p>([\s|\S]*?)</p>'

    while 1:
        p += 1
        count += 1
        url = baseURL + str(p)
        c = requests.get(url=url, headers=h).content.decode("utf-8").replace("\n", "")
        if count > 100:
            needUpdate()
            break
        if '<p><a href="/index.php">' in c:
            break
        elif '<span class="num">' in c:
            found = True
            mail_msg += "<p>" + url + "<br>"
            for each in re.findall(par, c)[0]:
                print each
                mail_msg += each + "<br>"
            mail_msg += "--------------</p>"
            print p
        else:
            needUpdate()
            break

    if found:
        f = open(log_file, "w")
        f.write(str(p - 1))
        f.close()
        send_mail(title="[!]wooyun-market", content=mail_msg, to_list=mail_list)
Exemplo n.º 10
0
def common_valid(self, word):
    phrase = format_html(
        "<h4>Client with UUID: <a href='http://{}/{}/admin/clients/clients/{}/change/'>{}</a> has made a {}.</h4>",
        '{}'.format(settings.DOMAIN), '{}'.format(self.request.LANGUAGE_CODE),
        '{}'.format(self.uuid), '{}'.format(self.uuid), '{}'.format(word))
    message = {'text': phrase}
    err = send_mail('A ' + word + ' made', 'admin', message, 'Admin',
                    'correspondence')
    if err:
        Clients.objects.filter(uuid=self.uuid).update(
            error_mailing=str(err)[1:-2])
    # finalize this script later
    Clients.objects.filter(uuid=self.uuid).update(preorder=True)
    return None
Exemplo n.º 11
0
 def cycle (self):
     start = time.time()
 
     try:
         sch = Scheduler.objects.get(category=self.category)
         sch_q = Scheduler.objects.filter(category=self.category)
     except Scheduler.DoesNotExist:
         return
     
     if sch.tick == 0:
         sch_q.update(event=_('Tick is 0. Scheduler stopped'), processing=_('No data')) 
         return
 
     clients = Clients.objects.filter(enable_mailing=True, category=self.category)
     if len(clients) == 0:
         sch_q.update(event=_('Client does not exist'))
         return
     
     lan = []
     for l in Promotion.objects.filter(category=self.category):
         lang={l.language:Promotion.objects.obj_contents(self.category, l.language)}
         lan.append(lang)
     
     for client in clients:
         cl = Clients.objects.filter(uuid=client.uuid)
         if client.counter < sch.tick:
             cl.update(counter=client.counter+1)
             continue
         self.l.acquire()
         try:
             promotion = [list(p.values()) for p in lan if next(iter(p))==client.language]
         
             if len(promotion) == 0:
                 cl.update(error_mailing=_('Promotion does not exists'))
                 continue
         
             err = send_mail(self.subject, client.email, promotion[0][0],
                             client.company, self.template, client.language)
             if err:
                 cl.update(error_mailing=str(err)[1:-2])
             else:
                 cl.update(counter=0, count=client.count+1, error_mailing= '')
         finally:
             self.l.release()
     
     end = time.time()
     res = end - start
     sch_q.update(event=_('Scheduler works'), processing="%.2f" % res)
     return res
Exemplo n.º 12
0
 def send_email(self, message):
     subject, to = _('no-reply'), self.cleaned_data.get("email")
     guest, template = self.cleaned_data["fullname"], 'confirmation'
     lang = translation.get_language()
     send_mail(subject, to, message, guest, template, lang)
     return
Exemplo n.º 13
0
def needUpdate():
    print "页面变动导致爬虫失效,请联系作者更新程序 [email protected]"
    mail_msg = "check your github and update it"
    send_mail(title="[!]wooyunMonitor-needUpdate", content=mail_msg, to_list=["*****@*****.**"])
    return
Exemplo n.º 14
0
 def _error_handler(self):
     sendmail.send_mail('Error Log', self.mail_message, self.mailto)
     sys.exit(0)
Exemplo n.º 15
0
    def run(self):

        data_middle = {
            'roomNum': '101001 ',
            'date': self._get_date_str().replace('%2f', '/') + ' 0:00:00',
            'divTransparentTop': '0',
            'divTransparentLeft': '0'
        }

        middle_url = self.base_url + "/FunctionPages/SeatBespeak/SeatLayoutHandle.ashx"

        print "Try to get [SeatLayoutHandle.ashx]..."
        self.mail_message += "<br>Try to get [SeatLayoutHandle.ashx]...<br>"
        for i in range(1, 11):
            __post = self.s.post(middle_url,
                                 data=data_middle,
                                 headers=self.headers,
                                 timeout=self.middle_content_timeout)
            self.middle_content = __post.content

            print " NO:" + str(i) + " status_code:" + str(
                __post.status_code) + " time(ms):" + str(
                    __post.elapsed.microseconds) + " content_len:" + str(
                        len(self.middle_content))
            self.mail_message += " NO:" + str(i) + " status_code:" + str(
                __post.status_code) + " time(ms):" + str(
                    __post.elapsed.microseconds) + " content_len:" + str(
                        len(self.middle_content)) + "<br>"
            if "t101001" + self.seatNO in self.middle_content:
                print "\nGet [SeatLayoutHandle.ashx] success!\n"
                self.mail_message += "<br>Get [SeatLayoutHandle.ashx] success!<br>"
                break
            self.middle_content_timeout += 10
            print " -failed-"
        else:
            print "\nGet [SeatLayoutHandle.ashx] failed!\n\nSystem exit!\n"
            # print "\nself.middle_content =>\n" + self.middle_content
            self.mail_message += "<br>Get [SeatLayoutHandle.ashx] failed!<br>System exit"
            self.mail_message += "<br>self.middle_content = <br><p><pre>" + self.middle_content + "</pre></p>"
            self._error_handler()

        get_para = self._get_static_get_attr(self.middle_content)
        print "get_para = " + get_para
        self.mail_message += "<br>Get_para => " + get_para + "<br>"

        if len(get_para) < 10:
            print "\nThis seat is taken by others!\nSystem exit!"
            self.mail_message += "<br>This seat is taken by others!<br>System exit!<br>"
            self._error_handler()
        else:
            pass

        self.final_url = self.base_url + "/FunctionPages/SeatBespeak/BespeakSubmitWindow.aspx?parameters=" + get_para

        _headers = {
            'Referer':
            self.base_url + 'FunctionPages/SeatBespeak/BespeakSeatLayout.aspx'
        }

        final_dict = self._get_static_post_attr(
            self.s.get(self.final_url, headers=_headers, timeout=120).content)
        # print final_dict

        final_dict["__EVENTTARGET"] = "ContentPanel1$btnBespeak"
        final_dict["__EVENTARGUMENT"] = ""
        final_dict["X_CHANGED"] = "false"
        final_dict["X_TARGET"] = "ContentPanel1_btnBespeak"
        final_dict["Form2_Collapsed"] = "false"
        final_dict["ContentPanel1_Collapsed"] = "false"
        final_dict["X_STATE"] = ""
        final_dict["X_AJAX"] = "true"

        self.final_content = self.s.post(self.final_url,
                                         data=final_dict,
                                         headers=self.headers,
                                         timeout=120).content

        if len(self.final_content) < 10:
            print "no response from the last post\nsystem exit!\n"
            self.mail_message += "<br>no response from the last post<br>system exit!<br>"
            self._error_handler()

        if "X.wnd.getActiveWindow()" in self.final_content:
            _m = "Get Seat_NO: " + self.seatNO + " success!"
            print "\n" + _m
            self.mail_message += "<br>" + _m + "<br>"
            sendmail.send_mail(_m, self.mail_message, self.mailto)
        else:
            self.mail_message += "<br>Final order POST fail!<br>maybe current time is not allowed<br>System exit!<br>"
            self._error_handler()
Exemplo n.º 16
0
    def run(self):

        data_middle = {
            'roomNum': '101001 ',
            'date': self._get_date_str().replace('%2f', '/') + ' 0:00:00',
            'divTransparentTop': '0',
            'divTransparentLeft': '0'
        }

        middle_url = self.base_url + "/FunctionPages/SeatBespeak/SeatLayoutHandle.ashx"



        print "Try to get [SeatLayoutHandle.ashx]..."
        self.mail_message += "<br>Try to get [SeatLayoutHandle.ashx]...<br>"
        for i in range(1, 11):
            __post = self.s.post(
                middle_url,
                data=data_middle,
                headers=self.headers,
                timeout=self.middle_content_timeout
            )
            self.middle_content = __post.content

            print " NO:" + str(i) + " status_code:" + str(__post.status_code) + " time(ms):" + str(__post.elapsed.microseconds) + " content_len:" + str(len(self.middle_content))
            self.mail_message += " NO:" + str(i) + " status_code:" + str(__post.status_code) + " time(ms):" + str(__post.elapsed.microseconds) + " content_len:" + str(len(self.middle_content)) + "<br>"
            if "t101001" + self.seatNO in self.middle_content:
                print "\nGet [SeatLayoutHandle.ashx] success!\n"
                self.mail_message += "<br>Get [SeatLayoutHandle.ashx] success!<br>"
                break
            self.middle_content_timeout +=10
            print " -failed-"
        else:
            print "\nGet [SeatLayoutHandle.ashx] failed!\n\nSystem exit!\n"
            # print "\nself.middle_content =>\n" + self.middle_content
            self.mail_message += "<br>Get [SeatLayoutHandle.ashx] failed!<br>System exit"
            self.mail_message += "<br>self.middle_content = <br><p><pre>" + self.middle_content + "</pre></p>"
            self._error_handler()

        get_para = self._get_static_get_attr(self.middle_content)
        print "get_para = " + get_para
        self.mail_message += "<br>Get_para => " + get_para + "<br>"

        if len(get_para) < 10:
            print "\nThis seat is taken by others!\nSystem exit!"
            self.mail_message += "<br>This seat is taken by others!<br>System exit!<br>"
            self._error_handler()
        else:
            pass

        self.final_url = self.base_url + "/FunctionPages/SeatBespeak/BespeakSubmitWindow.aspx?parameters=" + get_para

        _headers = {
            'Referer': self.base_url + 'FunctionPages/SeatBespeak/BespeakSeatLayout.aspx'
        }

        final_dict = self._get_static_post_attr(self.s.get(self.final_url, headers=_headers, timeout=120).content)
        # print final_dict

        final_dict["__EVENTTARGET"] = "ContentPanel1$btnBespeak"
        final_dict["__EVENTARGUMENT"] = ""
        final_dict["X_CHANGED"] = "false"
        final_dict["X_TARGET"] = "ContentPanel1_btnBespeak"
        final_dict["Form2_Collapsed"] = "false"
        final_dict["ContentPanel1_Collapsed"] = "false"
        final_dict["X_STATE"] = ""
        final_dict["X_AJAX"] = "true"

        self.final_content = self.s.post(
            self.final_url, data=final_dict, headers=self.headers, timeout=120
        ).content

        if len(self.final_content) < 10:
            print "no response from the last post\nsystem exit!\n"
            self.mail_message += "<br>no response from the last post<br>system exit!<br>"
            self._error_handler()

        if "X.wnd.getActiveWindow()" in self.final_content:
            _m = "Get Seat_NO: " + self.seatNO + " success!"
            print "\n" + _m
            self.mail_message += "<br>" + _m + "<br>"
            sendmail.send_mail(_m, self.mail_message, self.mailto)
        else:
            self.mail_message += "<br>Final order POST fail!<br>maybe current time is not allowed<br>System exit!<br>"
            self._error_handler()
Exemplo n.º 17
0
 def _error_handler(self):
     sendmail.send_mail('Error Log', self.mail_message, self.mailto)
     sys.exit(0)