mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2024-12-23 15:40:01 -06:00
0298ecf441
Load the certificate from a file specified in the first argument. Raw certificate value can be specified using --certificate. https://pagure.io/freeipa/issue/6646 Reviewed-By: Florence Blanc-Renaud <frenaud@redhat.com>
50 lines
1.5 KiB
Python
50 lines
1.5 KiB
Python
#
|
|
# Copyright (C) 2017 FreeIPA Contributors see COPYING for license
|
|
#
|
|
|
|
from ipaclient.frontend import MethodOverride
|
|
from ipalib import errors, x509
|
|
from ipalib.parameters import File
|
|
from ipalib.plugable import Registry
|
|
from ipalib.text import _
|
|
|
|
register = Registry()
|
|
|
|
|
|
@register(override=True, no_fail=True)
|
|
class certmap_match(MethodOverride):
|
|
takes_args = (
|
|
File(
|
|
'file?',
|
|
label=_("Input file"),
|
|
doc=_("File to load the certificate from"),
|
|
include='cli',
|
|
),
|
|
)
|
|
|
|
def get_args(self):
|
|
for arg in super(certmap_match, self).get_args():
|
|
if arg.name != 'certificate' or self.api.env.context != 'cli':
|
|
yield arg
|
|
|
|
def get_options(self):
|
|
for arg in super(certmap_match, self).get_args():
|
|
if arg.name == 'certificate' and self.api.env.context == 'cli':
|
|
yield arg.clone(required=False)
|
|
for option in super(certmap_match, self).get_options():
|
|
yield option
|
|
|
|
def forward(self, *args, **options):
|
|
if self.api.env.context == 'cli':
|
|
if args and 'certificate' in options:
|
|
raise errors.MutuallyExclusiveError(
|
|
reason=_("cannot specify both raw certificate and file"))
|
|
if args:
|
|
args = [x509.strip_header(args[0])]
|
|
elif 'certificate' in options:
|
|
args = [options.pop('certificate')]
|
|
else:
|
|
args = []
|
|
|
|
return super(certmap_match, self).forward(*args, **options)
|