Esempio n. 1
0
    async def start(self):
        p = argparse.ArgumentParser()
        p.add_argument("rd_uri", help="Preconfigured address of the resource"
                " directory", nargs='?', default='coap://[ff05::fd]')
        p.add_argument("--simple", help="Run simple registration rather than"
                " full (incomplete: Never renews)", action="store_true")
        p.add_argument("--register-as", help="Endpoint name to register as (default: node$SITE",
                default=None)
        p.add_argument("--site", help="Use a different resource / link layout", default=1, type=int)
        add_server_arguments(p)

        opts = p.parse_args()

        if opts.site == 1:
            site = build_site_node1()
        elif opts.site == 2:
            site = build_site_node2()
        elif opts.site == 3:
            site = build_site_node3()
        else:
            raise p.error("Invalid site value")

        if opts.register_as is None:
            opts.register_as = "node%s" % opts.site

        self.context = await server_context_from_arguments(site, opts)

        if opts.simple:
            rd_wkc = urljoin(opts.rd_uri, '/.well-known/core?ep=%s&lt=6000' % opts.register_as)
            await self.context.request(Message(code=POST, uri=rd_wkc)).response
        else:
            self.registerer = Registerer(self.context, opts.rd_uri, lt=120,
                    registration_parameters={'ep': opts.register_as})
Esempio n. 2
0
    def build_parser():
        p = argparse.ArgumentParser(description=__doc__)
        p.add_argument("-v", "--verbose", help="Be more verbose (repeat to debug)", action='count', dest="verbosity", default=0)
        p.add_argument("--register", help="Register with a Resource directory", metavar='RD-URI', nargs='?', default=False)
        p.add_argument("path", help="Root directory of the server", nargs="?", default=".", type=Path)

        add_server_arguments(p)

        return p
Esempio n. 3
0
def build_parser():
    p = argparse.ArgumentParser(description=__doc__)

    mode = p.add_argument_group(
        "mode", "Required argument for setting the operation mode")
    mode.add_argument('--forward',
                      help="Run as forward proxy",
                      action='store_const',
                      const=ForwardProxyWithPooledObservations,
                      dest='direction')
    mode.add_argument('--reverse',
                      help="Run as reverse proxy",
                      action='store_const',
                      const=ReverseProxyWithPooledObservations,
                      dest='direction')

    details = p.add_argument_group(
        "details", "Options that govern how requests go in and out")
    add_server_arguments(details)
    details.add_argument(
        '--proxy',
        help="Relay outgoing requests through yet another proxy",
        metavar="HOST[:PORT]")

    r = p.add_argument_group(
        'Rules',
        description=
        "Sequence of forwarding rules that, if matched by a request, specify a forwarding destination"
    )

    class TypedAppend(argparse.Action):
        def __call__(self, parser, namespace, values, option_string=None):
            if getattr(namespace, self.dest) is None:
                setattr(namespace, self.dest, [])
            getattr(namespace, self.dest).append((option_string, values))

    r.add_argument('--namebased',
                   help="If Uri-Host matches NAME, route to DEST",
                   metavar="NAME:DEST",
                   action=TypedAppend,
                   dest='r')
    r.add_argument(
        '--pathbased',
        help=
        "If a requested path starts with PATH, split that part off and route to DEST",
        metavar="PATH:DEST",
        action=TypedAppend,
        dest='r')
    r.add_argument('--unconditional',
                   help="Route all requests not previously matched to DEST",
                   metavar="DEST",
                   action=TypedAppend,
                   dest='r')

    return p
Esempio n. 4
0
def build_parser():
    p = argparse.ArgumentParser(description=__doc__)

    mode = p.add_argument_group(
        "mode", "Required argument for setting the operation mode")
    mode.add_argument('--forward',
                      help="Run as forward proxy",
                      action='store_true')
    mode.add_argument('--reverse',
                      help="Run as reverse proxy",
                      action='store_true')

    details = p.add_argument_group(
        "details", "Options that govern how requests go in and out")
    add_server_arguments(details)

    r = p.add_argument_group(
        'Rules',
        description="Sequence of forwarding rules "
        "that, if matched by a request, specify a forwarding destination. Destinations can be prefixed to change their behavior: With an '@' sign, they are treated as forward proxies. With a '!' sign, the destination is set as Uri-Host."
    )

    class TypedAppend(argparse.Action):
        def __call__(self, parser, namespace, values, option_string=None):
            if getattr(namespace, self.dest) is None:
                setattr(namespace, self.dest, [])
            getattr(namespace, self.dest).append((option_string, values))

    r.add_argument('--namebased',
                   help="If Uri-Host matches NAME, route to DEST",
                   metavar="NAME:DEST",
                   action=TypedAppend,
                   dest='r')
    r.add_argument('--subdomainbased',
                   help="If Uri-Host is anything.NAME, route to DEST",
                   metavar="NAME:DEST",
                   action=TypedAppend,
                   dest='r')
    r.add_argument(
        '--pathbased',
        help=
        "If a requested path starts with PATH, split that part off and route to DEST",
        metavar="PATH:DEST",
        action=TypedAppend,
        dest='r')
    r.add_argument('--unconditional',
                   help="Route all requests not previously matched to DEST",
                   metavar="DEST",
                   action=TypedAppend,
                   dest='r')

    return p
Esempio n. 5
0
File: rd.py Progetto: ltn22/aiocoap
def build_parser():
    p = argparse.ArgumentParser(description=__doc__)

    add_server_arguments(p)

    return p