on master help sign in
Merge self_ip and self_useragent into one plugin
41fd748Luc Didry
searx/plugins/__init__.py+2−4
@@ -20,8 +20,7 @@ from searx import logger
20logger = logger.getChild('plugins')
20logger = logger.getChild('plugins')
21
21
22from searx.plugins import (https_rewrite,
22from searx.plugins import (https_rewrite,
23− self_ip,
23+ self,
24− self_useragent,
25 search_on_category_select)
24 search_on_category_select)
26
25
27required_attrs = (('name', str),
26required_attrs = (('name', str),
@@ -72,6 +71,5 @@ class PluginStore():
72
71
73plugins = PluginStore()
72plugins = PluginStore()
74plugins.register(https_rewrite)
73plugins.register(https_rewrite)
75−plugins.register(self_ip)
74+plugins.register(self)
76−plugins.register(self_useragent)
77plugins.register(search_on_category_select)
75plugins.register(search_on_category_select)
searx/plugins/self_ip.py → searx/plugins/self.pyrenamed+11−2
@@ -15,11 +15,16 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >.
15(C) 2015 by Adam Tauber, <asciimoo@gmail.com>
15(C) 2015 by Adam Tauber, <asciimoo@gmail.com>
16'''
16'''
17from flask.ext.babel import gettext
17from flask.ext.babel import gettext
18+import re
18−name = "Self IP"
19+name = "Self Informations"
19−description = gettext('Display your source IP address if the query expression is "ip"')
20+description = gettext('Correct Duckduckgo instant answers with your own informations (IP and User Agent)')
20default_on = True
21default_on = True
21
22
22
23
24+# Self User Agent regex
25+p = re.compile('.*user[ -]agent.*', re.IGNORECASE)
26+
27+
23# attach callback to the post search hook
28# attach callback to the post search hook
24# request: flask request object
29# request: flask request object
25# ctx: the whole local context of the pre search hook
30# ctx: the whole local context of the pre search hook
@@ -32,4 +37,8 @@ def post_search(request, ctx):
32 ip = request.remote_addr
37 ip = request.remote_addr
33 ctx['search'].answers.clear()
38 ctx['search'].answers.clear()
34 ctx['search'].answers.add(ip)
39 ctx['search'].answers.add(ip)
40+ elif p.match(ctx['search'].query):
41+ ua = request.user_agent
42+ ctx['search'].answers.clear()
43+ ctx['search'].answers.add(ua)
35 return True
44 return True
searx/plugins/self_useragent.pydeleted−36
@@ -1,36 +0,0 @@
1−'''
2−searx is free software: you can redistribute it and/or modify
3−it under the terms of the GNU Affero General Public License as published by
4−the Free Software Foundation, either version 3 of the License, or
5−(at your option) any later version.
6−
7−searx is distributed in the hope that it will be useful,
8−but WITHOUT ANY WARRANTY; without even the implied warranty of
9−MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10−GNU Affero General Public License for more details.
11−
12−You should have received a copy of the GNU Affero General Public License
13−along with searx. If not, see < http://www.gnu.org/licenses/ >.
14−
15−(C) 2015 by Adam Tauber, <asciimoo@gmail.com>
16−'''
17−from flask.ext.babel import gettext
18−import re
19−name = "Self User Agent"
20−description = gettext('Display your own User Agent if the query expression contains "user agent" or "user-agent"')
21−default_on = True
22−
23−
24−# User Agent query regex
25−p = re.compile('user[ -]agent', re.IGNORECASE)
26−
27−
28−# attach callback to the post search hook
29−# request: flask request object
30−# ctx: the whole local context of the pre search hook
31−def post_search(request, ctx):
32− if p.match(ctx['search'].query):
33− ua = request.user_agent
34− ctx['search'].answers.clear()
35− ctx['search'].answers.add(ua)
36− return True
searx/tests/test_plugins.py+5−3
@@ -38,10 +38,9 @@ class SelfIPTest(SearxTestCase):
38
38
39 def test_PluginStore_init(self):
39 def test_PluginStore_init(self):
40 store = plugins.PluginStore()
40 store = plugins.PluginStore()
41− store.register(plugins.self_ip)
41+ store.register(plugins.self)
42− store.register(plugins.self_useragent)
43
42
44− self.assertTrue(len(store.plugins) == 2)
43+ self.assertTrue(len(store.plugins) == 1)
45
44
46 # IP test
45 # IP test
47 request = Mock(user_plugins=store.plugins,
46 request = Mock(user_plugins=store.plugins,
@@ -64,3 +63,6 @@ class SelfIPTest(SearxTestCase):
64 query='user agent')}
63 query='user agent')}
65 store.call('post_search', request, ctx)
64 store.call('post_search', request, ctx)
66 self.assertTrue('Mock' in ctx['search'].answers)
65 self.assertTrue('Mock' in ctx['search'].answers)
66+ ctx = {'search': Mock(answers=set(),
67+ query='What is my User-Agent?')}
68+ store.call('post_search', request, ctx)