Skip to content

IP switching tool. This tool is useful when you need to switch IPs for different network environments.

License

Notifications You must be signed in to change notification settings

abandno/RouterSwitcher

Repository files navigation

RouterSwitcher - 路由器切换工具

一个智能的网络IP配置切换工具,支持根据网络环境自动切换静态IP和动态IP配置。

📋 项目简介

RouterSwitcher 是一个基于 Wails v3 开发的桌面应用程序,主要用于在 Windows 系统上自动管理网络IP配置。当您连接到家庭网络时,程序可以自动切换到静态IP配置以使用旁路由;当连接到其他网络时,自动切换回动态IP(DHCP)模式,确保网络连接的灵活性和便捷性。

典型使用场景:在家庭局域网时,网关连接您的旁路由;在外网时,需要使用动态IP(DHCP)模式。

✨ 主要功能

  • 三种IP模式

    • 自适应模式:根据网络环境自动切换IP配置
    • 动态IP模式:强制使用DHCP自动获取IP
    • 静态IP模式:强制使用静态IP配置
  • 智能网络检测

    • 自动检测当前连接的WiFi SSID
    • 检测旁路由是否可达(通过ping检测)
    • 每30秒自动检查网络状态(仅在自适应模式下)
  • 系统托盘支持

    • 最小化到系统托盘运行
    • 托盘菜单快速切换IP模式
    • 点击托盘图标显示/隐藏主窗口
  • 开机启动

    • 支持设置开机自动启动
    • 使用Windows任务计划程序实现
  • 配置管理

    • 图形化配置界面
    • 实时显示网络状态
    • 配置自动保存到本地文件

界面演示

界面演示

系统托盘

托盘图标

托盘右键菜单

使用情景

使用情景

🚀 安装和使用

安装

方式一:下载安装

发布产物列表

  • RouterSwitcher.exe :双击直接运行
  • RouterSwitcher-amd64-installer.exe :windows安装包,安装后使用

方式二:源码构建

  1. 克隆项目

    git clone <repository-url>
    cd RouterSwitcher
    
    # 或 打包生产环境报
    wails3 task release
    # 打包windows安装程序
    wails3 task windows:package

    构建完成后,可执行文件位于 bin/ 目录下。

使用说明

  1. 首次运行

    • 运行程序后,会在程序目录下生成 config.json 配置文件
    • 默认配置:
      • IP模式:自适应
      • 家庭SSID:HomeWiFi
      • 静态IP:192.168.31.100
      • 网关:192.168.31.2
      • DNS:192.168.31.2
  2. 配置设置

    • 点击系统托盘图标打开配置界面(不会自动显示配置界面
    • 根据您的网络环境修改配置:
      • 使用静态IP模式的网络 (SSID):输入您的家庭WiFi名称
      • 静态IP配置:设置静态IP地址、网关和DNS服务器地址
      • IP模式:选择自适应/动态IP/静态IP模式
      • 开机启动:勾选后程序将在系统启动时自动运行
    • 点击"保存"按钮保存配置,配置会立即生效
  3. 系统托盘操作

    • 右键点击托盘图标可以快速切换IP模式(自适应/动态IP/静态IP)
    • 左键点击托盘图标可以显示/隐藏主窗口
    • 选择"退出"可以关闭程序

⚙️ 配置说明

配置文件 config.json 位于程序可执行文件同目录下,格式如下:

{
  "HomeSSID": "YourWiFiName",
  "StaticIP": "192.168.31.100",
  "Gateway": "192.168.31.2",
  "DNS": "192.168.31.2",
  "AutoStart": false,
  "IPMode": "adaptive"
}

配置项说明

  • HomeSSID: 家庭WiFi的SSID名称,当连接到该WiFi时,自适应模式会尝试切换到静态IP配置
  • StaticIP: 静态IP地址,需要确保该IP地址在您的局域网中未被占用
  • Gateway: 网关地址(通常是旁路由的IP地址)
  • DNS: DNS服务器地址,可以是单个地址或多个地址(用逗号分隔)
  • AutoStart: 是否开机自动启动(true/false
  • IPMode: IP模式选择
    • adaptive: 自适应模式(推荐),根据网络环境自动切换
    • dynamic: 动态IP模式,强制使用DHCP获取IP
    • static: 静态IP模式,强制使用配置的静态IP

⚠️ 注意事项

  1. 管理员权限

    • 修改网络配置需要管理员权限,建议以管理员身份运行程序
    • 如果权限不足,IP切换操作可能会失败
  2. 位置服务权限

    • Windows系统需要开启位置服务才能获取WiFi SSID信息
    • 如果位置服务被禁用,程序会提示您开启
    • 开启方法:Windows设置 → 隐私和安全 → 位置 → 开启位置服务
  3. 网络接口

    • 程序会自动检测活动的网络接口
    • 如果检测失败,请检查网络连接是否正常
  4. 配置文件

    • 配置文件保存在程序可执行文件同目录下
    • 如果配置文件损坏,程序会使用默认配置并重新创建配置文件

📝 开发指导

!!欢迎提交PR!!

🛠️ 技术栈

  • 后端: Go 1.24+
  • 前端: Vue 3 + Vite
  • 框架: Wails v3
  • 平台: Windows(目前仅支持 Windows 系统)

📦 系统要求

  • Windows 10/11
  • 管理员权限(用于修改网络配置)
  • 位置服务权限(用于获取WiFi SSID信息)

项目结构

RouterSwitcher/
├── main.go              # 主程序入口和Wails应用逻辑
├── config.go            # 配置文件读写
├── autostart.go         # 开机启动管理
├── network.go           # 网络接口和IP配置管理
├── types.go             # 数据结构定义
├── wails.json           # Wails配置文件
├── go.mod               # Go模块依赖
├── frontend/            # 前端代码
│   ├── src/
│   │   ├── main.js      # 前端入口
│   │   └── components/
│   │       └── ConfigManager.vue  # 配置管理组件
│   ├── package.json     # 前端依赖
│   └── vite.config.js   # Vite配置
└── build/               # 构建相关文件

开发命令

# 开发模式(热重载)
wails dev

# 构建测试版本
wails3 build

# 构建生产版本
wails3 task release

# 打包windows安装程序
wails3 task windows:package

日志文件

程序运行时会生成 app.log 日志文件,位于程序可执行文件同目录下,可用于排查问题。

工作原理

自适应模式工作流程

  1. 程序启动后,每30秒自动检查一次网络状态(仅在自适应模式下)
  2. 检测当前连接的WiFi SSID是否与配置的 HomeSSID 匹配
  3. 如果SSID匹配,则通过ping命令检测旁路由(网关地址)是否可达
  4. 如果两个条件都满足,程序自动切换到静态IP配置
  5. 如果任一条件不满足,程序自动切换回动态IP(DHCP)模式

网络检测机制

  • WiFi SSID检测:使用 Windows 系统的 netsh wlan show interfaces 命令获取当前连接的WiFi信息
  • 旁路由可达性检测:使用系统ping命令检测网关地址是否可达(超时时间3秒)
  • 网络接口检测:自动检测当前活动的网络接口,支持中英文Windows环境

📄 许可证

本项目采用 MIT 许可证。

👤 作者

🙏 致谢

  • Wails - 优秀的Go桌面应用框架
  • Vue.js - 渐进式JavaScript框架
  • Vite - 下一代前端构建工具

📮 反馈与支持

如有问题或建议,请通过以下方式联系:

About

IP switching tool. This tool is useful when you need to switch IPs for different network environments.

Resources

License

Stars

Watchers

Forks

Packages

No packages published