Ejemplo n.º 1
0
    def checkNewReplies(self):
        replied_tickets = Datebase().getRepliesTicketsIdList()

        if (len(activeRepTickets) != 0):
            try:
                closedTickets = {
                    k: activeRepTickets[k]
                    for k in activeRepTickets.keys() ^ set(replied_tickets)
                }

                for rTicket in closedTickets:
                    self.CheckHandlerLog.info("[Ответ][%s] закрыт." % rTicket)
                    self.openbot.sendMessageGroup("[Ответ][%s] закрыт." %
                                                  rTicket)
            except KeyError:
                pass

            diff_ticket = {
                k: activeRepTickets[k]
                for k in activeRepTickets.keys() & set(replied_tickets)
            }

            activeRepTickets.clear()

            for i in diff_ticket:
                activeRepTickets[i] = diff_ticket[i]

            save_obj(activeRepTickets, 'activeRepTickets')

        for rTicket in replied_tickets:
            if rTicket not in activeRepTickets:
                time.sleep(0.5)

                for row in Datebase().getLastRepliesByTicketId(rTicket):
                    ticket = Ticket(row[0], row[1], row[2], row[3], row[4],
                                    row[5], row[6], row[7], row[8], row[9],
                                    row[10])

                    ticket.message = self.cleanUpMessage(ticket.message)

                    activeRepTickets[ticket.ticket_id] = ticket
                    save_obj(activeRepTickets, 'activeRepTickets')

                    self.CheckHandlerLog.info(
                        "[Reply][%s] Новый ответ.\n %s \n %s \n %s" %
                        (ticket.ticket_id, ticket.email, ticket.subject,
                         ticket.message))
                    self.openbot.sendMessageGroup(
                        "[Reply][%s] Новый ответ.\n %s \n %s \n %s" %
                        (ticket.ticket_id, ticket.email, ticket.subject,
                         ticket.message), 'HTML', False)
Ejemplo n.º 2
0
    def undefinedTicket(self, ticket):
        if (ticket.ticket_id not in activeTickets):
            activeTickets[ticket.ticket_id] = ticket
            ticket.message = self.cleanUpMessage(ticket.message)

            #append attachments to message
            for k, v in ticket.attachment.items():
                ticket.message += "\n<a href=\"%s\">%s</a>" % (v, k)

            self.CheckHandlerLog.info(
                "[Ticket][%s] Новая Заявка.\n %s \n %s \n %s" %
                (ticket.ticket_id, ticket.email, ticket.subject,
                 ticket.message))
            self.openbot.sendMessageGroup(
                "[Ticket][%s] Новая Заявка.\n %s \n %s \n %s" %
                (ticket.ticket_id, ticket.email, ticket.subject,
                 ticket.message), 'HTML', False)
            save_obj(activeTickets, 'activeTickets')
Ejemplo n.º 3
0
    def getDomainTasksList(self):

        browser = self.getAuth()

        if (browser is None):
            return

        #Fix block error in dms
        if ('ctl00_contentHolder_TaskList_ucStop_lblActionType'
                in browser.response.text):
            self.checkBlockError(browser)
        else:
            for blockHosting in listBlockHosting:
                self.dLog.info(
                    "[Domain.by] Исправлена ошибка блокировки в дмс: %s " %
                    blockHosting.encode("utf-8").decode("idna"))
                self.openbot.sendMessageMe(
                    "[Domain.by] Исправлена ошибка блокировки в дмс: %s" %
                    blockHosting.encode("utf-8").decode("idna"))

            listBlockHosting.clear()
            save_obj(listBlockHosting, 'listBlockHosting')

        if ('ctl00_contentHolder_TaskList_ucUnblock_lblActionType'
                in browser.response.text):
            self.checkUnBlockError(browser)
        else:
            for unBlockHosting in listUnBlockHosting:
                self.dLog.info(
                    "[Domain.by] Исправлена ошибка разблокировки в дмс: %s " %
                    unBlockHosting.encode("utf-8").decode("idna"))
                self.openbot.sendMessageMe(
                    "[Domain.by] Исправлена ошибка разблокировки в дмс: %s" %
                    unBlockHosting.encode("utf-8").decode("idna"))

            listUnBlockHosting.clear()
            save_obj(listUnBlockHosting, 'listUnBlockHosting')
Ejemplo n.º 4
0
    def checkNewMessage(self):
        tickets = self.getListTickets()
        emailSpamList = Datebase().getSpamEmail().split('\r\n')

        try:
            closedTickets = {
                k: activeTickets[k]
                for k in activeTickets.keys() ^ set(ticket.ticket_id
                                                    for ticket in tickets)
            }

            for cTicket in closedTickets:
                self.CheckHandlerLog.info("[%s] закрыт." % cTicket)
                self.openbot.sendMessageGroup("[%s] закрыт." % cTicket)
        except KeyError:
            pass

        tempactiveTickets = {
            k: activeTickets[k]
            for k in activeTickets.keys() & set(ticket.ticket_id
                                                for ticket in tickets)
        }

        activeTickets.clear()

        for i in tempactiveTickets:
            activeTickets[i] = tempactiveTickets[i]

        save_obj(activeTickets, 'activeTickets')

        if not tickets:
            return

        for ticket in tickets:
            time.sleep(0.5)
            if (ticket.ticket_id in activeTickets):
                continue
            if re.match("\[s.\.open.by\] New account: \w{1,16}",
                        ticket.subject):
                self.CheckHandlerLog.info("[Создание][%s] Закрыт" %
                                          ticket.ticket_id)
                self.openbot.sendMessageMe("[Создание][%s] Закрыт" %
                                           ticket.ticket_id)
                Datebase().setTicketClose(ticket.ticket_id)
                continue
            if re.match("\[s.\.open.by\] Account Suspended: \w{1,16}",
                        ticket.subject):
                self.CheckHandlerLog.info("[Блокировка][%s] Закрыт" %
                                          ticket.ticket_id)
                self.openbot.sendMessageMe("[Блокировка][%s] Закрыт" %
                                           ticket.ticket_id)
                Datebase().setTicketClose(ticket.ticket_id)
                continue
            if re.match("\[s.\.open.by\] Account Unsuspended: \w{1,16}",
                        ticket.subject):
                self.CheckHandlerLog.info("[Pазблокировка][%s] Закрыт" %
                                          ticket.ticket_id)
                self.openbot.sendMessageMe("[Pазблокировка][%s] Закрыт" %
                                           ticket.ticket_id)
                Datebase().setTicketClose(ticket.ticket_id)
                continue
            if re.match("\[s.\.open.by\] Upgrade/Downgrade:", ticket.subject):
                self.CheckHandlerLog.info("[Package][%s] Закрыт" %
                                          ticket.ticket_id)
                self.openbot.sendMessageMe("[Package][%s] Закрыт" %
                                           ticket.ticket_id)
                Datebase().setTicketClose(ticket.ticket_id)
                continue
            if re.match("Undelivered Mail Returned to Sender", ticket.subject):
                continue
            if re.match("\[s.\.open.by\] Disk Usage Warning: The user",
                        ticket.subject):
                try:
                    account = re.search(
                        'Disk quota notification for \“(.+?)\”\.',
                        ticket.message).group(1)
                    quota = re.search(
                        'The account currently uses (.+?) of its',
                        ticket.message).group(1)
                    self.CheckHandlerLog.info(
                        "[Квота][%s] [%s] %s" %
                        (ticket.ticket_id, account, quota))
                    self.openbot.sendMessageMe(
                        "[Квота][%s] [%s] %s" %
                        (ticket.ticket_id, account, quota))
                    Datebase().setTicketClose(ticket.ticket_id)
                except Exception as inst:
                    self.CheckHandlerLog.critical("[DiskUsageWarning] %s" %
                                                  (inst))
                    self.CheckHandlerLog.critical(sys.exc_info()[0])
                continue
            if re.match(
                    u"\<\!\-\- head not allowed \-\->Домен\: \w{1,25}(-)?(\.)?(\w{1,25})?(\.)?(\w{1,25})?(-)?(\.)?\w{1,5}(-)?(\.)?(\w{1,5})?\; Сервер\: http(s)?\:\/\/s\d\.open\.by\:2087\/json\-api\/\; Действие: Успешно заблокирован",
                    ticket.message):
                self.CheckHandlerLog.info("[API block][%s] Закрыт" %
                                          ticket.ticket_id)
                self.openbot.sendMessageMe("[API block][%s] Закрыт" %
                                           ticket.ticket_id)
                Datebase().setTicketClose(ticket.ticket_id)
                continue
            if re.match(
                    u"\<\!\-\- head not allowed \-\->Домен\: \w{1,25}(-)?(\.)?(\w{1,25})?(\.)?(\w{1,25})?(-)?(\.)?\w{1,5}(-)?(\.)?(\w{1,5})?\; Сервер\: http(s)?\:\/\/s\d\.open\.by\:2087\/json\-api\/\; Действие: Успешно разблокирован",
                    ticket.message):
                self.CheckHandlerLog.info("[API unblock][%s] Закрыт" %
                                          ticket.ticket_id)
                self.openbot.sendMessageMe("[API unblock][%s] Закрыт" %
                                           ticket.ticket_id)
                Datebase().setTicketClose(ticket.ticket_id)
                continue
            if re.match(u"\[s.\.open.by\] Account Terminated:",
                        ticket.subject):
                self.CheckHandlerLog.info("[Удаление][%s] Закрыт" %
                                          ticket.ticket_id)
                self.openbot.sendMessageMe("[Удаление][%s] Закрыт" %
                                           ticket.ticket_id)
                Datebase().setTicketClose(ticket.ticket_id)
                continue
            if re.match(u"Сведения ИРЦ РУП Белтелеком за", ticket.subject):
                self.CheckHandlerLog.info("[Белтелеком][%s] Задержан" %
                                          ticket.ticket_id)
                self.openbot.sendMessageMe("[Белтелеком][%s] Задержан" %
                                           ticket.ticket_id)
                Datebase().setTickethold(ticket.ticket_id)
                continue
            if (len(ticket.attachment) > 0):
                listKeys = list(ticket.attachment.keys())

                if any(".jar" in s for s in listKeys):
                    self.CheckHandlerLog.info("[SPAM][%s] Заблокирован" %
                                              ticket.ticket_id)
                    self.openbot.sendMessageMe("[SPAM][%s] Заблокирован" %
                                               ticket.ticket_id)
                    Datebase().setSpamEmail(ticket.email)
                    Datebase().setTicketSpam(ticket.ticket_id)
                    continue

            if (ticket.client_id == 101373):
                if (self.managerParse(ticket)):
                    continue
            if (ticket.client_id == 94434):
                if (self.parseDomainbyTask(ticket)):
                    continue
            if ticket.email in emailSpamList:
                self.CheckHandlerLog.info("[Spam][%s] Перемещен" %
                                          ticket.ticket_id)
                self.openbot.sendMessageMe("[Spam][%s] Перемещен" %
                                           ticket.ticket_id)
                Datebase().setTicketSpam(ticket.ticket_id)
                continue
            else:
                self.undefinedTicket(ticket)
Ejemplo n.º 5
0
    def checkBlockError(self, browser):
        exclude_list = cfg.getExcludeDomainList()

        soup = BeautifulSoup(browser.response.text, "html.parser")

        haveValue = True
        i = 1

        temp = []
        while (haveValue):
            try:
                domain = soup.find(
                    id=
                    "ctl00_contentHolder_TaskList_ucStop_rptServiceList_ctl0%s_lblDomain"
                    % i).text.replace('www.', '')
                status = soup.find(
                    id=
                    "ctl00_contentHolder_TaskList_ucStop_rptServiceList_ctl0%s_lblCpanelError"
                    % i).text
                url_block = "https://domain.by/BackEnd/Support/" + soup.find(
                    id=
                    "ctl00_contentHolder_TaskList_ucStop_rptServiceList_ctl0%s_hlAction"
                    % i).get('href')

                if (status != "Ошибка"):
                    i += 1
                    continue

                if (re.search('[а-яА-Я]', domain)):
                    domain = domain.encode("idna").decode("utf-8")

                if (domain not in listBlockHosting):
                    self.dLog.info(
                        "[Domain.by] Обнаружена ошибка блокировки: %s" %
                        domain.encode("utf-8").decode("idna"))
                    self.openbot.sendMessageGroup(
                        "[Domain.by] Обнаружена ошибка блокировки: %s" %
                        domain.encode("utf-8").decode("idna"))
                    listBlockHosting.append(domain)

                    if (len(listBlockHosting) > 0):
                        save_obj(listBlockHosting, 'listBlockHosting')

                    if (domain in exclude_list):
                        self.dLog.info(
                            "[Domain.by] [Ошибка блокировки] %s в списке исключений."
                            % domain.encode("utf-8").decode("idna"))
                        self.openbot.sendMessageGroup(
                            "[Domain.by] [Ошибка блокировки]  %s в списке исключений."
                            % domain.encode("utf-8").decode("idna"))
                        i += 1
                        continue

                    browser.open(url_block)

                    hosting = getAccountsList()[domain].server
                    self.dLog.info(
                        "[Domain.by] [Ошибка блокировки] Расположен на сервере: %s"
                        % hosting)

                    dataToPost = self._get_form_post_data(browser)
                    dataToPost[
                        "ctl00$contentHolder$HostingServersList$HostingServers"] = hostingServerDmsList[
                            hosting]
                    dataToPost["ctl00$contentHolder$cbCpanelSynchro"] = "on"
                    dataToPost["ctl00$contentHolder$btnStop"] = "Блокировать"

                    browser.open(url_block, method='post', data=dataToPost)

                    self.dLog.info(
                        'Для доменного имени %s необходимо произвести смену хостинг сервера на %s'
                        % (domain.encode("utf-8").decode("idna"), hosting))
                    self.openbot.sendMessageMe(
                        "[Domain.by] [Ошибка блокировки]  Для доменного имени %s необходимо произвести смену хостинг сервера на %s."
                        % domain.encode("utf-8").decode("idna"), hosting)

                i += 1

            except KeyError as inst:
                i += 1
                self.dLog.critical(
                    "[checkBlockError] %s не найден на хостинге." % domain)
                self.openbot.sendMessageGroup(
                    "[checkBlockError] %s не найден на хостинге." % domain)
                pass
            except RuntimeError as inst:
                self.dLog.critical("[checkBlockError] %s" % inst)
                self.openbot.sendMessageGroup(
                    "[Domain.by][checkBlockError][RuntimeError]: %s" % (inst))
            except Exception as inst:
                haveValue = False