Commit Graph

5515 Commits

Author SHA1 Message Date
Dominik Csapak
f81ef75756 ui: add ACMEAPiSelector field
which return all api types from /cluster/acme/challengeschema
and has a convenience method for getting the schema of the current value

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2020-05-05 19:23:04 +02:00
Dominik Csapak
c0afd5cc0a ui: ACMEAccountCreate: add optional name field
so that we can create multiple accounts, but leave it empty and set the
emptyText to the default name 'default'

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2020-05-05 19:23:04 +02:00
Dominik Csapak
75a2be66bb ACME: add challengeschema api call
which returns a list of challenge api types with the schema of their
required data (if it exists)

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
[ Thomas: adapt to my changes from proxmox-acme schema def and change
  path from challengeschema to challenge-schema ]
2020-05-05 19:23:04 +02:00
Dominik Csapak
463ea0b1d8 ACMEPlugin: check digest on update
and extract the param, otherwise the check dies because of an unknown
field 'digest'

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2020-05-05 18:34:46 +02:00
Thomas Lamprecht
41aa53eaa0 ui: cluster edit/create: style nits, avoid extra label
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2020-05-05 18:23:01 +02:00
Thomas Lamprecht
4ea2cac2ae ui: corosync addLink: more flexible params and pass emptyText
Use that instead of the label, as it's using less space

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2020-05-05 18:21:47 +02:00
Thomas Lamprecht
61b05a5d82 ui: corosync link edit: styleistic nits
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2020-05-05 18:20:57 +02:00
Stefan Reiter
b1e7a7d3b7 gui/cluster: add structured peerLinks to join info
Instead of the old 'ring_addr' property (which is kept for
compatibility), we also encode the link numbers into the new peerLinks
structure. This allows us to display which IP is assigned to which link
on the cluster in the join dialog, helping a user identify which link
should receive which interface on the new node.

Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
2020-05-04 18:44:15 +02:00
Stefan Reiter
5957f47f72 gui/cluster: add CorosyncLinkEdit component to support up to 8 links
CorosyncLinkEdit is a Panel that contains between one and 8
CorosyncLinkSelectors. These can be added or removed with according
buttons.

Values submitted to the API are calculated by each
ProxmoxNetworkSelector itself. This works because ExtJS searches
recursively through all child components for ones with a value to be
submitted, i.e. the CorosyncLinkEdit and CorosyncLinkSelector components
are not part of data submission at all.

Change ClusterEdit.js to use the new component for cluster join and
create. To make space in layout, move 'password' field to the side
(where the network-selector previously was) and use 'hbox' panel for
horizontal layouting to avoid spacing issues with languages where the
fieldLabel doesn't fit on one line.

Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
2020-05-04 18:44:15 +02:00
Fabian Grünbichler
f2aec8f601 bump version to 6.1-11
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-05-04 14:11:43 +02:00
Fabian Grünbichler
e305c2a106 d/control: bump build-deps on pve-storage and pve-guest-common
they contain the new zstd options and the refactored RE for compressed
archives.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-05-04 14:10:07 +02:00
Fabian Grünbichler
7420d7ff95 zstd: add --rsyncable flag
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-05-04 12:19:31 +02:00
Alwin Antreich
3e2c5105f8 Fix #2124: Add support for zstd
This patch adds the zstd to the compression selection for backup on the
GUI and add .zst to the backup file filter. Including zstd as package
install dependency.

Signed-off-by: Alwin Antreich <a.antreich@proxmox.com>
2020-05-04 10:41:59 +02:00
Fabian Grünbichler
ad02bd04e8 bump version to 6.1-9
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2020-05-03 18:52:19 +02:00
Thomas Lamprecht
ea067f4233 d/postinst: triggers: call updatecerts manually on reloads
if pve-manager gets triggered we will normally always do a reload,
that means that updatecerts call won't get triggered, as systemd
doesn't executes the ExecStartPre directives in the reload case.
Do it ourself

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2020-05-03 18:52:19 +02:00
Thomas Lamprecht
de9aa6782c node config: check if plugin is valid for acmedomain
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2020-05-03 18:46:12 +02:00
Thomas Lamprecht
c794bb5dc0 api acme: reduce verification delays
As proxmox-acme has now a default delay for DNS challenge plugins,
which is the important one. Those are just for not overloading the
acme servers with a lot of requests, but once the challenge was
propagate they have it verified pretty quickly, so reduce delay for
checking validation after first requesting it down to 10 seconds

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2020-05-03 18:46:12 +02:00
Thomas Lamprecht
b1e879ecae api acme: use the same plugin config for an order
re-loading it always would mean that we could potentially switch the
config to something completely different, and the mix of the previous
and the old could result in total bogus actions.

Better to use the same one for one full order, even if it may get
"outdated" it was still valid in the past and most important
coherent.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2020-05-03 18:46:12 +02:00
Thomas Lamprecht
48662a1eb0 api acme: code cleanups
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2020-05-03 18:46:12 +02:00
Alexandre Derumier
170a6e5a57 sdn: remove reverts buttons
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2020-05-03 16:36:46 +02:00
Thomas Lamprecht
667198c485 nodeconfig: allow up to 5 domains for now
20 was a bit overkill, and we can increase this easily, decreasing
isn't that easy at all...

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2020-05-03 16:36:46 +02:00
Thomas Lamprecht
69060f1a84 api acme account: refactor and cleanup
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2020-05-03 16:36:46 +02:00
Thomas Lamprecht
b1bc9372ec api: acme plugins: we're not the storage content API endpoint
Drop various leftovers from the storage content API module this was
based on, e.g., ACME plugins have no fixed options and the like.
Also, the descriptions shouldn't mention "storage".

Further, drop the "update_config" "helper" with its operations
effectively only increasing code complexity and adding another rabbit
hole to jump into.

IF, this should have been factoring out the lock+read+write cycle
only, living the rest to a passed CODE-ref, but honestly that saves
only really the read and write config lines, and at this point
nothing is really gained, so just let it be.

Should have been actually three or so separate patches, but to deep
into this rabbit hole to care..

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2020-05-03 16:21:24 +02:00
Fabian Grünbichler
3c194d9e46 NodeConfig: ensure locked context has current view
similar to the recent changes for pve-guest-common - we start each API
call with a cfs_update, but while we were waiting for the flock another
R-M-W cycle might have happened, so we need to refresh after obtaining
the lock.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-05-03 14:10:17 +02:00
Thomas Lamprecht
75afd54a01 node config: verify abstract relations on write
for now mostly due to the "nice" property of the acmedomains which
do not use their property key as index but actually the doamain.

Without this one could set up duplicated domain entries just fine,
but once using them -> error.
This is not nice UX, so verify node config before writing an updated
one out, to catch those issues.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2020-05-03 14:10:17 +02:00
Thomas Lamprecht
a64b0ed59c node config: die on type failure
as else we'd continued with bogus data and possible write out
something stupid

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2020-05-03 14:10:17 +02:00
Thomas Lamprecht
c8d8937c38 pvenode: allow replying on samle line on interactive questions
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2020-05-03 14:10:17 +02:00
Thomas Lamprecht
7ffd15504e acme/node cfg: various code cleanups
just a small selection I already had done, avoid to much time
consuming cleanups for now.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2020-05-03 14:10:17 +02:00
Fabian Grünbichler
838470846c acme plugins: improve API
add checks, encoding of loaded data files, update API path, proper inclusion into API tree

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-05-03 14:10:17 +02:00
Fabian Grünbichler
9d17b94502 nodeconfig: make ACME plugin optional
and default to the always available 'standalone' http-01 plugin

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-05-03 14:10:17 +02:00
Fabian Grünbichler
ae11002ff7 d/control: bump versioned dependency on pve-cluster
for new ACME plugin config file

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-05-03 14:10:17 +02:00
Fabian Grünbichler
9f5f3dcbf1 d/control: wrap-and-sort
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-05-03 14:10:17 +02:00
Fabian Grünbichler
fcc60c16de acme: encode plugin data in proxmox-acme-perl
when reading/writing plugin config

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-05-03 14:10:17 +02:00
Fabian Grünbichler
91c85a64a0 acme: catch failed plugin setup
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-05-03 14:10:17 +02:00
Fabian Grünbichler
b87f55d1b8 acme: always use domain from authorization
instead of relying that the authorization URLs and the ordered
identifiers are sorted the same way for already validated
authorizations.

on the contrary, RFC 8555 even says:

"The authorizations required are dictated by server policy; there may
not be a 1:1 relationship between the order identifiers and the
authorizations required."

authorizations MUST always include a single identifier, no matter which
state they are in.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-05-03 14:10:17 +02:00
Fabian Grünbichler
7b22e2888b acme: drop unused parameter from challenge validation request
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-05-03 14:10:17 +02:00
Fabian Grünbichler
a810b15449 acme: move more of challenge handling to ACME client
so that we don't have to duplicate this logic for PMG

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-05-03 14:10:17 +02:00
Fabian Grünbichler
08a61c7b30 www: fix acme parser
not yet for the new features/keys, but the old one was broken already..

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-05-03 14:10:17 +02:00
Fabian Grünbichler
922f7b07f4 acme plugins: handle update errors
instead of silently ignoring them

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-05-03 14:10:17 +02:00
Fabian Grünbichler
dcfb9f2c03 nodeconfig: make domain default key of acmedomain
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-05-03 14:10:17 +02:00
Fabian Grünbichler
ab53e139eb nodeconfig: drop '_additional_' from acme domain keys
each entry represents one domain, it could also be the only one.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-05-03 14:10:17 +02:00
Fabian Grünbichler
b456a0f31a nodeconfig: don't register unused formats
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-05-03 14:10:17 +02:00
Fabian Grünbichler
b232807dac acme: improve get_acme_conf
mixed bag of improvements:
- return hash based on domain
- check for duplicate domains, allow overlap between main and additional
keys otherwise

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-05-03 14:10:17 +02:00
Fabian Grünbichler
a3a9f9e0ba acme: fix account parsing
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2020-05-03 14:10:17 +02:00
Wolfgang Link
2fafc70666 Add libproxmox-acme to the dependencies.
It is a build dependency as it is needed for the man generator.

Signed-off-by: Wolfgang Link <w.link@proxmox.com>
2020-05-03 14:10:17 +02:00
Wolfgang Link
b227e9d2ab Create ACME Plugin config.
With this configuration it is possible to use many different plugins
with different providers and users.

Signed-off-by: Wolfgang Link <w.link@proxmox.com>
2020-05-03 14:10:17 +02:00
Wolfgang Link
74f7f7c1ea Add libproxmox-acme-perl to pveversion
Signed-off-by: Wolfgang Link <w.link@proxmox.com>
2020-05-03 14:10:17 +02:00
Wolfgang Link
c30e112eff Adapt acme node config parser and rename the function.
Signed-off-by: Wolfgang Link <w.link@proxmox.com>
2020-05-03 14:10:17 +02:00
Wolfgang Link
a5c3854706 Add function that selects the desired plugin.
These functions also extract the data required for the plugin.

Signed-off-by: Wolfgang Link <w.link@proxmox.com>
2020-05-03 14:10:17 +02:00
Wolfgang Link
f9a14ae347 Remove unused code
Signed-off-by: Wolfgang Link <w.link@proxmox.com>
2020-05-03 14:10:17 +02:00