fix ssid on new system

This commit is contained in:
pompurin404 2024-09-23 15:42:13 +08:00
parent 00ee111c0b
commit 67a4fe516d
No known key found for this signature in database
3 changed files with 42 additions and 27 deletions

View File

@ -1,3 +1,8 @@
### Breaking Changes
- 为了修复macOS应用内更新问题此版本需要手动下载dmg进行安装
### Bug Fixes
- 修复macOS应用内更新后权限丢失的问题
- 修复高版本macOS SSID获取失败的问题

View File

@ -1,6 +1,6 @@
import axios from 'axios'
import yaml from 'yaml'
import { app } from 'electron'
import { app, shell } from 'electron'
import { getControledMihomoConfig } from '../config'
import { dataDir, exeDir, exePath, isPortable, resourcesFilesDir } from '../utils/dirs'
import { rm, writeFile } from 'fs/promises'
@ -85,6 +85,7 @@ export async function downloadAndInstallUpdate(version: string): Promise<void> {
app.quit()
}
if (file.endsWith('.dmg')) {
try {
const execPromise = promisify(exec)
const name = exePath().split('.app')[0].replace('/Applications/', '')
await execPromise(
@ -102,6 +103,9 @@ export async function downloadAndInstallUpdate(version: string): Promise<void> {
}
app.relaunch()
app.quit()
} catch {
shell.openPath(path.join(dataDir(), file))
}
}
} catch (e) {
rm(path.join(dataDir(), file))

View File

@ -3,7 +3,7 @@ import { promisify } from 'util'
import { getAppConfig, patchControledMihomoConfig } from '../config'
import { patchMihomoConfig } from '../core/mihomoApi'
import { mainWindow } from '..'
import { ipcMain } from 'electron'
import { ipcMain, net } from 'electron'
import { getDefaultService } from '../core/manager'
export async function getCurrentSSID(): Promise<string | undefined> {
@ -26,21 +26,27 @@ export async function getCurrentSSID(): Promise<string | undefined> {
}
}
if (process.platform === 'darwin') {
try {
const { stdout } = await execPromise(
'/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I'
)
if (stdout.trim().startsWith('WARNING')) {
if (net.isOnline()) {
const service = await getDefaultService()
const { stdout } = await execPromise(
`networksetup -listpreferredwirelessnetworks ${service}`
)
if (stdout.trim().startsWith('Preferred networks on')) {
if (stdout.split('\n').length > 1) {
return stdout.split('\n')[1].trim()
}
}
}
} else {
for (const line of stdout.split('\n')) {
if (line.trim().startsWith('SSID')) {
return line.split(': ')[1].trim()
}
}
} catch {
const service = await getDefaultService()
const { stdout } = await execPromise(`networksetup -getairportnetwork ${service}`)
if (stdout.split(': ').length > 1) {
return stdout.split(': ')[1].trim()
}
}
}
} catch {