Commit Graph

24 Commits

Author SHA1 Message Date
Wolfgang Bumiller
932d602d33 major build system upgrade
- Add a 'common' symlink inside pve-rs/pmg-rs
- Have the `build/` target replace it with a dir and copy
  `common/src` into it.
- Depend on perlmod-bin to generate the perl package files.

now pve-rs and pmg-rs can be built directly from within via
dpkg-buildpackage

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2023-05-10 11:44:44 +02:00
Wolfgang Bumiller
e885772926 bump proxmox-tfa to 4
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2023-05-10 11:44:44 +02:00
Wolfgang Bumiller
72140ad516 update to new tfa crate
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2023-05-05 10:57:48 +02:00
Wolfgang Bumiller
9fdb289df2 update to new tfa crate
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2023-03-07 12:48:46 +01:00
Lukas Wagner
c7c3940718 initialize logging when shared library is loaded
This commit sets up logging by hooking into module loading/bootstraping
process to call a new `init` function exported by the `Proxmox::Lib::{PVE,PMG}`
module, which initializes `env_logger` with its default settings.

This allows us to use `log::*` macros from Rust code.

Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
2023-03-07 12:02:02 +01:00
Fiona Ebner
887c0e2074 pve-rs: add resource scheduling module
backed by the proxmox-resource-scheduling crate.

Initially to be used by the HA manager to allow it basing its decision
where to start a new or recovered service on static usage information
rather than just counting.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
2022-11-11 14:18:58 +01:00
Fabian Grünbichler
95e5e59fd0 cargo fmt
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2022-07-21 13:33:37 +02:00
Fabian Ebner
f386660b4b move apt repositories module to common
while introducing a 'product' parameter to the relevant functions and
adding wrappers for backwards-compatibility.

Suggested-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2022-07-08 14:29:54 +02:00
Fabian Grünbichler
b67ff27d9e update to nix 0.24
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2022-06-02 14:23:07 +02:00
Wolfgang Bumiller
ba8dad1190 add common-src/ and move CalendarEvent to it
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2022-03-01 10:54:15 +01:00
Wolfgang Bumiller
15c39cb258 Revert "move apt to /perl-apt, use PERLMOD_PRODUCT env var"
This reverts commit 9bc3ab23cb.

This is not the way we're going to organize common code.
2022-02-28 12:25:00 +01:00
Dominik Csapak
e75f545a2f pve-rs: add PVE::RS::CalendarEvent
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2022-01-13 13:58:31 +01:00
Wolfgang Bumiller
89c6d59e60 pve: update to proxmox-tfa 2.0
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2021-11-28 17:11:57 +01:00
Fabian Grünbichler
4b4d8fb47b tfa: handle incompatible challenge data
by returning default data, in case the challenge data is not parseable.
this allows a new challenge to be started for the userid in question
without manual cleanup.

currently this can be triggered if an ongoing challenge created with
webauthn-rs 0.2.5 is stored in /run and attempted to be read
post-upgrade.

Reported-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2021-11-19 14:13:27 +01:00
Dietmar Maurer
544f85bb89 pve-rs: depend on proxmox-openid 0.9, bump version to 0.4.0 2021-11-18 10:13:29 +01:00
Wolfgang Bumiller
205c76068d tfa: generate 'incomaptible' entries
for users with incompatible tfa entries, generate an
'incompatible' entry so they cannot log in via the old api

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2021-11-17 12:33:04 +01:00
Wolfgang Bumiller
84417400ed move proxmox_tfa_api module to proxmox-tfa as api feature
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2021-11-17 08:43:17 +01:00
Dominik Csapak
dfbbed5d87 pve-rs/tfa: ignore and discard incomplete u2f entries
it can happen that we have leftover entries with non-completed challenges.
since a user cannot continue here in a sensible way, ignore and discard
them

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2021-11-12 10:10:38 +01:00
Dominik Csapak
515d6a81d8 pve-rs/tfa: fix off by one trimming
to is the last *valid* character, and ranges end by default with one
less, so extend the range to the actual last character

this fixes an issue that we could not parse old configs with
non-padded base64 values

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2021-11-12 10:10:20 +01:00
Wolfgang Bumiller
41ccaa5048 pve: TfaConfig: add_totp_entry, add_yubico_entry
fast path to add those two from the old user.cfg

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2021-11-10 09:53:18 +01:00
Wolfgang Bumiller
3e5228dd73 pve: add_totp anda dd_yubico cannot error, drop Result type
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2021-11-10 09:53:12 +01:00
Wolfgang Bumiller
2cc9163892 pve: add tfa api
This consists of two parts:

1) A proxmox_tfa_api module which temporarily lives here but
   will become its own crate.

   Most of this is a copy from ' src/config/tfa.rs with some
   compatibility changes:
   * The #[api] macro is guarded by a feature flag, since we
     cannot use it for PVE.
   * The Userid type is replaced by &str since we don't have
     Userid in PVE either.
   * The file locking/reading is removed, this will stay in
     the corresponding product code, and the main entry
     point is now the TfaConfig object.
   * Access to the runtime active challenges in /run is
     provided via a trait implementation since PVE and PBS
     will use different paths for this.
   Essentially anything pbs-specific was removed and the
   code split into a few submodules (one per tfa type
   basically).

2) The tfa module in pve-rs, which contains:
   * The parser for the OLD /etc/pve/priv/tfa.cfg
   * The parser for the NEW /etc/pve/priv/tfa.cfg
   * These create a blessed PVE::RS::TFA instance which:
     - Wraps access to the TfaConfig rust object.
     - Has methods all the TFA API call implementations
       These are copied from PBS' src/api2/access/tfa.rs,
       and pbs specific code removed.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2021-11-09 12:02:53 +01:00
Wolfgang Bumiller
9bc3ab23cb move apt to /perl-apt, use PERLMOD_PRODUCT env var
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2021-11-09 08:59:43 +01:00
Wolfgang Bumiller
1ae868ad78 import pve-rs
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2021-11-09 08:56:38 +01:00