summaryrefslogtreecommitdiff
path: root/blobs-multiprocess/blobs-server.py
blob: 74d5e62b219d83400d600b407da37b848f72da50 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!/usr/bin/env python

import errno
import os

from argparse import ArgumentParser
from sys import stdout

from twisted.internet import reactor
from twisted.python import log
from twisted.web.resource import Resource
from twisted.web.server import Site

from leap.soledad.server._blobs import BlobsResource


def mkdir_p(path):
    try:
        os.makedirs(path)
    except OSError as exc:  # Python >2.5
        if exc.errno == errno.EEXIST and os.path.isdir(path):
            pass
        else:
            raise


def parse_args():
    parser = ArgumentParser()
    parser.add_argument('dir', type=str,
                        help="The directory to store blobs.")
    parser.add_argument('port', type=int,
                        help="The port in which to listen.")
    args = parser.parse_args()
    return args


class DummyResource(Resource):

    def render_GET(self, request):
        return ''


def start_server(dir, port):
    resource = Resource()
    resource.putChild("", DummyResource())
    resource.putChild("blobs", BlobsResource("filesystem", dir))
    site = Site(resource)
    reactor.listenTCP(port, site)


def main(dir, port):
    mkdir_p(dir)
    log.startLogging(stdout)
    start_server(dir, port)
    reactor.run()


if __name__ == "__main__":
    args = parse_args()
    main(args.dir, args.port)