修复请求重写

This commit is contained in:
wanghongenpin
2023-12-07 17:14:12 +08:00
parent 3671db1826
commit f5f504dda4
5 changed files with 25 additions and 14 deletions

View File

@@ -90,6 +90,8 @@ class ProxyHelper {
..headers.contentLength = message.codeUnits.length
..body = message.codeUnits;
channel.putAttribute(AttributeKeys.host, hostAndPort);
listener?.onRequest(channel, request);
listener?.onResponse(channel, request.response!);
}

View File

@@ -90,14 +90,16 @@ class MultiWindow {
switch (operation) {
case Operation.add:
List<dynamic> list = arguments['items'] as List<dynamic>;
List<RewriteItem> items =list.map((e) => RewriteItem.fromJson(e)).toList();
await requestRewrites.addRule(RequestRewriteRule.formJson(arguments['rule']), items);
break;
case Operation.update:
List<dynamic>? list = arguments['items'] as List<dynamic>?;
List<RewriteItem>? items = list?.map((e) => RewriteItem.fromJson(e)).toList();
await requestRewrites.updateRule(arguments['index'], RequestRewriteRule.formJson(arguments['rule']), items);
var rule = RequestRewriteRule.formJson(arguments['rule']);
List<dynamic> list = arguments['items'] as List<dynamic>;
List<RewriteItem> items = list.map((e) => RewriteItem.fromJson(e)).toList();
if (operation == Operation.add) {
await requestRewrites.addRule(rule, items);
} else {
await requestRewrites.updateRule(arguments['index'], rule, items);
}
break;
case Operation.delete:
await requestRewrites.removeIndex([arguments['index']]);
@@ -113,7 +115,7 @@ class MultiWindow {
_refreshRewrite = true;
Future.delayed(const Duration(milliseconds: 1000), () async {
_refreshRewrite = false;
(await RequestRewrites.instance).flushRequestRewriteConfig();
requestRewrites.flushRequestRewriteConfig();
});
}
}
@@ -136,7 +138,7 @@ void registerMethodHandler() {
return 'done';
}
if (call.method == 'refreshRequestRewrite' && fromWindowId != 0) {
if (call.method == 'refreshRequestRewrite') {
MultiWindow._handleRefreshRewrite(Operation.of(call.arguments['operation']), call.arguments);
return 'done';
}

View File

@@ -188,10 +188,9 @@ class HttpBodyState extends State<HttpBodyWidget> {
showDialog(
context: context,
barrierDismissible: false,
builder: (BuildContext context) => RuleAddDialog(rule: rule, items: rewriteItems)).then((value) {
builder: (BuildContext context) => RuleAddDialog(rule: rule, items: rewriteItems, newWindow: false)).then((value) {
if (value is RequestRewriteRule) {
DesktopMultiWindow.getAllSubWindowIds().then((windowIds) async {
await requestRewrites.flushRequestRewriteConfig();
var items = await requestRewrites.getRewriteItems(value);
await requestRewrites.updateRule(requestRewrites.rules.indexOf(value), value, items);
for (var windowId in windowIds) {

View File

@@ -115,7 +115,11 @@ class DomainWidgetState extends State<DomainWidget> with AutomaticKeepAliveClien
///添加请求
add(Channel channel, HttpRequest request) {
container.add(request);
HostAndPort hostAndPort = channel.getAttribute(AttributeKeys.host);
HostAndPort? hostAndPort = request.hostAndPort;
if (hostAndPort == null) {
return;
}
//按照域名分类
HeaderBody? headerBody = containerMap[hostAndPort];
if (headerBody != null) {

View File

@@ -279,8 +279,9 @@ class _RequestRuleListState extends State<RequestRuleList> {
class RuleAddDialog extends StatefulWidget {
final RequestRewriteRule? rule;
final List<RewriteItem>? items;
final bool newWindow;
const RuleAddDialog({super.key, this.rule, this.items});
const RuleAddDialog({super.key, this.rule, this.items, this.newWindow = true});
@override
State<StatefulWidget> createState() {
@@ -397,7 +398,10 @@ class _RuleAddDialogState extends State<RuleAddDialog> {
if (index >= 0) {
MultiWindow.invokeRefreshRewrite(Operation.update, index: index, rule: rule, items: items);
} else {
requestRewrites.rules.add(rule);
if (widget.newWindow) {
requestRewrites.rules.add(rule);
}
MultiWindow.invokeRefreshRewrite(Operation.add, rule: rule, items: items);
}
if (mounted) {