saros-proxy 0.5.2 → 0.5.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.
- package/dist/cli/autostart.d.ts +19 -4
- package/dist/cli/autostart.js +193 -17
- package/dist/cli/autostart.js.map +1 -1
- package/dist/index.js +30 -3
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/cli/autostart.d.ts
CHANGED
|
@@ -1,10 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* autostart.ts — Register/unregister the daemon to start on user login.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Methods:
|
|
5
|
+
* registry — HKCU\Software\Microsoft\Windows\CurrentVersion\Run (default)
|
|
6
|
+
* vbs — VBScript in Windows Startup folder (legacy, may trigger AV)
|
|
7
|
+
* auto — detect third-party AV → registry, else vbs
|
|
8
|
+
*
|
|
5
9
|
* macOS: creates a launchd agent plist (TODO)
|
|
6
10
|
* Linux: creates a systemd --user service (TODO)
|
|
7
11
|
*/
|
|
8
|
-
export
|
|
9
|
-
|
|
10
|
-
|
|
12
|
+
export type AutostartMethod = 'vbs' | 'registry' | 'auto';
|
|
13
|
+
/**
|
|
14
|
+
* Detect third-party antivirus by scanning running processes.
|
|
15
|
+
* Exported for testing.
|
|
16
|
+
*/
|
|
17
|
+
export declare function detectThirdPartyAv(): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Resolve the effective method based on user preference and environment.
|
|
20
|
+
* Exported for testing.
|
|
21
|
+
*/
|
|
22
|
+
export declare function resolveMethod(method?: AutostartMethod, avDetected?: boolean): 'vbs' | 'registry';
|
|
23
|
+
export declare function autostartInstall(port?: number, method?: AutostartMethod): void;
|
|
24
|
+
export declare function autostartUninstall(method?: AutostartMethod): void;
|
|
25
|
+
export declare function autostartStatus(method?: AutostartMethod): void;
|
package/dist/cli/autostart.js
CHANGED
|
@@ -1,13 +1,40 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* autostart.ts — Register/unregister the daemon to start on user login.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Methods:
|
|
5
|
+
* registry — HKCU\Software\Microsoft\Windows\CurrentVersion\Run (default)
|
|
6
|
+
* vbs — VBScript in Windows Startup folder (legacy, may trigger AV)
|
|
7
|
+
* auto — detect third-party AV → registry, else vbs
|
|
8
|
+
*
|
|
5
9
|
* macOS: creates a launchd agent plist (TODO)
|
|
6
10
|
* Linux: creates a systemd --user service (TODO)
|
|
7
11
|
*/
|
|
8
12
|
import { existsSync, writeFileSync, rmSync, readFileSync } from 'node:fs';
|
|
9
13
|
import { join } from 'node:path';
|
|
10
14
|
import { homedir } from 'node:os';
|
|
15
|
+
import { execFileSync } from 'node:child_process';
|
|
16
|
+
// ---------------------------------------------------------------------------
|
|
17
|
+
// Constants
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
const REG_RUN_KEY = 'HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run';
|
|
20
|
+
const REG_VALUE_NAME = 'Saros Proxy';
|
|
21
|
+
/** Known third-party antivirus process names (lowercase, without .exe). */
|
|
22
|
+
const AV_PROCESS_NAMES = new Set([
|
|
23
|
+
'bdagent', // Bitdefender
|
|
24
|
+
'bdservicehost', // Bitdefender
|
|
25
|
+
'vsserv', // Bitdefender
|
|
26
|
+
'ccsvchst', // Norton
|
|
27
|
+
'ns', // Norton
|
|
28
|
+
'avp', // Kaspersky
|
|
29
|
+
'avastui', // Avast
|
|
30
|
+
'aswidsagenta', // Avast
|
|
31
|
+
'mctray', // McAfee
|
|
32
|
+
'masvc', // McAfee
|
|
33
|
+
'ekrn', // ESET
|
|
34
|
+
'egui', // ESET
|
|
35
|
+
'avgui', // AVG
|
|
36
|
+
'avgsvc', // AVG
|
|
37
|
+
]);
|
|
11
38
|
// ---------------------------------------------------------------------------
|
|
12
39
|
// Helpers
|
|
13
40
|
// ---------------------------------------------------------------------------
|
|
@@ -25,8 +52,6 @@ function vbsPath() {
|
|
|
25
52
|
* Falls back to the bare command name which works if the npm bin directory is on PATH.
|
|
26
53
|
*/
|
|
27
54
|
function resolveCommand() {
|
|
28
|
-
// When running via `node dist/cli/autostart.js`, use the sibling dist/index.js
|
|
29
|
-
// so we don't depend on PATH resolution.
|
|
30
55
|
const viaDist = join(import.meta.dirname, '..', '..', 'dist', 'index.js');
|
|
31
56
|
if (existsSync(viaDist)) {
|
|
32
57
|
return `"${process.execPath}" "${viaDist}"`;
|
|
@@ -34,38 +59,189 @@ function resolveCommand() {
|
|
|
34
59
|
// Fallback: assume `saros-proxy` is on PATH
|
|
35
60
|
return 'saros-proxy';
|
|
36
61
|
}
|
|
62
|
+
/** Build the full command string to put in the registry or VBS. */
|
|
63
|
+
function fullCommand(port) {
|
|
64
|
+
const cmd = resolveCommand();
|
|
65
|
+
const portArg = port ? ` --port ${port}` : '';
|
|
66
|
+
return `${cmd} start${portArg}`;
|
|
67
|
+
}
|
|
37
68
|
// ---------------------------------------------------------------------------
|
|
38
|
-
//
|
|
69
|
+
// AV detection
|
|
70
|
+
// ---------------------------------------------------------------------------
|
|
71
|
+
/**
|
|
72
|
+
* Check if a specific process name is running (Windows).
|
|
73
|
+
* Returns true if found, false on any failure.
|
|
74
|
+
*/
|
|
75
|
+
function isProcessRunning(name) {
|
|
76
|
+
try {
|
|
77
|
+
const out = execFileSync('tasklist', ['/nh', '/fo', 'csv', '/fi', `IMAGENAME eq ${name}.exe`], {
|
|
78
|
+
windowsHide: true,
|
|
79
|
+
stdio: 'pipe',
|
|
80
|
+
timeout: 5000,
|
|
81
|
+
});
|
|
82
|
+
// If tasklist finds the process, output contains more than just the header
|
|
83
|
+
return out.toString().includes('.exe');
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Detect third-party antivirus by scanning running processes.
|
|
91
|
+
* Exported for testing.
|
|
92
|
+
*/
|
|
93
|
+
export function detectThirdPartyAv() {
|
|
94
|
+
if (process.platform !== 'win32')
|
|
95
|
+
return false;
|
|
96
|
+
for (const name of AV_PROCESS_NAMES) {
|
|
97
|
+
if (isProcessRunning(name))
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Resolve the effective method based on user preference and environment.
|
|
104
|
+
* Exported for testing.
|
|
105
|
+
*/
|
|
106
|
+
export function resolveMethod(method, avDetected) {
|
|
107
|
+
if (method === 'vbs')
|
|
108
|
+
return 'vbs';
|
|
109
|
+
if (method === 'registry')
|
|
110
|
+
return 'registry';
|
|
111
|
+
// auto or undefined → detect
|
|
112
|
+
if (process.platform !== 'win32')
|
|
113
|
+
return 'registry';
|
|
114
|
+
const hasAv = avDetected ?? detectThirdPartyAv();
|
|
115
|
+
if (hasAv)
|
|
116
|
+
return 'registry';
|
|
117
|
+
// No third-party AV — use VBS (lighter, no registry noise)
|
|
118
|
+
return 'vbs';
|
|
119
|
+
}
|
|
120
|
+
// ---------------------------------------------------------------------------
|
|
121
|
+
// Registry method (HKCU\...\Run)
|
|
39
122
|
// ---------------------------------------------------------------------------
|
|
40
|
-
|
|
41
|
-
const
|
|
123
|
+
function registryInstall(port) {
|
|
124
|
+
const cmd = fullCommand(port);
|
|
125
|
+
execFileSync('reg', [
|
|
126
|
+
'add', REG_RUN_KEY,
|
|
127
|
+
'/v', REG_VALUE_NAME,
|
|
128
|
+
'/d', cmd,
|
|
129
|
+
'/f',
|
|
130
|
+
], { windowsHide: true, stdio: 'pipe', timeout: 5000 });
|
|
131
|
+
console.log(`Auto-start installed via Registry: ${REG_RUN_KEY}\\${REG_VALUE_NAME}`);
|
|
132
|
+
}
|
|
133
|
+
function registryUninstall() {
|
|
134
|
+
try {
|
|
135
|
+
execFileSync('reg', [
|
|
136
|
+
'delete', REG_RUN_KEY,
|
|
137
|
+
'/v', REG_VALUE_NAME,
|
|
138
|
+
'/f',
|
|
139
|
+
], { windowsHide: true, stdio: 'pipe', timeout: 5000 });
|
|
140
|
+
console.log(`Auto-start removed from Registry: ${REG_RUN_KEY}\\${REG_VALUE_NAME}`);
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
console.log('No auto-start entry found in Registry.');
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
function registryStatus() {
|
|
147
|
+
try {
|
|
148
|
+
const out = execFileSync('reg', [
|
|
149
|
+
'query', REG_RUN_KEY,
|
|
150
|
+
'/v', REG_VALUE_NAME,
|
|
151
|
+
], { windowsHide: true, stdio: 'pipe', timeout: 5000 });
|
|
152
|
+
return out.toString().includes(REG_VALUE_NAME);
|
|
153
|
+
}
|
|
154
|
+
catch {
|
|
155
|
+
return false;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
// ---------------------------------------------------------------------------
|
|
159
|
+
// VBS method (Startup folder)
|
|
160
|
+
// ---------------------------------------------------------------------------
|
|
161
|
+
function vbsInstall(port) {
|
|
162
|
+
const cmd = resolveCommand();
|
|
42
163
|
const portArg = port ? ` --port ${port}` : '';
|
|
164
|
+
// VBScript strings use " as delimiter; inline quotes must be doubled ("").
|
|
165
|
+
const escapedCommand = cmd.replace(/"/g, '""');
|
|
43
166
|
const vbs = [
|
|
44
167
|
"' Saros proxy auto-start (generated by `saros-proxy autostart install`)",
|
|
45
168
|
'Dim shell',
|
|
46
169
|
'Set shell = CreateObject("WScript.Shell")',
|
|
47
|
-
`shell.Run "${
|
|
170
|
+
`shell.Run "${escapedCommand} start${portArg}", 0, False`,
|
|
48
171
|
'Set shell = Nothing',
|
|
49
172
|
].join('\n');
|
|
50
173
|
writeFileSync(vbsPath(), vbs, 'utf-8');
|
|
51
|
-
console.log(`Auto-start installed: ${vbsPath()}`);
|
|
174
|
+
console.log(`Auto-start installed via VBS: ${vbsPath()}`);
|
|
52
175
|
}
|
|
53
|
-
|
|
176
|
+
function vbsUninstall() {
|
|
54
177
|
const path = vbsPath();
|
|
55
178
|
if (!existsSync(path)) {
|
|
56
|
-
console.log('No auto-start entry found.');
|
|
179
|
+
console.log('No VBS auto-start entry found.');
|
|
57
180
|
return;
|
|
58
181
|
}
|
|
59
182
|
rmSync(path);
|
|
60
183
|
console.log(`Auto-start removed: ${path}`);
|
|
61
184
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
185
|
+
function vbsExists() {
|
|
186
|
+
return existsSync(vbsPath());
|
|
187
|
+
}
|
|
188
|
+
// ---------------------------------------------------------------------------
|
|
189
|
+
// Public API
|
|
190
|
+
// ---------------------------------------------------------------------------
|
|
191
|
+
export function autostartInstall(port, method) {
|
|
192
|
+
const resolved = resolveMethod(method);
|
|
193
|
+
if (resolved === 'registry') {
|
|
194
|
+
registryInstall(port);
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
vbsInstall(port);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
export function autostartUninstall(method) {
|
|
201
|
+
if (method === 'vbs') {
|
|
202
|
+
vbsUninstall();
|
|
203
|
+
}
|
|
204
|
+
else if (method === 'registry') {
|
|
205
|
+
registryUninstall();
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
// Unspecified — clean up both
|
|
209
|
+
vbsUninstall();
|
|
210
|
+
registryUninstall();
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
export function autostartStatus(method) {
|
|
214
|
+
if (method === 'vbs') {
|
|
215
|
+
const path = vbsPath();
|
|
216
|
+
if (vbsExists()) {
|
|
217
|
+
const content = readFileSync(path, 'utf-8').trim();
|
|
218
|
+
const match = content.match(/start(--port (\d+))?/);
|
|
219
|
+
const portInfo = match?.[2] ? ` on port ${match[2]}` : '';
|
|
220
|
+
console.log(`Auto-start is enabled (VBS)${portInfo}. File: ${path}`);
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
console.log('Auto-start is not installed (VBS).');
|
|
224
|
+
}
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
if (method === 'registry') {
|
|
228
|
+
if (registryStatus()) {
|
|
229
|
+
console.log(`Auto-start is enabled (Registry). Key: ${REG_RUN_KEY}\\${REG_VALUE_NAME}`);
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
console.log('Auto-start is not installed (Registry).');
|
|
233
|
+
}
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
// Check both
|
|
237
|
+
const vbs = vbsExists();
|
|
238
|
+
const reg = registryStatus();
|
|
239
|
+
if (vbs || reg) {
|
|
240
|
+
console.log('Auto-start is enabled:');
|
|
241
|
+
if (vbs)
|
|
242
|
+
console.log(` VBS: ${vbsPath()}`);
|
|
243
|
+
if (reg)
|
|
244
|
+
console.log(` Registry: ${REG_RUN_KEY}\\${REG_VALUE_NAME}`);
|
|
69
245
|
}
|
|
70
246
|
else {
|
|
71
247
|
console.log('Auto-start is not installed.');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autostart.js","sourceRoot":"","sources":["../../src/cli/autostart.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"autostart.js","sourceRoot":"","sources":["../../src/cli/autostart.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -66,20 +66,47 @@ else if (subcommand === 'autostart') {
|
|
|
66
66
|
if (action === 'install') {
|
|
67
67
|
const args = process.argv.slice(4);
|
|
68
68
|
let port;
|
|
69
|
+
let method;
|
|
69
70
|
for (let i = 0; i < args.length; i++) {
|
|
70
71
|
if (args[i] === '--port' && args[i + 1]) {
|
|
71
72
|
port = Number(args[++i]);
|
|
72
73
|
}
|
|
74
|
+
else if (args[i] === '--method' && args[i + 1]) {
|
|
75
|
+
const m = args[++i];
|
|
76
|
+
if (m === 'vbs' || m === 'registry' || m === 'auto') {
|
|
77
|
+
method = m;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
73
80
|
}
|
|
74
|
-
autostartInstall(port);
|
|
81
|
+
autostartInstall(port, method);
|
|
75
82
|
process.exit(0);
|
|
76
83
|
}
|
|
77
84
|
else if (action === 'uninstall') {
|
|
78
|
-
|
|
85
|
+
const args = process.argv.slice(4);
|
|
86
|
+
let method;
|
|
87
|
+
for (let i = 0; i < args.length; i++) {
|
|
88
|
+
if (args[i] === '--method' && args[i + 1]) {
|
|
89
|
+
const m = args[++i];
|
|
90
|
+
if (m === 'vbs' || m === 'registry' || m === 'auto') {
|
|
91
|
+
method = m;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
autostartUninstall(method);
|
|
79
96
|
process.exit(0);
|
|
80
97
|
}
|
|
81
98
|
else {
|
|
82
|
-
|
|
99
|
+
const args = process.argv.slice(4);
|
|
100
|
+
let method;
|
|
101
|
+
for (let i = 0; i < args.length; i++) {
|
|
102
|
+
if (args[i] === '--method' && args[i + 1]) {
|
|
103
|
+
const m = args[++i];
|
|
104
|
+
if (m === 'vbs' || m === 'registry' || m === 'auto') {
|
|
105
|
+
method = m;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
autostartStatus(method);
|
|
83
110
|
process.exit(0);
|
|
84
111
|
}
|
|
85
112
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;GAQG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAoB,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|