@@ -44,6 +44,15 @@ def order_keys(x):
4444 return '1_%s' % x
4545
4646
47+ def lookup (ip , rdap = False ):
48+ obj = IPWhois (ip )
49+ if rdap :
50+ # TODO: RDAP output includes less relevant info, needs a dedicated formatter
51+ return obj .lookup_rdap ()
52+ else :
53+ return obj .lookup ()
54+
55+
4756def format_new_lines (s ):
4857 return s .replace ('\n ' , '<br/>' )
4958
@@ -92,20 +101,7 @@ def format_link_list(header, ls):
92101 return ret
93102
94103
95- def lookup (ip , rdap = False ):
96- obj = IPWhois (ip )
97- if rdap :
98- # TODO: RDAP output includes less relevant info, needs a dedicated formatter
99- return obj .lookup_rdap ()
100- else :
101- return obj .lookup ()
102-
103-
104- if __name__ == '__main__' :
105-
106- if os .path .exists (LOGDIR ):
107- cgitb .enable (display = 0 , logdir = LOGDIR )
108- form = cgi .FieldStorage ()
104+ def format_page (form ):
109105 ip = form .getfirst ('ip' , '' )
110106 provider = form .getfirst ('provider' , '' ).upper ()
111107 fmt = form .getfirst ('format' , 'html' ).lower ()
@@ -129,17 +125,12 @@ def lookup(ip, rdap=False):
129125 error = True
130126
131127 if provider in PROVIDERS :
132- print ('Location: %s' % PROVIDERS [provider ](ip ))
133- print ('' )
134- exit ()
128+ return 'Location: {}\n \n ' .format (PROVIDERS [provider ](ip ))
135129
136130 if fmt == 'json' and do_lookup :
137- print ('Content-type: text/plain' )
138- print ('' )
139- print (json .dumps (result ))
140- exit ()
141-
142- print ('''Content-type: text/html
131+ return 'Content-type: text/plain\n \n {}\n ' .format (json .dumps (result ))
132+
133+ ret = '''Content-type: text/html
143134
144135<!DOCTYPE HTML>
145136<html lang="en">
@@ -180,7 +171,7 @@ def lookup(ip, rdap=False):
180171 css = css ,
181172 ip = ip ,
182173 error = 'has-error' if error else '' ,
183- af = 'autofocus onFocus="this.select();"' if (not do_lookup or error ) else '' ))
174+ af = 'autofocus onFocus="this.select();"' if (not do_lookup or error ) else '' )
184175
185176 if do_lookup :
186177 link = 'https://tools.wmflabs.org/whois/%s/lookup' % ip
@@ -189,7 +180,7 @@ def lookup(ip, rdap=False):
189180 hostname = socket .gethostbyaddr (ip )[0 ]
190181 except IOError :
191182 pass
192- print ( '''
183+ ret += '''
193184<div class="panel panel-default"><div class="panel-heading">{hostname}</div>
194185<div class="panel-body">{table}</div></div>
195186
@@ -201,42 +192,50 @@ def lookup(ip, rdap=False):
201192</div>
202193''' .format (hostname = '<strong>%s</strong>' % hostname if hostname else '<em>(No corresponding host name retrieved)</em>' ,
203194 table = format_table (result , ip ),
204- link = link ))
195+ link = link )
205196
206- print ( '''</div>
197+ ret += '''</div>
207198<div class="col-sm-3">
208- ''' )
209- print ( format_link_list (
199+ '''
200+ ret += format_link_list (
210201 'Other tools' ,
211202 [(q (ip ),
212203 'Look up %s at %s' % (ip , name ),
213204 '<small class="el-ip">%s</small><span class="el-prov"> @%s</span>' % (ip , name ),
214205 ['el' ])
215206 for (name , q ) in sorted (TOOLS .items ())]
216- ))
207+ )
217208
218- print ( format_link_list (
209+ ret += format_link_list (
219210 'Sources' ,
220211 [(q (ip ),
221212 'Look up %s at %s' % (ip , name ),
222213 '<small class="el-ip">%s</small><span class="el-prov"> @%s</span>' % (ip , name ),
223214 ['el' , 'active' ] if result .get ('asn_registry' , '' ).upper () == name else ['el' ])
224215 for (name , q ) in sorted (PROVIDERS .items ())]
225- ))
216+ )
226217
227- print ( '''
218+ ret += '''
228219</div>
229220</div>
230221
231222<footer><div class="container">
232223<hr>
233224<p class="text-center text-muted">
234- <a href="https://tools.wmflabs.org/whois/ ">Whois Gateway</a>
225+ <a href="{site} ">Whois Gateway</a>
235226<small>(<a href="https://github.com/whym/whois-gateway">source code</a>,
236227 <a href="https://github.com/whym/whois-gateway#api">API</a>)</small>
237228 on <a href="https://tools.wmflabs.org">Tool Labs</a> /
238229<a href="https://github.com/whym/whois-gateway/issues">Issues?</a>
239230</p>
240231</div></footer>
241232</div>
242- </body></html>''' % {'site' : SITE })
233+ </body></html>''' .format (site = SITE )
234+
235+ return ret
236+
237+ if __name__ == '__main__' :
238+
239+ if os .path .exists (LOGDIR ):
240+ cgitb .enable (display = 0 , logdir = LOGDIR )
241+ print (format_page (cgi .FieldStorage ()))
0 commit comments