<commit_before># TODOS #

## Known bugs ##

   * XML-RPC CNAME creation fail
   * Signup message weirdness
   * Poor handling of reconfiguration

   * WONTFIX: SSL verification fail - unfixable with pyOpenSSL :-(


## Code cleanup ##

   * Files are still too big, github chokes
   * Function naming is inconsistent
   * Need docstrings all over pagekite source
   * Unneeded ( ) in a few places
   * Bad form: if this: thenfoo


## General ##

   * 0.5.x: Add UI to report available upgrades at the back-end.
   * 0.5.x: Windows: Auto upgrades?


## Built-in HTTPD ##

   * 0.5: Allow uploading, somehow
   * 0.5: Allow access controls based on OpenID/Twitter/Facebook ?
   * 0.5: Create javascript for making directory listings prettier
     * Add basic photo albums
     * Add feature to thumbnail/preview/re-encode images/audio/video


## Packaging ##

   * 0.5: Create Windows distribution
   * 0.5: Create Windows .msi

   * 0.6: Package lapcat
   * 0.6: Create Mac OS X GUI and package: Talk to Sveinbjörn?


### Optimization ###

   * Add QoS and bandwidth shaping
   * Add a scheduler for deferred/periodic processing
   * Replace string concatenation ops with lists of buffers

### Protocols ###

   * Make tunnel creation more stubborn, try multiple ports, etc.
   * Add XMPP and incoming SMTP support
   * Replace/augment current tunnel auth with SSL certificates

<commit_msg>Plans<commit_after># TODOS #

## Known bugs ##

   * XML-RPC CNAME creation fail
   * Signup message weirdness
   * Poor handling of reconfiguration
   * Poor handling of FD exhaustion

   * WONTFIX: SSL verification fail - unfixable with pyOpenSSL :-(


## Code cleanup ##

   * Files are still too big, github chokes
   * Function naming is inconsistent
   * Need docstrings all over pagekite source
   * Unneeded ( ) in a few places
   * Bad form: if this: thenfoo


## General ##

   * 0.5.x: Add UI to report available upgrades at the back-end.
   * 0.5.x: Windows: Auto upgrades?


## Built-in HTTPD ##

   * 0.5: Allow uploading, somehow
   * 0.5: Allow access controls based on OpenID/Twitter/Facebook ?
   * 0.5: Create javascript for making directory listings prettier
     * Add basic photo albums
     * Add feature to thumbnail/preview/re-encode images/audio/video


## Packaging ##

   * 0.5: Create Windows distribution
   * 0.5: Create Windows .msi

   * 0.6: Package lapcat
   * 0.6: Create Mac OS X GUI and package: Talk to Sveinbjörn?


### Optimization ###

   * Add QoS and bandwidth shaping
   * Add a scheduler for deferred/periodic processing
   * Replace string concatenation ops with lists of buffers

### Protocols ###

   * Make tunnel creation more stubborn, try multiple ports, etc.
   * Add XMPP and incoming SMTP support
   * Replace/augment current tunnel auth with SSL certificates


### Dynamic DNS ###

Dynamic DNS updates are the only SPoF left in the PageKite.net service,
should fix by:

   * Modify pagekite.py to update multiple (all) update servers


### Lame-duck ###

Lame-duck mode is when a front-end knows it can no longer handle traffic
but still has established user connections.  The goal is to shut down as
quickly as possible, without dropping (too much) traffic.

   * Trigger on: normal shutdown, out of FDs, OOM, uncaught exceptions
   * Add signaling to tunnels to warn that FE is lame.
   * Shut down all listening sockets and daemonize so new FE can start up
   * Implement protocol for sending entire live tunnel to new FE process?
   * Give existing conns 60 seconds to finish?
   * Add "lame" recognition in back-end (also "rejected")


{'fraction_non_alphanumeric': 0.0780814277746793, 'fraction_numerical': 0.010596765197992191, 'mean_word_length': 3.1806526806526807, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3028123', 'n_tokens_mistral': 1121, 'n_tokens_neox': 1012, 'n_words': 447}