From: Christoph Heiss <c.heiss@proxmox.com>
To: pbs-devel@lists.proxmox.com
Subject: [pbs-devel] [PATCH proxmox-backup v4 10/16] api-types: introduce proper types for PAM and PBS realms
Date: Fri, 23 Aug 2024 13:07:30 +0200 [thread overview]
Message-ID: <20240823110737.831304-11-c.heiss@proxmox.com> (raw)
In-Reply-To: <20240823110737.831304-1-c.heiss@proxmox.com>
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
---
Changes v3 -> v4:
* no changes
Changes v2 -> v3:
* no changes
Changes v1 -> v2:
* reorder new module imports
* implement `Default` for new realms
pbs-api-types/src/lib.rs | 97 +++++++++++++++++++++++++++++++++++++++-
1 file changed, 96 insertions(+), 1 deletion(-)
diff --git a/pbs-api-types/src/lib.rs b/pbs-api-types/src/lib.rs
index 635292a5..6706875c 100644
--- a/pbs-api-types/src/lib.rs
+++ b/pbs-api-types/src/lib.rs
@@ -6,7 +6,8 @@ use serde::{Deserialize, Serialize};
pub mod percent_encoding;
use proxmox_schema::{
- api, const_regex, ApiStringFormat, ApiType, ArraySchema, ReturnType, Schema, StringSchema,
+ api, const_regex, ApiStringFormat, ApiType, ArraySchema, EnumEntry, ReturnType, Schema,
+ StringSchema, Updater,
};
use proxmox_time::parse_daily_duration;
@@ -218,6 +219,20 @@ pub const REALM_ID_SCHEMA: Schema = StringSchema::new("Realm name.")
.max_length(32)
.schema();
+const PAM_REALM_ID_SCHEMA: Schema = StringSchema::new("Realm name.")
+ .format(&ApiStringFormat::Enum(&[EnumEntry::new(
+ "pam",
+ "Default PAM realm.",
+ )]))
+ .schema();
+
+const PBS_REALM_ID_SCHEMA: Schema = StringSchema::new("Realm name.")
+ .format(&ApiStringFormat::Enum(&[EnumEntry::new(
+ "pbs",
+ "Default PBS realm.",
+ )]))
+ .schema();
+
pub const SUBSCRIPTION_KEY_SCHEMA: Schema =
StringSchema::new("Proxmox Backup Server subscription key.")
.format(&SUBSCRIPTION_KEY_FORMAT)
@@ -364,3 +379,83 @@ pub struct BasicRealmInfo {
#[serde(skip_serializing_if = "Option::is_none")]
pub comment: Option<String>,
}
+
+#[api(
+ properties: {
+ "realm": {
+ schema: PAM_REALM_ID_SCHEMA,
+ },
+ "comment": {
+ optional: true,
+ schema: SINGLE_LINE_COMMENT_SCHEMA,
+ },
+ "default": {
+ optional: true,
+ default: false,
+ },
+ }
+)]
+#[derive(Serialize, Deserialize, Updater, Clone)]
+#[serde(rename_all = "kebab-case")]
+/// Built-in PAM realm configuration properties.
+pub struct PamRealmConfig {
+ /// Realm name. Always "pam".
+ #[updater(skip)]
+ pub realm: String,
+ /// Comment for this realm
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub comment: Option<String>,
+ /// True if it should be the default realm to login in
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub default: Option<bool>,
+}
+
+impl Default for PamRealmConfig {
+ fn default() -> Self {
+ Self {
+ realm: "pam".to_owned(),
+ comment: Some("Linux PAM standard authentication".to_owned()),
+ default: None,
+ }
+ }
+}
+
+#[api(
+ properties: {
+ "realm": {
+ schema: PBS_REALM_ID_SCHEMA,
+ },
+ "comment": {
+ optional: true,
+ schema: SINGLE_LINE_COMMENT_SCHEMA,
+ },
+ "default": {
+ optional: true,
+ default: false,
+ },
+ }
+)]
+#[derive(Serialize, Deserialize, Updater, Clone)]
+#[serde(rename_all = "kebab-case")]
+/// Built-in Proxmox Backup Server realm configuration properties.
+pub struct PbsRealmConfig {
+ /// Realm name. Always "pbs".
+ #[updater(skip)]
+ pub realm: String,
+ /// Comment for this realm
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub comment: Option<String>,
+ /// True if it should be the default realm to login in
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub default: Option<bool>,
+}
+
+impl Default for PbsRealmConfig {
+ fn default() -> Self {
+ Self {
+ realm: "pbs".to_owned(),
+ comment: Some("Proxmox Backup authentication server".to_owned()),
+ default: None,
+ }
+ }
+}
--
2.45.2
_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel
next prev parent reply other threads:[~2024-08-23 11:07 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-23 11:07 [pbs-devel] [PATCH proxmox-backup/pwt v4 00/16] fix #5379: introduce default auth realm option Christoph Heiss
2024-08-23 11:07 ` [pbs-devel] [PATCH widget-toolkit v4 1/7] window: AuthEditBase: include more information in thrown errors Christoph Heiss
2024-08-23 11:07 ` [pbs-devel] [PATCH widget-toolkit v4 2/7] panel: AuthView: make `useTypeInUrl` property per-realm Christoph Heiss
2024-08-23 11:07 ` [pbs-devel] [PATCH widget-toolkit v4 3/7] panel: AuthView: use help link from schema if set Christoph Heiss
2024-08-23 11:07 ` [pbs-devel] [PATCH widget-toolkit v4 4/7] window: add panel for editing simple, built-in realms Christoph Heiss
2024-08-23 11:07 ` [pbs-devel] [PATCH widget-toolkit v4 5/7] schema: make PAM realm editable using new AuthSimple panel Christoph Heiss
2024-08-23 11:07 ` [pbs-devel] [PATCH widget-toolkit v4 6/7] fix #5379: panel: AuthView: add column displaying whether the realm is default Christoph Heiss
2024-08-23 11:07 ` [pbs-devel] [PATCH widget-toolkit v4 7/7] fix #5379: window: AuthEdit{LDAP, OpenId}: add 'Default realm' checkbox Christoph Heiss
2024-08-23 11:07 ` [pbs-devel] [PATCH proxmox-backup v4 08/16] fix #5379: api-types: add `default` field to all realm types Christoph Heiss
2024-08-23 11:07 ` [pbs-devel] [PATCH proxmox-backup v4 09/16] fix #5379: api2: access: set default realm accordingly on individual update Christoph Heiss
2024-08-23 11:07 ` Christoph Heiss [this message]
2024-08-23 11:07 ` [pbs-devel] [PATCH proxmox-backup v4 11/16] config: use new dedicated PAM and PBS realm types Christoph Heiss
2024-08-23 11:07 ` [pbs-devel] [PATCH proxmox-backup v4 12/16] api2: access: add update support for built-in PAM realm Christoph Heiss
2024-08-23 11:07 ` [pbs-devel] [PATCH proxmox-backup v4 13/16] api2: access: add update support for built-in PBS realm Christoph Heiss
2024-08-23 11:07 ` [pbs-devel] [PATCH proxmox-backup v4 14/16] www: AccessControl: make `useTypeInUrl` property per-realm Christoph Heiss
2024-08-23 11:07 ` [pbs-devel] [PATCH proxmox-backup v4 15/16] www: utils: make built-in pbs realm editable using new AuthSimplePanel Christoph Heiss
2024-08-23 11:07 ` [pbs-devel] [PATCH proxmox-backup v4 16/16] docs: user-management: document `pam` and `pbs` authentication realm Christoph Heiss
2024-11-11 23:01 ` [pbs-devel] partially-applied: [PATCH proxmox-backup/pwt v4 00/16] fix #5379: introduce default auth realm option Thomas Lamprecht
2025-03-21 13:48 ` [pbs-devel] " Christoph Heiss
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240823110737.831304-11-c.heiss@proxmox.com \
--to=c.heiss@proxmox.com \
--cc=pbs-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.