melperjs 6.0.0 → 6.1.0

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/cjs/node.js CHANGED
@@ -1,195 +1,152 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.createNumDir = createNumDir;
7
- exports.formatProxy = formatProxy;
8
- exports.getVersion = getVersion;
9
- exports.hashBcrypt = hashBcrypt;
10
- exports.md5 = md5;
11
- exports.proxify = proxify;
12
- exports.proxyObject = proxyObject;
13
- exports.serverIp = serverIp;
14
- exports.tokenHex = tokenHex;
15
- exports.tokenString = tokenString;
16
- exports.tokenUuid = tokenUuid;
17
- exports.tokenWeighted = tokenWeighted;
18
- exports.verifyBcrypt = verifyBcrypt;
19
- var _fs = _interopRequireDefault(require("fs"));
20
- var _path = _interopRequireDefault(require("path"));
21
- var _crypto = _interopRequireDefault(require("crypto"));
22
- var _os = require("os");
23
- var _child_process = require("child_process");
24
- var _bcrypt = _interopRequireDefault(require("bcrypt"));
25
- var _axios = _interopRequireDefault(require("axios"));
26
- var _hpagent = require("hpagent");
27
- var _index = require("./index.js");
28
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
- function tokenString(length, useNumbers = true, useUppercase = false) {
30
- const lowercaseChars = _index.CONSTANTS.LOWER_CASE;
31
- const uppercaseChars = _index.CONSTANTS.UPPER_CASE;
32
- const numbers = _index.CONSTANTS.NUMBERS;
33
- let characters = lowercaseChars;
34
- if (useUppercase) characters += uppercaseChars;
35
- if (useNumbers) characters += numbers;
36
- let randomString = '';
37
- while (randomString.length < length) {
38
- const byte = _crypto.default.randomBytes(1)[0];
39
- const index = byte % characters.length;
40
- if (byte < 256 - 256 % characters.length) {
41
- randomString += characters[index];
42
- }
43
- }
44
- return randomString;
45
- }
46
- function tokenHex(length) {
47
- return _crypto.default.randomBytes(Math.ceil(length / 2)).toString('hex').slice(0, length);
48
- }
49
- function tokenUuid(useDashes = true) {
50
- const uuid = _crypto.default.randomUUID().toString();
51
- return useDashes ? uuid : uuid.replaceAll("-", "");
52
- }
53
- function tokenWeighted(dict) {
54
- return (0, _index.randomWeighted)(dict, _crypto.default.randomInt);
55
- }
56
- function serverIp() {
57
- const interfaces = (0, _os.networkInterfaces)();
58
- for (const devName in interfaces) {
59
- const interfaceValue = interfaces[devName];
60
- for (let i = 0; i < interfaceValue.length; i++) {
61
- const alias = interfaceValue[i];
62
- if (alias.family === 'IPv4' && alias.address !== '127.0.0.1' && !alias.address.startsWith("192.168.") && !alias.internal) return alias.address;
63
- }
64
- }
65
- return '127.0.0.1';
66
- }
67
- function getVersion() {
68
- try {
69
- const date = new Date((0, _child_process.execSync)('git show -s --format=%ci HEAD').toString().trim());
70
- const formatDatePart = value => value.toString().padStart(2, '0');
71
- const year = date.getFullYear().toString().slice(-2);
72
- const month = formatDatePart(date.getMonth() + 1);
73
- const day = formatDatePart(date.getDate());
74
- const hour = formatDatePart(date.getHours());
75
- const minute = formatDatePart(date.getMinutes());
76
- return parseFloat(`${year}${month}.${day}${hour}${minute}`);
77
- } catch {
78
- return 1.0;
79
- }
80
- }
81
- function createNumDir(mainDirectory) {
82
- _fs.default.mkdirSync(mainDirectory, {
83
- recursive: true
84
- });
85
- for (let i = 0; i <= 9; i++) {
86
- try {
87
- _fs.default.mkdirSync(_path.default.join(mainDirectory, i.toString()));
88
- } catch (e) {
89
- console.error(`createNumDir:${i}`, e.message);
90
- }
91
- }
92
- }
93
- function md5(data) {
94
- return _crypto.default.createHash('md5').update(data).digest("hex");
95
- }
96
- function hashBcrypt(plainText) {
97
- return _bcrypt.default.hashSync(plainText, _bcrypt.default.genSaltSync(10));
98
- }
99
- function verifyBcrypt(plainText, hash) {
100
- return _bcrypt.default.compareSync(plainText, hash);
101
- }
102
- function formatProxy(proxy, protocol = "http") {
103
- proxy = proxy.trim();
104
- const splitByProtocol = proxy.split("://");
105
- if (1 < splitByProtocol.length) protocol = splitByProtocol[0];
106
- proxy = splitByProtocol[splitByProtocol.length - 1];
107
- if (!proxy.includes("@")) {
108
- const proxyParts = proxy.split(":");
109
- if (4 <= proxyParts.length) {
110
- proxy = `${proxyParts[proxyParts.length - 2]}:${proxyParts[proxyParts.length - 1]}@`;
111
- proxyParts.pop();
112
- proxyParts.pop();
113
- proxy += proxyParts.join(":");
114
- }
115
- }
116
- const proxyParts = proxy.split(':');
117
- const proxyEnd = parseInt(proxyParts[proxyParts.length - 1]);
118
- const proxyStart = proxyParts[proxyParts.length - 2];
119
- if (!proxyStart.includes(".")) {
120
- proxyParts.pop();
121
- proxyParts[proxyParts.length - 1] = _crypto.default.randomInt(parseInt(proxyStart), proxyEnd + 1).toString();
122
- }
123
- return protocol + "://" + proxyParts.join(':');
124
- }
125
- function proxyObject(...args) {
126
- let proxy = formatProxy(...args);
127
- const splitByProtocol = proxy.split('://');
128
- const splitById = splitByProtocol[splitByProtocol.length - 1].split('@');
129
- const splitByConn = splitById[splitById.length - 1].split(':');
130
- proxy = {
131
- protocol: splitByProtocol[0],
132
- host: splitByConn[0],
133
- port: parseInt(splitByConn[1])
134
- };
135
- if (1 < splitById.length) {
136
- const splitByAuth = splitById[0].split(':');
137
- proxy.auth = {
138
- username: splitByAuth[0],
139
- password: splitByAuth[1]
140
- };
141
- }
142
- return proxy;
143
- }
144
- async function proxify(proxyConfig, callback = formatProxy) {
145
- proxyConfig = proxyConfig || {};
146
- const timeout = 7000;
147
- if (proxyConfig.mode === 1) {
148
- return callback(proxyConfig.proxy);
149
- } else if (proxyConfig.mode === 2) {
150
- const proxy = callback(proxyConfig.proxy);
151
- try {
152
- await _axios.default.get(proxyConfig.resetApi, {
153
- timeout
154
- });
155
- } catch {
156
- return false;
157
- }
158
- await (0, _index.sleep)(5);
159
- for (let i = 0; i < 5; i++) {
160
- try {
161
- const res = await _axios.default.get("https://api64.ipify.org", {
162
- timeout,
163
- httpsAgent: new _hpagent.HttpsProxyAgent({
164
- proxy,
165
- timeout: 7000
166
- })
167
- });
168
- if (res.status === 200) return proxy;
169
- } catch {
170
- await (0, _index.sleep)(3);
171
- }
172
- }
173
- } else if (proxyConfig.mode === 3) {
174
- try {
175
- const res = await _axios.default.get(proxyConfig.resetApi, {
176
- timeout
177
- });
178
- if (res.status === 200) return callback(proxyConfig.proxy);
179
- } catch {
180
- return false;
181
- }
182
- } else if (proxyConfig.mode === 4) {
183
- return callback(proxyConfig.proxy).replace("{SESSION}", tokenHex(8));
184
- } else if (proxyConfig.mode === 5) {
185
- try {
186
- const lines = proxyConfig.proxy.split("\n");
187
- const line = lines[_crypto.default.randomInt(0, lines.length)];
188
- return callback(line);
189
- } catch {
190
- return false;
191
- }
192
- }
193
- return null;
194
- }
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createNumDir = createNumDir;
7
+ exports.formatProxy = formatProxy;
8
+ exports.getVersion = getVersion;
9
+ exports.hashBcrypt = hashBcrypt;
10
+ exports.md5 = md5;
11
+ exports.proxyObject = proxyObject;
12
+ exports.proxyValue = proxyValue;
13
+ exports.serverIp = serverIp;
14
+ exports.tokenHex = tokenHex;
15
+ exports.tokenString = tokenString;
16
+ exports.tokenUuid = tokenUuid;
17
+ exports.tokenWeighted = tokenWeighted;
18
+ exports.verifyBcrypt = verifyBcrypt;
19
+ var _fs = _interopRequireDefault(require("fs"));
20
+ var _path = _interopRequireDefault(require("path"));
21
+ var _crypto = _interopRequireDefault(require("crypto"));
22
+ var _os = require("os");
23
+ var _child_process = require("child_process");
24
+ var _bcrypt = _interopRequireDefault(require("bcrypt"));
25
+ var _index = require("./index.js");
26
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
+ function tokenString(length, useNumbers = true, useUppercase = false) {
28
+ const lowercaseChars = _index.CONSTANTS.LOWER_CASE;
29
+ const uppercaseChars = _index.CONSTANTS.UPPER_CASE;
30
+ const numbers = _index.CONSTANTS.NUMBERS;
31
+ let characters = lowercaseChars;
32
+ if (useUppercase) characters += uppercaseChars;
33
+ if (useNumbers) characters += numbers;
34
+ let randomString = '';
35
+ while (randomString.length < length) {
36
+ const byte = _crypto.default.randomBytes(1)[0];
37
+ const index = byte % characters.length;
38
+ if (byte < 256 - 256 % characters.length) {
39
+ randomString += characters[index];
40
+ }
41
+ }
42
+ return randomString;
43
+ }
44
+ function tokenHex(length) {
45
+ return _crypto.default.randomBytes(Math.ceil(length / 2)).toString('hex').slice(0, length);
46
+ }
47
+ function tokenUuid(useDashes = true) {
48
+ const uuid = _crypto.default.randomUUID().toString();
49
+ return useDashes ? uuid : uuid.replaceAll("-", "");
50
+ }
51
+ function tokenWeighted(dict) {
52
+ return (0, _index.randomWeighted)(dict, _crypto.default.randomInt);
53
+ }
54
+ function serverIp() {
55
+ const interfaces = (0, _os.networkInterfaces)();
56
+ for (const devName in interfaces) {
57
+ const interfaceValue = interfaces[devName];
58
+ for (let i = 0; i < interfaceValue.length; i++) {
59
+ const alias = interfaceValue[i];
60
+ if (alias.family === 'IPv4' && alias.address !== '127.0.0.1' && !alias.address.startsWith("192.168.") && !alias.internal) return alias.address;
61
+ }
62
+ }
63
+ return '127.0.0.1';
64
+ }
65
+ function getVersion() {
66
+ try {
67
+ const date = new Date((0, _child_process.execSync)('git show -s --format=%ci HEAD').toString().trim());
68
+ const formatDatePart = value => value.toString().padStart(2, '0');
69
+ const year = date.getFullYear().toString().slice(-2);
70
+ const month = formatDatePart(date.getMonth() + 1);
71
+ const day = formatDatePart(date.getDate());
72
+ const hour = formatDatePart(date.getHours());
73
+ const minute = formatDatePart(date.getMinutes());
74
+ return parseFloat(`${year}${month}.${day}${hour}${minute}`);
75
+ } catch {
76
+ return 1.0;
77
+ }
78
+ }
79
+ function createNumDir(mainDirectory) {
80
+ _fs.default.mkdirSync(mainDirectory, {
81
+ recursive: true
82
+ });
83
+ for (let i = 0; i <= 9; i++) {
84
+ try {
85
+ _fs.default.mkdirSync(_path.default.join(mainDirectory, i.toString()));
86
+ } catch (e) {
87
+ console.error(`createNumDir:${i}`, e.message);
88
+ }
89
+ }
90
+ }
91
+ function md5(data) {
92
+ return _crypto.default.createHash('md5').update(data).digest("hex");
93
+ }
94
+ function hashBcrypt(plainText) {
95
+ return _bcrypt.default.hashSync(plainText, _bcrypt.default.genSaltSync(10));
96
+ }
97
+ function verifyBcrypt(plainText, hash) {
98
+ return _bcrypt.default.compareSync(plainText, hash);
99
+ }
100
+ function formatProxy(proxy, protocol = "http") {
101
+ proxy = proxy.trim();
102
+ const splitByProtocol = proxy.split("://");
103
+ if (1 < splitByProtocol.length) protocol = splitByProtocol[0];
104
+ proxy = splitByProtocol[splitByProtocol.length - 1];
105
+ if (!proxy.includes("@")) {
106
+ const proxyParts = proxy.split(":");
107
+ if (4 <= proxyParts.length) {
108
+ proxy = `${proxyParts[proxyParts.length - 2]}:${proxyParts[proxyParts.length - 1]}@`;
109
+ proxyParts.pop();
110
+ proxyParts.pop();
111
+ proxy += proxyParts.join(":");
112
+ }
113
+ }
114
+ const proxyParts = proxy.split(':');
115
+ const proxyEnd = parseInt(proxyParts[proxyParts.length - 1]);
116
+ const proxyStart = proxyParts[proxyParts.length - 2];
117
+ if (!proxyStart.includes(".")) {
118
+ proxyParts.pop();
119
+ proxyParts[proxyParts.length - 1] = _crypto.default.randomInt(parseInt(proxyStart), proxyEnd + 1).toString();
120
+ }
121
+ return protocol + "://" + proxyParts.join(':');
122
+ }
123
+ function proxyObject(...args) {
124
+ let proxy = formatProxy(...args);
125
+ const splitByProtocol = proxy.split('://');
126
+ const splitById = splitByProtocol[splitByProtocol.length - 1].split('@');
127
+ const splitByConn = splitById[splitById.length - 1].split(':');
128
+ proxy = {
129
+ protocol: splitByProtocol[0],
130
+ host: splitByConn[0],
131
+ port: parseInt(splitByConn[1])
132
+ };
133
+ if (1 < splitById.length) {
134
+ const splitByAuth = splitById[0].split(':');
135
+ proxy.auth = {
136
+ username: splitByAuth[0],
137
+ password: splitByAuth[1]
138
+ };
139
+ }
140
+ return proxy;
141
+ }
142
+ function proxyValue(proxies) {
143
+ let proxy;
144
+ proxies = proxies || "";
145
+ proxies = (0, _index.splitLines)(proxies);
146
+ if (proxies.length < 1) return null;
147
+ proxy = proxies[_crypto.default.randomInt(0, proxies.length)];
148
+ proxy = formatProxy(proxy);
149
+ proxy = proxy.replace("{SESSION}", tokenHex(8));
150
+ return proxy || null;
151
+ }
195
152
  //# sourceMappingURL=node.js.map
package/cjs/node.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","names":["_fs","_interopRequireDefault","require","_path","_crypto","_os","_child_process","_bcrypt","_axios","_hpagent","_index","obj","__esModule","default","tokenString","length","useNumbers","useUppercase","lowercaseChars","CONSTANTS","LOWER_CASE","uppercaseChars","UPPER_CASE","numbers","NUMBERS","characters","randomString","byte","crypto","randomBytes","index","tokenHex","Math","ceil","toString","slice","tokenUuid","useDashes","uuid","randomUUID","replaceAll","tokenWeighted","dict","randomWeighted","randomInt","serverIp","interfaces","networkInterfaces","devName","interfaceValue","i","alias","family","address","startsWith","internal","getVersion","date","Date","execSync","trim","formatDatePart","value","padStart","year","getFullYear","month","getMonth","day","getDate","hour","getHours","minute","getMinutes","parseFloat","createNumDir","mainDirectory","fs","mkdirSync","recursive","path","join","e","console","error","message","md5","data","createHash","update","digest","hashBcrypt","plainText","bcrypt","hashSync","genSaltSync","verifyBcrypt","hash","compareSync","formatProxy","proxy","protocol","splitByProtocol","split","includes","proxyParts","pop","proxyEnd","parseInt","proxyStart","proxyObject","args","splitById","splitByConn","host","port","splitByAuth","auth","username","password","proxify","proxyConfig","callback","timeout","mode","axios","get","resetApi","sleep","res","httpsAgent","HttpsProxyAgent","status","replace","lines","line"],"sources":["../src/node.js"],"sourcesContent":["import fs from \"fs\";\r\nimport path from \"path\";\r\nimport crypto from \"crypto\";\r\nimport {networkInterfaces} from \"os\";\r\nimport {execSync} from \"child_process\";\r\n\r\nimport bcrypt from \"bcrypt\";\r\nimport axios from \"axios\";\r\nimport {HttpsProxyAgent} from \"hpagent\";\r\n\r\nimport {CONSTANTS, randomWeighted, sleep} from \"./index.js\";\r\n\r\n\r\nexport function tokenString(length, useNumbers = true, useUppercase = false) {\r\n const lowercaseChars = CONSTANTS.LOWER_CASE;\r\n const uppercaseChars = CONSTANTS.UPPER_CASE;\r\n const numbers = CONSTANTS.NUMBERS;\r\n\r\n let characters = lowercaseChars;\r\n if (useUppercase) characters += uppercaseChars;\r\n if (useNumbers) characters += numbers;\r\n\r\n let randomString = '';\r\n while (randomString.length < length) {\r\n const byte = crypto.randomBytes(1)[0];\r\n const index = byte % characters.length;\r\n if (byte < (256 - (256 % characters.length))) {\r\n randomString += characters[index];\r\n }\r\n }\r\n\r\n return randomString;\r\n}\r\n\r\nexport function tokenHex(length) {\r\n return crypto\r\n .randomBytes(Math.ceil(length / 2))\r\n .toString('hex')\r\n .slice(0, length);\r\n}\r\n\r\nexport function tokenUuid(useDashes = true) {\r\n const uuid = crypto.randomUUID().toString();\r\n return useDashes ? uuid : uuid.replaceAll(\"-\", \"\")\r\n}\r\n\r\nexport function tokenWeighted(dict) {\r\n return randomWeighted(dict, crypto.randomInt);\r\n}\r\n\r\nexport function serverIp() {\r\n const interfaces = networkInterfaces();\r\n for (const devName in interfaces) {\r\n const interfaceValue = interfaces[devName];\r\n for (let i = 0; i < interfaceValue.length; i++) {\r\n const alias = interfaceValue[i];\r\n if (alias.family === 'IPv4' && alias.address !== '127.0.0.1' && !alias.address.startsWith(\"192.168.\") && !alias.internal)\r\n return alias.address;\r\n }\r\n }\r\n return '127.0.0.1';\r\n}\r\n\r\nexport function getVersion() {\r\n try {\r\n const date = new Date(execSync('git show -s --format=%ci HEAD').toString().trim());\r\n const formatDatePart = (value) => value.toString().padStart(2, '0');\r\n const year = date.getFullYear().toString().slice(-2);\r\n const month = formatDatePart(date.getMonth() + 1);\r\n const day = formatDatePart(date.getDate());\r\n const hour = formatDatePart(date.getHours());\r\n const minute = formatDatePart(date.getMinutes());\r\n return parseFloat(`${year}${month}.${day}${hour}${minute}`);\r\n } catch {\r\n return 1.0;\r\n }\r\n}\r\n\r\nexport function createNumDir(mainDirectory) {\r\n fs.mkdirSync(mainDirectory, {recursive: true});\r\n for (let i = 0; i <= 9; i++) {\r\n try {\r\n fs.mkdirSync(path.join(mainDirectory, i.toString()));\r\n } catch (e) {\r\n console.error(`createNumDir:${i}`, e.message);\r\n }\r\n }\r\n}\r\n\r\nexport function md5(data) {\r\n return crypto.createHash('md5').update(data).digest(\"hex\");\r\n}\r\n\r\nexport function hashBcrypt(plainText) {\r\n return bcrypt.hashSync(plainText, bcrypt.genSaltSync(10));\r\n}\r\n\r\nexport function verifyBcrypt(plainText, hash) {\r\n return bcrypt.compareSync(plainText, hash);\r\n}\r\n\r\nexport function formatProxy(proxy, protocol = \"http\") {\r\n proxy = proxy.trim();\r\n const splitByProtocol = proxy.split(\"://\");\r\n if (1 < splitByProtocol.length)\r\n protocol = splitByProtocol[0];\r\n proxy = splitByProtocol[splitByProtocol.length - 1];\r\n if (!proxy.includes(\"@\")) {\r\n const proxyParts = proxy.split(\":\");\r\n if (4 <= proxyParts.length) {\r\n proxy = `${proxyParts[proxyParts.length - 2]}:${proxyParts[proxyParts.length - 1]}@`;\r\n proxyParts.pop();\r\n proxyParts.pop();\r\n proxy += proxyParts.join(\":\");\r\n }\r\n }\r\n const proxyParts = proxy.split(':');\r\n const proxyEnd = parseInt(proxyParts[proxyParts.length - 1]);\r\n const proxyStart = proxyParts[proxyParts.length - 2];\r\n if (!proxyStart.includes(\".\")) {\r\n proxyParts.pop();\r\n proxyParts[proxyParts.length - 1] = crypto.randomInt(parseInt(proxyStart), proxyEnd + 1).toString();\r\n }\r\n return protocol + \"://\" + proxyParts.join(':');\r\n}\r\n\r\nexport function proxyObject(...args) {\r\n let proxy = formatProxy(...args);\r\n const splitByProtocol = proxy.split('://');\r\n const splitById = splitByProtocol[splitByProtocol.length - 1].split('@');\r\n const splitByConn = splitById[splitById.length - 1].split(':');\r\n proxy = {\r\n protocol: splitByProtocol[0],\r\n host: splitByConn[0],\r\n port: parseInt(splitByConn[1]),\r\n };\r\n if (1 < splitById.length) {\r\n const splitByAuth = splitById[0].split(':');\r\n proxy.auth = {\r\n username: splitByAuth[0],\r\n password: splitByAuth[1]\r\n };\r\n }\r\n return proxy;\r\n}\r\n\r\nexport async function proxify(proxyConfig, callback = formatProxy) {\r\n proxyConfig = proxyConfig || {};\r\n const timeout = 7000;\r\n if (proxyConfig.mode === 1) {\r\n return callback(proxyConfig.proxy);\r\n } else if (proxyConfig.mode === 2) {\r\n const proxy = callback(proxyConfig.proxy);\r\n try {\r\n await axios.get(proxyConfig.resetApi, {timeout});\r\n } catch {\r\n return false;\r\n }\r\n await sleep(5);\r\n for (let i = 0; i < 5; i++) {\r\n try {\r\n const res = await axios.get(\"https://api64.ipify.org\", {\r\n timeout,\r\n httpsAgent: new HttpsProxyAgent({proxy, timeout: 7000})\r\n });\r\n if (res.status === 200)\r\n return proxy;\r\n } catch {\r\n await sleep(3);\r\n }\r\n }\r\n } else if (proxyConfig.mode === 3) {\r\n try {\r\n const res = await axios.get(proxyConfig.resetApi, {timeout});\r\n if (res.status === 200)\r\n return callback(proxyConfig.proxy);\r\n } catch {\r\n return false;\r\n }\r\n } else if (proxyConfig.mode === 4) {\r\n return callback(proxyConfig.proxy).replace(\"{SESSION}\", tokenHex(8));\r\n } else if (proxyConfig.mode === 5) {\r\n try {\r\n const lines = proxyConfig.proxy.split(\"\\n\");\r\n const line = lines[crypto.randomInt(0, lines.length)];\r\n return callback(line);\r\n } catch {\r\n return false;\r\n }\r\n }\r\n\r\n return null;\r\n}"],"mappings":"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"}
1
+ {"version":3,"file":"node.js","names":["_fs","_interopRequireDefault","require","_path","_crypto","_os","_child_process","_bcrypt","_index","obj","__esModule","default","tokenString","length","useNumbers","useUppercase","lowercaseChars","CONSTANTS","LOWER_CASE","uppercaseChars","UPPER_CASE","numbers","NUMBERS","characters","randomString","byte","crypto","randomBytes","index","tokenHex","Math","ceil","toString","slice","tokenUuid","useDashes","uuid","randomUUID","replaceAll","tokenWeighted","dict","randomWeighted","randomInt","serverIp","interfaces","networkInterfaces","devName","interfaceValue","i","alias","family","address","startsWith","internal","getVersion","date","Date","execSync","trim","formatDatePart","value","padStart","year","getFullYear","month","getMonth","day","getDate","hour","getHours","minute","getMinutes","parseFloat","createNumDir","mainDirectory","fs","mkdirSync","recursive","path","join","e","console","error","message","md5","data","createHash","update","digest","hashBcrypt","plainText","bcrypt","hashSync","genSaltSync","verifyBcrypt","hash","compareSync","formatProxy","proxy","protocol","splitByProtocol","split","includes","proxyParts","pop","proxyEnd","parseInt","proxyStart","proxyObject","args","splitById","splitByConn","host","port","splitByAuth","auth","username","password","proxyValue","proxies","splitLines","replace"],"sources":["../src/node.js"],"sourcesContent":["import fs from \"fs\";\r\nimport path from \"path\";\r\nimport crypto from \"crypto\";\r\nimport {networkInterfaces} from \"os\";\r\nimport {execSync} from \"child_process\";\r\n\r\nimport bcrypt from \"bcrypt\";\r\n\r\nimport {CONSTANTS, randomWeighted, splitLines} from \"./index.js\";\r\n\r\n\r\nexport function tokenString(length, useNumbers = true, useUppercase = false) {\r\n const lowercaseChars = CONSTANTS.LOWER_CASE;\r\n const uppercaseChars = CONSTANTS.UPPER_CASE;\r\n const numbers = CONSTANTS.NUMBERS;\r\n\r\n let characters = lowercaseChars;\r\n if (useUppercase) characters += uppercaseChars;\r\n if (useNumbers) characters += numbers;\r\n\r\n let randomString = '';\r\n while (randomString.length < length) {\r\n const byte = crypto.randomBytes(1)[0];\r\n const index = byte % characters.length;\r\n if (byte < (256 - (256 % characters.length))) {\r\n randomString += characters[index];\r\n }\r\n }\r\n\r\n return randomString;\r\n}\r\n\r\nexport function tokenHex(length) {\r\n return crypto\r\n .randomBytes(Math.ceil(length / 2))\r\n .toString('hex')\r\n .slice(0, length);\r\n}\r\n\r\nexport function tokenUuid(useDashes = true) {\r\n const uuid = crypto.randomUUID().toString();\r\n return useDashes ? uuid : uuid.replaceAll(\"-\", \"\")\r\n}\r\n\r\nexport function tokenWeighted(dict) {\r\n return randomWeighted(dict, crypto.randomInt);\r\n}\r\n\r\nexport function serverIp() {\r\n const interfaces = networkInterfaces();\r\n for (const devName in interfaces) {\r\n const interfaceValue = interfaces[devName];\r\n for (let i = 0; i < interfaceValue.length; i++) {\r\n const alias = interfaceValue[i];\r\n if (alias.family === 'IPv4' && alias.address !== '127.0.0.1' && !alias.address.startsWith(\"192.168.\") && !alias.internal)\r\n return alias.address;\r\n }\r\n }\r\n return '127.0.0.1';\r\n}\r\n\r\nexport function getVersion() {\r\n try {\r\n const date = new Date(execSync('git show -s --format=%ci HEAD').toString().trim());\r\n const formatDatePart = (value) => value.toString().padStart(2, '0');\r\n const year = date.getFullYear().toString().slice(-2);\r\n const month = formatDatePart(date.getMonth() + 1);\r\n const day = formatDatePart(date.getDate());\r\n const hour = formatDatePart(date.getHours());\r\n const minute = formatDatePart(date.getMinutes());\r\n return parseFloat(`${year}${month}.${day}${hour}${minute}`);\r\n } catch {\r\n return 1.0;\r\n }\r\n}\r\n\r\nexport function createNumDir(mainDirectory) {\r\n fs.mkdirSync(mainDirectory, {recursive: true});\r\n for (let i = 0; i <= 9; i++) {\r\n try {\r\n fs.mkdirSync(path.join(mainDirectory, i.toString()));\r\n } catch (e) {\r\n console.error(`createNumDir:${i}`, e.message);\r\n }\r\n }\r\n}\r\n\r\nexport function md5(data) {\r\n return crypto.createHash('md5').update(data).digest(\"hex\");\r\n}\r\n\r\nexport function hashBcrypt(plainText) {\r\n return bcrypt.hashSync(plainText, bcrypt.genSaltSync(10));\r\n}\r\n\r\nexport function verifyBcrypt(plainText, hash) {\r\n return bcrypt.compareSync(plainText, hash);\r\n}\r\n\r\nexport function formatProxy(proxy, protocol = \"http\") {\r\n proxy = proxy.trim();\r\n const splitByProtocol = proxy.split(\"://\");\r\n if (1 < splitByProtocol.length)\r\n protocol = splitByProtocol[0];\r\n proxy = splitByProtocol[splitByProtocol.length - 1];\r\n if (!proxy.includes(\"@\")) {\r\n const proxyParts = proxy.split(\":\");\r\n if (4 <= proxyParts.length) {\r\n proxy = `${proxyParts[proxyParts.length - 2]}:${proxyParts[proxyParts.length - 1]}@`;\r\n proxyParts.pop();\r\n proxyParts.pop();\r\n proxy += proxyParts.join(\":\");\r\n }\r\n }\r\n const proxyParts = proxy.split(':');\r\n const proxyEnd = parseInt(proxyParts[proxyParts.length - 1]);\r\n const proxyStart = proxyParts[proxyParts.length - 2];\r\n if (!proxyStart.includes(\".\")) {\r\n proxyParts.pop();\r\n proxyParts[proxyParts.length - 1] = crypto.randomInt(parseInt(proxyStart), proxyEnd + 1).toString();\r\n }\r\n return protocol + \"://\" + proxyParts.join(':');\r\n}\r\n\r\nexport function proxyObject(...args) {\r\n let proxy = formatProxy(...args);\r\n const splitByProtocol = proxy.split('://');\r\n const splitById = splitByProtocol[splitByProtocol.length - 1].split('@');\r\n const splitByConn = splitById[splitById.length - 1].split(':');\r\n proxy = {\r\n protocol: splitByProtocol[0],\r\n host: splitByConn[0],\r\n port: parseInt(splitByConn[1]),\r\n };\r\n if (1 < splitById.length) {\r\n const splitByAuth = splitById[0].split(':');\r\n proxy.auth = {\r\n username: splitByAuth[0],\r\n password: splitByAuth[1]\r\n };\r\n }\r\n return proxy;\r\n}\r\n\r\nexport function proxyValue(proxies) {\r\n let proxy;\r\n proxies = proxies || \"\";\r\n proxies = splitLines(proxies);\r\n if (proxies.length < 1)\r\n return null;\r\n proxy = proxies[crypto.randomInt(0, proxies.length)];\r\n proxy = formatProxy(proxy);\r\n proxy = proxy.replace(\"{SESSION}\", tokenHex(8));\r\n return proxy || null;\r\n}"],"mappings":";;;;;;;;;;;;;;;;;;AAAA,IAAAA,GAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,KAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,OAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,GAAA,GAAAH,OAAA;AACA,IAAAI,cAAA,GAAAJ,OAAA;AAEA,IAAAK,OAAA,GAAAN,sBAAA,CAAAC,OAAA;AAEA,IAAAM,MAAA,GAAAN,OAAA;AAAiE,SAAAD,uBAAAQ,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAG1D,SAASG,WAAWA,CAACC,MAAM,EAAEC,UAAU,GAAG,IAAI,EAAEC,YAAY,GAAG,KAAK,EAAE;EACzE,MAAMC,cAAc,GAAGC,gBAAS,CAACC,UAAU;EAC3C,MAAMC,cAAc,GAAGF,gBAAS,CAACG,UAAU;EAC3C,MAAMC,OAAO,GAAGJ,gBAAS,CAACK,OAAO;EAEjC,IAAIC,UAAU,GAAGP,cAAc;EAC/B,IAAID,YAAY,EAAEQ,UAAU,IAAIJ,cAAc;EAC9C,IAAIL,UAAU,EAAES,UAAU,IAAIF,OAAO;EAErC,IAAIG,YAAY,GAAG,EAAE;EACrB,OAAOA,YAAY,CAACX,MAAM,GAAGA,MAAM,EAAE;IACjC,MAAMY,IAAI,GAAGC,eAAM,CAACC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,MAAMC,KAAK,GAAGH,IAAI,GAAGF,UAAU,CAACV,MAAM;IACtC,IAAIY,IAAI,GAAI,GAAG,GAAI,GAAG,GAAGF,UAAU,CAACV,MAAQ,EAAE;MAC1CW,YAAY,IAAID,UAAU,CAACK,KAAK,CAAC;IACrC;EACJ;EAEA,OAAOJ,YAAY;AACvB;AAEO,SAASK,QAAQA,CAAChB,MAAM,EAAE;EAC7B,OAAOa,eAAM,CACRC,WAAW,CAACG,IAAI,CAACC,IAAI,CAAClB,MAAM,GAAG,CAAC,CAAC,CAAC,CAClCmB,QAAQ,CAAC,KAAK,CAAC,CACfC,KAAK,CAAC,CAAC,EAAEpB,MAAM,CAAC;AACzB;AAEO,SAASqB,SAASA,CAACC,SAAS,GAAG,IAAI,EAAE;EACxC,MAAMC,IAAI,GAAGV,eAAM,CAACW,UAAU,CAAC,CAAC,CAACL,QAAQ,CAAC,CAAC;EAC3C,OAAOG,SAAS,GAAGC,IAAI,GAAGA,IAAI,CAACE,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;AACtD;AAEO,SAASC,aAAaA,CAACC,IAAI,EAAE;EAChC,OAAO,IAAAC,qBAAc,EAACD,IAAI,EAAEd,eAAM,CAACgB,SAAS,CAAC;AACjD;AAEO,SAASC,QAAQA,CAAA,EAAG;EACvB,MAAMC,UAAU,GAAG,IAAAC,qBAAiB,EAAC,CAAC;EACtC,KAAK,MAAMC,OAAO,IAAIF,UAAU,EAAE;IAC9B,MAAMG,cAAc,GAAGH,UAAU,CAACE,OAAO,CAAC;IAC1C,KAAK,IAAIE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,cAAc,CAAClC,MAAM,EAAEmC,CAAC,EAAE,EAAE;MAC5C,MAAMC,KAAK,GAAGF,cAAc,CAACC,CAAC,CAAC;MAC/B,IAAIC,KAAK,CAACC,MAAM,KAAK,MAAM,IAAID,KAAK,CAACE,OAAO,KAAK,WAAW,IAAI,CAACF,KAAK,CAACE,OAAO,CAACC,UAAU,CAAC,UAAU,CAAC,IAAI,CAACH,KAAK,CAACI,QAAQ,EACpH,OAAOJ,KAAK,CAACE,OAAO;IAC5B;EACJ;EACA,OAAO,WAAW;AACtB;AAEO,SAASG,UAAUA,CAAA,EAAG;EACzB,IAAI;IACA,MAAMC,IAAI,GAAG,IAAIC,IAAI,CAAC,IAAAC,uBAAQ,EAAC,+BAA+B,CAAC,CAACzB,QAAQ,CAAC,CAAC,CAAC0B,IAAI,CAAC,CAAC,CAAC;IAClF,MAAMC,cAAc,GAAIC,KAAK,IAAKA,KAAK,CAAC5B,QAAQ,CAAC,CAAC,CAAC6B,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;IACnE,MAAMC,IAAI,GAAGP,IAAI,CAACQ,WAAW,CAAC,CAAC,CAAC/B,QAAQ,CAAC,CAAC,CAACC,KAAK,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM+B,KAAK,GAAGL,cAAc,CAACJ,IAAI,CAACU,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;IACjD,MAAMC,GAAG,GAAGP,cAAc,CAACJ,IAAI,CAACY,OAAO,CAAC,CAAC,CAAC;IAC1C,MAAMC,IAAI,GAAGT,cAAc,CAACJ,IAAI,CAACc,QAAQ,CAAC,CAAC,CAAC;IAC5C,MAAMC,MAAM,GAAGX,cAAc,CAACJ,IAAI,CAACgB,UAAU,CAAC,CAAC,CAAC;IAChD,OAAOC,UAAU,CAAE,GAAEV,IAAK,GAAEE,KAAM,IAAGE,GAAI,GAAEE,IAAK,GAAEE,MAAO,EAAC,CAAC;EAC/D,CAAC,CAAC,MAAM;IACJ,OAAO,GAAG;EACd;AACJ;AAEO,SAASG,YAAYA,CAACC,aAAa,EAAE;EACxCC,WAAE,CAACC,SAAS,CAACF,aAAa,EAAE;IAACG,SAAS,EAAE;EAAI,CAAC,CAAC;EAC9C,KAAK,IAAI7B,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;IACzB,IAAI;MACA2B,WAAE,CAACC,SAAS,CAACE,aAAI,CAACC,IAAI,CAACL,aAAa,EAAE1B,CAAC,CAAChB,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC,OAAOgD,CAAC,EAAE;MACRC,OAAO,CAACC,KAAK,CAAE,gBAAelC,CAAE,EAAC,EAAEgC,CAAC,CAACG,OAAO,CAAC;IACjD;EACJ;AACJ;AAEO,SAASC,GAAGA,CAACC,IAAI,EAAE;EACtB,OAAO3D,eAAM,CAAC4D,UAAU,CAAC,KAAK,CAAC,CAACC,MAAM,CAACF,IAAI,CAAC,CAACG,MAAM,CAAC,KAAK,CAAC;AAC9D;AAEO,SAASC,UAAUA,CAACC,SAAS,EAAE;EAClC,OAAOC,eAAM,CAACC,QAAQ,CAACF,SAAS,EAAEC,eAAM,CAACE,WAAW,CAAC,EAAE,CAAC,CAAC;AAC7D;AAEO,SAASC,YAAYA,CAACJ,SAAS,EAAEK,IAAI,EAAE;EAC1C,OAAOJ,eAAM,CAACK,WAAW,CAACN,SAAS,EAAEK,IAAI,CAAC;AAC9C;AAEO,SAASE,WAAWA,CAACC,KAAK,EAAEC,QAAQ,GAAG,MAAM,EAAE;EAClDD,KAAK,GAAGA,KAAK,CAACxC,IAAI,CAAC,CAAC;EACpB,MAAM0C,eAAe,GAAGF,KAAK,CAACG,KAAK,CAAC,KAAK,CAAC;EAC1C,IAAI,CAAC,GAAGD,eAAe,CAACvF,MAAM,EAC1BsF,QAAQ,GAAGC,eAAe,CAAC,CAAC,CAAC;EACjCF,KAAK,GAAGE,eAAe,CAACA,eAAe,CAACvF,MAAM,GAAG,CAAC,CAAC;EACnD,IAAI,CAACqF,KAAK,CAACI,QAAQ,CAAC,GAAG,CAAC,EAAE;IACtB,MAAMC,UAAU,GAAGL,KAAK,CAACG,KAAK,CAAC,GAAG,CAAC;IACnC,IAAI,CAAC,IAAIE,UAAU,CAAC1F,MAAM,EAAE;MACxBqF,KAAK,GAAI,GAAEK,UAAU,CAACA,UAAU,CAAC1F,MAAM,GAAG,CAAC,CAAE,IAAG0F,UAAU,CAACA,UAAU,CAAC1F,MAAM,GAAG,CAAC,CAAE,GAAE;MACpF0F,UAAU,CAACC,GAAG,CAAC,CAAC;MAChBD,UAAU,CAACC,GAAG,CAAC,CAAC;MAChBN,KAAK,IAAIK,UAAU,CAACxB,IAAI,CAAC,GAAG,CAAC;IACjC;EACJ;EACA,MAAMwB,UAAU,GAAGL,KAAK,CAACG,KAAK,CAAC,GAAG,CAAC;EACnC,MAAMI,QAAQ,GAAGC,QAAQ,CAACH,UAAU,CAACA,UAAU,CAAC1F,MAAM,GAAG,CAAC,CAAC,CAAC;EAC5D,MAAM8F,UAAU,GAAGJ,UAAU,CAACA,UAAU,CAAC1F,MAAM,GAAG,CAAC,CAAC;EACpD,IAAI,CAAC8F,UAAU,CAACL,QAAQ,CAAC,GAAG,CAAC,EAAE;IAC3BC,UAAU,CAACC,GAAG,CAAC,CAAC;IAChBD,UAAU,CAACA,UAAU,CAAC1F,MAAM,GAAG,CAAC,CAAC,GAAGa,eAAM,CAACgB,SAAS,CAACgE,QAAQ,CAACC,UAAU,CAAC,EAAEF,QAAQ,GAAG,CAAC,CAAC,CAACzE,QAAQ,CAAC,CAAC;EACvG;EACA,OAAOmE,QAAQ,GAAG,KAAK,GAAGI,UAAU,CAACxB,IAAI,CAAC,GAAG,CAAC;AAClD;AAEO,SAAS6B,WAAWA,CAAC,GAAGC,IAAI,EAAE;EACjC,IAAIX,KAAK,GAAGD,WAAW,CAAC,GAAGY,IAAI,CAAC;EAChC,MAAMT,eAAe,GAAGF,KAAK,CAACG,KAAK,CAAC,KAAK,CAAC;EAC1C,MAAMS,SAAS,GAAGV,eAAe,CAACA,eAAe,CAACvF,MAAM,GAAG,CAAC,CAAC,CAACwF,KAAK,CAAC,GAAG,CAAC;EACxE,MAAMU,WAAW,GAAGD,SAAS,CAACA,SAAS,CAACjG,MAAM,GAAG,CAAC,CAAC,CAACwF,KAAK,CAAC,GAAG,CAAC;EAC9DH,KAAK,GAAG;IACJC,QAAQ,EAAEC,eAAe,CAAC,CAAC,CAAC;IAC5BY,IAAI,EAAED,WAAW,CAAC,CAAC,CAAC;IACpBE,IAAI,EAAEP,QAAQ,CAACK,WAAW,CAAC,CAAC,CAAC;EACjC,CAAC;EACD,IAAI,CAAC,GAAGD,SAAS,CAACjG,MAAM,EAAE;IACtB,MAAMqG,WAAW,GAAGJ,SAAS,CAAC,CAAC,CAAC,CAACT,KAAK,CAAC,GAAG,CAAC;IAC3CH,KAAK,CAACiB,IAAI,GAAG;MACTC,QAAQ,EAAEF,WAAW,CAAC,CAAC,CAAC;MACxBG,QAAQ,EAAEH,WAAW,CAAC,CAAC;IAC3B,CAAC;EACL;EACA,OAAOhB,KAAK;AAChB;AAEO,SAASoB,UAAUA,CAACC,OAAO,EAAE;EAChC,IAAIrB,KAAK;EACTqB,OAAO,GAAGA,OAAO,IAAI,EAAE;EACvBA,OAAO,GAAG,IAAAC,iBAAU,EAACD,OAAO,CAAC;EAC7B,IAAIA,OAAO,CAAC1G,MAAM,GAAG,CAAC,EAClB,OAAO,IAAI;EACfqF,KAAK,GAAGqB,OAAO,CAAC7F,eAAM,CAACgB,SAAS,CAAC,CAAC,EAAE6E,OAAO,CAAC1G,MAAM,CAAC,CAAC;EACpDqF,KAAK,GAAGD,WAAW,CAACC,KAAK,CAAC;EAC1BA,KAAK,GAAGA,KAAK,CAACuB,OAAO,CAAC,WAAW,EAAE5F,QAAQ,CAAC,CAAC,CAAC,CAAC;EAC/C,OAAOqE,KAAK,IAAI,IAAI;AACxB"}