melperjs 3.0.0 → 5.0.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/.babelrc +49 -11
- package/README.md +51 -33
- package/cjs/index.js +186 -0
- package/cjs/index.js.map +1 -0
- package/{lib → cjs}/node.js +18 -16
- package/cjs/node.js.map +1 -0
- package/cjs/package.json +3 -0
- package/lib/index.js +159 -107
- package/lib/index.js.map +1 -0
- package/mjs/index.js +157 -0
- package/mjs/index.js.map +1 -0
- package/mjs/node.js +176 -0
- package/mjs/node.js.map +1 -0
- package/package.json +51 -43
- package/src/index.js +37 -27
- package/src/node.js +15 -14
- package/test/script.js +19 -11
package/mjs/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["xss","camelCase","capitalize","isEmpty","setCookieParser","CONSTANTS","LOWER_CASE","UPPER_CASE","HEXADECIMAL","NUMBERS","Exception","message","response","name","status","pascalCase","time","Math","floor","Date","now","sleepMs","milliseconds","Promise","resolve","setTimeout","sleep","seconds","promiseTimeout","promise","reject","timer","Error","then","value","clearTimeout","catch","reason","splitLines","text","split","filter","item","checkEmpty","map","trim","findKeyNode","key","node","pair","hasOwnProperty","index","result","str","upperCaseFirst","toUpperCase","slice","lowerCaseFirst","toLowerCase","titleString","word","join","limitString","limit","length","substring","safeString","whiteList","stripIgnoreTag","stripIgnoreTagBody","randomString","useNumbers","useUppercase","characters","i","randomIndex","random","randomHex","randomUuid","useDashes","d","uuid","replace","c","r","toString","replaceAll","randomWeighted","dict","randomFunc","totalWeight","elements","Object","keys","weights","values","reduce","sum","weight","randomNum","weightSum","cookieDict","res","decodeValues","cookies","parse","cookie","cookieHeader","entries","isIntlHttpCode","httpCode","undefined","isIntlError","e","includes"],"sources":["../src/index.js"],"sourcesContent":["import xss from \"xss\";\r\nimport camelCase from \"lodash/camelCase.js\";\r\nimport capitalize from \"lodash/capitalize.js\";\r\nimport isEmpty from \"lodash/isEmpty.js\";\r\nimport setCookieParser from \"set-cookie-parser\";\r\n\r\n\r\nexport const CONSTANTS = {\r\n LOWER_CASE: \"abcdefghijklmnopqrstuvwxyz\",\r\n UPPER_CASE: \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\",\r\n HEXADECIMAL: \"0123456789abcdef\",\r\n NUMBERS: \"0123456789\",\r\n};\r\n\r\nexport function Exception(message, response = {}, name = null) {\r\n response.status = response.status || 400;\r\n return {\r\n name: pascalCase(name),\r\n message,\r\n response,\r\n }\r\n}\r\n\r\nexport function time() {\r\n return Math.floor(Date.now() / 1000);\r\n}\r\n\r\nexport async function sleepMs(milliseconds) {\r\n return new Promise(resolve => setTimeout(resolve, milliseconds));\r\n}\r\n\r\nexport async function sleep(seconds) {\r\n return await sleepMs(seconds * 1000);\r\n}\r\n\r\nexport function promiseTimeout(milliseconds, promise) {\r\n return new Promise((resolve, reject) => {\r\n const timer = setTimeout(() => {\r\n reject(new Error('Promise timed out after ' + milliseconds + 'ms'));\r\n }, milliseconds);\r\n\r\n promise\r\n .then(value => {\r\n clearTimeout(timer);\r\n resolve(value);\r\n })\r\n .catch(reason => {\r\n clearTimeout(timer);\r\n reject(reason);\r\n });\r\n });\r\n}\r\n\r\nexport function splitLines(text) {\r\n return text.split(/\\r?\\n/).filter(item => !checkEmpty(item)).map(item => item.trim());\r\n}\r\n\r\nexport function findKeyNode(key, node, pair = null) {\r\n if (node && node.hasOwnProperty(key) && (pair ? node[key] === pair : true)) {\r\n return node;\r\n } else if (typeof node === 'object') {\r\n for (let index in node) {\r\n const result = findKeyNode(key, node[index], pair);\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nexport function checkEmpty(value) {\r\n if (typeof value === \"number\") {\r\n return value === 0;\r\n } else {\r\n return isEmpty(value);\r\n }\r\n}\r\n\r\nexport function pascalCase(str) {\r\n return upperCaseFirst(camelCase(str));\r\n}\r\n\r\nexport function upperCaseFirst(str) {\r\n str = str || \"\";\r\n return str[0].toUpperCase() + str.slice(1);\r\n}\r\n\r\nexport function lowerCaseFirst(str) {\r\n str = str || \"\";\r\n return str[0].toLowerCase() + str.slice(1);\r\n}\r\n\r\nexport function titleString(str) {\r\n str = str || \"\";\r\n return str\r\n .split(' ')\r\n .map(word => capitalize(word))\r\n .join(' ');\r\n}\r\n\r\nexport function limitString(str, limit = 35) {\r\n str = str || \"\";\r\n if (str.length <= limit) {\r\n return str;\r\n } else {\r\n return str.substring(0, limit - 3) + \"...\";\r\n }\r\n}\r\n\r\nexport function safeString(str) {\r\n str = str || \"\";\r\n return xss(str, {\r\n whiteList: {},\r\n stripIgnoreTag: true,\r\n stripIgnoreTagBody: [\"script\"]\r\n });\r\n}\r\n\r\nexport function randomString(length, useNumbers = true, useUppercase = false) {\r\n\r\n let characters = CONSTANTS.LOWER_CASE;\r\n if (useUppercase) characters += CONSTANTS.UPPER_CASE;\r\n if (useNumbers) characters += CONSTANTS.NUMBERS;\r\n\r\n let randomString = '';\r\n for (let i = 0; i < length; i++) {\r\n const randomIndex = Math.floor(Math.random() * characters.length);\r\n randomString += characters[randomIndex];\r\n }\r\n\r\n return randomString;\r\n}\r\n\r\nexport function randomHex(length) {\r\n let result = '';\r\n for (let i = 0; i < length; i++) {\r\n const randomIndex = Math.floor(Math.random() * CONSTANTS.HEXADECIMAL.length);\r\n result += CONSTANTS.HEXADECIMAL[randomIndex];\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function randomUuid(useDashes = true) {\r\n let d = Date.now();\r\n const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n const r = (d + Math.random() * 16) % 16 | 0;\r\n d = Math.floor(d / 16);\r\n return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);\r\n });\r\n return useDashes ? uuid : uuid.replaceAll(\"-\", \"\");\r\n}\r\n\r\nexport function randomWeighted(dict, randomFunc = (totalWeight) => Math.random() * totalWeight) {\r\n let elements = Object.keys(dict);\r\n let weights = Object.values(dict);\r\n\r\n let totalWeight = weights.reduce((sum, weight) => sum + weight, 0);\r\n\r\n let randomNum = randomFunc(totalWeight);\r\n let weightSum = 0;\r\n\r\n for (let i = 0; i < elements.length; i++) {\r\n weightSum += weights[i];\r\n if (randomNum <= weightSum) {\r\n return elements[i];\r\n }\r\n }\r\n}\r\n\r\nexport function cookieDict(res, decodeValues = false) {\r\n let dict = {};\r\n const cookies = setCookieParser.parse(res, {decodeValues: decodeValues});\r\n for (let cookie of cookies) {\r\n dict[cookie.name] = cookie.value;\r\n }\r\n return dict;\r\n}\r\n\r\nexport function cookieHeader(cookieDict) {\r\n return Object.entries(cookieDict)\r\n .map(([key, value]) => `${key}=${value}`)\r\n .join(';')\r\n}\r\n\r\nexport function isIntlHttpCode(httpCode) {\r\n return (\r\n httpCode === undefined ||\r\n httpCode === null ||\r\n httpCode === 0 ||\r\n httpCode === 402 ||\r\n httpCode === 407 ||\r\n httpCode === 466 ||\r\n 500 <= httpCode\r\n );\r\n}\r\n\r\nexport function isIntlError(e) {\r\n return (\r\n e?.message?.toLowerCase?.()?.includes?.(\"timeout\") ||\r\n e?.message?.toLowerCase?.()?.includes?.(\"aborted\") ||\r\n e?.message?.toLowerCase?.()?.includes?.(\"tls connection\") ||\r\n e?.message?.toLowerCase?.()?.includes?.(\"socket hang\") ||\r\n isIntlHttpCode(e?.response?.status)\r\n )\r\n}"],"mappings":"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"}
|
package/mjs/node.js
ADDED
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import crypto from "crypto";
|
|
4
|
+
import { networkInterfaces } from "os";
|
|
5
|
+
import { execSync } from "child_process";
|
|
6
|
+
import bcrypt from "bcrypt";
|
|
7
|
+
import axios from "axios";
|
|
8
|
+
import { HttpsProxyAgent } from "hpagent";
|
|
9
|
+
import { CONSTANTS, randomWeighted, sleep } from "./index.js";
|
|
10
|
+
export function tokenString(length, useNumbers = true, useUppercase = false) {
|
|
11
|
+
const lowercaseChars = CONSTANTS.LOWER_CASE;
|
|
12
|
+
const uppercaseChars = CONSTANTS.UPPER_CASE;
|
|
13
|
+
const numbers = CONSTANTS.NUMBERS;
|
|
14
|
+
let characters = lowercaseChars;
|
|
15
|
+
if (useUppercase) characters += uppercaseChars;
|
|
16
|
+
if (useNumbers) characters += numbers;
|
|
17
|
+
let randomString = '';
|
|
18
|
+
while (randomString.length < length) {
|
|
19
|
+
const byte = crypto.randomBytes(1)[0];
|
|
20
|
+
const index = byte % characters.length;
|
|
21
|
+
if (byte < 256 - 256 % characters.length) {
|
|
22
|
+
randomString += characters[index];
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return randomString;
|
|
26
|
+
}
|
|
27
|
+
export function tokenHex(length) {
|
|
28
|
+
return crypto.randomBytes(Math.ceil(length / 2)).toString('hex').slice(0, length);
|
|
29
|
+
}
|
|
30
|
+
export function tokenUuid(useDashes = true) {
|
|
31
|
+
const uuid = crypto.randomUUID().toString();
|
|
32
|
+
return useDashes ? uuid : uuid.replaceAll("-", "");
|
|
33
|
+
}
|
|
34
|
+
export function tokenWeighted(dict) {
|
|
35
|
+
return randomWeighted(dict, crypto.randomInt);
|
|
36
|
+
}
|
|
37
|
+
export function serverIp() {
|
|
38
|
+
const interfaces = networkInterfaces();
|
|
39
|
+
for (const devName in interfaces) {
|
|
40
|
+
const interfaceValue = interfaces[devName];
|
|
41
|
+
for (let i = 0; i < interfaceValue.length; i++) {
|
|
42
|
+
const alias = interfaceValue[i];
|
|
43
|
+
if (alias.family === 'IPv4' && alias.address !== '127.0.0.1' && !alias.address.startsWith("192.168.") && !alias.internal) return alias.address;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return '127.0.0.1';
|
|
47
|
+
}
|
|
48
|
+
export function getVersion() {
|
|
49
|
+
try {
|
|
50
|
+
const date = new Date(execSync('git show -s --format=%ci HEAD').toString().trim());
|
|
51
|
+
const formatDatePart = value => value.toString().padStart(2, '0');
|
|
52
|
+
const year = date.getFullYear().toString().slice(-2);
|
|
53
|
+
const month = formatDatePart(date.getMonth() + 1);
|
|
54
|
+
const day = formatDatePart(date.getDate());
|
|
55
|
+
const hour = formatDatePart(date.getHours());
|
|
56
|
+
const minute = formatDatePart(date.getMinutes());
|
|
57
|
+
return parseFloat(`${year}${month}.${day}${hour}${minute}`);
|
|
58
|
+
} catch {
|
|
59
|
+
return 1.0;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export function createNumDir(mainDirectory) {
|
|
63
|
+
fs.mkdirSync(mainDirectory, {
|
|
64
|
+
recursive: true
|
|
65
|
+
});
|
|
66
|
+
for (let i = 0; i <= 9; i++) {
|
|
67
|
+
try {
|
|
68
|
+
fs.mkdirSync(path.join(mainDirectory, i.toString()));
|
|
69
|
+
} catch (e) {
|
|
70
|
+
console.error(`createNumDir:${i}`, e.message);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
export function md5(data) {
|
|
75
|
+
return crypto.createHash('md5').update(data).digest("hex");
|
|
76
|
+
}
|
|
77
|
+
export function hashBcrypt(plainText) {
|
|
78
|
+
return bcrypt.hashSync(plainText, bcrypt.genSaltSync(10));
|
|
79
|
+
}
|
|
80
|
+
export function verifyBcrypt(plainText, hash) {
|
|
81
|
+
return bcrypt.compareSync(plainText, hash);
|
|
82
|
+
}
|
|
83
|
+
export function formatProxy(proxy, protocol = "http") {
|
|
84
|
+
proxy = proxy.trim();
|
|
85
|
+
const splitByProtocol = proxy.split("://");
|
|
86
|
+
if (1 < splitByProtocol.length) protocol = splitByProtocol[0];
|
|
87
|
+
proxy = splitByProtocol[splitByProtocol.length - 1];
|
|
88
|
+
if (!proxy.includes("@")) {
|
|
89
|
+
const proxyParts = proxy.split(":");
|
|
90
|
+
if (4 <= proxyParts.length) {
|
|
91
|
+
proxy = `${proxyParts[proxyParts.length - 2]}:${proxyParts[proxyParts.length - 1]}@`;
|
|
92
|
+
proxyParts.pop();
|
|
93
|
+
proxyParts.pop();
|
|
94
|
+
proxy += proxyParts.join(":");
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const proxyParts = proxy.split(':');
|
|
98
|
+
const proxyEnd = parseInt(proxyParts[proxyParts.length - 1]);
|
|
99
|
+
const proxyStart = proxyParts[proxyParts.length - 2];
|
|
100
|
+
if (!proxyStart.includes(".")) {
|
|
101
|
+
proxyParts.pop();
|
|
102
|
+
proxyParts[proxyParts.length - 1] = crypto.randomInt(parseInt(proxyStart), proxyEnd + 1).toString();
|
|
103
|
+
}
|
|
104
|
+
return protocol + "://" + proxyParts.join(':');
|
|
105
|
+
}
|
|
106
|
+
export function proxyObject(...args) {
|
|
107
|
+
let proxy = formatProxy(...args);
|
|
108
|
+
const splitByProtocol = proxy.split('://');
|
|
109
|
+
const splitById = splitByProtocol[splitByProtocol.length - 1].split('@');
|
|
110
|
+
const splitByConn = splitById[splitById.length - 1].split(':');
|
|
111
|
+
proxy = {
|
|
112
|
+
protocol: splitByProtocol[0],
|
|
113
|
+
host: splitByConn[0],
|
|
114
|
+
port: parseInt(splitByConn[1])
|
|
115
|
+
};
|
|
116
|
+
if (1 < splitById.length) {
|
|
117
|
+
const splitByAuth = splitById[0].split(':');
|
|
118
|
+
proxy.auth = {
|
|
119
|
+
username: splitByAuth[0],
|
|
120
|
+
password: splitByAuth[1]
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
return proxy;
|
|
124
|
+
}
|
|
125
|
+
export async function proxify(proxyConfig, callback = formatProxy) {
|
|
126
|
+
proxyConfig = proxyConfig || {};
|
|
127
|
+
const timeout = 7000;
|
|
128
|
+
if (proxyConfig.mode === 1) {
|
|
129
|
+
return callback(proxyConfig.proxy);
|
|
130
|
+
} else if (proxyConfig.mode === 2) {
|
|
131
|
+
const proxy = callback(proxyConfig.proxy);
|
|
132
|
+
try {
|
|
133
|
+
await axios.get(proxyConfig.resetApi, {
|
|
134
|
+
timeout
|
|
135
|
+
});
|
|
136
|
+
} catch {
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
await sleep(5);
|
|
140
|
+
for (let i = 0; i < 5; i++) {
|
|
141
|
+
try {
|
|
142
|
+
const res = await axios.get("https://api64.ipify.org", {
|
|
143
|
+
timeout,
|
|
144
|
+
httpsAgent: new HttpsProxyAgent({
|
|
145
|
+
proxy,
|
|
146
|
+
timeout: 7000
|
|
147
|
+
})
|
|
148
|
+
});
|
|
149
|
+
if (res.status === 200) return proxy;
|
|
150
|
+
} catch {
|
|
151
|
+
await sleep(3);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
} else if (proxyConfig.mode === 3) {
|
|
155
|
+
try {
|
|
156
|
+
const res = await axios.get(proxyConfig.resetApi, {
|
|
157
|
+
timeout
|
|
158
|
+
});
|
|
159
|
+
if (res.status === 200) return callback(proxyConfig.proxy);
|
|
160
|
+
} catch {
|
|
161
|
+
return false;
|
|
162
|
+
}
|
|
163
|
+
} else if (proxyConfig.mode === 4) {
|
|
164
|
+
return callback(proxyConfig.proxy).replace("{SESSION}", tokenHex(8));
|
|
165
|
+
} else if (proxyConfig.mode === 5) {
|
|
166
|
+
try {
|
|
167
|
+
const lines = proxyConfig.proxy.split("\n");
|
|
168
|
+
const line = lines[crypto.randomInt(0, lines.length)];
|
|
169
|
+
return callback(line);
|
|
170
|
+
} catch {
|
|
171
|
+
return false;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=node.js.map
|
package/mjs/node.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.js","names":["fs","path","crypto","networkInterfaces","execSync","bcrypt","axios","HttpsProxyAgent","CONSTANTS","randomWeighted","sleep","tokenString","length","useNumbers","useUppercase","lowercaseChars","LOWER_CASE","uppercaseChars","UPPER_CASE","numbers","NUMBERS","characters","randomString","byte","randomBytes","index","tokenHex","Math","ceil","toString","slice","tokenUuid","useDashes","uuid","randomUUID","replaceAll","tokenWeighted","dict","randomInt","serverIp","interfaces","devName","interfaceValue","i","alias","family","address","startsWith","internal","getVersion","date","Date","trim","formatDatePart","value","padStart","year","getFullYear","month","getMonth","day","getDate","hour","getHours","minute","getMinutes","parseFloat","createNumDir","mainDirectory","mkdirSync","recursive","join","e","console","error","message","md5","data","createHash","update","digest","hashBcrypt","plainText","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","get","resetApi","res","httpsAgent","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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"}
|
package/package.json
CHANGED
|
@@ -1,43 +1,51 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "melperjs",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "
|
|
5
|
-
"keywords": [
|
|
6
|
-
"helper",
|
|
7
|
-
"mixins",
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
],
|
|
12
|
-
"repository": {
|
|
13
|
-
"type": "git",
|
|
14
|
-
"url": "https://github.com/mahelbir/melperjs.git"
|
|
15
|
-
},
|
|
16
|
-
"author": "Mahmuthan Elbir",
|
|
17
|
-
"license": "MIT",
|
|
18
|
-
"
|
|
19
|
-
|
|
20
|
-
"
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
"
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
|
|
43
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "melperjs",
|
|
3
|
+
"version": "5.0.0",
|
|
4
|
+
"description": "Javascript module to use predefined common functions and utilities",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"helper",
|
|
7
|
+
"mixins",
|
|
8
|
+
"common functions",
|
|
9
|
+
"javascript helper",
|
|
10
|
+
"nodejs helper"
|
|
11
|
+
],
|
|
12
|
+
"repository": {
|
|
13
|
+
"type": "git",
|
|
14
|
+
"url": "https://github.com/mahelbir/melperjs.git"
|
|
15
|
+
},
|
|
16
|
+
"author": "Mahmuthan Elbir",
|
|
17
|
+
"license": "MIT",
|
|
18
|
+
"type": "module",
|
|
19
|
+
"exports": {
|
|
20
|
+
".": {
|
|
21
|
+
"import": "./mjs/index.js",
|
|
22
|
+
"require": "./cjs/index.js"
|
|
23
|
+
},
|
|
24
|
+
"./node": {
|
|
25
|
+
"import": "./mjs/node.js",
|
|
26
|
+
"require": "./cjs/node.js"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"scripts": {
|
|
30
|
+
"build-node": "babel ./src --out-dir ./cjs",
|
|
31
|
+
"build-module": "cross-env BABEL_ENV=module babel ./src --out-dir ./mjs",
|
|
32
|
+
"build-browser": "cross-env BABEL_ENV=browser babel ./src --out-dir ./lib",
|
|
33
|
+
"build": "npm run build-node && npm run build-module && npm run build-browser",
|
|
34
|
+
"test": "node test/script.js"
|
|
35
|
+
},
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"axios": "^1.6.2",
|
|
38
|
+
"bcrypt": "^5.1.1",
|
|
39
|
+
"hpagent": "^1.2.0",
|
|
40
|
+
"lodash": "^4.17.21",
|
|
41
|
+
"set-cookie-parser": "^2.6.0",
|
|
42
|
+
"xss": "^1.0.14"
|
|
43
|
+
},
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"@babel/cli": "^7.23.4",
|
|
46
|
+
"@babel/core": "^7.23.3",
|
|
47
|
+
"@babel/preset-env": "^7.23.3",
|
|
48
|
+
"babel-preset-env": "^1.7.0",
|
|
49
|
+
"cross-env": "^7.0.3"
|
|
50
|
+
}
|
|
51
|
+
}
|
package/src/index.js
CHANGED
|
@@ -1,8 +1,17 @@
|
|
|
1
|
-
import * as _ from "lodash";
|
|
2
1
|
import xss from "xss";
|
|
3
|
-
import
|
|
2
|
+
import camelCase from "lodash/camelCase.js";
|
|
3
|
+
import capitalize from "lodash/capitalize.js";
|
|
4
|
+
import isEmpty from "lodash/isEmpty.js";
|
|
4
5
|
import setCookieParser from "set-cookie-parser";
|
|
5
6
|
|
|
7
|
+
|
|
8
|
+
export const CONSTANTS = {
|
|
9
|
+
LOWER_CASE: "abcdefghijklmnopqrstuvwxyz",
|
|
10
|
+
UPPER_CASE: "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
|
|
11
|
+
HEXADECIMAL: "0123456789abcdef",
|
|
12
|
+
NUMBERS: "0123456789",
|
|
13
|
+
};
|
|
14
|
+
|
|
6
15
|
export function Exception(message, response = {}, name = null) {
|
|
7
16
|
response.status = response.status || 400;
|
|
8
17
|
return {
|
|
@@ -42,6 +51,10 @@ export function promiseTimeout(milliseconds, promise) {
|
|
|
42
51
|
});
|
|
43
52
|
}
|
|
44
53
|
|
|
54
|
+
export function splitLines(text) {
|
|
55
|
+
return text.split(/\r?\n/).map(item => item.trim()).filter(item => !isEmpty(item));
|
|
56
|
+
}
|
|
57
|
+
|
|
45
58
|
export function findKeyNode(key, node, pair = null) {
|
|
46
59
|
if (node && node.hasOwnProperty(key) && (pair ? node[key] === pair : true)) {
|
|
47
60
|
return node;
|
|
@@ -60,29 +73,29 @@ export function checkEmpty(value) {
|
|
|
60
73
|
if (typeof value === "number") {
|
|
61
74
|
return value === 0;
|
|
62
75
|
} else {
|
|
63
|
-
return
|
|
76
|
+
return isEmpty(value);
|
|
64
77
|
}
|
|
65
78
|
}
|
|
66
79
|
|
|
67
|
-
export function pascalCase(str){
|
|
68
|
-
return upperCaseFirst(
|
|
80
|
+
export function pascalCase(str) {
|
|
81
|
+
return upperCaseFirst(camelCase(str));
|
|
69
82
|
}
|
|
70
83
|
|
|
71
84
|
export function upperCaseFirst(str) {
|
|
72
85
|
str = str || "";
|
|
73
|
-
return
|
|
86
|
+
return str[0].toUpperCase() + str.slice(1);
|
|
74
87
|
}
|
|
75
88
|
|
|
76
89
|
export function lowerCaseFirst(str) {
|
|
77
90
|
str = str || "";
|
|
78
|
-
return
|
|
91
|
+
return str[0].toLowerCase() + str.slice(1);
|
|
79
92
|
}
|
|
80
93
|
|
|
81
94
|
export function titleString(str) {
|
|
82
95
|
str = str || "";
|
|
83
96
|
return str
|
|
84
97
|
.split(' ')
|
|
85
|
-
.map(word =>
|
|
98
|
+
.map(word => capitalize(word))
|
|
86
99
|
.join(' ');
|
|
87
100
|
}
|
|
88
101
|
|
|
@@ -105,13 +118,10 @@ export function safeString(str) {
|
|
|
105
118
|
}
|
|
106
119
|
|
|
107
120
|
export function randomString(length, useNumbers = true, useUppercase = false) {
|
|
108
|
-
const lowercaseChars = 'abcdefghijklmnopqrstuvwxyz';
|
|
109
|
-
const uppercaseChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
110
|
-
const numbers = '0123456789';
|
|
111
121
|
|
|
112
|
-
let characters =
|
|
113
|
-
if (useUppercase) characters +=
|
|
114
|
-
if (useNumbers) characters +=
|
|
122
|
+
let characters = CONSTANTS.LOWER_CASE;
|
|
123
|
+
if (useUppercase) characters += CONSTANTS.UPPER_CASE;
|
|
124
|
+
if (useNumbers) characters += CONSTANTS.NUMBERS;
|
|
115
125
|
|
|
116
126
|
let randomString = '';
|
|
117
127
|
for (let i = 0; i < length; i++) {
|
|
@@ -124,11 +134,9 @@ export function randomString(length, useNumbers = true, useUppercase = false) {
|
|
|
124
134
|
|
|
125
135
|
export function randomHex(length) {
|
|
126
136
|
let result = '';
|
|
127
|
-
const characters = '0123456789abcdef';
|
|
128
|
-
|
|
129
137
|
for (let i = 0; i < length; i++) {
|
|
130
|
-
const randomIndex = Math.floor(Math.random() *
|
|
131
|
-
result +=
|
|
138
|
+
const randomIndex = Math.floor(Math.random() * CONSTANTS.HEXADECIMAL.length);
|
|
139
|
+
result += CONSTANTS.HEXADECIMAL[randomIndex];
|
|
132
140
|
}
|
|
133
141
|
|
|
134
142
|
return result;
|
|
@@ -161,14 +169,6 @@ export function randomWeighted(dict, randomFunc = (totalWeight) => Math.random()
|
|
|
161
169
|
}
|
|
162
170
|
}
|
|
163
171
|
|
|
164
|
-
export function hashBcrypt(plainText) {
|
|
165
|
-
return bcrypt.hashSync(plainText, bcrypt.genSaltSync(10));
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
export function verifyBcrypt(plainText, hash) {
|
|
169
|
-
return bcrypt.compareSync(plainText, hash);
|
|
170
|
-
}
|
|
171
|
-
|
|
172
172
|
export function cookieDict(res, decodeValues = false) {
|
|
173
173
|
let dict = {};
|
|
174
174
|
const cookies = setCookieParser.parse(res, {decodeValues: decodeValues});
|
|
@@ -184,7 +184,7 @@ export function cookieHeader(cookieDict) {
|
|
|
184
184
|
.join(';')
|
|
185
185
|
}
|
|
186
186
|
|
|
187
|
-
export function
|
|
187
|
+
export function isIntlHttpCode(httpCode) {
|
|
188
188
|
return (
|
|
189
189
|
httpCode === undefined ||
|
|
190
190
|
httpCode === null ||
|
|
@@ -194,4 +194,14 @@ export function foreignHttpError(httpCode) {
|
|
|
194
194
|
httpCode === 466 ||
|
|
195
195
|
500 <= httpCode
|
|
196
196
|
);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
export function isIntlError(e) {
|
|
200
|
+
return (
|
|
201
|
+
e?.message?.toLowerCase?.()?.includes?.("timeout") ||
|
|
202
|
+
e?.message?.toLowerCase?.()?.includes?.("aborted") ||
|
|
203
|
+
e?.message?.toLowerCase?.()?.includes?.("tls connection") ||
|
|
204
|
+
e?.message?.toLowerCase?.()?.includes?.("socket hang") ||
|
|
205
|
+
isIntlHttpCode(e?.response?.status)
|
|
206
|
+
)
|
|
197
207
|
}
|
package/src/node.js
CHANGED
|
@@ -4,16 +4,17 @@ import crypto from "crypto";
|
|
|
4
4
|
import {networkInterfaces} from "os";
|
|
5
5
|
import {execSync} from "child_process";
|
|
6
6
|
|
|
7
|
+
import bcrypt from "bcrypt";
|
|
7
8
|
import axios from "axios";
|
|
8
9
|
import {HttpsProxyAgent} from "hpagent";
|
|
9
10
|
|
|
10
|
-
import {randomWeighted, sleep} from "./index.js";
|
|
11
|
+
import {CONSTANTS, randomWeighted, sleep} from "./index.js";
|
|
11
12
|
|
|
12
13
|
|
|
13
14
|
export function tokenString(length, useNumbers = true, useUppercase = false) {
|
|
14
|
-
const lowercaseChars =
|
|
15
|
-
const uppercaseChars =
|
|
16
|
-
const numbers =
|
|
15
|
+
const lowercaseChars = CONSTANTS.LOWER_CASE;
|
|
16
|
+
const uppercaseChars = CONSTANTS.UPPER_CASE;
|
|
17
|
+
const numbers = CONSTANTS.NUMBERS;
|
|
17
18
|
|
|
18
19
|
let characters = lowercaseChars;
|
|
19
20
|
if (useUppercase) characters += uppercaseChars;
|
|
@@ -75,19 +76,11 @@ export function getVersion() {
|
|
|
75
76
|
}
|
|
76
77
|
}
|
|
77
78
|
|
|
78
|
-
export function createDir(directory) {
|
|
79
|
-
if (!fs.existsSync(directory)) {
|
|
80
|
-
fs.mkdirSync(directory, {recursive: true});
|
|
81
|
-
return true;
|
|
82
|
-
}
|
|
83
|
-
return false;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
79
|
export function createNumDir(mainDirectory) {
|
|
87
|
-
|
|
80
|
+
fs.mkdirSync(mainDirectory, {recursive: true});
|
|
88
81
|
for (let i = 0; i <= 9; i++) {
|
|
89
82
|
try {
|
|
90
|
-
|
|
83
|
+
fs.mkdirSync(path.join(mainDirectory, i.toString()));
|
|
91
84
|
} catch (e) {
|
|
92
85
|
console.error(`createNumDir:${i}`, e.message);
|
|
93
86
|
}
|
|
@@ -98,6 +91,14 @@ export function md5(data) {
|
|
|
98
91
|
return crypto.createHash('md5').update(data).digest("hex");
|
|
99
92
|
}
|
|
100
93
|
|
|
94
|
+
export function hashBcrypt(plainText) {
|
|
95
|
+
return bcrypt.hashSync(plainText, bcrypt.genSaltSync(10));
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export function verifyBcrypt(plainText, hash) {
|
|
99
|
+
return bcrypt.compareSync(plainText, hash);
|
|
100
|
+
}
|
|
101
|
+
|
|
101
102
|
export function formatProxy(proxy, protocol = "http") {
|
|
102
103
|
proxy = proxy.trim();
|
|
103
104
|
const splitByProtocol = proxy.split("://");
|
package/test/script.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import * as helper from "../src/index.js"
|
|
2
|
-
import * as nodeHelper from "../src/node.js"
|
|
3
1
|
import axios from "axios"
|
|
2
|
+
import * as helper from "../src/index.js";
|
|
3
|
+
import * as nodeHelper from "../src/node.js";
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
(async () => {
|
|
7
|
-
console.log(helper.
|
|
7
|
+
console.log(helper.CONSTANTS);
|
|
8
|
+
console.log(helper.Exception("something went wrong", {status: 400}, "bad request error"));
|
|
8
9
|
console.log(helper.time());
|
|
9
10
|
await helper.sleepMs(1000);
|
|
10
11
|
console.log(helper.time());
|
|
@@ -14,7 +15,13 @@ import axios from "axios"
|
|
|
14
15
|
await helper.promiseTimeout(1000, helper.sleepMs(2000));
|
|
15
16
|
} catch (e) {
|
|
16
17
|
console.error(e.message);
|
|
18
|
+
console.log("Timeout, Internal Error ?", helper.isIntlError(e));
|
|
17
19
|
}
|
|
20
|
+
console.log(helper.splitLines(`
|
|
21
|
+
2.satır
|
|
22
|
+
|
|
23
|
+
4.satır
|
|
24
|
+
`))
|
|
18
25
|
console.log(helper.findKeyNode("c", {
|
|
19
26
|
a: {
|
|
20
27
|
b: {
|
|
@@ -26,9 +33,11 @@ import axios from "axios"
|
|
|
26
33
|
}
|
|
27
34
|
}
|
|
28
35
|
}));
|
|
29
|
-
console.log("
|
|
30
|
-
console.log("1 empty", helper.checkEmpty(1));
|
|
31
|
-
console.log("
|
|
36
|
+
console.log("'' empty ?", helper.checkEmpty(''));
|
|
37
|
+
console.log("1 empty ?", helper.checkEmpty(1));
|
|
38
|
+
console.log("0 empty ?", helper.checkEmpty(1));
|
|
39
|
+
console.log("[] empty ?", helper.checkEmpty([]));
|
|
40
|
+
console.log(helper.pascalCase("pascal case"));
|
|
32
41
|
console.log(helper.upperCaseFirst("first letter upper"));
|
|
33
42
|
console.log(helper.lowerCaseFirst("First Letter Lower"));
|
|
34
43
|
console.log(helper.titleString("THIS mUsT be Title"));
|
|
@@ -43,9 +52,9 @@ import axios from "axios"
|
|
|
43
52
|
console.log(nodeHelper.tokenUuid(true));
|
|
44
53
|
console.log(nodeHelper.tokenWeighted({strongProbability: 1000, lowProbability: 1}));
|
|
45
54
|
console.log(nodeHelper.md5("data"));
|
|
46
|
-
const password =
|
|
55
|
+
const password = nodeHelper.hashBcrypt("plain");
|
|
47
56
|
console.log(password)
|
|
48
|
-
console.log("passwordHash",
|
|
57
|
+
console.log("passwordHash verified ?", nodeHelper.verifyBcrypt("plain", password));
|
|
49
58
|
const cookies = helper.cookieDict(await axios.get("https://google.com"));
|
|
50
59
|
console.log(cookies);
|
|
51
60
|
console.log(helper.cookieHeader(cookies));
|
|
@@ -54,9 +63,8 @@ import axios from "axios"
|
|
|
54
63
|
console.log(nodeHelper.proxyObject(proxy));
|
|
55
64
|
console.log(await nodeHelper.proxify({mode: 4, proxy}));
|
|
56
65
|
console.log(nodeHelper.serverIp());
|
|
57
|
-
console.log("HTTP CODE:
|
|
58
|
-
console.log("HTTP CODE: 407
|
|
66
|
+
console.log("HTTP CODE: 400 (Bad Request) ?", helper.isIntlHttpCode(401));
|
|
67
|
+
console.log("HTTP CODE: 407 (Failed Proxy Auth) ?", helper.isIntlHttpCode(407));
|
|
59
68
|
nodeHelper.createNumDir("test");
|
|
60
|
-
nodeHelper.createDir("test");
|
|
61
69
|
console.log("VERSIONED BY .GIT", "v" + nodeHelper.getVersion());
|
|
62
70
|
})();
|