Skip to content

Commit

Permalink
Merge branch 'main' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
heimanba authored Oct 22, 2024
2 parents f134130 + 0d79386 commit d727646
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 6 deletions.
1 change: 1 addition & 0 deletions plugins/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
## Wasm 插件


目前 Higress 提供了 c++ 和 golang 两种 Wasm 插件开发框架,支持 Wasm 插件路由&域名级匹配生效。

同时提供了多个内置插件,用户可以基于 Higress 提供的官方镜像仓库直接使用这些插件(以 c++ 版本举例):
Expand Down
2 changes: 1 addition & 1 deletion plugins/wasm-go/extensions/ip-restriction/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ func parseConfig(json gjson.Result, config *RestrictionConfig, log wrapper.Log)
}
status := json.Get("status")
if status.Exists() && status.Uint() > 1 {
config.Status = uint32(header.Uint())
config.Status = uint32(status.Uint())
} else {
config.Status = DefaultDenyStatus
}
Expand Down
9 changes: 6 additions & 3 deletions plugins/wasm-rust/extensions/ai-data-masking/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ use fancy_regex::Regex;
use grok::patterns;
use higress_wasm_rust::log::Log;
use higress_wasm_rust::plugin_wrapper::{HttpContextWrapper, RootContextWrapper};
use higress_wasm_rust::request_wrapper::has_request_body;
use higress_wasm_rust::rule_matcher::{on_configure, RuleMatcher, SharedRuleMatcher};
use jieba_rs::Jieba;
use jsonpath_rust::{JsonPath, JsonPathValue};
Expand Down Expand Up @@ -519,7 +520,11 @@ impl HttpContext for AiDataMasking {
_num_headers: usize,
_end_of_stream: bool,
) -> HeaderAction {
HeaderAction::StopIteration
if has_request_body() {
HeaderAction::StopIteration
} else {
HeaderAction::Continue
}
}
fn on_http_response_headers(
&mut self,
Expand Down Expand Up @@ -669,14 +674,12 @@ impl HttpContextWrapper<AiDataMaskingConfig> for AiDataMasking {
}
fn on_http_response_complete_body(&mut self, res_body: &Bytes) -> DataAction {
if self.config.is_none() {
self.reset_http_response();
return DataAction::Continue;
}
let config = self.config.as_ref().unwrap();
let mut res_body = match String::from_utf8(res_body.clone()) {
Ok(r) => r,
Err(_) => {
self.reset_http_response();
return DataAction::Continue;
}
};
Expand Down
19 changes: 18 additions & 1 deletion plugins/wasm-rust/src/plugin_wrapper.rs
Original file line number Diff line number Diff line change
Expand Up @@ -309,7 +309,9 @@ where
fn on_http_request_headers(&mut self, num_headers: usize, end_of_stream: bool) -> HeaderAction {
let binding = self.rule_matcher.borrow();
self.config = binding.get_match_config().map(|config| config.1.clone());

if self.config.is_none() {
return HeaderAction::Continue;
}
for (k, v) in self.get_http_request_headers_bytes() {
match String::from_utf8(v) {
Ok(header_value) => {
Expand Down Expand Up @@ -340,6 +342,9 @@ where
}

fn on_http_request_body(&mut self, body_size: usize, end_of_stream: bool) -> DataAction {
if self.config.is_none() {
return DataAction::Continue;
}
if !self.http_content.borrow().cache_request_body() {
return self
.http_content
Expand All @@ -362,6 +367,9 @@ where
}

fn on_http_request_trailers(&mut self, num_trailers: usize) -> Action {
if self.config.is_none() {
return Action::Continue;
}
self.http_content
.borrow_mut()
.on_http_request_trailers(num_trailers)
Expand All @@ -372,6 +380,9 @@ where
num_headers: usize,
end_of_stream: bool,
) -> HeaderAction {
if self.config.is_none() {
return HeaderAction::Continue;
}
for (k, v) in self.get_http_response_headers_bytes() {
match String::from_utf8(v) {
Ok(header_value) => {
Expand Down Expand Up @@ -399,6 +410,9 @@ where
}

fn on_http_response_body(&mut self, body_size: usize, end_of_stream: bool) -> DataAction {
if self.config.is_none() {
return DataAction::Continue;
}
if !self.http_content.borrow().cache_response_body() {
return self
.http_content
Expand All @@ -423,6 +437,9 @@ where
}

fn on_http_response_trailers(&mut self, num_trailers: usize) -> Action {
if self.config.is_none() {
return Action::Continue;
}
self.http_content
.borrow_mut()
.on_http_response_trailers(num_trailers)
Expand Down
2 changes: 1 addition & 1 deletion plugins/wasm-rust/src/request_wrapper.rs
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ pub fn has_request_body() -> bool {
content_type, content_length_str, transfer_encoding
)
).unwrap();
if !content_type.is_some_and(|x| !x.is_empty()) {
if content_type.is_some_and(|x| !x.is_empty()) {
return true;
}
if let Some(cl) = content_length_str {
Expand Down

0 comments on commit d727646

Please sign in to comment.