Showing with 49 additions and 11 deletions.
  1. +1 −1 db/abruzzo.txt
  2. +1 −1 db/campania.txt
  3. +1 −1 db/friuli.txt
  4. +3 −3 db/lombardia.txt
  5. +1 −1 db/toscana.txt
  6. +2 −2 db/veneto.txt
  7. +40 −2 script/spazzino.py
2 changes: 1 addition & 1 deletion db/abruzzo.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Chieti|AnxaLug|Lanciano e dintorni|http://www.anxalug.org/|dercolenicola@gmail.com
L'Aquila|AvezzanoLUG|Avezzano|http://avezzanolug.org/|tony@avezzanolug.org
L'Aquila|MarsicaLug|Trasacco, Marsica|http://www.marsicalug.it/|corrado.bove@gmail.com
L'Aquila|SulmonaLug|Sulmona e dintorni|http://www.sulmonalug.it/|info@sulmonalug.it
L'Aquila|SulmonaLug|Sulmona e dintorni|http://sulmonalug.it/|info@sulmonalug.it
L'Aquila|LUG CdS|Castel di Sangro|http://lugcds.wordpress.com/|lugcds@gmail.com
Pescara|PescaraLug|Pescara|http://www.pescaralug.org/|dom@netsons.eu.org
Teramo|PinetoLUG|Pineto e dintorni|http://www.pilug.org/|info@pilug.org
Expand Down
2 changes: 1 addition & 1 deletion db/campania.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Avellino|IrLUG|Avellino|http://www.irlug.it/|info@irlug.it
Benevento|GLUS|Sant'Agata dei Goti, Airola|http://www.liberarete.it/glus/|izzo.luca@gmail.com
Benevento|PaduLUG|Paduli|http://paduglug.paduli.org/|dylan@paduli.org
Benevento|SannioLug|Benevento e provincia|http://sannioglug.org/|lucapace@sannioglug.org
Benevento|SannioLug|Benevento e provincia|http://www.sannioglug.org/|lucapace@sannioglug.org
Caserta|Hackaserta 81100|Caserta|http://81100.org/|8-team@81100.org
Napoli|IGLUG|Napoli e provincia|http://www.iglug.org/|info@iglug.org
Napoli|Lug Ischia|Ischia|http://www.lug-ischia.org/|giannicoppa@yahoo.it
Expand Down
2 changes: 1 addition & 1 deletion db/friuli.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Gorizia|GoLug|Gorizia|http://www.golug.it/|info@golug.it
Pordenone|Lug Pordenone|Pordenone|http://www.pordenone.linux.it/|info@pordenone.linux.it
Pordenone|Lug Pordenone|Pordenone|http://pordenone.linux.it/|info@pordenone.linux.it
Trieste|Lug Trieste|Trieste|http://trieste.linux.it/|info@trieste.linux.it
Udine|IGLU|Udine|http://iglu.cc.uniud.it/|direttivo@iglu.cc.uniud.it
Udine|Lug ALP|Aquileia|http://www.alproject.org/|info@alproject.org
Expand Down
6 changes: 3 additions & 3 deletions db/lombardia.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Bergamo|BGLug|Bergamo e provincia|http://www.bglug.it/|info@bglug.it
Bergamo|BGLug|Bergamo e provincia|http://bglug.it/|info@bglug.it
Bergamo|BGLug Valle Seriana|Gazzaniga, Valle Seriana|http://bglugvs.web3king.com/|angelo@web3king.com
Bergamo|Linux Club Zogno|Zogno|http://www.linuxzogno.org/|info@linuxzogno.org
Brescia|CiRcOLaB|Brescia|http://www.circolab.net/|circo@circolab.net
Expand All @@ -11,12 +11,12 @@ Cremona|LugCR|Cremona e provincia|http://www.lugcr.it/|info@lugcr.it
Lecco|GLUX|Lecco e provincia|http://www.lecco.linux.it/|glux@lecco.linux.it
Lodi|LoLug|Lodi e provincia|http://www.lolug.org/|info@lolug.net
Mantova|LugMan|Mantova e provincia|http://www.lugman.net/|fausto.picchi@gmail.com
Milano|Lug Bocconi|Milano|http://www.lug-bocconi.org/|boccolinux@gmail.com
Milano|Lug Bocconi|Milano|http://www.lugbocconi.org/|boccolinux@gmail.com
Milano|Lugdico|Milano|http://lugdico.wordpress.com/|andrea.trentini@unimi.it
Milano|OpenLabs|Milano|http://www.openlabs.it/|info@openlabs.it
Milano|POuL|Milano|http://www.poul.org/|info@poul.org
Milano|LIFOS|Cinisello Balsamo|http://www.lifos.org/|info@lifos.org
Milano|ViGLug|Vignate|http://www.viglug.org/|fraph24@gmail.com
Milano|ViGLug|Vignate|http://viglug.org/|fraph24@gmail.com
Monza|MoBLUG|Monza e Brianza|http://www.bubblesfactory.it/|info@bubblesfactory.it
Pavia|TiLug|Pavia e provincia|http://pavia.linux.it/|tilug@lists.linux.it
Pavia|LUGDucale|Vigevano|http://www.lugducale.it/|fulvio.restelli@faswebnet.it
Expand Down
2 changes: 1 addition & 1 deletion db/toscana.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Grosseto|GroLug|Grosseto e provincia|http://www.grolug.org/|info@grolug.org
Grosseto|GuruAtWork|Grosseto e provincia|http://www.guruatwork.com/|info@guruatwork.com
Livorno|Gulli|Livorno e provincia|http://www.gullix.org/|info@gullix.org
Lucca|Lucca Lug|Lucca|http://luccalug.it/|info@luccalug.it
Lucca - Massa Carrara|ACROS|Versilia, Lucca, Massa Carrara|http://www.lug-acros.org/|segreteria@lug-acros.org
Lucca - Massa Carrara|ACROS|Versilia, Lucca, Massa Carrara|http://lug-acros.org/|segreteria@lug-acros.org
Pisa|Gulp|Pisa|http://www.gulp.linux.it/|gulp@gulp.linux.it
Pistoia|PtLug|Pistoia|http://www.ptlug.org/|a.grandi@gmail.com
Prato|Plug|Prato|http://www.prato.linux.it/|info@prato.linux.it
Expand Down
4 changes: 2 additions & 2 deletions db/veneto.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,5 @@ Verona|LinuxLudus|Villafranca di Verona|http://www.linuxludus.it/|sirio81@gmail.
Verona|LugVR|Verona|http://www.verona.linux.it/|presidente@verona.linux.it
Vicenza|AVi Lug|Provincia di Vicenza, Alto Vicentino|http://www.avilug.it/|dcavedon@gmail.com
Vicenza|GrappaFSD|Bassano del Grappa e dintorni|http://grappafsd.homelinux.org/|stefano.bonvicini@gmail.com
Vicenza|GrappaLUG|Bassano del Grappa|http://www.grappalug.org/|mauro.dallacosta@gmail.com
Vicenza|Lug Vicenza|Bassano del Grappa, Vicenza e provincia|http://www.vicenza.linux.it/|info@vicenza.linux.it
Vicenza|GrappaLUG|Bassano del Grappa|http://grappalug.org/|mauro.dallacosta@gmail.com
Vicenza|Lug Vicenza|Bassano del Grappa, Vicenza e provincia|http://vicenza.linux.it/|info@vicenza.linux.it
42 changes: 40 additions & 2 deletions script/spazzino.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
sys.exit("Necessito di un interprete Python dalla versione 2.6 in poi")

try:
import atexit, csv, datetime, glob, inspect, multiprocessing, os, socket, sys, smtplib, syslog, tempfile, time, urllib2
import atexit, csv, datetime, glob, inspect, logging, multiprocessing, os, socket, sys, smtplib, syslog, tempfile, time, urllib2, urlparse
except:
sys.exit("Non sono disponibili tutti i moduli standard necessari")

Expand Down Expand Up @@ -109,6 +109,20 @@ def termina_thread_appesi():
logga('Lug: <'+id.name+'> ucciso thread')
id.terminate()

class log_per_mechanize:
"""Oggetto simil-fd volto al solo tenere in memoria le linee di log,
generate dai redirect inseguiti da Mechanize, per individuare i cambiamenti
di dominio."""

def __init__(self):
self.righe = []

def write(self, riga):
self.righe.append(riga)

def flush(self):
return True

class LUG(persistent.Persistent):
def __init__(self, id):
self.id = self.denominazione = id # blocco di informazioni che abbiamo nel db
Expand Down Expand Up @@ -146,7 +160,7 @@ def aggiorna_campi(self, riga_csv, filedb):

if self.url != riga_csv[3]:
self.url = riga_csv[3]
self.dominio = self.url.split('/')[2]
self.dominio = urlparse.urlparse(self.url).netloc
self.notifica('Atten. URL aggiornato: '+self.url)

if self.contatto != riga_csv[4]:
Expand Down Expand Up @@ -198,8 +212,15 @@ def controllo_homepage(self):

logga('Lug <'+self.id+'>: controllo web per '+self.url)

self._v_logger = logging.getLogger("mechanize.http_redirects") # attivo il log dei redirect
self._v_redirect_log = log_per_mechanize() # istanzio l'oggetto per i log
self._v_log_handler = logging.StreamHandler(self._v_redirect_log) # creo l'handler
self._v_logger.addHandler(self._v_log_handler) # lo attivo
self._v_logger.setLevel(logging.INFO) # definisco la soglia di log

self._v_browser = mechanize.Browser() # volatile per zodb
self._v_browser.set_handle_robots(False) # evitiamo di richiedere robots.txt ogni volta
self._v_browser.set_debug_redirects(True) # obbligo mechanize a tenere traccia dei redirect
self._v_browser.addheaders = [('User-agent', 'Bot: http://lugmap.linux.it - lugmap@linux.it')]

try:
Expand All @@ -222,6 +243,7 @@ def controllo_homepage(self):
self._v_titolo_attuale = ''
else:
self._v_Termini_Attuali = set(self._v_browser.open(self.url).read().split())
self._v_log_handler.flush() # forzo il flush del log dei redirect
except:
self.notifica('Errore web: impossibile leggere homepage')

Expand Down Expand Up @@ -271,6 +293,21 @@ def controllo_title(self):
pass
self.title_homepage = self._v_titolo_attuale # in ogni caso salvo il nuovo valore

def controllo_redirect(self):
"""Scandaglio il log generato da Mechanize per trovare cambiamenti di dominio"""

logga('Lug <'+self.id+'>: controllo redirect per '+self.dominio)

for riga in self._v_redirect_log.righe: # per ogni riga di log,
if riga.startswith('redirecting to'):
url = riga.split()[-1] # prendo l'URL completo
dominio_nel_log = urlparse.urlparse(url).netloc
if self.dominio != dominio_nel_log:
logga('Lug <'+self.id+'>: controllo redirect per '+self.dominio)
self.notifica("Dominio cambiato da <"+self.dominio+"> a <"+dominio_nel_log+">")
break
return True

def aggiorna_dati(self):
self.ultimo_aggiornamento = time.time()

Expand All @@ -286,6 +323,7 @@ def controlli(self):
self.numero_controlli += 1
if self.controllo_dns():
if self.controllo_homepage():
self.controllo_redirect()
self.controllo_title()
self.controlli_conclusi = True
self.aggiorna_dati()
Expand Down