#!/usr/bin/env python

## see README
## this runs in the container, and sets up the testcase

import os
import sys

import tempfile
import functools

from twisted.internet import reactor, defer, task
from twisted.internet.endpoints import TCP4ServerEndpoint
from twisted.web import server, resource
from twisted.python import log

log.startLogging(sys.stdout)

print sys.argv[0]

sys.path.insert(0, '/txtorcon')
import txtorcon


class Simple(resource.Resource):
    isLeaf = True

    def render_GET(self, request):
        return "<html>Hello, world! I'm a hidden service!</html>"


def updates(prog, tag, summary):
    p = ('#' * int(10*(prog/100.0))) + ('.'*(10 - int(10*(prog/100.0))))
    print "%s %s" % (p, summary)


@defer.inlineCallbacks
def main(reactor):
    print "Launching Tor"
    tor = yield txtorcon.launch(reactor, socks_port=0, progress_updates=updates)

    hs_endpoint = tor.create_onion_endpoint(80)

    print "Starting site"
    site = server.Site(Simple())
    port = yield hs_endpoint.listen(site)

    print port.getHost().onion_uri, port.getHost().onion_port, port.local_address
    print "liftoff"
    os.system("netstat -pltn")

task.react(main)
