This commit is contained in:
houseme
2025-05-19 16:21:22 +08:00
parent dff7476143
commit be8a615cd7
4 changed files with 23 additions and 24 deletions
+1 -2
View File
@@ -44,7 +44,7 @@ pub const BUCKET_TARGETS_FILE: &str = "bucket-targets.json";
pub struct BucketMetadata { pub struct BucketMetadata {
pub name: String, pub name: String,
pub created: OffsetDateTime, pub created: OffsetDateTime,
pub lock_enabled: bool, // 虽然标记为不使用,但可能需要保留 pub lock_enabled: bool, // While marked as unused, it may need to be retained
pub policy_config_json: Vec<u8>, pub policy_config_json: Vec<u8>,
pub notification_config_xml: Vec<u8>, pub notification_config_xml: Vec<u8>,
pub lifecycle_config_xml: Vec<u8>, pub lifecycle_config_xml: Vec<u8>,
@@ -420,7 +420,6 @@ where
#[cfg(test)] #[cfg(test)]
mod test { mod test {
use super::*; use super::*;
#[tokio::test] #[tokio::test]
+4 -4
View File
@@ -22,7 +22,7 @@ pub struct Cache {
pub sts_accounts: ArcSwap<CacheEntity<UserIdentity>>, pub sts_accounts: ArcSwap<CacheEntity<UserIdentity>>,
pub sts_policies: ArcSwap<CacheEntity<MappedPolicy>>, pub sts_policies: ArcSwap<CacheEntity<MappedPolicy>>,
pub groups: ArcSwap<CacheEntity<GroupInfo>>, pub groups: ArcSwap<CacheEntity<GroupInfo>>,
pub user_group_memeberships: ArcSwap<CacheEntity<HashSet<String>>>, pub user_group_memberships: ArcSwap<CacheEntity<HashSet<String>>>,
pub group_policies: ArcSwap<CacheEntity<MappedPolicy>>, pub group_policies: ArcSwap<CacheEntity<MappedPolicy>>,
} }
@@ -35,7 +35,7 @@ impl Default for Cache {
sts_accounts: ArcSwap::new(Arc::new(CacheEntity::default())), sts_accounts: ArcSwap::new(Arc::new(CacheEntity::default())),
sts_policies: ArcSwap::new(Arc::new(CacheEntity::default())), sts_policies: ArcSwap::new(Arc::new(CacheEntity::default())),
groups: ArcSwap::new(Arc::new(CacheEntity::default())), groups: ArcSwap::new(Arc::new(CacheEntity::default())),
user_group_memeberships: ArcSwap::new(Arc::new(CacheEntity::default())), user_group_memberships: ArcSwap::new(Arc::new(CacheEntity::default())),
group_policies: ArcSwap::new(Arc::new(CacheEntity::default())), group_policies: ArcSwap::new(Arc::new(CacheEntity::default())),
} }
} }
@@ -97,7 +97,7 @@ impl Cache {
.insert(group_name.clone()); .insert(group_name.clone());
} }
} }
self.user_group_memeberships self.user_group_memberships
.store(Arc::new(CacheEntity::new(user_group_memeberships))); .store(Arc::new(CacheEntity::new(user_group_memeberships)));
} }
} }
@@ -228,7 +228,7 @@ impl From<&Cache> for CacheInner {
sts_accounts: value.sts_accounts.load(), sts_accounts: value.sts_accounts.load(),
sts_policies: value.sts_policies.load(), sts_policies: value.sts_policies.load(),
groups: value.groups.load(), groups: value.groups.load(),
user_group_memeberships: value.user_group_memeberships.load(), user_group_memeberships: value.user_group_memberships.load(),
group_policies: value.group_policies.load(), group_policies: value.group_policies.load(),
} }
} }
+14 -14
View File
@@ -696,7 +696,7 @@ where
for group in self for group in self
.cache .cache
.user_group_memeberships .user_group_memberships
.load() .load()
.get(name) .get(name)
.cloned() .cloned()
@@ -821,7 +821,7 @@ where
pub async fn get_user_info(&self, name: &str) -> Result<madmin::UserInfo> { pub async fn get_user_info(&self, name: &str) -> Result<madmin::UserInfo> {
let users = self.cache.users.load(); let users = self.cache.users.load();
let policies = self.cache.user_policies.load(); let policies = self.cache.user_policies.load();
let group_members = self.cache.user_group_memeberships.load(); let group_members = self.cache.user_group_memberships.load();
let u = match users.get(name) { let u = match users.get(name) {
Some(u) => u, Some(u) => u,
@@ -860,7 +860,7 @@ where
let users = self.cache.users.load(); let users = self.cache.users.load();
let policies = self.cache.user_policies.load(); let policies = self.cache.user_policies.load();
let group_members = self.cache.user_group_memeberships.load(); let group_members = self.cache.user_group_memberships.load();
for (k, v) in users.iter() { for (k, v) in users.iter() {
if v.credentials.is_temp() || v.credentials.is_service_account() { if v.credentials.is_temp() || v.credentials.is_service_account() {
@@ -894,7 +894,7 @@ where
pub async fn get_bucket_users(&self, bucket_name: &str) -> Result<HashMap<String, madmin::UserInfo>> { pub async fn get_bucket_users(&self, bucket_name: &str) -> Result<HashMap<String, madmin::UserInfo>> {
let users = self.cache.users.load(); let users = self.cache.users.load();
let policies_cache = self.cache.user_policies.load(); let policies_cache = self.cache.user_policies.load();
let group_members = self.cache.user_group_memeberships.load(); let group_members = self.cache.user_group_memberships.load();
let group_policy_cache = self.cache.group_policies.load(); let group_policy_cache = self.cache.group_policies.load();
let mut ret = HashMap::new(); let mut ret = HashMap::new();
@@ -993,7 +993,7 @@ where
} }
if utype == UserType::Reg { if utype == UserType::Reg {
if let Some(member_of) = self.cache.user_group_memeberships.load().get(access_key) { if let Some(member_of) = self.cache.user_group_memberships.load().get(access_key) {
for member in member_of.iter() { for member in member_of.iter() {
let _ = self let _ = self
.remove_members_from_group(member, vec![access_key.to_string()], false) .remove_members_from_group(member, vec![access_key.to_string()], false)
@@ -1167,12 +1167,12 @@ where
Cache::add_or_update(&self.cache.groups, group, &gi, OffsetDateTime::now_utc()); Cache::add_or_update(&self.cache.groups, group, &gi, OffsetDateTime::now_utc());
let user_group_memeberships = self.cache.user_group_memeberships.load(); let user_group_memeberships = self.cache.user_group_memberships.load();
members.iter().for_each(|member| { members.iter().for_each(|member| {
if let Some(m) = user_group_memeberships.get(member) { if let Some(m) = user_group_memeberships.get(member) {
let mut m = m.clone(); let mut m = m.clone();
m.insert(group.to_string()); m.insert(group.to_string());
Cache::add_or_update(&self.cache.user_group_memeberships, member, &m, OffsetDateTime::now_utc()); Cache::add_or_update(&self.cache.user_group_memberships, member, &m, OffsetDateTime::now_utc());
} }
}); });
@@ -1252,12 +1252,12 @@ where
Cache::add_or_update(&self.cache.groups, name, &gi, OffsetDateTime::now_utc()); Cache::add_or_update(&self.cache.groups, name, &gi, OffsetDateTime::now_utc());
let user_group_memeberships = self.cache.user_group_memeberships.load(); let user_group_memeberships = self.cache.user_group_memberships.load();
members.iter().for_each(|member| { members.iter().for_each(|member| {
if let Some(m) = user_group_memeberships.get(member) { if let Some(m) = user_group_memeberships.get(member) {
let mut m = m.clone(); let mut m = m.clone();
m.remove(name); m.remove(name);
Cache::add_or_update(&self.cache.user_group_memeberships, member, &m, OffsetDateTime::now_utc()); Cache::add_or_update(&self.cache.user_group_memberships, member, &m, OffsetDateTime::now_utc());
} }
}); });
@@ -1308,23 +1308,23 @@ where
} }
fn remove_group_from_memberships_map(&self, group: &str) { fn remove_group_from_memberships_map(&self, group: &str) {
let user_group_memeberships = self.cache.user_group_memeberships.load(); let user_group_memeberships = self.cache.user_group_memberships.load();
for (k, v) in user_group_memeberships.iter() { for (k, v) in user_group_memeberships.iter() {
if v.contains(group) { if v.contains(group) {
let mut m = v.clone(); let mut m = v.clone();
m.remove(group); m.remove(group);
Cache::add_or_update(&self.cache.user_group_memeberships, k, &m, OffsetDateTime::now_utc()); Cache::add_or_update(&self.cache.user_group_memberships, k, &m, OffsetDateTime::now_utc());
} }
} }
} }
fn update_group_memberships_map(&self, group: &str, gi: &GroupInfo) { fn update_group_memberships_map(&self, group: &str, gi: &GroupInfo) {
let user_group_memeberships = self.cache.user_group_memeberships.load(); let user_group_memeberships = self.cache.user_group_memberships.load();
for member in gi.members.iter() { for member in gi.members.iter() {
if let Some(m) = user_group_memeberships.get(member) { if let Some(m) = user_group_memeberships.get(member) {
let mut m = m.clone(); let mut m = m.clone();
m.insert(group.to_string()); m.insert(group.to_string());
Cache::add_or_update(&self.cache.user_group_memeberships, member, &m, OffsetDateTime::now_utc()); Cache::add_or_update(&self.cache.user_group_memberships, member, &m, OffsetDateTime::now_utc());
} }
} }
} }
@@ -1442,7 +1442,7 @@ where
Cache::delete(&self.cache.users, name, OffsetDateTime::now_utc()); Cache::delete(&self.cache.users, name, OffsetDateTime::now_utc());
} }
let member_of = self.cache.user_group_memeberships.load(); let member_of = self.cache.user_group_memberships.load();
if let Some(m) = member_of.get(name) { if let Some(m) = member_of.get(name) {
for group in m.iter() { for group in m.iter() {
if let Err(err) = self.remove_members_from_group(group, vec![name.to_string()], true).await { if let Err(err) = self.remove_members_from_group(group, vec![name.to_string()], true).await {
+4 -4
View File
@@ -110,7 +110,7 @@ pub struct ObjectStore {
} }
impl ObjectStore { impl ObjectStore {
const BUCKET_NAME: &str = ".rustfs.sys"; const BUCKET_NAME: &'static str = ".rustfs.sys";
pub fn new(object_api: Arc<ECStore>) -> Self { pub fn new(object_api: Arc<ECStore>) -> Self {
Self { object_api } Self { object_api }
@@ -135,7 +135,7 @@ impl ObjectStore {
async fn list_iam_config_items(&self, prefix: &str, ctx_rx: B_Receiver<bool>, sender: Sender<StringOrErr>) { async fn list_iam_config_items(&self, prefix: &str, ctx_rx: B_Receiver<bool>, sender: Sender<StringOrErr>) {
// debug!("list iam config items, prefix: {}", &prefix); // debug!("list iam config items, prefix: {}", &prefix);
// todo, 实现walk,使用walk // todo, 实现 walk,使用 walk
// let prefix = format!("{}{}", prefix, item); // let prefix = format!("{}{}", prefix, item);
@@ -349,7 +349,7 @@ impl ObjectStore {
// user.credentials.access_key = name.to_owned(); // user.credentials.access_key = name.to_owned();
// } // }
// // todo, 校验session token // // todo, 校验 session token
// Ok(Some(user)) // Ok(Some(user))
// } // }
@@ -932,7 +932,7 @@ impl Store for ObjectStore {
// Arc::new(tokio::sync::Mutex::new(CacheEntity::default())), // Arc::new(tokio::sync::Mutex::new(CacheEntity::default())),
// ); // );
// // 一次读取32个元素 // // 一次读取 32 个元素
// let iter = items // let iter = items
// .iter() // .iter()
// .map(|item| item.trim_start_matches("config/iam/")) // .map(|item| item.trim_start_matches("config/iam/"))