[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Script para envio da DSA para a d-n-p



Olá,

	Indo no vácuo do faw estou enviando o script Python que venho
utilizando para o envio das DSAs para a lista debian-news-portuguese.

    Resalto que sou iniciante na linguagem Python, portanto pode ter
muita coisa "porca" aí no meio.

    Grande parte do trabalho "sujo" o script já faz, mas algumas coisas
ainda tem que ser feitas na mão.

    Junto com esse script eu uso um outro bem simples em shell script:

------mail_dsa.sh-------
#!/bin/sh
python extract_dsa.py $1 > dsa.draft
# Como meu sistema está em utf-8 preciso converter o arquivo gerado
iconv dsa.draft -f iso8859-1 -t utf-8 > dsa.txt
mutt -H dsa.txt
------------------------

Segue em anexo o arquivo extract_dsa.py

Se alguém quiser melhorar o script, esteja a vontade :)

Abraços

#!/bin/env python
# -*- coding: latin-1 -*-
"""
extract_dsa.py

Extrai o conteudo da pagina HTML de avisos de seguranca
Debian (DSAs) e gera um template de e-mail para o mutt.

Uso: extract_dsa.py <numero_da_dsa> > arquivo_template.
     ex: extract_dsa 960 > dsa_960.txt

Apos gerar o template carregue-o com:
~$ mutt -H arquivo_template
"""
import sys
import urllib
import sgmllib
import re

dsa_regex = re.compile(r"(DSA-\d+-\d+\s+.+\s+--\s+.+)")
cve_regex = re.compile(r"(CVE-\d+-\d+)")
dsa_data = re.compile(r"(?P<dd>..)/(?P<mm>..)/(?P<aaaa>....)")
Meses=('Janeiro','Fevereiro','Mar�,'Abril','Maio','Junho',
       'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro')
class DsaParser(sgmllib.SGMLParser):

    inside_text = False
    text = ''
    matches = []
    cve = []
    last_item = ''
    lista = []

    def start_div(self, attrs):
        for attr, value in attrs:
            if value == "inner":
                self.inside_text = True

    def end_div(self):
        self.inside_text = False

    def handle_data(self, data):
        if self.inside_text and data:
            m = dsa_regex.match(data)
            if m is not None:
                self.matches.extend(m.groups())
                self.dsa_string = self.matches[0].split(' ',3)
            m = cve_regex.match(data)
            if m is not None:
                self.cve.extend(m.groups())
                self.lista = uniq(self.cve)
            m = dsa_data.search(data)
            if m is not None:
                self.dia = m.group('dd')
                self.mes = Meses[int(m.group('mm'))-1]
                self.ano = m.group('aaaa')
            self.text = self.text + data
def uniq(l):
	res = []
	for x in l:
		if x not in res:
			res.append(x)
	return res

def main():
    for url in sys.argv[1:]:
        try:
            myurl = "http://www.us.debian.org/security/2006/dsa-%s.pt.html"; % url
            file = open(myurl)
        except IOError:
            file = urllib.urlopen(myurl)
        cve_items =''
        p = DsaParser()
        p.feed(file.read())
        p.close()
        dsa = p.dsa_string[0]
        package = p.dsa_string[1]
        separator = p.dsa_string[2]
        issue = p.dsa_string[3]
        if p.lista:
            for item, obj in enumerate(p.lista):
                cve_items = cve_items + "[" + str(item+3) + "]" + obj + ", "
        else:
            cve_items = "Nenhuma outra base de dados externas de refer�ias de seguran�est�ispon�l atualmente."
        text = ''
        lines = p.text.splitlines()
        for item in lines[14:]:
            text = text + item + "\n"

        header="""To: debian-news-portuguese@lists.debian.org
Cc:
Bcc:
Subject: [SEGURANCA][%s] %s (%s)
Reply-To: debian-user-portuguese@lists.debian.org
--------------------------------------------------------------------------
Alerta de Seguran�Debian %s                  security@debian.org
http://www.debian.org/security/%s/%s
%s de %s de %s                 http://www.debian.org/security/faq
--------------------------------------------------------------------------
Essa �ma tradu� do DSA (Debian Security Advisory - Alerta de Seguran�Debian) que �nviado para a lista [1]debian-security-announce e, por esse
motivo, h�m atraso entre o an� original em ingl�e esta tradu�.
Caso queira receber os alertas em ingl� [2]inscreva-se na lista.

1.http://lists.debian.org/debian-security-announce
2. Envie um e-mail para debian-security-announce-request@lists.debian.org
   e coloque no campo assunto a palavra \"subscribe\".
--------------------------------------------------------------------------
Vulnerabilidade  : %s
CVE ID           : %s
""" % (dsa,package,issue,dsa,p.ano,dsa.lower(),p.dia,p.mes,p.ano,issue,cve_items)

        footer="""
3.
4.
--

        Marco Carvalho (macs) <marcocarvalho89@yahoo.com.br>
 *******************************************************************
   .''`.   Debian Weekly News: <http://www.debian.org/News/weekly>
  : :'  :  Debian BR.........: <http://debianbrasil.org>
  `. `'`        Equipe de Imprensa e Tradu�s do Debian-BR
    `-                 O que voc�uer saber hoje?
"""

        print header
        print text
        print footer
        file.close

if __name__ == "__main__":
    main()

Attachment: signature.asc
Description: Digital signature


Reply to: