more error check

This commit is contained in:
HolographicHat
2022-04-05 20:13:52 +08:00
parent 18e3d3ffe3
commit a6b80d3588
6 changed files with 23 additions and 11 deletions

1
.gitignore vendored
View File

@@ -1,4 +1,5 @@
cache cache
cert
config.json config.json
out.* out.*
node_modules node_modules

2
.gitmodules vendored
View File

@@ -1,3 +1,3 @@
[submodule "native/src/wmi"] [submodule "native/src/wmi"]
path = native/src/wmi path = native/src/wmi
url = https://github.com/Thomas-Sparber/wmi.git url = https://github.com/HolographicHat/wmi

Binary file not shown.

1
native/.gitignore vendored
View File

@@ -3,4 +3,3 @@ CMakeLists.txt
cmake-build-debug cmake-build-debug
node_modules node_modules
build build
src/wmi

1
native/src/wmi Submodule

Submodule native/src/wmi added at aab36ea1e1

View File

@@ -16,8 +16,15 @@ const getModifiedRegionList = async (conf) => {
channel_id: conf.channel, channel_id: conf.channel,
sub_channel_id: conf.subChannel sub_channel_id: conf.subChannel
} }
}).catch(_ => {
console.log("网络错误,请检查网络后重试 (22-1)")
process.exit(221)
}) })
const regions = await decodeProto(Buffer.from(d.data,"base64"),"QueryRegionList") const regions = await decodeProto(Buffer.from(d.data,"base64"),"QueryRegionList")
if (regions["retcode"] !== 0) {
console.log(`系统错误,请稍后重试 (${regions["retcode"]}-23)`)
process.exit(23)
}
regions.list = regions.list.map(item => { regions.list = regions.list.map(item => {
const host = new URL(item.url).host const host = new URL(item.url).host
if (regions.list.length === 1) { if (regions.list.length === 1) {
@@ -36,12 +43,19 @@ const getModifiedRegionInfo = async (url, uc, hs) => {
const query = noQueryRequest ? "" : `?${splitUrl[1]}` const query = noQueryRequest ? "" : `?${splitUrl[1]}`
const d = await axios.get(`https://${host}/query_cur_region${query}`, { const d = await axios.get(`https://${host}/query_cur_region${query}`, {
responseType: "text" responseType: "text"
}).catch(_ => {
console.log("网络错误,请检查网络后重试 (22-2)")
process.exit(222)
}) })
if (noQueryRequest) { if (noQueryRequest) {
preparedRegions[host] = true preparedRegions[host] = true
return d.data return d.data
} else { } else {
const region = await decodeProto(Buffer.from(d.data,"base64"),"QueryCurRegion") const region = await decodeProto(Buffer.from(d.data,"base64"),"QueryCurRegion")
if (region["retcode"] !== 0) {
console.log(`${region["message"]} (${region["retcode"]}-24)`)
process.exit(24)
}
const info = region.info const info = region.info
if (preparedRegions[host]) { if (preparedRegions[host]) {
if (currentProxy !== undefined) { if (currentProxy !== undefined) {
@@ -69,7 +83,7 @@ const create = async (conf, regionListLoadedCallback, regionSelectCallback) => {
passphrase: "" passphrase: ""
}, async (request, response) => { }, async (request, response) => {
const url = request.url const url = request.url
debug("HTTP请求: %s", url) debug("HTTP: %s", url)
response.writeHead(200, { "Content-Type": "text/html" }) response.writeHead(200, { "Content-Type": "text/html" })
if (url.startsWith("/query_region_list")) { if (url.startsWith("/query_region_list")) {
response.end(regions) response.end(regions)
@@ -80,17 +94,14 @@ const create = async (conf, regionListLoadedCallback, regionSelectCallback) => {
const frontResponse = await axios.get(`https://${conf.dispatchIP}${url}`, { const frontResponse = await axios.get(`https://${conf.dispatchIP}${url}`, {
responseType: "arraybuffer", responseType: "arraybuffer",
httpsAgent: agent httpsAgent: agent
}).catch(err => {
console.log("网络错误,请检查网络后重试 (22-3)")
console.log(err.message)
process.exit(223)
}) })
response.end(frontResponse.data) response.end(frontResponse.data)
} }
}) }).listen(443, "127.0.0.1", () => {
hServer.on("error", err => {
if (err["code"] === "EADDRINUSE") {
console.log("本机 443 端口被其它程序占用,请关闭后重试")
}
throw err
})
hServer.listen(443, "127.0.0.1", () => {
regionListLoadedCallback() regionListLoadedCallback()
}) })
} }