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

View File

@@ -44,7 +44,7 @@ pub const BUCKET_TARGETS_FILE: &str = "bucket-targets.json";
pub struct BucketMetadata {
pub name: String,
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 notification_config_xml: Vec<u8>,
pub lifecycle_config_xml: Vec<u8>,
@@ -420,7 +420,6 @@ where
#[cfg(test)]
mod test {
use super::*;
#[tokio::test]

View File

@@ -22,7 +22,7 @@ pub struct Cache {
pub sts_accounts: ArcSwap<CacheEntity<UserIdentity>>,
pub sts_policies: ArcSwap<CacheEntity<MappedPolicy>>,
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>>,
}
@@ -35,7 +35,7 @@ impl Default for Cache {
sts_accounts: ArcSwap::new(Arc::new(CacheEntity::default())),
sts_policies: 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())),
}
}
@@ -97,7 +97,7 @@ impl Cache {
.insert(group_name.clone());
}
}
self.user_group_memeberships
self.user_group_memberships
.store(Arc::new(CacheEntity::new(user_group_memeberships)));
}
}
@@ -228,7 +228,7 @@ impl From<&Cache> for CacheInner {
sts_accounts: value.sts_accounts.load(),
sts_policies: value.sts_policies.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(),
}
}

View File

@@ -696,7 +696,7 @@ where
for group in self
.cache
.user_group_memeberships
.user_group_memberships
.load()
.get(name)
.cloned()
@@ -821,7 +821,7 @@ where
pub async fn get_user_info(&self, name: &str) -> Result<madmin::UserInfo> {
let users = self.cache.users.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) {
Some(u) => u,
@@ -860,7 +860,7 @@ where
let users = self.cache.users.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() {
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>> {
let users = self.cache.users.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 mut ret = HashMap::new();
@@ -993,7 +993,7 @@ where
}
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() {
let _ = self
.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());
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| {
if let Some(m) = user_group_memeberships.get(member) {
let mut m = m.clone();
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());
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| {
if let Some(m) = user_group_memeberships.get(member) {
let mut m = m.clone();
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) {
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() {
if v.contains(group) {
let mut m = v.clone();
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) {
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() {
if let Some(m) = user_group_memeberships.get(member) {
let mut m = m.clone();
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());
}
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) {
for group in m.iter() {
if let Err(err) = self.remove_members_from_group(group, vec![name.to_string()], true).await {

View File

@@ -110,7 +110,7 @@ pub struct ObjectStore {
}
impl ObjectStore {
const BUCKET_NAME: &str = ".rustfs.sys";
const BUCKET_NAME: &'static str = ".rustfs.sys";
pub fn new(object_api: Arc<ECStore>) -> Self {
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>) {
// debug!("list iam config items, prefix: {}", &prefix);
// todo, 实现walk使用walk
// todo, 实现 walk使用 walk
// let prefix = format!("{}{}", prefix, item);
@@ -349,7 +349,7 @@ impl ObjectStore {
// user.credentials.access_key = name.to_owned();
// }
// // todo, 校验session token
// // todo, 校验 session token
// Ok(Some(user))
// }
@@ -932,7 +932,7 @@ impl Store for ObjectStore {
// Arc::new(tokio::sync::Mutex::new(CacheEntity::default())),
// );
// // 一次读取32个元素
// // 一次读取 32 个元素
// let iter = items
// .iter()
// .map(|item| item.trim_start_matches("config/iam/"))