84 lines
2.1 KiB
JavaScript
84 lines
2.1 KiB
JavaScript
require("./init")
|
|
const osutil = require("./util/osutil")
|
|
const killer = require('cross-port-killer');
|
|
const net = require('net');
|
|
|
|
|
|
/**
|
|
* 模拟 telnet ,检测端口是否开放
|
|
* @param port
|
|
* @param host
|
|
* @param timeout
|
|
* @returns {Promise<unknown>}
|
|
*/
|
|
async function telnet(port, host, timeout=3000){
|
|
$logger.debug(`port=${port} host=${host} timeout=${timeout}`)
|
|
return new Promise(function (resolve, reject){
|
|
const socket = new net.Socket();
|
|
|
|
socket.setTimeout(timeout, function() {
|
|
socket.end();
|
|
reject("链接超时")
|
|
});
|
|
|
|
socket.connect(port, host);
|
|
|
|
socket.on('connect', function() {
|
|
resolve('连接成功');
|
|
socket.end();
|
|
});
|
|
|
|
socket.on('error', function(err) {
|
|
reject('连接失败');
|
|
});
|
|
})
|
|
|
|
}
|
|
|
|
async function killport(port) {
|
|
return killer.kill( port );
|
|
// let func = osutil.choise([
|
|
// require("./windows/net").killport,
|
|
// require("./linux/net").killport,
|
|
// ])
|
|
// return func && func(port);
|
|
}
|
|
|
|
/**
|
|
* 获取端口信息
|
|
* 因为命令输出缓存问题,有缺陷。
|
|
* @param port
|
|
* @returns {Promise<void>}
|
|
*/
|
|
async function getport(port) {
|
|
$logger.info( "暂未实现" );
|
|
}
|
|
|
|
|
|
async function checkip(){
|
|
const url = "https://myip.ipip.net/json"
|
|
const http = url.startsWith("https:") ? require("node:https") : require('node:http');
|
|
return new Promise((resolve, reject) => {
|
|
http.get(url, (res) => {
|
|
let data = '';
|
|
|
|
// A chunk of data has been recieved.
|
|
res.on('data', (chunk) => {
|
|
data += chunk;
|
|
});
|
|
|
|
// The whole response has been received. Resolve the promise with result
|
|
res.on('end', () => {
|
|
resolve(JSON.parse(data));
|
|
});
|
|
|
|
}).on("error", (err) => {
|
|
// In case of any error reject the promise
|
|
reject(err);
|
|
});
|
|
});
|
|
}
|
|
|
|
module.exports = {
|
|
killport, getport, telnet, checkip
|
|
} |