| OLD | NEW | 
|---|
| 1 # This file is part of the Adblock Plus web scripts, | 1 # This file is part of the Adblock Plus web scripts, | 
| 2 # Copyright (C) 2006-present eyeo GmbH | 2 # Copyright (C) 2006-present eyeo GmbH | 
| 3 # | 3 # | 
| 4 # Adblock Plus is free software: you can redistribute it and/or modify | 4 # Adblock Plus is free software: you can redistribute it and/or modify | 
| 5 # it under the terms of the GNU General Public License version 3 as | 5 # it under the terms of the GNU General Public License version 3 as | 
| 6 # published by the Free Software Foundation. | 6 # published by the Free Software Foundation. | 
| 7 # | 7 # | 
| 8 # Adblock Plus is distributed in the hope that it will be useful, | 8 # Adblock Plus is distributed in the hope that it will be useful, | 
| 9 # but WITHOUT ANY WARRANTY; without even the implied warranty of | 9 # but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
| 11 # GNU General Public License for more details. | 11 # GNU General Public License for more details. | 
| 12 # | 12 # | 
| 13 # You should have received a copy of the GNU General Public License | 13 # You should have received a copy of the GNU General Public License | 
| 14 # along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 14 # along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 
| 15 | 15 | 
| 16 from time import time | 16 from time import time | 
| 17 from urlparse import urlparse, parse_qs | 17 from urlparse import urlparse, parse_qs | 
| 18 import sys | 18 import sys | 
| 19 import os | 19 import os | 
| 20 import re | 20 import re | 
| 21 from sitescripts.utils import get_config, cached, setupStderr | 21 from sitescripts.utils import get_config, cached, setupStderr | 
| 22 from sitescripts.web import url_handler | 22 from sitescripts.web import url_handler | 
| 23 import sitescripts.subscriptions.subscriptionParser as subscriptionParser | 23 import sitescripts.subscriptions.subscriptionParser as subscriptionParser | 
| 24 | 24 | 
| 25 | 25 | 
| 26 @url_handler('/getSubscription') | 26 @url_handler('/getSubscription') | 
| 27 def handleSubscriptionFallbackRequest(environ, start_response): | 27 def handleSubscriptionFallbackRequest(environ, start_response): | 
| 28     setupStderr(environ['wsgi.errors']) | 28     setupStderr(environ['wsgi.errors']) | 
| 29 | 29 | 
| 30     (redirects, gone) = getData() | 30     redirects, gone = getData() | 
| 31 | 31 | 
| 32     start_response('200 OK', [('Content-Type', 'text/plain')]) | 32     start_response('200 OK', [('Content-Type', 'text/plain')]) | 
| 33 | 33 | 
| 34     url = None | 34     url = None | 
| 35     params = parse_qs(environ.get('QUERY_STRING', '')) | 35     params = parse_qs(environ.get('QUERY_STRING', '')) | 
| 36     if 'url' in params: | 36     if 'url' in params: | 
| 37         url = params['url'][0] | 37         url = params['url'][0] | 
| 38 | 38 | 
| 39     if url and url in gone: | 39     if url and url in gone: | 
| 40         return ['410'] | 40         return ['410'] | 
| 41     elif url and url in redirects: | 41     elif url and url in redirects: | 
| 42         return ['301 %s' % redirects[url]] | 42         return ['301 %s' % redirects[url]] | 
| 43 | 43 | 
| 44     return [] | 44     return [] | 
| 45 | 45 | 
| 46 | 46 | 
| 47 @cached(600) | 47 @cached(600) | 
| 48 def getData(): | 48 def getData(): | 
| 49     processed = set() | 49     processed = set() | 
| 50 | 50 | 
| 51     (redirectData, goneData) = subscriptionParser.getFallbackData() | 51     redirectData, goneData = subscriptionParser.getFallbackData() | 
| 52     redirects = processData(redirectData, processed, {}) | 52     redirects = processData(redirectData, processed, {}) | 
| 53     gone = processData(goneData, processed, set()) | 53     gone = processData(goneData, processed, set()) | 
| 54 | 54 | 
| 55     return (redirects, gone) | 55     return (redirects, gone) | 
| 56 | 56 | 
| 57 | 57 | 
| 58 def processData(data, processed, var): | 58 def processData(data, processed, var): | 
| 59     data = data.replace('\r', '') | 59     data = data.replace('\r', '') | 
| 60     data = data.split('\n') | 60     data = data.split('\n') | 
| 61 | 61 | 
| (...skipping 21 matching lines...) Expand all  Loading... | 
| 83             print >>sys.stderr, 'Gone entry with a target: %s' % line | 83             print >>sys.stderr, 'Gone entry with a target: %s' % line | 
| 84         if line in processed: | 84         if line in processed: | 
| 85             print >>sys.stderr, 'Multiple instructions for URL %s' % line | 85             print >>sys.stderr, 'Multiple instructions for URL %s' % line | 
| 86 | 86 | 
| 87         if isinstance(var, set): | 87         if isinstance(var, set): | 
| 88             var.add(line) | 88             var.add(line) | 
| 89         else: | 89         else: | 
| 90             var[line] = currentTarget | 90             var[line] = currentTarget | 
| 91 | 91 | 
| 92     return var | 92     return var | 
| OLD | NEW | 
|---|