At the moment, Proxmox has two different configurations that require different properties. DNSChallange requires credentials for the DNSAPI. Standalone has no settings because Letsencrypt only supports port 80 with the http-01 challenge.
Make Standalone.pm Plugin compliant. Signed-off-by: Wolfgang Link <w.l...@proxmox.com> --- src/PVE/ACME/Challenge.pm | 62 ++++++++++++++++++++++++++++++++++++++ src/PVE/ACME/StandAlone.pm | 16 ++++++++++ 2 files changed, 78 insertions(+) diff --git a/src/PVE/ACME/Challenge.pm b/src/PVE/ACME/Challenge.pm index 40d32b6..b261476 100644 --- a/src/PVE/ACME/Challenge.pm +++ b/src/PVE/ACME/Challenge.pm @@ -3,16 +3,78 @@ package PVE::ACME::Challenge; use strict; use warnings; +use PVE::Cluster qw(cfs_register_file); +use PVE::JSONSchema qw(get_standard_option); +use PVE::Tools qw(lock_file); + +use base qw(PVE::SectionConfig); + +my $FILENAME = "/etc/pve/priv/plugins.cfg"; + +cfs_register_file ('priv/plugins.cfg', + sub { __PACKAGE__->parse_config(@_); }, + sub { __PACKAGE__->write_config(@_); }); + +my $defaultData = { + additionalProperties => 0, + propertyList => { + id => { + description => "ACME Plugin ID name", + type => 'string', + }, + type => { + description => "ACME challenge type.", + type => 'string', + }, + nodes => get_standard_option('pve-node-list', { optional => 1 }), + disable => { + description => "Flag to disable the config.", + type => 'boolean', + optional => 1, + }, + }, +}; + +sub private { + return $defaultData; +} + sub supported_challenge_types { return {}; } +sub load_config { + + my $raw = eval { PVE::Tools::file_get_contents($FILENAME); }; + return {} if !$raw; + + return __PACKAGE__->parse_config($FILENAME, $raw); +} + +sub write_conf { + my ($conf) = @_; + + my $raw = __PACKAGE__->write_config($FILENAME, $conf); + + PVE::Tools::file_set_contents($FILENAME, $raw); +} + sub setup { my ($class, $acme, $authorization) = @_; die "implement me\n"; } +sub lock_config { + my ($code, @param) = @_; + + my $res = lock_file($FILENAME, 3, $code, @param); + + die $@ if $@; + + return $res; +} + sub teardown { my ($self) = @_; diff --git a/src/PVE/ACME/StandAlone.pm b/src/PVE/ACME/StandAlone.pm index f48d638..ac75184 100644 --- a/src/PVE/ACME/StandAlone.pm +++ b/src/PVE/ACME/StandAlone.pm @@ -12,6 +12,22 @@ sub supported_challenge_types { return { 'http-01' => 1 }; } +sub type { + return 'standalone'; +} + +sub properties { + return { + }; +} + +sub options { + return { + nodes => { optional => 1 }, + disable => { optional => 1 }, + }; +} + sub setup { my ($class, $acme, $authorization) = @_; -- 2.20.1 _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel