------------------------------------------------------------------------ r355 | XXX | 2012-05-25 19:10:34 +0000 (Fri, 25 May 2012) | 1 line Handle GnuKS ------------------------------------------------------------------------ r353 | XXX | 2012-05-13 06:15:12 +0000 (Sun, 13 May 2012) | 1 line For peer info page, show ? when peer's peer's status is unknown ------------------------------------------------------------------------ r347 | XXX | 2012-04-29 03:16:14 +0000 (Sun, 29 Apr 2012) | 5 lines country filter added CGI param "countries", comma-separated list of countries to restrict results to. snapshot dump/load once more working. more checks for no IPs left after filtering, now treated as error rather than non-error empty. ------------------------------------------------------------------------ r345 | XXX | 2012-04-29 00:32:48 +0000 (Sun, 29 Apr 2012) | 1 line ips-valid query param "proxies" to drop servers which present sks_www as Server header ------------------------------------------------------------------------ r339 | XXX | 2012-04-06 13:32:55 +0000 (Fri, 06 Apr 2012) | 1 line Support for ?minimum_version on /ip-valid ------------------------------------------------------------------------ r337 | XXX | 2012-03-20 12:25:42 +0000 (Tue, 20 Mar 2012) | 1 line added column, so errors span one more col ------------------------------------------------------------------------ r336 | XXX | 2012-03-20 12:19:09 +0000 (Tue, 20 Mar 2012) | 1 line collect & report Server: header ------------------------------------------------------------------------ r335 | XXX | 2012-03-20 07:58:33 +0000 (Tue, 20 Mar 2012) | 4 lines Simple test program, with threads. This managed to demonstrate that with constant thread-ids, with same pid, the thread just was not running. Found needed "enable-threads" in uwsgi configuration. ------------------------------------------------------------------------ r334 | XXX | 2012-03-20 02:19:38 +0000 (Tue, 20 Mar 2012) | 1 line revert to SCRIPT_NAME ------------------------------------------------------------------------ r333 | XXX | 2012-03-20 02:18:33 +0000 (Tue, 20 Mar 2012) | 1 line switch outright to PATH_INFO ∵ uwsgi is flaky ------------------------------------------------------------------------ r332 | XXX | 2012-03-20 02:17:06 +0000 (Tue, 20 Mar 2012) | 1 line get app root from PATH_INFO if SCRIPT_NAME missng ------------------------------------------------------------------------ r323 | XXX | 2012-01-05 09:44:10 +0000 (Thu, 05 Jan 2012) | 1 line for self, mutual = n/a ------------------------------------------------------------------------ r310 | XXX | 2011-09-13 08:11:11 +0000 (Tue, 13 Sep 2011) | 1 line fix missing klass ------------------------------------------------------------------------ r309 | XXX | 2011-09-13 08:01:04 +0000 (Tue, 13 Sep 2011) | 1 line drop extraneous "self" from host_resolve() ------------------------------------------------------------------------ r308 | XXX | 2011-09-13 07:40:43 +0000 (Tue, 13 Sep 2011) | 1 line Add host_resolve(), unjank AddressInfo() ------------------------------------------------------------------------ r307 | XXX | 2011-09-13 07:05:17 +0000 (Tue, 13 Sep 2011) | 1 line python2.7 and source address configuration ------------------------------------------------------------------------ r285 | XXX | 2011-05-20 09:48:31 +0000 (Fri, 20 May 2011) | 3 lines Set a User-Agent header. Default to a scan interval of every 4 hours. ------------------------------------------------------------------------ r281 | XXX | 2011-04-19 18:01:43 +0000 (Tue, 19 Apr 2011) | 2 lines Fix copyright year. ------------------------------------------------------------------------ r280 | XXX | 2011-04-19 18:01:00 +0000 (Tue, 19 Apr 2011) | 5 lines JSON output format for IP generation. Grossly hacky, code needs refactoring. [delayed commit] ------------------------------------------------------------------------ r258 | XXX | 2010-12-28 08:02:52 +0000 (Tue, 28 Dec 2010) | 8 lines Don't include all items in /handle-json -- skip those without DNS and for which we haven't seen a 'version'. Unless 'really_all' is specified. Some attempts to get debug() working with standalone. Need to figure out why only the very first debug() call actually results in a stderr message. Fix a dup entry in data extraction, cut/paste glitch with 'version'. ------------------------------------------------------------------------ r254 | XXX | 2010-12-28 04:17:10 +0000 (Tue, 28 Dec 2010) | 2 lines Added /hostnames-json ------------------------------------------------------------------------ r253 | XXX | 2010-12-28 03:36:34 +0000 (Tue, 28 Dec 2010) | 2 lines syntax nit ------------------------------------------------------------------------ r252 | XXX | 2010-12-28 03:35:54 +0000 (Tue, 28 Dec 2010) | 2 lines Loading config file called before we have the sks_data_lock. ------------------------------------------------------------------------ r251 | XXX | 2010-12-28 03:30:21 +0000 (Tue, 28 Dec 2010) | 6 lines Allow for dynamic reloading of the config file, triggered on attempts to access privileged ports. DoS impact: lots of FS stats, which should be cached by the kernel in the FS cache, so minimal. ------------------------------------------------------------------------ r247 | XXX | 2010-11-05 02:18:38 +0000 (Fri, 05 Nov 2010) | 4 lines On peer-info page, make the hostname a link to that hosts's stats URL. Fix config loading for the standalone case. ------------------------------------------------------------------------ r237 | XXX | 2010-07-30 22:14:51 +0000 (Fri, 30 Jul 2010) | 2 lines Remove /fooz ------------------------------------------------------------------------ r236 | XXX | 2010-07-30 22:13:43 +0000 (Fri, 30 Jul 2010) | 2 lines Shuffle environ fetch of DOCUMENT_ROOT to use WSGI environ instead of os. ------------------------------------------------------------------------ r235 | XXX | 2010-07-30 22:08:57 +0000 (Fri, 30 Jul 2010) | 2 lines More debugging ------------------------------------------------------------------------ r234 | XXX | 2010-07-30 22:03:20 +0000 (Fri, 30 Jul 2010) | 2 lines /fooz for debugging kPRIVILEGED_ACCESS ------------------------------------------------------------------------ r233 | XXX | 2010-07-30 21:53:45 +0000 (Fri, 30 Jul 2010) | 2 lines Don't reload config on every request ------------------------------------------------------------------------ r231 | XXX | 2010-07-30 21:32:31 +0000 (Fri, 30 Jul 2010) | 2 lines Use an external config file. Move trusted IPs out to that. ------------------------------------------------------------------------ r228 | XXX | 2010-06-05 05:25:01 +0000 (Sat, 05 Jun 2010) | 3 lines Switch from syslog/stderr to logging module with optional standard config file. Deal with API changes in updated pygraph which broke us. Again. ------------------------------------------------------------------------ r217 | XXX | 2010-03-28 05:47:55 +0000 (Sun, 28 Mar 2010) | 4 lines Move away from BeautifulSoup data model :-( because html5lib has deprecated support for it. lxml treebuilder, without namespaces, using xpath. urgh. ------------------------------------------------------------------------ r216 | XXX | 2010-03-22 21:37:11 +0000 (Mon, 22 Mar 2010) | 6 lines ainfo Exception matching fix. newline addition. Open issue: html5lib will be removing the beautifulsoup treebuilder, need to change the calling API. ------------------------------------------------------------------------ r205 | XXX | 2010-02-04 11:02:31 +0000 (Thu, 04 Feb 2010) | 3 lines Module "ipaddr" API changes. Now works with 2.0.0 and I have not made an effort to preserve backwards compatibility. ------------------------------------------------------------------------ r202 | XXX | 2010-01-04 07:11:47 +0000 (Mon, 04 Jan 2010) | 4 lines Implement quitz. Do it in a different way to rescanz ... why did I make rescanz so complicated? If running standalone, log to stderr instead of syslog. ------------------------------------------------------------------------ r191 | XXX | 2009-10-12 09:49:02 +0000 (Mon, 12 Oct 2009) | 5 lines BeautifulSoup -> html5lib A couple of workarounds for incomplete API matching. Cleanup some host_namespace mappings for the main page rendering; the sksnode always had an attribute 'exception', since it's initialised to None. Oops. ------------------------------------------------------------------------ r190 | XXX | 2009-10-12 07:56:05 +0000 (Mon, 12 Oct 2009) | 4 lines A broken membership file revealed a bug in my use of str.split(), confusing max splits with max number of elements resulting from split. Fix that, work around the broken membership files. ------------------------------------------------------------------------ r189 | XXX | 2009-10-12 06:07:10 +0000 (Mon, 12 Oct 2009) | 5 lines pygraph 1.6.1 removed the write method and moved it to a new module. So use that if write not present. Some minor hacky protection against bad data coming back on a stats page. ------------------------------------------------------------------------ r185 | XXX | 2009-08-12 06:24:08 +0000 (Wed, 12 Aug 2009) | 2 lines On the per-peer info page, sort hostnames and turn them into links. ------------------------------------------------------------------------ r183 | XXX | 2009-07-23 05:29:12 +0000 (Thu, 23 Jul 2009) | 2 lines More API fixes for pygraph >= 1.6.0 ------------------------------------------------------------------------ r182 | XXX | 2009-07-23 05:13:59 +0000 (Thu, 23 Jul 2009) | 2 lines pygraph changed module name with release 1.6.0; graph -> pygraph. ------------------------------------------------------------------------ r174 | XXX | 2009-05-19 07:35:59 +0000 (Tue, 19 May 2009) | 3 lines For the IP list generation, keep the v1.0.10 servers around long enough to calculate stats and only drop them afterwards. ------------------------------------------------------------------------ r172 | XXX | 2009-04-18 08:40:49 +0000 (Sat, 18 Apr 2009) | 2 lines /peer-info page ------------------------------------------------------------------------ r170 | XXX | 2009-04-07 06:56:52 +0000 (Tue, 07 Apr 2009) | 8 lines Stupid. Deleting a reference to a thread doesn't kill the thread and Python doesn't have a way to push an exception into a current thread, thus the shutdown logic I wrote for DataGatherer before. Rather than rework it all now, just create the threads before the loop, as we used to, which means that snapshot functionality is now broken. ------------------------------------------------------------------------ r169 | XXX | 2009-04-05 09:30:59 +0000 (Sun, 05 Apr 2009) | 4 lines More lock-in to Python 2.6+ except ExceptionClass as varname. import Queue as queue. ------------------------------------------------------------------------ r168 | XXX | 2009-04-05 08:20:43 +0000 (Sun, 05 Apr 2009) | 2 lines future imports at start to appease the interpreter. ------------------------------------------------------------------------ r167 | XXX | 2009-04-05 08:19:06 +0000 (Sun, 05 Apr 2009) | 4 lines Future-proofing: from __future__ import print_statement Clean up _sort_hostnames() which was using cmp unnecessarily ------------------------------------------------------------------------ r166 | XXX | 2009-04-05 07:58:36 +0000 (Sun, 05 Apr 2009) | 4 lines Show DNS failure. Remove extraneous import of "types" that had been used briefly during snapshot support development but was unneeded by time of commit. ------------------------------------------------------------------------ r165 | XXX | 2009-04-04 19:46:16 +0000 (Sat, 04 Apr 2009) | 2 lines Snapshot dump/load. ------------------------------------------------------------------------ r159 | XXX | 2009-04-03 00:21:49 +0000 (Fri, 03 Apr 2009) | 8 lines And algorithm 4 makes its debut. Previously, I worked across all IPs, which meant that servers with AAAA records had more weight. Shame. Still, should fix it, so did. Calculations are done with one IP per server, reported IPs include all IPs for winning servers. Also shuffled pdp.query into a constant and shuffled the _kWSGI_ indexes around. ------------------------------------------------------------------------ r158 | XXX | 2009-04-02 23:39:33 +0000 (Thu, 02 Apr 2009) | 7 lines For /ip-valid fix the maximum bucket selection; was a bug, were choosing the highest-numbered bucket, not largest bucket. Add simple histogram to /ip-valid-stats This is now alg_3 (implementation changed, even if it was a bug-fix, so alg number bumped) ------------------------------------------------------------------------ r157 | XXX | 2009-04-02 14:47:02 +0000 (Thu, 02 Apr 2009) | 5 lines Sanitise in GetGraph: If sks result failed, move sks attribute to sks_failure Add keycount and version attributes Add multiple IP attributes. ------------------------------------------------------------------------ r156 | XXX | 2009-04-02 13:48:44 +0000 (Thu, 02 Apr 2009) | 2 lines Restore depth tracking. ------------------------------------------------------------------------ r155 | XXX | 2009-04-02 12:54:49 +0000 (Thu, 02 Apr 2009) | 3 lines Change algorithm for /ip-valid to better deal with daily jitter. Let /ip-valid?threshold= be used to adjust the threshold. ------------------------------------------------------------------------ r154 | XXX | 2009-04-02 11:54:28 +0000 (Thu, 02 Apr 2009) | 10 lines Completely overhaul the walk/graphing thing, replacing it. Now we have a SpiderManager which maintains state in a graph object. Along the way, pick up exception backtrace preservation, better clearing of data from previous runs, some more exception handling (DNS area), changed ai default iter to return IP addresses, etc. Removed nodata cmdline option. Depth preservation currently not implemented. ------------------------------------------------------------------------ r153 | XXX | 2009-03-30 05:24:38 +0000 (Mon, 30 Mar 2009) | 4 lines For the /ip-valid link, in the tags field, add a second tag just to make it clear that this is comma-separated. Use "alg_1" to describe the filtering algorithm. ------------------------------------------------------------------------ r152 | XXX | 2009-03-30 05:21:16 +0000 (Mon, 30 Mar 2009) | 2 lines I can spell "bucket", really I can. ------------------------------------------------------------------------ r151 | XXX | 2009-03-30 05:08:47 +0000 (Mon, 30 Mar 2009) | 2 lines Let graph-dot respond to HEAD ------------------------------------------------------------------------ r149 | XXX | 2009-03-29 05:46:58 +0000 (Sun, 29 Mar 2009) | 2 lines Show bucket sizes expanded out (*3000) too ------------------------------------------------------------------------ r148 | XXX | 2009-03-29 03:35:49 +0000 (Sun, 29 Mar 2009) | 2 lines /graph-dot resiliency to initial scan ------------------------------------------------------------------------ r146 | XXX | 2009-03-29 03:25:01 +0000 (Sun, 29 Mar 2009) | 3 lines Add /ip-valid-stats A bit ugly but avoids duplicating logic. ------------------------------------------------------------------------ r145 | XXX | 2009-03-27 10:44:59 +0000 (Fri, 27 Mar 2009) | 3 lines I really should have tested the previous commit. Deal with the actual data type used. ------------------------------------------------------------------------ r144 | XXX | 2009-03-27 10:39:29 +0000 (Fri, 27 Mar 2009) | 2 lines Dot graphs get disposition filename ------------------------------------------------------------------------ r143 | XXX | 2009-03-27 10:31:29 +0000 (Fri, 27 Mar 2009) | 6 lines Add /graph-dot to generate GraphViz .dot format results. Some more sanity checks added. I really need to clean up some of the queuing/object model maintenance and caching. ------------------------------------------------------------------------ r142 | XXX | 2009-03-26 03:42:41 +0000 (Thu, 26 Mar 2009) | 2 lines Direct peers now at depth 1, not 0. Construct that total for display. ------------------------------------------------------------------------ r141 | XXX | 2009-03-25 09:25:32 +0000 (Wed, 25 Mar 2009) | 3 lines I had *kwargs instead of *args, which is just confusion waiting to happen. My brain must not have been in gear at the time. ------------------------------------------------------------------------ r140 | XXX | 2009-03-25 07:09:08 +0000 (Wed, 25 Mar 2009) | 2 lines Move stylesheet URL and favicon link to config variables. ------------------------------------------------------------------------ r139 | XXX | 2009-03-25 04:40:55 +0000 (Wed, 25 Mar 2009) | 5 lines Start with ourselves at depth 0, our peers are then at depth 1. This lets our own IP be listed in the pool. More comments explaining tunables, and I surrendered and used divider comments. ------------------------------------------------------------------------ r138 | XXX | 2009-03-25 04:16:04 +0000 (Wed, 25 Mar 2009) | 2 lines Hourly ------------------------------------------------------------------------ r137 | XXX | 2009-03-24 23:54:26 +0000 (Tue, 24 Mar 2009) | 2 lines Include scan finish time in /ip-valid ------------------------------------------------------------------------ r136 | XXX | 2009-03-24 23:45:25 +0000 (Tue, 24 Mar 2009) | 4 lines Don't register signal handlers when started via application() Signal handlers when embedded are bad; mod_wsgi intercepts handler registration attempts as protection, and complains. ------------------------------------------------------------------------ r135 | XXX | 2009-03-24 23:33:37 +0000 (Tue, 24 Mar 2009) | 2 lines Nits -- svn tags, copyright statement, module docstring, __author__ ------------------------------------------------------------------------ r134 | XXX | 2009-03-24 21:32:47 +0000 (Tue, 24 Mar 2009) | 2 lines /ip-valid URL ------------------------------------------------------------------------ r133 | XXX | 2009-03-24 20:18:06 +0000 (Tue, 24 Mar 2009) | 5 lines Catch exceptions from BeautifulSoup parsing; keeps keyserver.stack.nl from dropping to '?' depth. Various constraints added to depth overwriting while chasing this. Fix internalz list/set display to newline-terminate. ------------------------------------------------------------------------ r132 | XXX | 2009-03-24 10:26:45 +0000 (Tue, 24 Mar 2009) | 2 lines Various commented out debugs now get 'pass' following them. ------------------------------------------------------------------------ r131 | XXX | 2009-03-24 10:23:51 +0000 (Tue, 24 Mar 2009) | 9 lines Handle duplicate elimination correctly. Don't let *reported* depth spiral upwards. Report alternative hostnames. Report total count seen in mesh. Skip self by adding to seen dict, rather than blacklisting AddressInfo gets class data and a class lock. Overhaul internals of RecursingWalkManager. ------------------------------------------------------------------------ r130 | XXX | 2009-03-24 04:55:44 +0000 (Tue, 24 Mar 2009) | 2 lines When spidering, skip myself. ------------------------------------------------------------------------ r129 | XXX | 2009-03-24 04:52:33 +0000 (Tue, 24 Mar 2009) | 3 lines If we re-see a node that we already have and the depth is less than the depth on record, set depth to the smaller value. ------------------------------------------------------------------------ r128 | XXX | 2009-03-24 04:45:19 +0000 (Tue, 24 Mar 2009) | 2 lines Adjust table sizing rows/columns for new column ------------------------------------------------------------------------ r127 | XXX | 2009-03-24 04:42:45 +0000 (Tue, 24 Mar 2009) | 3 lines Actually test the previous change. Notice that .collect() only gets latest changes. Fix that. ------------------------------------------------------------------------ r126 | XXX | 2009-03-24 04:37:06 +0000 (Tue, 24 Mar 2009) | 2 lines Racy completion of data collection fixed. ------------------------------------------------------------------------ r125 | XXX | 2009-03-24 04:06:02 +0000 (Tue, 24 Mar 2009) | 2 lines Rescan time ago -- populate value of how long it has been ------------------------------------------------------------------------ r124 | XXX | 2009-03-24 04:02:52 +0000 (Tue, 24 Mar 2009) | 2 lines Walk outwards, spidering the mesh. ------------------------------------------------------------------------ r123 | XXX | 2009-03-23 05:20:34 +0000 (Mon, 23 Mar 2009) | 2 lines In the DG thread, garbage-collect before sleeping. ------------------------------------------------------------------------ r122 | XXX | 2009-03-23 05:15:01 +0000 (Mon, 23 Mar 2009) | 2 lines Add some missing newlines for /internalz ------------------------------------------------------------------------ r121 | XXX | 2009-03-23 04:42:38 +0000 (Mon, 23 Mar 2009) | 2 lines Rename script to be more pythonic. Have updated mod_wsgi config to match. ------------------------------------------------------------------------ r120 | XXX | 2009-03-23 04:02:29 +0000 (Mon, 23 Mar 2009) | 2 lines /internalz better mod_wsgi support ------------------------------------------------------------------------ r119 | XXX | 2009-03-23 03:58:46 +0000 (Mon, 23 Mar 2009) | 2 lines Sort out /helpz links when hooked under a namespace other than top level ------------------------------------------------------------------------ r118 | XXX | 2009-03-23 03:50:37 +0000 (Mon, 23 Mar 2009) | 2 lines Linkify /helpz ------------------------------------------------------------------------ r117 | XXX | 2009-03-23 03:38:44 +0000 (Mon, 23 Mar 2009) | 2 lines /helpz ------------------------------------------------------------------------ r116 | XXX | 2009-03-23 03:29:00 +0000 (Mon, 23 Mar 2009) | 2 lines /internalz ------------------------------------------------------------------------ r115 | XXX | 2009-03-23 02:44:51 +0000 (Mon, 23 Mar 2009) | 2 lines ip.IsLoopback() only for IPv4 ------------------------------------------------------------------------ r114 | XXX | 2009-03-23 02:19:15 +0000 (Mon, 23 Mar 2009) | 4 lines Trigger rescan on more events: /rescanz SIGUSR1 ------------------------------------------------------------------------ r113 | XXX | 2009-03-22 11:08:02 +0000 (Sun, 22 Mar 2009) | 3 lines Only note config changed for the first such visitor: have rescan() return bool. nit: close parens in HTML ------------------------------------------------------------------------ r112 | XXX | 2009-03-22 11:04:20 +0000 (Sun, 22 Mar 2009) | 2 lines In Initialised log line, include process uid. ------------------------------------------------------------------------ r111 | XXX | 2009-03-22 11:01:43 +0000 (Sun, 22 Mar 2009) | 8 lines Bug-fix sending of commands: we now linger after event set, so need to .clear() it Provide way for wsgi handler to delay-kill the process. Syslog events. Typo-fix to let the config-changed notice appear in web-page. Add web-page notice of scanning active. Rename kSKS_CONFIG to kSKS_MEMBERSHIP. ------------------------------------------------------------------------ r106 | XXX | 2009-03-21 11:13:52 +0000 (Sat, 21 Mar 2009) | 4 lines Let DG thread be sent commands, rather than just events. Auto re-scan on membership update. Use "with sks_data_lock" instead of .acquire()/.release() ------------------------------------------------------------------------ r99 | XXX | 2009-03-04 10:17:02 +0000 (Wed, 04 Mar 2009) | 3 lines Make the default mode back into a CGI; so in absense of 'standalone', when run with __name__ == '__main__' Replace normal 404 with our own. ------------------------------------------------------------------------ r98 | XXX | 2009-03-04 09:42:54 +0000 (Wed, 04 Mar 2009) | 3 lines Implement IP-based access restriction for *z handlers. Extend cmdline standalone support to include specifying host. ------------------------------------------------------------------------ r97 | XXX | 2009-03-04 09:00:18 +0000 (Wed, 04 Mar 2009) | 4 lines Work for both mod_wsgi and make_server by hooking both '' and '/'. For *z handlers, sort results. Show more info in threadz. Switch some threading.Thread stuff to newer attribute-based API. ------------------------------------------------------------------------ r96 | XXX | 2009-03-04 04:30:26 +0000 (Wed, 04 Mar 2009) | 2 lines Aaargh. s/length/len/ ------------------------------------------------------------------------ r95 | XXX | 2009-03-04 04:29:44 +0000 (Wed, 04 Mar 2009) | 2 lines Fix path chomping ------------------------------------------------------------------------ r94 | XXX | 2009-03-04 04:26:37 +0000 (Wed, 04 Mar 2009) | 3 lines Stupid brain. .replace(, , 1) and don't forget the . ------------------------------------------------------------------------ r93 | XXX | 2009-03-04 04:22:52 +0000 (Wed, 04 Mar 2009) | 3 lines Probably fixed the selector dispatch from mod_wsgi. Moved handle_environz to /environz ------------------------------------------------------------------------ r92 | XXX | 2009-03-04 04:14:41 +0000 (Wed, 04 Mar 2009) | 3 lines Implement handle_environz Really briefly use it as global handler. ------------------------------------------------------------------------ r91 | XXX | 2009-03-04 04:11:29 +0000 (Wed, 04 Mar 2009) | 3 lines Bypass application() for main(). Temporary hack, edit PATH_INFO to strip /sks-peers ------------------------------------------------------------------------ r90 | XXX | 2009-03-04 04:07:32 +0000 (Wed, 04 Mar 2009) | 5 lines Switch to 'selector' for WSGI dispatch. Implement a /threadz URL Correct the doc-string I messed up in previous commit. ------------------------------------------------------------------------ r89 | XXX | 2009-03-04 03:30:07 +0000 (Wed, 04 Mar 2009) | 2 lines Document DataGatherer.kill() ------------------------------------------------------------------------ r88 | XXX | 2009-03-04 03:29:19 +0000 (Wed, 04 Mar 2009) | 12 lines Use an extra lock to avoid concurrent init race-condition. Only return response for GET method. Move DataGatherer thread to have a kill() API instead of the caller having to know about an event. Refactor basic setup from main() to sks_peers_init(). Refactor main HTML generation back to a handler, handle_peers_page, with application() being purely an entry point which handles init and type filtering. Docstrings, style clean-ups. ------------------------------------------------------------------------ r86 | XXX | 2009-02-28 14:28:34 +0000 (Sat, 28 Feb 2009) | 2 lines Doh, syntax error ------------------------------------------------------------------------ r85 | XXX | 2009-02-28 14:27:08 +0000 (Sat, 28 Feb 2009) | 3 lines Doh, forgot to strip port from the definition of what we look for in the hostname; also, deal better with machines still gathering statistics. ------------------------------------------------------------------------ r84 | XXX | 2009-02-28 14:19:51 +0000 (Sat, 28 Feb 2009) | 2 lines Re-enable node checking ------------------------------------------------------------------------ r83 | XXX | 2009-02-28 14:19:03 +0000 (Sat, 28 Feb 2009) | 3 lines Be more resistant to internal whitespace in Gossip Peers table. Remove the debugging block on one of the entries. ------------------------------------------------------------------------ r82 | XXX | 2009-02-28 14:04:45 +0000 (Sat, 28 Feb 2009) | 3 lines That mostly fixed it, but the two- on one line came back to bite me. Fix both. ------------------------------------------------------------------------ r81 | XXX | 2009-02-28 14:03:29 +0000 (Sat, 28 Feb 2009) | 4 lines Bug-fix previous commit, missed noticing exception reported via web UI. Temporarily disable the remote checking. Try to fix the table layout for the error case. ------------------------------------------------------------------------ r80 | XXX | 2009-02-28 13:58:03 +0000 (Sat, 28 Feb 2009) | 2 lines Make Ctrl-C work, by using a shutdown event for the data-gathering thread. ------------------------------------------------------------------------ r78 | XXX | 2009-02-28 13:29:51 +0000 (Sat, 28 Feb 2009) | 3 lines When wsgi module is embedded in another program, main() isn't run. Bootstrap ourselves in that case. ------------------------------------------------------------------------ r77 | XXX | 2009-02-28 13:25:09 +0000 (Sat, 28 Feb 2009) | 3 lines Okay, that was the cause of the UnboundLocalError exception. Now lets find the real problem. ------------------------------------------------------------------------ r76 | XXX | 2009-02-28 13:23:42 +0000 (Sat, 28 Feb 2009) | 2 lines In exception case, raise StopIteration() ------------------------------------------------------------------------ r75 | XXX | 2009-02-28 13:17:47 +0000 (Sat, 28 Feb 2009) | 2 lines sks-peers makes the move to a wsgi application ------------------------------------------------------------------------