Compare commits

..

No commits in common. '9cc65ad40264cba7f5eb499b927a073e2882355e' and 'b4a2e14b0c0ce1b05df32003235540e7d4fe3859' have entirely different histories.

  1. 1
      .gitignore
  2. 2
      main.js
  3. 2915
      package-lock.json
  4. 59
      package.json
  5. 35
      preload.js

1
.gitignore vendored

@ -2,4 +2,3 @@
/dist /dist
/.vscode /.vscode
out/ out/
release/

2
main.js

@ -5,8 +5,6 @@ const { SensorController } = require('./src/business/sensor-controller')
const { UsbSerialBridge } = require('./src/business/usb-serial-bridge') const { UsbSerialBridge } = require('./src/business/usb-serial-bridge')
const pkg = require('./package.json') const pkg = require('./package.json')
if (require('electron-squirrel-startup')) app.quit()
const cacheDir = app.getPath('userData') const cacheDir = app.getPath('userData')
const cacheFile = path.join(cacheDir, 'app-cache.json') const cacheFile = path.join(cacheDir, 'app-cache.json')
const fileRoot = path.join(cacheDir, 'files') const fileRoot = path.join(cacheDir, 'files')

2915
package-lock.json generated

File diff suppressed because it is too large Load Diff

59
package.json

@ -1,13 +1,12 @@
{ {
"name": "光伏pc端应用", "name": "photovoltaic-pc",
"version": "1.0.0", "version": "1.0.0",
"description": "光伏pc端应用photovoltaic-pc", "description": "光伏pc端应用",
"main": "main.js", "main": "main.js",
"scripts": { "scripts": {
"start": "electron-forge start", "start": "electron-forge start",
"package": "electron-builder --dir", "package": "electron-forge package",
"make": "electron-builder --win nsis", "make": "electron-forge make",
"make:squirrel": "electron-forge make",
"test": "echo \"Error: no test specified\" && exit 1" "test": "echo \"Error: no test specified\" && exit 1"
}, },
"keywords": [], "keywords": [],
@ -22,58 +21,10 @@
"@electron-forge/plugin-auto-unpack-natives": "^7.11.2", "@electron-forge/plugin-auto-unpack-natives": "^7.11.2",
"@electron-forge/plugin-fuses": "^7.11.2", "@electron-forge/plugin-fuses": "^7.11.2",
"@electron/fuses": "^1.8.0", "@electron/fuses": "^1.8.0",
"electron": "^43.2.0", "electron": "^43.2.0"
"electron-builder": "^26.15.3"
}, },
"dependencies": { "dependencies": {
"electron-squirrel-startup": "^1.0.1", "electron-squirrel-startup": "^1.0.1",
"serialport": "^13.0.0" "serialport": "^13.0.0"
},
"build": {
"appId": "com.bestway.photovoltaic.pc",
"productName": "photovoltaic-pc",
"asar": true,
"asarUnpack": [
"**/*.node"
],
"npmRebuild": false,
"directories": {
"output": "release"
},
"files": [
"main.js",
"preload.js",
"package.json",
"dist/**/*",
"src/**/*",
"node_modules/**/*",
"!out/**/*",
"!release/**/*",
"!.git/**/*",
"!.vs/**/*",
"!.vscode/**/*"
],
"win": {
"target": [
{
"target": "nsis",
"arch": [
"x64"
]
}
],
"artifactName": "${productName}-${version}-${arch}-Setup.${ext}",
"signAndEditExecutable": false
},
"nsis": {
"oneClick": false,
"perMachine": false,
"allowToChangeInstallationDirectory": true,
"createDesktopShortcut": true,
"createStartMenuShortcut": true,
"shortcutName": "photovoltaic-pc",
"runAfterFinish": true,
"deleteAppDataOnUninstall": false
}
} }
} }

35
preload.js

@ -10,7 +10,6 @@
const { contextBridge, ipcRenderer } = require('electron') const { contextBridge, ipcRenderer } = require('electron')
const nodeNet = require('net') const nodeNet = require('net')
const dns = require('dns') const dns = require('dns')
const { execFile } = require('child_process')
function tryConnect(host, port, timeout) { function tryConnect(host, port, timeout) {
return new Promise((resolve) => { return new Promise((resolve) => {
@ -23,41 +22,17 @@ function tryConnect(host, port, timeout) {
}) })
} }
function normalizePingHost(input) {
const raw = String(input || '').trim()
if (!raw) return ''
try {
return new URL(raw).hostname
} catch {}
return raw.replace(/^https?:\/\//i, '').split('/')[0].split(':')[0]
}
function trySystemPing(host, timeout) {
return new Promise((resolve) => {
const wait = Math.max(1000, Number(timeout) || 2000)
execFile('ping', ['-n', '1', '-w', String(wait), host], { windowsHide: true }, (err) => {
resolve(!err)
})
})
}
const net = { const net = {
async ping(host, timeout) { async ping(host, timeout) {
const target = normalizePingHost(host)
if (!target) return false
const wait = Math.max(1000, Number(timeout) || 2000)
const isIp = nodeNet.isIP(target) !== 0
try { try {
if (!isIp) await dns.promises.lookup(target) await dns.promises.resolve(host)
} catch { } catch {
if (!await trySystemPing(target, wait)) return false return false
} }
for (const port of [443, 80]) {
for (const port of [443, 80, 53]) { if (await tryConnect(host, port, timeout)) return true
if (await tryConnect(target, port, wait)) return true
} }
return trySystemPing(target, wait) return false
} }
} }

Loading…
Cancel
Save