xfuture 1.9.1 → 1.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,135 @@
1
+ let os = require("os");
2
+ const { spawn } = require('child_process')
3
+ var isMac = false;
4
+ const parser = require('./parser');
5
+ const fs = require('fs');
6
+ parser.isGlobalMode = false;
7
+
8
+ class xFuture {
9
+
10
+ init(){
11
+ this.driver = "";
12
+ this.isTunMode = true;
13
+ }
14
+
15
+ SetEventCallback(name, func){
16
+
17
+ }
18
+
19
+ GetSingBoxDuraion(){
20
+ return 0;
21
+ }
22
+
23
+ GetXrayDuration(){
24
+ return 0;
25
+ }
26
+
27
+ SetPassword(password) {
28
+
29
+ }
30
+
31
+ SetTunModeEnable(enable, workingDir){
32
+ this.isTunMode = enable;
33
+ this.workingDir = workingDir;
34
+ }
35
+
36
+ StartTunnel(url){
37
+ if(this.driver.length == 0) return false;
38
+ this.currentURI = url;
39
+ var json = parser.parse(url);
40
+ var xray_json = JSON.stringify(json);
41
+ console.log("address:", json.address);
42
+ var ok = this.startTunnelPrivate(xray_json, url);
43
+ if (ok) {
44
+ ok = this.StartProxy();
45
+ }
46
+ return ok;
47
+ }
48
+
49
+ startTunnelPrivate(json, url){
50
+
51
+ try {
52
+ // 同步写入文件
53
+ var filePath = this.workingDir + "\\configuration.json";
54
+ fs.writeFileSync(filePath, json, 'utf8');
55
+ console.log('File has been written successfully!');
56
+ var driver = this.workingDir + "\\mao-dou-xray-vpn-driver.exe";
57
+ spawn(driver, ["run", this.workingDir, filePath, url]);
58
+ return true;
59
+ } catch (err) {
60
+ console.error('An error occurred while writing to the file:', err);
61
+ return false;
62
+ }
63
+ }
64
+
65
+ stopTunnelPrivate() {
66
+ var driver = this.workingDir + "\\mao-dou-xray-vpn-driver.exe";
67
+ spawn(driver, ["kill"]);
68
+ }
69
+
70
+ StopTunnel(){
71
+ this.stopTunnelPrivate();
72
+ this.StopProxy();
73
+ }
74
+
75
+ SetVlessEncoding(version){
76
+
77
+ }
78
+
79
+ StartProxy(){
80
+ var ret = true;
81
+ try {
82
+ let process = spawn(this.driver, ["global", "socks=127.0.0.1:40008"])
83
+ process.on('close', (code) => {
84
+ console.info('[sysproxy open]:', code)
85
+ });
86
+ } catch(err) {
87
+ console.warn('[sysproxy open] failed:', err)
88
+ this.stopTunnelPrivate();
89
+ ret = false;
90
+ }
91
+ return ret;
92
+ }
93
+
94
+ // App 进程退出时调用该接口,否则会导致电脑出现断网情况
95
+ StopProxy(){
96
+ if (!isMac) {
97
+ try {
98
+ let process = spawn(this.driver, ["off"])
99
+ process.on('close', function (code) {
100
+ console.info('[sysproxy stop]:', code)
101
+ });
102
+ } catch(err) {
103
+ console.warn('[sysproxy stop] failed:', err)
104
+ }
105
+ }
106
+ }
107
+
108
+ SetGlobalMode(isGlobalMode, ipdir){
109
+ console.log("isGlobalMode:", isGlobalMode, " dir:", ipdir);
110
+ parser.workingDir = ipdir;
111
+ parser.isGlobalMode = isGlobalMode;
112
+ }
113
+
114
+ // 1. Mac 请传 install_helper.sh 和 xfuture_helper 的绝对路径
115
+ // 2. Windows 请传 "maodou" 固定字符串 和 sysproxy.exe 的绝对路径
116
+ InstallDriver(shell_path, helper_path){
117
+ this.driver = helper_path;
118
+ }
119
+
120
+ GetCurrentStatus(){
121
+ return 0;
122
+ }
123
+
124
+ GetCurrentURI(){
125
+ return this.currentURI;
126
+ }
127
+
128
+ GetStatistics(){
129
+ return {"downloadlink":0, "mdownloadlink":0, "muploadlink":0, "uploadlink":0};
130
+ }
131
+ }
132
+
133
+ const xFutureInstance = new xFuture;
134
+ xFutureInstance.init();
135
+ module.exports = xFutureInstance;
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xfuture",
3
- "version": "1.9.1",
3
+ "version": "1.9.3",
4
4
  "description": "electron vpn sdk",
5
5
  "main": "x.js",
6
6
  "scripts": {
@@ -21,6 +21,7 @@
21
21
  },
22
22
  "files": [
23
23
  "index.js",
24
+ "index-for-win32-ia32.js",
24
25
  "parser.js",
25
26
  "package.json",
26
27
  "package/darwin/xFuture.node",