diff --git a/plugins/BlocklistImport/__init__.py b/plugins/BlocklistImport/__init__.py
index 8fd9a88fb..7cfa85c84 100644
--- a/plugins/BlocklistImport/__init__.py
+++ b/plugins/BlocklistImport/__init__.py
@@ -4,8 +4,8 @@
##
plugin_name = "Blocklist Importer"
-plugin_author = "Steve 'Tarka' Smith"
-plugin_version = "0.4"
+plugin_author = "Steve 'Tarka' Smith, updated by Mark Stahler"
+plugin_version = "0.45"
plugin_description = _("""
Download and import various IP blocklists.
@@ -34,7 +34,7 @@ import urllib, deluge.common, deluge.pref
from peerguardian import PGReader, PGException
from text import TextReader, GZMuleReader, PGZip
from ui import GTKConfig, GTKProgress
-import os.path
+import os.path, os, time
# List of formats supported. This is used to generate the UI list and
# specify the reader class. The last entry is for storage by the UI.
@@ -64,14 +64,14 @@ class BlocklistImport:
self.config.load()
if self.config.has_key('url'):
- self.loadlist(fetch=self.config.get('load_on_start'))
+ self.loadlist(fetch=self.config.get('load_after_days'))
def _download_update(self, curr, chunksize, size):
incs = float(size) / float(chunksize)
self.gtkprog.download_prog(curr/incs)
- def loadlist(self, fetch=False):
+ def loadlist(self, fetch=-1):
# Stop all torrents
self.paused_or_not = {}
for unique_ID in self.core.unique_IDs:
@@ -80,9 +80,27 @@ class BlocklistImport:
self.core.set_user_pause(unique_ID, True, enforce_queue=False)
self.gtkprog.start()
+
+ # Compare modified time with load_after_days
+ try:
+ liststats = os.stat(self.blockfile)
+ list_timestamp = liststats.st_mtime
+ now_timestamp = time.time()
+ days_update = self.config.get('load_after_days')
+ # Seconds in a day = 86400
+ # Check to see if todays timestamp is older than the list plus days in config
+
+ if now_timestamp >= (list_timestamp + (86400 * days_update)):
+ fetch = -1
+ print 'New Blocklist required...'
+
+ # If blocklist doesnt exist
+ except OSError, e:
+ pass
+
# Attempt initial import
- if fetch:
+ if fetch == -1:
print "Fetching",self.config.get('url')
self.gtkprog.start_download()
try:
@@ -144,16 +162,16 @@ class BlocklistImport:
def configure(self, window):
self.gtkconf.start(self.config.get('listtype'),
self.config.get('url'),
- self.config.get('load_on_start'),
+ self.config.get('load_after_days'),
window)
- def setconfig(self, url, load_on_start, listtype):
+ def setconfig(self, url, load_after_days, listtype):
self.config.set('url', url)
- self.config.set('load_on_start', load_on_start)
+ self.config.set('load_after_days', load_after_days)
self.config.set('listtype', listtype)
self.config.save()
- self.loadlist(fetch=True)
+ self.loadlist()
def disable(self):
self.core.reset_ip_filter()
diff --git a/plugins/BlocklistImport/ui.py b/plugins/BlocklistImport/ui.py
index 97c413474..e7bcb5a24 100644
--- a/plugins/BlocklistImport/ui.py
+++ b/plugins/BlocklistImport/ui.py
@@ -41,14 +41,29 @@ class GTKConfig(gtk.Dialog):
hbox = gtk.HBox(False, 6)
hbox.pack_start(label)
- hbox.pack_start(self.url)
+ hbox.pack_end(self.url, expand=True, fill=True)
self.vbox.pack_start(self.listtype)
self.vbox.pack_start(hbox)
# Load on start
- self.load_on_start = gtk.CheckButton(_("Download on start"))
- self.vbox.pack_start(self.load_on_start)
+ # gtk.SpinButton(adjustment=None, climb_rate=0.0, digits=0)
+ label2 = gtk.Label()
+ label2.set_markup('' + _("Download new blocklist every") + '')
+
+ self.load_after_days = gtk.SpinButton(None, 1.0, 0)
+ self.load_after_days.set_increments(1, 3)
+ self.load_after_days.set_range(-1, 14)
+
+ label3 = gtk.Label()
+ label3.set_markup('' + _("days") + '')
+
+ hbox2 = gtk.HBox(False, 6)
+ hbox2.pack_start(label2)
+ hbox2.pack_start(self.load_after_days)
+ hbox2.pack_start(label3)
+
+ self.vbox.pack_start(hbox2)
self.connect('response', self.ok)
self.connect('close', self.cancel)
@@ -67,9 +82,9 @@ class GTKConfig(gtk.Dialog):
ls = self.listtype.get_model()
ltype = ls[self.listtype.get_active()][1]
url = self.url.get_text()
- los = self.load_on_start.get_active()
+ days = self.load_after_days.get_value()
- self.plugin.setconfig(url, los, ltype)
+ self.plugin.setconfig(url, days, ltype)
def cancel(self, dialog, signal=None):
@@ -77,7 +92,7 @@ class GTKConfig(gtk.Dialog):
if signal:
return True
- def start(self, ltype, url, load, window):
+ def start(self, ltype, url, days, window):
self.set_transient_for(window)
if ltype:
path = BlocklistImport.readers[ltype][2]
@@ -87,8 +102,8 @@ class GTKConfig(gtk.Dialog):
if url:
self.url.set_text(url)
- if load:
- self.load_on_start.set_active(load)
+ if days:
+ self.load_after_days.set_value(days)
self.show_all()