Release 0.0.1
See README diff for changes
This commit is contained in:
parent
6633423420
commit
4e6801e4d8
39 changed files with 917 additions and 443 deletions
|
@ -1,76 +0,0 @@
|
|||
#!/usr/bin/env python2
|
||||
|
||||
import cmd2
|
||||
import config
|
||||
import console
|
||||
import comm
|
||||
import context
|
||||
import crochet
|
||||
import http
|
||||
import imp
|
||||
import os
|
||||
import schema.update
|
||||
import proxy
|
||||
import shutil
|
||||
import sys
|
||||
import sqlite3
|
||||
from twisted.enterprise import adbapi
|
||||
from twisted.internet import reactor, defer
|
||||
from twisted.internet.threads import deferToThread
|
||||
from twisted.internet.protocol import ServerFactory
|
||||
|
||||
|
||||
crochet.no_setup()
|
||||
|
||||
def set_text_factory(conn):
|
||||
conn.text_factory = str
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def main():
|
||||
# If the data file doesn't exist, create it with restricted permissions
|
||||
if not os.path.isfile(config.DATAFILE):
|
||||
with os.fdopen(os.open(config.DATAFILE, os.O_CREAT, 0o0600), 'r') as f:
|
||||
pass
|
||||
|
||||
# Set up data store
|
||||
dbpool = adbapi.ConnectionPool("sqlite3", config.DATAFILE,
|
||||
check_same_thread=False,
|
||||
cp_openfun=set_text_factory,
|
||||
cp_max=1)
|
||||
yield schema.update.update_schema(dbpool)
|
||||
http.init(dbpool)
|
||||
yield context.init()
|
||||
|
||||
# Run the proxy
|
||||
if config.DEBUG_DIR and os.path.exists(config.DEBUG_DIR):
|
||||
shutil.rmtree(config.DEBUG_DIR)
|
||||
print 'Removing old debugging output'
|
||||
factory = ServerFactory()
|
||||
factory.protocol = proxy.ProxyServer
|
||||
listen_strs = []
|
||||
for listener in config.LISTENERS:
|
||||
reactor.listenTCP(listener[0], factory, interface=listener[1])
|
||||
listener_str = 'port %d' % listener[0]
|
||||
if listener[1] not in ('127.0.0.1', 'localhost'):
|
||||
listener_str += ' (bound to %s)' % listener[1]
|
||||
listen_strs.append(listener_str)
|
||||
if listen_strs:
|
||||
print 'Proxy is listening on %s' % (', '.join(listen_strs))
|
||||
|
||||
com_factory = ServerFactory()
|
||||
com_factory.protocol = comm.CommServer
|
||||
# Make the port different for every instance of pappy, then pass it to
|
||||
# anything we run. Otherwise we can only have it running once on a machine
|
||||
comm_port = reactor.listenTCP(0, com_factory, interface='127.0.0.1')
|
||||
comm.set_comm_port(comm_port.getHost().port)
|
||||
|
||||
d = deferToThread(console.ProxyCmd().cmdloop)
|
||||
d.addCallback(lambda ignored: reactor.stop())
|
||||
|
||||
# Load the scope
|
||||
yield context.load_scope(http.dbpool)
|
||||
context.reset_to_scope()
|
||||
|
||||
if __name__ == '__main__':
|
||||
reactor.callWhenRunning(main)
|
||||
reactor.run()
|
Loading…
Add table
Add a link
Reference in a new issue