public inbox for pbs-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [pbs-devel] [PATCH proxmox-backup 1/4] get rid of backup@pam
@ 2020-11-06  7:11 Dietmar Maurer
  2020-11-06  7:11 ` [pbs-devel] [PATCH proxmox-backup 2/4] gui: Add button for changing backup group owner Dietmar Maurer
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Dietmar Maurer @ 2020-11-06  7:11 UTC (permalink / raw)
  To: pbs-devel

---
 src/api2/config/sync.rs           |  4 ++--
 src/api2/pull.rs                  |  2 +-
 src/api2/types/userid.rs          | 12 ------------
 src/bin/proxmox-backup-proxy.rs   | 10 +++++-----
 src/server/email_notifications.rs |  8 +-------
 www/window/SyncJobEdit.js         |  2 +-
 6 files changed, 10 insertions(+), 28 deletions(-)

diff --git a/src/api2/config/sync.rs b/src/api2/config/sync.rs
index f9810369..bdad21e6 100644
--- a/src/api2/config/sync.rs
+++ b/src/api2/config/sync.rs
@@ -58,7 +58,7 @@ pub fn check_sync_job_modify_access(
                     && owner.user() == auth_id.user())
         },
         // default sync owner
-        None => auth_id == Authid::backup_auth_id(),
+        None => auth_id == Authid::root_auth_id(),
     };
 
     // same permission as changing ownership after syncing
@@ -511,7 +511,7 @@ acl:1:/remote/remote1/remotestore1:write@pbs:RemoteSyncOperator
     job.owner = Some(read_auth_id.clone());
     assert_eq!(check_sync_job_modify_access(&user_info, &write_auth_id, &job), false);
 
-    // also not to the default 'backup@pam'
+    // also not to the default 'root@pam'
     job.owner = None;
     assert_eq!(check_sync_job_modify_access(&user_info, &write_auth_id, &job), false);
 
diff --git a/src/api2/pull.rs b/src/api2/pull.rs
index 87015c72..7ac6308e 100644
--- a/src/api2/pull.rs
+++ b/src/api2/pull.rs
@@ -84,7 +84,7 @@ pub fn do_sync_job(
             let worker_future = async move {
 
                 let delete = sync_job.remove_vanished.unwrap_or(true);
-                let sync_owner = sync_job.owner.unwrap_or(Authid::backup_auth_id().clone());
+                let sync_owner = sync_job.owner.unwrap_or(Authid::root_auth_id().clone());
                 let (client, src_repo, tgt_store) = get_pull_parameters(&sync_job.store, &sync_job.remote, &sync_job.remote_store).await?;
 
                 worker.log(format!("Starting datastore sync job '{}'", job_id));
diff --git a/src/api2/types/userid.rs b/src/api2/types/userid.rs
index 9104de22..42271904 100644
--- a/src/api2/types/userid.rs
+++ b/src/api2/types/userid.rs
@@ -450,11 +450,6 @@ impl Userid {
         &self.data
     }
 
-    /// Get the "backup@pam" user id.
-    pub fn backup_userid() -> &'static Self {
-        &*BACKUP_USERID
-    }
-
     /// Get the "root@pam" user id.
     pub fn root_userid() -> &'static Self {
         &*ROOT_USERID
@@ -462,7 +457,6 @@ impl Userid {
 }
 
 lazy_static! {
-    pub static ref BACKUP_USERID: Userid = Userid::new("backup@pam".to_string(), 6);
     pub static ref ROOT_USERID: Userid = Userid::new("root@pam".to_string(), 4);
 }
 
@@ -596,11 +590,6 @@ impl Authid {
         }
     }
 
-    /// Get the "backup@pam" auth id.
-    pub fn backup_auth_id() -> &'static Self {
-        &*BACKUP_AUTHID
-    }
-
     /// Get the "root@pam" auth id.
     pub fn root_auth_id() -> &'static Self {
         &*ROOT_AUTHID
@@ -608,7 +597,6 @@ impl Authid {
 }
 
 lazy_static! {
-    pub static ref BACKUP_AUTHID: Authid = Authid::from(Userid::new("backup@pam".to_string(), 6));
     pub static ref ROOT_AUTHID: Authid = Authid::from(Userid::new("root@pam".to_string(), 4));
 }
 
diff --git a/src/bin/proxmox-backup-proxy.rs b/src/bin/proxmox-backup-proxy.rs
index 5803f024..80f30e8d 100644
--- a/src/bin/proxmox-backup-proxy.rs
+++ b/src/bin/proxmox-backup-proxy.rs
@@ -377,7 +377,7 @@ async fn schedule_datastore_garbage_collection() {
             Err(_) => continue, // could not get lock
         };
 
-        let auth_id = Authid::backup_auth_id();
+        let auth_id = Authid::root_auth_id();
 
         if let Err(err) = crate::server::do_garbage_collection_job(job, datastore, auth_id, Some(event_str), false) {
             eprintln!("unable to start garbage collection job on datastore {} - {}", store, err);
@@ -440,7 +440,7 @@ async fn schedule_datastore_prune() {
                 Err(_) => continue, // could not get lock
             };
 
-            let auth_id = Authid::backup_auth_id().clone();
+            let auth_id = Authid::root_auth_id().clone();
             if let Err(err) = do_prune_job(job, prune_options, store.clone(), &auth_id, Some(event_str)) {
                 eprintln!("unable to start datastore prune job {} - {}", &store, err);
             }
@@ -484,7 +484,7 @@ async fn schedule_datastore_sync_jobs() {
                 Err(_) => continue, // could not get lock
             };
 
-            let auth_id = Authid::backup_auth_id().clone();
+            let auth_id = Authid::root_auth_id().clone();
             if let Err(err) = do_sync_job(job, job_config, &auth_id, Some(event_str)) {
                 eprintln!("unable to start datastore sync job {} - {}", &job_id, err);
             }
@@ -520,7 +520,7 @@ async fn schedule_datastore_verify_jobs() {
         };
 
         let worker_type = "verificationjob";
-        let auth_id = Authid::backup_auth_id().clone();
+        let auth_id = Authid::root_auth_id().clone();
         if check_schedule(worker_type, &event_str, &job_id) {
             let job = match Job::new(&worker_type, &job_id) {
                 Ok(job) => job,
@@ -560,7 +560,7 @@ async fn schedule_task_log_rotate() {
     if let Err(err) = WorkerTask::new_thread(
         worker_type,
         None,
-        Authid::backup_auth_id().clone(),
+        Authid::root_auth_id().clone(),
         false,
         move |worker| {
             job.start(&worker.upid().to_string())?;
diff --git a/src/server/email_notifications.rs b/src/server/email_notifications.rs
index a4383361..7a835e3f 100644
--- a/src/server/email_notifications.rs
+++ b/src/server/email_notifications.rs
@@ -397,16 +397,10 @@ pub fn send_updates_available(
 }
 
 /// Lookup users email address
-///
-/// For "backup@pam", this returns the address from "root@pam".
 fn lookup_user_email(userid: &Userid) -> Option<String> {
 
     use crate::config::user::{self, User};
 
-    if userid == Userid::backup_userid() {
-        return lookup_user_email(Userid::root_userid());
-    }
-
     if let Ok(user_config) = user::cached_config() {
         if let Ok(user) = user_config.lookup::<User>("user", userid.as_str()) {
             return user.email.clone();
@@ -437,7 +431,7 @@ pub fn lookup_datastore_notify_settings(
 
     email = match config.notify_user {
         Some(ref userid) => lookup_user_email(userid),
-        None => lookup_user_email(Userid::backup_userid()),
+        None => lookup_user_email(Userid::root_userid()),
     };
 
     let notify_str = config.notify.unwrap_or(String::new());
diff --git a/www/window/SyncJobEdit.js b/www/window/SyncJobEdit.js
index c3c0e228..df1f2c5b 100644
--- a/www/window/SyncJobEdit.js
+++ b/www/window/SyncJobEdit.js
@@ -142,7 +142,7 @@ Ext.define('PBS.window.SyncJobEdit', {
 		name: 'owner',
 		allowBlank: true,
 		value: null,
-		emptyText: 'backup@pam',
+		emptyText: 'root@pam',
 		skipEmptyText: true,
 		cbind: {
 		    deleteEmpty: '{!isCreate}',
-- 
2.20.1




^ permalink raw reply	[flat|nested] 4+ messages in thread

* [pbs-devel] [PATCH proxmox-backup 2/4] gui: Add button for changing backup group owner
  2020-11-06  7:11 [pbs-devel] [PATCH proxmox-backup 1/4] get rid of backup@pam Dietmar Maurer
@ 2020-11-06  7:11 ` Dietmar Maurer
  2020-11-06  7:11 ` [pbs-devel] [PATCH proxmox-backup 3/4] ui: use pbsUserSelector for BackupGroupChangeOwner Dietmar Maurer
  2020-11-06  7:11 ` [pbs-devel] [PATCH proxmox-backup 4/4] ui: require owner for sync jobs Dietmar Maurer
  2 siblings, 0 replies; 4+ messages in thread
From: Dietmar Maurer @ 2020-11-06  7:11 UTC (permalink / raw)
  To: pbs-devel

From: Dylan Whyte <d.whyte@proxmox.com>

Extension of fix #2847

Adds an action button to the datastore content view,
to change the owner of a backup.

Signed-off-by: Dylan Whyte <d.whyte@proxmox.com>
---
 www/BackupGroupChangeOwner.js | 46 +++++++++++++++++++++++++++++++++++
 www/DataStoreContent.js       | 26 +++++++++++++++++++-
 www/Makefile                  |  1 +
 3 files changed, 72 insertions(+), 1 deletion(-)
 create mode 100644 www/BackupGroupChangeOwner.js

diff --git a/www/BackupGroupChangeOwner.js b/www/BackupGroupChangeOwner.js
new file mode 100644
index 00000000..0a7a7563
--- /dev/null
+++ b/www/BackupGroupChangeOwner.js
@@ -0,0 +1,46 @@
+Ext.define('PBS.BackupGroupChangeOwner', {
+    extend: 'Proxmox.window.Edit',
+    alias: 'widget.pbsBackupGroupChangeOwner',
+
+    submitText: gettext("Change Owner"),
+    subject: gettext("Change Owner"),
+
+    initComponent: function() {
+	let me = this;
+
+	if (!me.datastore) {
+	    throw "no datastore specified";
+	}
+	if (!me.backup_type) {
+	    throw "no backup_type specified";
+	}
+	if (!me.backup_id) {
+	    throw "no backup_id specified";
+	}
+
+	Ext.apply(me, {
+	    url: `/api2/extjs/admin/datastore/${me.datastore}/change-owner`,
+	    method: 'POST',
+	    items: {
+		xtype: 'inputpanel',
+		onGetValues: function(values) {
+		    values["backup-type"] = me.backup_type;
+		    values["backup-id"] = me.backup_id;
+		    return values;
+		},
+
+		column1: [
+		    {
+			xtype: 'textfield',
+			name: 'new-owner',
+			fieldLabel: gettext('Userid'),
+			minLength: 8,
+			allowBlank: false,
+		    },
+		],
+	    },
+	});
+
+	me.callParent();
+    },
+});
diff --git a/www/DataStoreContent.js b/www/DataStoreContent.js
index db912a83..7c6395c2 100644
--- a/www/DataStoreContent.js
+++ b/www/DataStoreContent.js
@@ -268,6 +268,24 @@ Ext.define('PBS.DataStoreContent', {
 	    }
 	},
 
+	onChangeOwner: function(view, rI, cI, item, e, rec) {
+	    view = this.getView();
+
+	    if (!rec || !rec.data || rec.parentNode.id !== 'root' || !view.datastore) {
+		return;
+	    }
+
+	    let data = rec.data;
+
+	    let win = Ext.create('PBS.BackupGroupChangeOwner', {
+		datastore: view.datastore,
+		backup_type: data.backup_type,
+		backup_id: data.backup_id,
+		autoShow: true,
+	    });
+	    win.on('destroy', this.reload, this);
+	},
+
 	onPrune: function(view, rI, cI, item, e, rec) {
 	    view = this.getView();
 
@@ -582,7 +600,13 @@ Ext.define('PBS.DataStoreContent', {
 		    getTip: (v, m, rec) => Ext.String.format(gettext("Verify '{0}'"), v),
 		    getClass: (v, m, rec) => rec.data.leaf ? 'pmx-hidden' : 'pve-icon-verify-lettering',
 		    isDisabled: (v, r, c, i, rec) => !!rec.data.leaf,
-		},
+                },
+                {
+		    handler: 'onChangeOwner',
+		    getClass: (v, m, rec) => rec.parentNode.id ==='root' ? 'fa fa-user' : 'pmx-hidden',
+		    getTip: (v, m, rec) => Ext.String.format(gettext("Change owner of '{0}'"), v),
+		    isDisabled: (v, r, c, i, rec) => rec.parentNode.id !=='root',
+                },
 		{
 		    handler: 'onPrune',
 		    getTip: (v, m, rec) => Ext.String.format(gettext("Prune '{0}'"), v),
diff --git a/www/Makefile b/www/Makefile
index dc23e602..a1e73810 100644
--- a/www/Makefile
+++ b/www/Makefile
@@ -52,6 +52,7 @@ JSSRC=							\
 	DataStorePrune.js				\
 	DataStoreContent.js				\
 	DataStorePanel.js				\
+	BackupGroupChangeOwner.js			\
 	ServerStatus.js					\
 	ServerAdministration.js				\
 	Dashboard.js					\
-- 
2.20.1




^ permalink raw reply	[flat|nested] 4+ messages in thread

* [pbs-devel] [PATCH proxmox-backup 3/4] ui: use pbsUserSelector for BackupGroupChangeOwner
  2020-11-06  7:11 [pbs-devel] [PATCH proxmox-backup 1/4] get rid of backup@pam Dietmar Maurer
  2020-11-06  7:11 ` [pbs-devel] [PATCH proxmox-backup 2/4] gui: Add button for changing backup group owner Dietmar Maurer
@ 2020-11-06  7:11 ` Dietmar Maurer
  2020-11-06  7:11 ` [pbs-devel] [PATCH proxmox-backup 4/4] ui: require owner for sync jobs Dietmar Maurer
  2 siblings, 0 replies; 4+ messages in thread
From: Dietmar Maurer @ 2020-11-06  7:11 UTC (permalink / raw)
  To: pbs-devel

---
 www/BackupGroupChangeOwner.js | 3 ++-
 www/DataStoreContent.js       | 1 +
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/www/BackupGroupChangeOwner.js b/www/BackupGroupChangeOwner.js
index 0a7a7563..9bd01782 100644
--- a/www/BackupGroupChangeOwner.js
+++ b/www/BackupGroupChangeOwner.js
@@ -31,8 +31,9 @@ Ext.define('PBS.BackupGroupChangeOwner', {
 
 		column1: [
 		    {
-			xtype: 'textfield',
+			xtype: 'pbsUserSelector',
 			name: 'new-owner',
+			value: me.owner,
 			fieldLabel: gettext('Userid'),
 			minLength: 8,
 			allowBlank: false,
diff --git a/www/DataStoreContent.js b/www/DataStoreContent.js
index 7c6395c2..1901e694 100644
--- a/www/DataStoreContent.js
+++ b/www/DataStoreContent.js
@@ -281,6 +281,7 @@ Ext.define('PBS.DataStoreContent', {
 		datastore: view.datastore,
 		backup_type: data.backup_type,
 		backup_id: data.backup_id,
+		owner: data.owner,
 		autoShow: true,
 	    });
 	    win.on('destroy', this.reload, this);
-- 
2.20.1




^ permalink raw reply	[flat|nested] 4+ messages in thread

* [pbs-devel] [PATCH proxmox-backup 4/4] ui: require owner for sync jobs
  2020-11-06  7:11 [pbs-devel] [PATCH proxmox-backup 1/4] get rid of backup@pam Dietmar Maurer
  2020-11-06  7:11 ` [pbs-devel] [PATCH proxmox-backup 2/4] gui: Add button for changing backup group owner Dietmar Maurer
  2020-11-06  7:11 ` [pbs-devel] [PATCH proxmox-backup 3/4] ui: use pbsUserSelector for BackupGroupChangeOwner Dietmar Maurer
@ 2020-11-06  7:11 ` Dietmar Maurer
  2 siblings, 0 replies; 4+ messages in thread
From: Dietmar Maurer @ 2020-11-06  7:11 UTC (permalink / raw)
  To: pbs-devel

---
 www/window/SyncJobEdit.js | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/www/window/SyncJobEdit.js b/www/window/SyncJobEdit.js
index df1f2c5b..bb9540a6 100644
--- a/www/window/SyncJobEdit.js
+++ b/www/window/SyncJobEdit.js
@@ -112,6 +112,7 @@ Ext.define('PBS.window.SyncJobEdit', {
 	me.method = id ? 'PUT' : 'POST';
 	me.autoLoad = !!id;
 	me.scheduleValue = id ? null : 'hourly';
+	me.userid = id ? null : Proxmox.UserName;
 	return { };
     },
 
@@ -140,11 +141,8 @@ Ext.define('PBS.window.SyncJobEdit', {
 		fieldLabel: gettext('Local Owner'),
 		xtype: 'pbsUserSelector',
 		name: 'owner',
-		allowBlank: true,
-		value: null,
-		emptyText: 'root@pam',
-		skipEmptyText: true,
 		cbind: {
+		    value: '{userid}',
 		    deleteEmpty: '{!isCreate}',
 		},
 	    },
-- 
2.20.1




^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-11-06  7:12 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-06  7:11 [pbs-devel] [PATCH proxmox-backup 1/4] get rid of backup@pam Dietmar Maurer
2020-11-06  7:11 ` [pbs-devel] [PATCH proxmox-backup 2/4] gui: Add button for changing backup group owner Dietmar Maurer
2020-11-06  7:11 ` [pbs-devel] [PATCH proxmox-backup 3/4] ui: use pbsUserSelector for BackupGroupChangeOwner Dietmar Maurer
2020-11-06  7:11 ` [pbs-devel] [PATCH proxmox-backup 4/4] ui: require owner for sync jobs Dietmar Maurer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal