#!/usr/local/bin/python2.6 # # $HeadURL: https://svn.spodhuis.org/ksvn/websites/trunk/sks.spodhuis.org/wsgi/sks_peers.py $ # $Id: sks_peers.py 134 2009-03-24 21:32:47Z XXX $ # # Author: Phil Pennock # Copyright 2009; use/modify/copy freely with attribution. # No warranties whatsoever; only use if you're able to assess this code. # """ WSGI application to server up a table of peers of this server. Main entry point is 'application', if 'main' invoked then can choose to start a standalone webserver. """ import gc from math import sqrt import numbers import os import Queue import random import re import signal import socket import sys import syslog import textwrap # purely for /internalz import threading import time import urllib2 from BeautifulSoup import BeautifulSoup import Cheetah.Template import dns.resolver # dnspython import ipaddr import selector sks_data = None sks_data_lock = None startup_lock = threading.Lock() # see sks_peers_init() for rationale wsgi_selector = None kPRIVILEGED_ACCESS = ('94.142.240.6', '94.142.241.88/29', '2a02:898:0:30::31:1', '2a02:898:31::/48') kHOSTNAME = 'sks.spodhuis.org' kHOSTNAME_ALT = 'sks-peer.spodhuis.org' kMAINT_EMAIL = 'address@hidden' kSKS_MEMBERSHIP = '/var/sks/membership' kRESOLVE_THREADS = 20 kSKS_POLL_THREADS = 20 kRECON_PORT = 11370 kHKP_PORT = 11371 kSTATS_FETCH_TIMEOUT = 30 kCOUNTRIES_ZONE = 'zz.countries.nerd.dk.' kIPLIST_SANITY_MIN = 2600000 kIPLIST_NEED_THRESHOLD = 500 # use the sks-keyservers.net value kINTER_SCAN_INTERVAL_SECS = 6 * 3600 kINTER_SCAN_INTERVAL_JITTER = 120 kSYSLOG_NAME = 'sks-peers' kSYSLOG_FACILITY = syslog.LOG_DAEMON kSKIP_ENTRIES = ('localhost', '127.0.0.1', '::1') # This one may *not* contain any variables or directives as it may be used # by quick & dirty handlers, rather than the template system kPAGE_TEMPLATE_BASIC_HEAD = \ """
""" kPAGE_TEMPLATE_BADUSER = kPAGE_TEMPLATE_BASIC_HEAD + """#slurpHost | IP | Geocoding | Mutual | Version | Keys | Distance |
---|