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