예제 #1
0
def main():
    parser = argparse.ArgumentParser(
        description='List IP addresses of X-Road Security Servers.',
        formatter_class=argparse.RawDescriptionHelpFormatter,
        epilog='You need to provide either Security Server or Central Server address.\n\n'
               'NB! Global configuration signature is not validated when using Central Server.\n'
               'Use local Security Server whenever possible.'
    )
    parser.add_argument(
        '-s', metavar='SECURITY_SERVER', help='DNS name/IP/URL of local Security Server')
    parser.add_argument(
        '-c', metavar='CENTRAL_SERVER',
        help='DNS name/IP/URL of Central Server/Configuration Proxy')
    parser.add_argument('-t', metavar='TIMEOUT', help='timeout for HTTP query', type=float)
    parser.add_argument(
        '--verify', metavar='CERT_PATH',
        help='validate peer TLS certificate using CA certificate file.')
    parser.add_argument(
        '--cert', metavar='CERT_PATH', help='use TLS certificate for HTTPS requests.')
    parser.add_argument('--key', metavar='KEY_PATH', help='private key for TLS certificate.')
    parser.add_argument(
        '--instance', metavar='INSTANCE',
        help='use this instance instead of local X-Road instance (works only with "-s" argument)')
    args = parser.parse_args()

    instance = None
    if args.instance:
        instance = args.instance

    timeout = DEFAULT_TIMEOUT
    if args.t:
        timeout = args.t

    verify = False
    if args.verify:
        verify = args.verify

    cert = None
    if args.cert and args.key:
        cert = (args.cert, args.key)

    shared_params = None
    if args.s:
        try:
            shared_params = xrdinfo.shared_params_ss(
                addr=args.s, instance=instance, timeout=timeout, verify=verify, cert=cert)
        except xrdinfo.XrdInfoError as e:
            print_error(e)
            exit(1)
    elif args.c:
        try:
            shared_params = xrdinfo.shared_params_cs(
                addr=args.c, timeout=timeout, verify=verify, cert=cert)
        except xrdinfo.XrdInfoError as e:
            print_error(e)
            exit(1)
    else:
        parser.print_help()
        exit(1)

    try:
        for ip in xrdinfo.servers_ips(shared_params):
            # Should never contain non ASCII characters
            print(ip)
    except xrdinfo.XrdInfoError as e:
        print_error(e)
        exit(1)
예제 #2
0
def main():
    parser = argparse.ArgumentParser(
        description='List X-Road Subsystems with Security Server identifiers.',
        formatter_class=argparse.RawDescriptionHelpFormatter,
        epilog=
        'You need to provide either Security Server or Central Server address.\n\n'
        'NB! Global configuration signature is not validated when using Central Server.\n'
        'Use local Security Server whenever possible.')
    parser.add_argument('-s',
                        metavar='SECURITY_SERVER',
                        help='DNS name/IP/URL of local Security Server')
    parser.add_argument(
        '-c',
        metavar='CENTRAL_SERVER',
        help='DNS name/IP/URL of Central Server/Configuration Proxy')
    parser.add_argument('-t',
                        metavar='TIMEOUT',
                        help='timeout for HTTP query',
                        type=float)
    parser.add_argument(
        '--verify',
        metavar='CERT_PATH',
        help='validate peer TLS certificate using CA certificate file.')
    parser.add_argument('--cert',
                        metavar='CERT_PATH',
                        help='use TLS certificate for HTTPS requests.')
    parser.add_argument('--key',
                        metavar='KEY_PATH',
                        help='private key for TLS certificate.')
    parser.add_argument(
        '--instance',
        metavar='INSTANCE',
        help=
        'use this instance instead of local X-Road instance (works only with "-s" argument)'
    )
    args = parser.parse_args()

    instance = None
    if args.instance and six.PY2:
        # Convert to unicode
        instance = args.instance.decode('utf-8')
    elif args.instance:
        instance = args.instance

    timeout = DEFAULT_TIMEOUT
    if args.t:
        timeout = args.t

    verify = False
    if args.verify:
        verify = args.verify

    cert = None
    if args.cert and args.key:
        cert = (args.cert, args.key)

    shared_params = None
    if args.s:
        try:
            shared_params = xrdinfo.shared_params_ss(addr=args.s,
                                                     instance=instance,
                                                     timeout=timeout,
                                                     verify=verify,
                                                     cert=cert)
        except xrdinfo.XrdInfoError as e:
            print_error(e)
            exit(1)
    elif args.c:
        try:
            shared_params = xrdinfo.shared_params_cs(addr=args.c,
                                                     timeout=timeout,
                                                     verify=verify,
                                                     cert=cert)
        except xrdinfo.XrdInfoError as e:
            print_error(e)
            exit(1)
    else:
        parser.print_help()
        exit(1)

    try:
        for subsystem in xrdinfo.subsystems_with_server(shared_params):
            line = xrdinfo.stringify(subsystem)
            if len(subsystem) == 4:
                # No server found
                line = u"{} NOSERVER".format(line)
            if six.PY2:
                print(line.encode('utf-8'))
            else:
                print(line)
    except xrdinfo.XrdInfoError as e:
        print_error(e)
        exit(1)