| Index: sitescripts/subscriptions/bin/updateMalwareDomainsList.py |
| =================================================================== |
| --- a/sitescripts/subscriptions/bin/updateMalwareDomainsList.py |
| +++ b/sitescripts/subscriptions/bin/updateMalwareDomainsList.py |
| @@ -16,68 +16,61 @@ |
| # along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
| import os, subprocess, codecs, urllib2, zipfile, tempfile, shutil, sys |
| import ConfigParser |
| from StringIO import StringIO |
| from sitescripts.utils import get_config |
| -filterlist_header = '''[Adblock Plus 1.1] |
| +FILTERLIST_HEADER = '''[Adblock Plus 1.1] |
| ! This is a list of malware domains generated from malwaredomains.com data. |
| ! Homepage: http://malwaredomains.com/?page_id=2 |
| ! Last modified: %timestamp% |
| ! Expires: 1d |
| !''' |
| -# Default value for malwaredomains_mirrors in the config. |
| -# Equivalent to the following in the config: |
| -# malwaredomains_mirrors= |
| -# http://mirror3.malwaredomains.com |
| -# http://mirror1.malwaredomains.com |
| -# http://mirror2.malwaredomains.com |
| -default_mirrors_list = [ |
| +DEFAULT_MIRRORS_LIST = [ |
| 'http://mirror3.malwaredomains.com', |
| 'http://mirror1.malwaredomains.com', |
| 'http://mirror2.malwaredomains.com' |
| ] |
| -malwaredomains_path = '/files/justdomains.zip' |
| +MALWAREDOMAINS_PATH = '/files/justdomains.zip' |
| def try_mirror(mirror, path): |
| try: |
| response = urllib2.urlopen(mirror + path) |
| return response.read() |
| - except urllib2.HTTPError, err: |
| - print >>sys.stderr, '{}: {}'.format(mirror, err) |
| + except urllib2.HTTPError: |
| return None |
| if __name__ == '__main__': |
| config = get_config() |
| repository = config.get('subscriptionDownloads', 'malwaredomains_repository') |
| try: |
| mirrors = config.get('subscriptionDownloads', 'malwaredomains_mirrors') |
| mirrors_list = filter(None, [mirror.strip() for mirror in mirrors.split()]) |
|
Sebastian Noack
2016/03/14 15:40:12
strip() and filter() is redundant. If you use spli
Vasily Kuznetsov
2016/03/14 16:20:38
Yeah, strip is definitely redundant. And I was thi
|
| except ConfigParser.NoOptionError: |
| - mirrors_list = default_mirrors_list |
| + mirrors_list = DEFAULT_MIRRORS_LIST |
| tempdir = tempfile.mkdtemp(prefix='malwaredomains') |
| try: |
| subprocess.check_call(['hg', '-q', 'clone', '-U', repository, tempdir]) |
| subprocess.check_call(['hg', '-q', 'up', '-R', tempdir, '-r', 'default']) |
| path = os.path.join(tempdir, 'malwaredomains_full.txt') |
| file = codecs.open(path, 'wb', encoding='utf-8') |
| - print >>file, filterlist_header |
| + print >>file, FILTERLIST_HEADER |
| for mirror in mirrors_list: |
| - data = try_mirror(mirror, malwaredomains_path) |
| + data = try_mirror(mirror, MALWAREDOMAINS_PATH) |
|
Sebastian Noack
2016/03/14 15:40:12
Since MALWAREDOMAINS_PATH is a global anyway, ther
Vasily Kuznetsov
2016/03/14 16:20:38
Yeah, I was thinking about it. I guess try_mirror
|
| if data is not None: |
| break |
| else: |
| print >>sys.stderr, 'Unable to fetch malware domains list.' |
| sys.exit(1) |
|
Sebastian Noack
2016/03/14 15:40:12
You can just pass the error message to sys.exit()
Vasily Kuznetsov
2016/03/14 16:20:38
Oh, I didn't know this. Done.
|
| zip = zipfile.ZipFile(StringIO(data), 'r') |
| info = zip.infolist()[0] |