11import 'dart:async' ;
22import 'dart:convert' ;
3+ import 'dart:developer' ;
34import 'package:http/http.dart' as http;
4- import 'package:flutter_v2ray/flutter_v2ray.dart' ;
55import 'package:dart_ping/dart_ping.dart' ;
66import 'package:rxdart/rxdart.dart' ;
7- import 'package:vpnclient_engine_flutter/vpnclient_engine/core.dart' ;
8- //import 'package:vpnclient_engine_flutter/vpnclient_engine/protocols/openvpn.dart';
9- import 'package:vpnclient_engine_flutter/vpnclient_engine/protocols/v2ray.dart' ;
10- //import 'package:vpnclient_engine_flutter/vpnclient_engine/protocols/wireguard.dart';
117
12- export 'package:vpnclient_engine_flutter/vpnclient_engine/core.dart' ;
8+ import 'package:vpnclient_engine_flutter/client/core.dart' ;
9+ //import 'package:vpnclient_engine_flutter/client/protocols/openvpn.dart';
10+ import 'package:vpnclient_engine_flutter/client/protocols/v2ray.dart' ;
11+ //import 'package:vpnclient_engine_flutter/client/protocols/wireguard.dart';
12+
13+ export 'package:vpnclient_engine_flutter/client/core.dart' ;
1314
1415class VPNclientEngine {
1516 static List <List <String >> _subscriptionServers = [];
@@ -53,42 +54,40 @@ class VPNclientEngine {
5354 }
5455
5556 static void initialize () {
56- print ('VPNclient Engine initialized' );
57- _vpnCore ?? = V2RayCore ();
57+ log ('VPNclient Engine initialized' );
5858 }
5959
6060 static void clearSubscriptions () {
6161 _subscriptions.clear ();
62- print ('All subscriptions cleared' );
62+ log ('All subscriptions cleared' );
6363 }
6464
6565 static void addSubscription ({required String subscriptionURL}) {
6666 _subscriptions.add (subscriptionURL);
67- print ('Subscription added: $subscriptionURL ' );
67+ log ('Subscription added: $subscriptionURL ' );
6868 }
6969
7070 static void addSubscriptions ({required List <String > subscriptionURLs}) {
7171 _subscriptions.addAll (subscriptionURLs);
72- print ('Subscriptions added: ${subscriptionURLs .join (", " )}' );
72+ log ('Subscriptions added: ${subscriptionURLs .join (", " )}' );
7373 }
7474
7575 static Future <void > updateSubscription ({
7676 required int subscriptionIndex,
7777 }) async {
7878 if (subscriptionIndex < 0 || subscriptionIndex >= _subscriptions.length) {
79- print ('Invalid subscription index' );
79+ log ('Invalid subscription index' );
8080 return ;
8181 }
8282
8383 final url = _subscriptions[subscriptionIndex];
84- print ('Fetching subscription data from: $url ' );
84+ log ('Fetching subscription data from: $url ' );
8585
8686 try {
87- //Сейчас при поднятом VPN обновление подписки пойдет через туннель. Позже необходимо реализовать разные механизмы обновления (только через туннель/только напрямую/комбинированный)
8887 final response = await http.get (Uri .parse (url));
8988
9089 if (response.statusCode != 200 ) {
91- print ('Failed to fetch subscription: HTTP ${response .statusCode }' );
90+ log ('Failed to fetch subscription: HTTP ${response .statusCode }' );
9291 return ;
9392 }
9493
@@ -102,15 +101,15 @@ class VPNclientEngine {
102101 for (var server in jsonList) {
103102 servers.add (server.toString ());
104103 }
105- print ('Parsed JSON subscription: ${servers .length } servers loaded' );
104+ log ('Parsed JSON subscription: ${servers .length } servers loaded' );
106105 } else {
107106 // NEWLINE format
108107 servers =
109108 content
110109 .split ('\n ' )
111110 .where ((line) => line.trim ().isNotEmpty)
112111 .toList ();
113- print ('Parsed NEWLINE subscription: ${servers .length } servers loaded' );
112+ log ('Parsed NEWLINE subscription: ${servers .length } servers loaded' );
114113 }
115114
116115 // Ensure the servers list matches the subscriptions list size
@@ -122,9 +121,9 @@ class VPNclientEngine {
122121 _subscriptionServers[subscriptionIndex] = servers;
123122 _subscriptionLoadedSubject.add (SubscriptionDetails ());
124123
125- print ('Subscription #$subscriptionIndex servers updated successfully' );
124+ log ('Subscription #$subscriptionIndex servers updated successfully' );
126125 } catch (e) {
127- print ('Error updating subscription: $e ' );
126+ log ('Error updating subscription: $e ' );
128127 _emitError (ErrorCode .unknownError, 'Error updating subscription: $e ' );
129128 }
130129 }
@@ -161,19 +160,15 @@ class VPNclientEngine {
161160 }
162161
163162 static Future <void > disconnect () async {
164- if (_vpnCore == null ) {
165- _emitError (ErrorCode .unknownError, 'VPN core is not initialized.' );
166- return ;
167- }
168- await _vpnCore! .disconnect ();
163+ await _vpnCore.disconnect ();
169164 }
170165
171166 static void setRoutingRules ({required List <RoutingRule > rules}) {
172167 for (var rule in rules) {
173168 if (rule.appName != null ) {
174- print ('Routing rule for app ${rule .appName }: ${rule .action }' );
169+ log ('Routing rule for app ${rule .appName }: ${rule .action }' );
175170 } else if (rule.domain != null ) {
176- print ('Routing rule for domain ${rule .domain }: ${rule .action }' );
171+ log ('Routing rule for domain ${rule .domain }: ${rule .action }' );
177172 }
178173 }
179174 }
@@ -184,15 +179,15 @@ class VPNclientEngine {
184179 }) async {
185180 if (subscriptionIndex < 0 ||
186181 subscriptionIndex >= _subscriptionServers.length) {
187- print ('Invalid subscription index' );
182+ log ('Invalid subscription index' );
188183 return ;
189184 }
190185 if (index < 0 || index >= _subscriptionServers[subscriptionIndex].length) {
191- print ('Invalid server index' );
186+ log ('Invalid server index' );
192187 return ;
193188 }
194189 final serverAddress = _subscriptionServers[subscriptionIndex][index];
195- print ('Pinging server: $serverAddress ' );
190+ log ('Pinging server: $serverAddress ' );
196191
197192 try {
198193 final ping = Ping (serverAddress, count: 3 );
@@ -207,11 +202,11 @@ class VPNclientEngine {
207202 latencyInMs: latency,
208203 );
209204 _pingResultSubject.add (result);
210- print (
205+ log (
211206 'Ping result: sub=${result .subscriptionIndex }, server=${result .serverIndex }, latency=${result .latencyInMs } ms' ,
212207 );
213208 } else {
214- print ('Ping failed: No response' );
209+ log ('Ping failed: No response' );
215210 _pingResultSubject.add (
216211 PingResult (
217212 subscriptionIndex: subscriptionIndex,
@@ -221,7 +216,7 @@ class VPNclientEngine {
221216 ); // Indicate error with -1
222217 }
223218 } catch (e) {
224- print ('Ping error: $e ' );
219+ log ('Ping error: $e ' );
225220 _pingResultSubject.add (
226221 PingResult (
227222 subscriptionIndex: subscriptionIndex,
@@ -265,7 +260,7 @@ class VPNclientEngine {
265260 static Future <void > loadSubscriptions ({
266261 required List <String > subscriptionLinks,
267262 }) async {
268- print ('loadSubscriptions: ${subscriptionLinks .join (", " )}' );
263+ log ('loadSubscriptions: ${subscriptionLinks .join (", " )}' );
269264 _subscriptions.addAll (subscriptionLinks);
270265 for (var element in subscriptionLinks) {
271266 addSubscription (subscriptionURL: element);
@@ -285,10 +280,10 @@ class VPNclientEngine {
285280 }
286281
287282 static void setAutoConnect ({required bool enable}) {
288- print ('setAutoConnect: $enable ' );
283+ log ('setAutoConnect: $enable ' );
289284 }
290285
291286 static void setKillSwitch ({required bool enable}) {
292- print ('setKillSwitch: $enable ' );
287+ log ('setKillSwitch: $enable ' );
293288 }
294289}
0 commit comments