* [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