From 9626c286198aca2183a4793eb622d30f1065ab1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Gr=C3=BCnbichler?= Date: Wed, 16 Sep 2020 11:51:13 +0200 Subject: [PATCH] always allow retrieving (censored) subscription info MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit like we do for PVE. this is visible on the dashboard, and caused 403 on each update which bothers me when looking at the dev console. Signed-off-by: Fabian Grünbichler --- src/api2/node/subscription.rs | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/api2/node/subscription.rs b/src/api2/node/subscription.rs index 186019cb..f8b14187 100644 --- a/src/api2/node/subscription.rs +++ b/src/api2/node/subscription.rs @@ -1,11 +1,12 @@ use anyhow::{Error}; use serde_json::{json, Value}; -use proxmox::api::{api, Router, Permission}; +use proxmox::api::{api, Router, RpcEnvironment, Permission}; use crate::tools; use crate::config::acl::PRIV_SYS_AUDIT; -use crate::api2::types::NODE_SCHEMA; +use crate::config::cached_user_info::CachedUserInfo; +use crate::api2::types::{NODE_SCHEMA, Userid}; #[api( input: { @@ -28,7 +29,7 @@ use crate::api2::types::NODE_SCHEMA; }, serverid: { type: String, - description: "The unique server ID.", + description: "The unique server ID, if permitted to access.", }, url: { type: String, @@ -37,18 +38,29 @@ use crate::api2::types::NODE_SCHEMA; }, }, access: { - permission: &Permission::Privilege(&[], PRIV_SYS_AUDIT, false), + permission: &Permission::Anybody, }, )] /// Read subscription info. -fn get_subscription(_param: Value) -> Result { +fn get_subscription( + _param: Value, + rpcenv: &mut dyn RpcEnvironment, +) -> Result { + let userid: Userid = rpcenv.get_user().unwrap().parse()?; + let user_info = CachedUserInfo::new()?; + let user_privs = user_info.lookup_privs(&userid, &[]); + let server_id = if (user_privs & PRIV_SYS_AUDIT) != 0 { + tools::get_hardware_address()? + } else { + "hidden".to_string() + }; let url = "https://www.proxmox.com/en/proxmox-backup-server/pricing"; Ok(json!({ "status": "NotFound", - "message": "There is no subscription key", - "serverid": tools::get_hardware_address()?, - "url": url, + "message": "There is no subscription key", + "serverid": server_id, + "url": url, })) }