mirror of
https://github.com/wanghongenpin/proxypin.git
synced 2026-05-09 00:34:17 +08:00
Merge remote-tracking branch 'origin/main'
This commit is contained in:
@@ -83,10 +83,10 @@ class ProcessInfoManager private constructor() {
|
||||
return null
|
||||
}
|
||||
|
||||
val connectivityManager: ConnectivityManager =
|
||||
activity!!.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
|
||||
|
||||
try {
|
||||
val connectivityManager: ConnectivityManager =
|
||||
activity!!.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
|
||||
|
||||
val uid = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
||||
connectivityManager.getConnectionOwnerUid(
|
||||
OsConstants.IPPROTO_TCP, localAddress, remoteAddress
|
||||
|
||||
@@ -140,7 +140,6 @@ class Channel {
|
||||
if (!isClosed) {
|
||||
_socket.add(bytes);
|
||||
}
|
||||
|
||||
} catch (e, t) {
|
||||
if (e is StateError && e.message == "StreamSink is closed") {
|
||||
logger.w("[$id] $remoteSocketAddress write error channel is closed $e", stackTrace: t);
|
||||
|
||||
@@ -39,6 +39,11 @@ class ChannelDispatcher extends ChannelHandler<Uint8List> {
|
||||
/// 监听
|
||||
void listen(Channel channel, ChannelContext channelContext) {
|
||||
buffer.clear();
|
||||
channel.socket.done.onError((error, StackTrace trace) {
|
||||
logger.e('[${channelContext.clientChannel?.id}] secureSocket done error', error: error, stackTrace: trace);
|
||||
channel.dispatcher.exceptionCaught(channelContext, channel, error, trace: trace);
|
||||
return null;
|
||||
});
|
||||
channel.socket.listen((data) => channel.dispatcher.channelRead(channelContext, channel, data),
|
||||
onError: (error, trace) => channel.dispatcher.exceptionCaught(channelContext, channel, error, trace: trace),
|
||||
onDone: () => channel.dispatcher.channelInactive(channelContext, channel));
|
||||
@@ -130,7 +135,7 @@ class ChannelDispatcher extends ChannelHandler<Uint8List> {
|
||||
|
||||
var data = decodeResult.data;
|
||||
if (data is HttpMessage) {
|
||||
data.packageSize = length;
|
||||
data.packageSize ??= length;
|
||||
data.remoteHost = channel.remoteSocketAddress.host;
|
||||
data.remotePort = channel.remoteSocketAddress.port;
|
||||
}
|
||||
@@ -217,6 +222,7 @@ class ChannelDispatcher extends ChannelHandler<Uint8List> {
|
||||
@override
|
||||
channelInactive(ChannelContext channelContext, Channel channel) async {
|
||||
await taskQueue.waitForAll();
|
||||
channel.isOpen = false;
|
||||
handler.channelInactive(channelContext, channel);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,6 +51,11 @@ abstract class Network {
|
||||
onError: (error, StackTrace trace) =>
|
||||
channel.dispatcher.exceptionCaught(channelContext, channel, error, trace: trace),
|
||||
onDone: () => channel.dispatcher.channelInactive(channelContext, channel));
|
||||
|
||||
channel.socket.done.onError((error, StackTrace trace) {
|
||||
logger.e('[${channelContext.clientChannel?.id}] socket done error', error: error, stackTrace: trace);
|
||||
channel.dispatcher.exceptionCaught(channelContext, channel, error, trace: trace);
|
||||
});
|
||||
return channel;
|
||||
}
|
||||
|
||||
|
||||
@@ -127,7 +127,7 @@ abstract class Http2Codec<T extends HttpMessage> implements Codec<T, T> {
|
||||
|
||||
Map<String, List<String>> headers = _parseHeaders(channelContext, framePayload);
|
||||
headers.forEach((key, values) => message.headers.addValues(key, values));
|
||||
|
||||
message.packageSize = (message.packageSize ?? 0) + frameHeader.length;
|
||||
if (frameHeader.hasEndHeadersFlag &&
|
||||
channelContext.getStreamRequest(frameHeader.streamIdentifier)?.method == HttpMethod.head) {
|
||||
result.isDone = true;
|
||||
@@ -304,6 +304,7 @@ abstract class Http2Codec<T extends HttpMessage> implements Codec<T, T> {
|
||||
} else {
|
||||
message.body = List.from(message.body!)..addAll(data);
|
||||
}
|
||||
message.packageSize = (message.packageSize ?? 0) + frameHeader.length;
|
||||
return DataFrame(frameHeader, padLength, data);
|
||||
}
|
||||
|
||||
@@ -352,6 +353,7 @@ abstract class Http2Codec<T extends HttpMessage> implements Codec<T, T> {
|
||||
}
|
||||
});
|
||||
|
||||
message.packageSize = frameHeader.length;
|
||||
return HeadersFrame(frameHeader, padLength, exclusiveDependency, streamDependency, weight, blockFragment);
|
||||
}
|
||||
|
||||
|
||||
@@ -89,7 +89,6 @@ abstract class HttpMessage {
|
||||
set body(List<int>? body) {
|
||||
_body = body;
|
||||
_bodyString = null;
|
||||
packageSize = body?.length ?? 0;
|
||||
}
|
||||
|
||||
///获取消息体编码
|
||||
|
||||
@@ -77,9 +77,9 @@ String getPackage(int? size) {
|
||||
}
|
||||
|
||||
if (size > 1024 * 1024) {
|
||||
return "${(size / 1024 / 1024).toStringAsFixed(2)} MB";
|
||||
return "${(size / 1024 / 1024).toStringAsFixed(2)} M";
|
||||
}
|
||||
return "${(size / 1024).toStringAsFixed(2)} KB";
|
||||
return "${(size / 1024).toStringAsFixed(2)} K";
|
||||
}
|
||||
|
||||
String copyRawRequest(HttpRequest request) {
|
||||
|
||||
@@ -23,7 +23,7 @@ dependencies:
|
||||
url: https://gitee.com/wanghongenpin/flutter-plugins.git
|
||||
path: packages/desktop_multi_window
|
||||
path_provider: ^2.1.5
|
||||
file_picker: ^10.3.1
|
||||
file_picker: ^10.3.2
|
||||
proxy_manager: ^0.0.3
|
||||
permission_handler: ^12.0.1
|
||||
flutter_toastr: ^1.0.3
|
||||
@@ -44,7 +44,7 @@ dependencies:
|
||||
qr_flutter: ^4.1.0
|
||||
flutter_qr_reader_plus: ^1.0.6
|
||||
brotli: ^0.6.0
|
||||
macos_window_utils: ^1.8.4
|
||||
macos_window_utils: ^1.9.0
|
||||
win32audio: ^1.3.1
|
||||
vclibs: ^0.1.3
|
||||
|
||||
|
||||
Reference in New Issue
Block a user