From 06d05cf6fa8f18a21e0ee1f2ec948308989b93d6 Mon Sep 17 00:00:00 2001 From: Gyt-OMEN Date: Sun, 17 May 2020 20:34:01 +0800 Subject: [PATCH] bug fix --- package-lock.json | 2 +- package.json | 2 +- plugins/account_checker/index.js | 22 +++++++++++++-------- plugins/macAccount/index.js | 6 +++--- plugins/webgui/server/adminAccount.js | 6 +++--- plugins/webgui_tag/index.js | 28 +++++++++++++++++++++++++++ services/manager.js | 4 ++-- 7 files changed, 52 insertions(+), 18 deletions(-) diff --git a/package-lock.json b/package-lock.json index cd4d241e7..f010369e6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "shadowsocks-manager", - "version": "0.36.7", + "version": "0.36.8", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 2205bcc4b..a2075e5e9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "shadowsocks-manager", - "version": "0.36.7", + "version": "0.36.8", "description": "A shadowsocks manager tool for multi user and traffic control.", "main": "server.js", "scripts": { diff --git a/plugins/account_checker/index.js b/plugins/account_checker/index.js index fa9f8ae64..66e99ac7f 100644 --- a/plugins/account_checker/index.js +++ b/plugins/account_checker/index.js @@ -451,22 +451,28 @@ cron.minute(async () => { port: server.port + server.shift, password: server.password, }); - if(result.isGFW && !tags.includes('#_hide') && tags.includes('#autohide')) { - await webguiTag.setTags('server', server.id, [...tags, '#_hide']); + if(result.isGfw && !tags.includes('#_hide') && tags.includes('#autohide')) { + // await webguiTag.setTags('server', server.id, [...tags, '#_hide']); + await webguiTag.addTags('server', server.id, ['#_hide']); } else if (tags.includes('#_hide')) { - await webguiTag.setTags('server', server.id, tags.filter(f => f !== '#_hide')); + // await webguiTag.setTags('server', server.id, tags.filter(f => f !== '#_hide')); + await webguiTag.delTags('server', server.id, ['#_hide']); } - if(result.isGFW && !tags.includes('#_pause') && tags.includes('#autopause')) { - await webguiTag.setTags('server', server.id, [...tags, '#_pause']); + if(result.isGfw && !tags.includes('#_pause') && tags.includes('#autopause')) { + // await webguiTag.setTags('server', server.id, [...tags, '#_pause']); + await webguiTag.addTags('server', server.id, ['#_pause']); } else if (tags.includes('#_pause')) { - await webguiTag.setTags('server', server.id, tags.filter(f => f !== '#_pause')); + // await webguiTag.setTags('server', server.id, tags.filter(f => f !== '#_pause')); + await webguiTag.delTags('server', server.id, ['#_pause']); } } catch(err) { if(!tags.includes('#_hide') && tags.includes('#autohide')) { - await webguiTag.setTags('server', server.id, [...tags, '#_hide']); + // await webguiTag.setTags('server', server.id, [...tags, '#_hide']); + await webguiTag.addTags('server', server.id, ['#_hide']); } if(!tags.includes('#_pause') && tags.includes('#autopause')) { - await webguiTag.setTags('server', server.id, [...tags, '#_pause']); + // await webguiTag.setTags('server', server.id, [...tags, '#_pause']); + await webguiTag.delTags('server', server.id, ['#_pause']); } } } diff --git a/plugins/macAccount/index.js b/plugins/macAccount/index.js index 9c17e28dc..085fd3b30 100644 --- a/plugins/macAccount/index.js +++ b/plugins/macAccount/index.js @@ -46,11 +46,11 @@ const getIp = address => { return Promise.resolve(myAddress); } return new Promise((resolve, reject) => { - dns.lookup(myAddress, (err, myAddress, family) => { + dns.lookup(myAddress, (err, ip, family) => { if(err) { - return reject(err); + return resolve(myAddress); } - return resolve(myAddress); + return resolve(ip); }); }); }; diff --git a/plugins/webgui/server/adminAccount.js b/plugins/webgui/server/adminAccount.js index 09a10ecb6..aa55a1779 100644 --- a/plugins/webgui/server/adminAccount.js +++ b/plugins/webgui/server/adminAccount.js @@ -134,11 +134,11 @@ const getAddress = (address, ip) => { return Promise.resolve(myAddress); } return new Promise((resolve, reject) => { - dns.lookup(myAddress, (err, myAddress, family) => { + dns.lookup(myAddress, (err, ip, family) => { if(err) { - return reject(err); + return resolve(myAddress); } - return resolve(myAddress); + return resolve(ip); }); }); }; diff --git a/plugins/webgui_tag/index.js b/plugins/webgui_tag/index.js index ded88997b..f82383df3 100644 --- a/plugins/webgui_tag/index.js +++ b/plugins/webgui_tag/index.js @@ -26,5 +26,33 @@ const setTags = async (type, key, tags) => { } }; +const addTags = async (type, key, tags) => { + const currentTags = await knex('tag').select(['id', 'name']).where({ type, key }); + const newTags = tags.filter(f => { + return !currentTags.map(m => m.name).includes(f); + }).map(tag => { + return { + type, key, name: tag, + }; + }); + if(newTags.length) { + await knex('tag').insert(newTags); + } +}; + +const delTags = async (type, key, tags) => { + // const currentTags = await knex('tag').select(['id', 'name']).where({ type, key }); + // for(const ct of currentTags) { + // if(!tags.includes(ct.name)) { + // await knex('tag').delete().where({ id: ct.id }); + // } + // } + for(const tag of tags) { + await knex('tag').delete().where({ type, key, name: tag }); + } +}; + exports.getTags = getTags; exports.setTags = setTags; +exports.addTags = addTags; +exports.delTags = delTags; diff --git a/services/manager.js b/services/manager.js index 3ccdc504f..10cefd8a1 100644 --- a/services/manager.js +++ b/services/manager.js @@ -109,7 +109,7 @@ const getIps = async address => { return new Promise((resolve, reject) => { dns.resolve4(address, (err, ips) => { if(err) { - return reject(err); + return resolve([]); } if(ips.sort) { ips = ips.sort(); @@ -128,7 +128,7 @@ const send = async (data, options) => { } const ips = await getIps(options.host); if(ips.length === 0) { - return Promise.reject('invalid ip'); + return Promise.reject(`${options.host} invalid ip`); } else if(ips.length === 1) { return sendMessage(data, options); } else {