on master help sign in
Merge pull request #371 from framasoft/add-useragent-plugin

Add a self user agent plugin

commita9d92c3874dd8d44a5b6ce0e823972823637529a authorAdam Tauber <asciimoo@gmail.com> dateMon 15 Jun 2015, 09:42 (11 years ago) parentc9b8c7f0fe362b
3 files changed+31−5
searx/plugins/__init__.py+2−2 searx/plugins/self_ip.py → searx/plugins/self_info.py+11−2 searx/tests/test_plugins.py+18−1
searx/plugins/__init__.py+2−2
@@ -20,7 +20,7 @@ from searx import logger
2020logger = logger.getChild('plugins')
2121
2222from searx.plugins import (https_rewrite,
23− self_ip,
23+ self_info,
2424 search_on_category_select)
2525
2626required_attrs = (('name', str),
@@ -71,5 +71,5 @@ class PluginStore():
7171
7272plugins = PluginStore()
7373plugins.register(https_rewrite)
74−plugins.register(self_ip)
74+plugins.register(self_info)
7575plugins.register(search_on_category_select)
searx/plugins/self_ip.py → searx/plugins/self_info.pyrenamed+11−2
@@ -15,11 +15,16 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >.
1515(C) 2015 by Adam Tauber, <asciimoo@gmail.com>
1616'''
1717from flask.ext.babel import gettext
18−name = "Self IP"
19−description = gettext('Display your source IP address if the query expression is "ip"')
18+import re
19+name = "Self Informations"
20+description = gettext('Displays your IP if the query is "ip" and your user agent if the query contains "user agent".')
2021default_on = True
2122
2223
24+# Self User Agent regex
25+p = re.compile('.*user[ -]agent.*', re.IGNORECASE)
26+
27+
2328# attach callback to the post search hook
2429# request: flask request object
2530# ctx: the whole local context of the pre search hook
@@ -32,4 +37,8 @@ def post_search(request, ctx):
3237 ip = request.remote_addr
3338 ctx['search'].answers.clear()
3439 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)
3544 return True
searx/tests/test_plugins.py+18−1
@@ -38,10 +38,11 @@ class SelfIPTest(SearxTestCase):
3838
3939 def test_PluginStore_init(self):
4040 store = plugins.PluginStore()
41− store.register(plugins.self_ip)
41+ store.register(plugins.self_info)
4242
4343 self.assertTrue(len(store.plugins) == 1)
4444
45+ # IP test
4546 request = Mock(user_plugins=store.plugins,
4647 remote_addr='127.0.0.1')
4748 request.headers.getlist.return_value = []
@@ -49,3 +50,19 @@ class SelfIPTest(SearxTestCase):
4950 query='ip')}
5051 store.call('post_search', request, ctx)
5152 self.assertTrue('127.0.0.1' in ctx['search'].answers)
53+
54+ # User agent test
55+ request = Mock(user_plugins=store.plugins,
56+ user_agent='Mock')
57+ request.headers.getlist.return_value = []
58+ ctx = {'search': Mock(answers=set(),
59+ query='user-agent')}
60+ store.call('post_search', request, ctx)
61+ self.assertTrue('Mock' in ctx['search'].answers)
62+ ctx = {'search': Mock(answers=set(),
63+ query='user agent')}
64+ store.call('post_search', request, ctx)
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)