feat(web): add webhook-managed machine access and multi-instance CLI support (#1989)

* feat: add webhook-managed access and multi-instance CLI support
* fix(foreign): verify credential of foreign credential peer
This commit is contained in:
KKRainbow
2026-03-15 12:08:50 +08:00
committed by GitHub
parent c8f3c5d6aa
commit e6ac31fb20
27 changed files with 2678 additions and 980 deletions
@@ -32,7 +32,7 @@ impl CredentialManageRpc for CredentialManageRpcService {
ctrl: Self::Controller,
req: GenerateCredentialRequest,
) -> crate::proto::rpc_types::error::Result<GenerateCredentialResponse> {
super::get_instance_service(&self.instance_manager, &None)?
super::get_instance_service(&self.instance_manager, &req.instance)?
.get_credential_manage_service()
.generate_credential(ctrl, req)
.await
@@ -43,7 +43,7 @@ impl CredentialManageRpc for CredentialManageRpcService {
ctrl: Self::Controller,
req: RevokeCredentialRequest,
) -> crate::proto::rpc_types::error::Result<RevokeCredentialResponse> {
super::get_instance_service(&self.instance_manager, &None)?
super::get_instance_service(&self.instance_manager, &req.instance)?
.get_credential_manage_service()
.revoke_credential(ctrl, req)
.await
@@ -54,7 +54,7 @@ impl CredentialManageRpc for CredentialManageRpcService {
ctrl: Self::Controller,
req: ListCredentialsRequest,
) -> crate::proto::rpc_types::error::Result<ListCredentialsResponse> {
super::get_instance_service(&self.instance_manager, &None)?
super::get_instance_service(&self.instance_manager, &req.instance)?
.get_credential_manage_service()
.list_credentials(ctrl, req)
.await
+6 -2
View File
@@ -276,13 +276,17 @@ impl WebClientService for InstanceManageRpcService {
let Some(control) = self.manager.get_instance_config_control(&inst_id) else {
continue;
};
let Some(name) = self.manager.get_network_instance_name(&inst_id) else {
let Some(network_name) = self.manager.get_network_name(&inst_id) else {
continue;
};
let Some(instance_name) = self.manager.get_instance_name(&inst_id) else {
continue;
};
let meta = NetworkMeta {
inst_id: Some(inst_id.into()),
network_name: name,
network_name,
config_permission: control.permission.into(),
instance_name,
};
metas.push(meta);
}
+7 -7
View File
@@ -50,13 +50,6 @@ impl LoggerRpc for LoggerRpcService {
) -> Result<SetLoggerConfigResponse, rpc_types::error::Error> {
let level_str = Self::log_level_to_string(request.level());
// 更新当前日志级别
if let Some(current_level) = CURRENT_LOG_LEVEL.get() {
if let Ok(mut level) = current_level.lock() {
*level = level_str.clone();
}
}
// 发送新的日志级别到 logger 重载器
if let Some(sender) = LOGGER_LEVEL_SENDER.get() {
if let Ok(sender) = sender.lock() {
@@ -78,6 +71,13 @@ impl LoggerRpc for LoggerRpcService {
)));
}
// 更新当前日志级别
if let Some(current_level) = CURRENT_LOG_LEVEL.get() {
if let Ok(mut level) = current_level.lock() {
*level = Self::log_level_to_string(request.level());
}
}
Ok(SetLoggerConfigResponse {})
}
+3 -1
View File
@@ -234,12 +234,14 @@ where
let config = self
.handle_get_network_config(identify.clone(), instance_id)
.await?;
let network_name = config.network_name.unwrap_or_default();
metas.insert(
instance_id,
NetworkMeta {
inst_id: Some(instance_id.into()),
network_name: config.network_name.unwrap_or_default(),
network_name: network_name.clone(),
config_permission: 0,
instance_name: network_name,
},
);
}