Skip to content

Commit 2fe4a6c

Browse files
committed
vserion 0.1.2
1 parent e62ada0 commit 2fe4a6c

8 files changed

Lines changed: 154 additions & 2 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## ❔关于
44

5-
本项目是Scut校园网路由器管理客户端,基于 Vue3 + go + wails
5+
本项目是Scut校园网路由器管理客户端,基于 Vue3 + go1.21 + wails2.6
66

77
## ▶编译前端
88

SSHCommand/RunSSH.go

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"golang.org/x/crypto/ssh"
88
"io"
99
"os"
10+
"strings"
1011
)
1112

1213
type ScutInfo struct {
@@ -171,6 +172,68 @@ func (s *SSHClass) RunAutoLogin() {
171172
s.RunCommand(cmd)
172173
}
173174

175+
func (s *SSHClass) RunSetNetwork(ip string, dnsArr string, netmask, gateway string) {
176+
log.Info("RunSetNetwork is called")
177+
178+
log.Info("Set interface wan")
179+
if1 := "/etc/config/network.wan." // 接口wan
180+
cmd := fmt.Sprintf("uci set %sproto=static", if1)
181+
cmd += fmt.Sprintf(" && uci set %sipaddr=%s", if1, ip)
182+
cmd += fmt.Sprintf(" && uci set %snetmask=%s", if1, netmask)
183+
cmd += fmt.Sprintf(" && uci set %sgateway=%s", if1, gateway)
184+
185+
log.Info(fmt.Sprintf("DNS列表:%s", dnsArr))
186+
dns := strings.Split(dnsArr, " ")
187+
dnsConcat := ""
188+
for _, dnsItem := range dns {
189+
dnsConcat += dnsItem
190+
dnsConcat += " "
191+
}
192+
dnsConcat = "'" + dnsConcat[:len(dnsConcat)-1] + "'" // 裁剪最后一个空格
193+
cmd += fmt.Sprintf(" && uci set %sdns=%s", if1, dnsConcat)
194+
195+
log.Info("Set interface wan6")
196+
// 增加 interface wan6 选项
197+
cmd += fmt.Sprintf(" && uci set /etc/config/network.wan6=interface")
198+
199+
if2 := "/etc/config/network.wan6." // 接口wan6
200+
cmd += fmt.Sprintf(" && uci set %sproto=dhcpv6", if2)
201+
cmd += fmt.Sprintf(" && uci set %sreqaddress=try", if2)
202+
cmd += fmt.Sprintf(" && uci set %sreqprefix=auto", if2)
203+
cmd += fmt.Sprintf(" && uci set %speerdns=0", if2)
204+
cmd += fmt.Sprintf(" && uci set %sdns=%s", if2, "'2400:3200::1 2400:3200:baba::1'")
205+
206+
log.Info("Set dhcp lan")
207+
if3 := "/etc/config/dhcp.lan." // dhcp lan
208+
cmd += fmt.Sprintf(" && uci set %sdhcpv4=server", if3)
209+
cmd += fmt.Sprintf(" && uci set %sra=relay", if3)
210+
cmd += fmt.Sprintf(" && uci set %sdhcpv6=relay", if3)
211+
cmd += fmt.Sprintf(" && uci set %sndp=relay", if3)
212+
213+
log.Info("Set dhcp wan6")
214+
// 增加 dhcp wan6 选项
215+
cmd += fmt.Sprintf(" && uci set /etc/config/dhcp.wan6=dhcp")
216+
217+
if4 := "/etc/config/dhcp.wan6." // dhcp wan6
218+
cmd += fmt.Sprintf(" && uci set %sdhcpv4=server", if4)
219+
cmd += fmt.Sprintf(" && uci set %sra=relay", if4)
220+
cmd += fmt.Sprintf(" && uci set %sdhcpv6=relay", if4)
221+
cmd += fmt.Sprintf(" && uci set %sndp=relay", if4)
222+
cmd += fmt.Sprintf(" && uci set %smaster=1", if4)
223+
224+
cmd += fmt.Sprintf(" && uci delete %sdns", if4)
225+
cmd += fmt.Sprintf(" && uci add_list %sdns=2606:4700:4700::1111", if4)
226+
cmd += fmt.Sprintf(" && uci add_list %sdns=2001:4860:4860::8888", if4)
227+
228+
log.Info("Set dhcp wan")
229+
if5 := "/etc/config/dhcp.wan." // dhcp wan
230+
cmd += fmt.Sprintf(" && uci set %signore=1", if5)
231+
232+
cmd += fmt.Sprintf(" && service network restart")
233+
s.RunCommand(cmd)
234+
log.Info("SetNetwork finished")
235+
}
236+
174237
func (s *SSHClass) CancelAutoLogin() {
175238
log.Info("CancelAutoLogin is called")
176239

ScutLog.log

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{"time":"2023-11-04T17:29:19.0832432+08:00","level":"ERROR","prefix":"-","file":"RunSSH.go","line":"55","message":"ssh: handshake failed: EOF"}
2+
{"time":"2023-11-04T17:29:19.1396842+08:00","level":"ERROR","prefix":"-","file":"RunSSH.go","line":"35","message":"Dial Fails: ssh: handshake failed: EOF"}
3+
{"time":"2023-11-04T17:29:19.1396842+08:00","level":"ERROR","prefix":"-","file":"RunSSH.go","line":"67","message":"New Session Fails: ssh: handshake failed: EOF"}

frontend/src/components/Menu.vue

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,11 @@
1212
<MenuGroup title="账号密码">
1313
<MenuItem name="2-1" @click="$router.push('/MainInfo')">账号密码</MenuItem>
1414
</MenuGroup>
15+
<MenuGroup title="网络接口">
16+
<MenuItem name="2-2" @click="$router.push('/NetworkInfo')">上网接口</MenuItem>
17+
</MenuGroup>
1518
<MenuGroup title="认证服务器">
16-
<MenuItem name="2-2" @click="$router.push('/ACInfo')">认证服务器</MenuItem>
19+
<MenuItem name="2-3" @click="$router.push('/ACInfo')">认证服务器</MenuItem>
1720
</MenuGroup>
1821
</Submenu>
1922
<Submenu name="3">

frontend/src/router/index.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import ACInfo from '../views/ACInfo.vue'
55
import WiredLogin from '../views/WiredLogin.vue'
66
import WirelessLogin from '../views/WirelessLogin.vue'
77
import SyncTime from "../views/SyncTime.vue"
8+
import NetworkInfo from "../views/NetworkInfo.vue"
89

910
const routes = [
1011
{
@@ -36,6 +37,11 @@ const routes = [
3637
path: '/SyncTime',
3738
name: 'sync-time',
3839
component: SyncTime
40+
},
41+
{
42+
path: '/NetworkInfo',
43+
name: 'network-info',
44+
component: NetworkInfo
3945
}
4046
]
4147

frontend/src/views/NetworkInfo.vue

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
<script>
2+
import { ref } from 'vue'
3+
import MyMenu from '../components/Menu.vue'
4+
import { RunSetNetwork } from '../../wailsjs/go/SSHCommand/SSHClass'
5+
6+
function PackDns(dns1, dns2) {
7+
// eslint-disable-next-line no-array-constructor
8+
const dnsArr = `${dns1} ${dns2}`
9+
return dnsArr
10+
}
11+
export default {
12+
data() {
13+
return {
14+
IP: '',
15+
DNS1: '',
16+
DNS2: '',
17+
netmask: '',
18+
gateway: '',
19+
}
20+
},
21+
components: {
22+
MyMenu
23+
},
24+
methods: {
25+
OnSubmit() {
26+
RunSetNetwork(this.IP, PackDns(this.DNS1, this.DNS2), this.netmask, this.gateway)
27+
// alert(`${this.IP} | ${this.DNS1} | ${this.DNS2} | ${this.netmask} | ${this.gateway}`)
28+
alert('完成')
29+
}
30+
},
31+
name: 'NetworkInfo'
32+
}
33+
</script>
34+
35+
<template>
36+
<div class="NetWorkInfo">
37+
<MyMenu/>
38+
<div>
39+
<Card style="width:80%" id="net_card">
40+
<div style="text-align:center">
41+
<h1>配置网络接口</h1>
42+
<br v-for="index of 1" :id="index"/>
43+
<h3>Scut Interface</h3>
44+
<br/>
45+
<Input v-model="IP" placeholder="请输入Scut IP" style="width: 200px" clearable="true"/>
46+
<br v-for="index of 2" :id="index"/>
47+
<Input v-model="netmask" placeholder="请输入Scut NetMask" style="width: 200px" clearable="true"/>
48+
<br v-for="index of 2" :id="index"/>
49+
<Input v-model="gateway" placeholder="请输入Scut GateWay" style="width: 200px" clearable="true"/>
50+
<br v-for="index of 2" :id="index"/>
51+
<Input v-model="DNS1" placeholder="请输入Scut DNS1" style="width: 200px" clearable="true"/>
52+
<br v-for="index of 2" :id="index"/>
53+
<Input v-model="DNS2" placeholder="请输入Scut DNS2" style="width: 200px" clearable="true"/>
54+
<br v-for="index of 2" :id="index"/>
55+
<Button type="success" @click="OnSubmit">保存并应用</Button>
56+
</div>
57+
</Card>
58+
</div>
59+
</div>
60+
</template>
61+
62+
<style scoped>
63+
.NetWorkInfo {
64+
text-align: center;
65+
position: relative;
66+
}
67+
68+
#net_card {
69+
margin: 5% auto;
70+
}
71+
</style>

frontend/wailsjs/go/SSHCommand/SSHClass.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ export function RunCommand(arg1:string):Promise<void>;
1818

1919
export function RunSetAcInfo(arg1:string,arg2:string):Promise<void>;
2020

21+
export function RunSetNetwork(arg1:string,arg2:string,arg3:string,arg4:string):Promise<void>;
22+
2123
export function RunSetScutInfo(arg1:string,arg2:string):Promise<void>;
2224

2325
export function RunSyncTime():Promise<void>;

frontend/wailsjs/go/SSHCommand/SSHClass.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ export function RunSetAcInfo(arg1, arg2) {
3434
return window['go']['SSHCommand']['SSHClass']['RunSetAcInfo'](arg1, arg2);
3535
}
3636

37+
export function RunSetNetwork(arg1, arg2, arg3, arg4) {
38+
return window['go']['SSHCommand']['SSHClass']['RunSetNetwork'](arg1, arg2, arg3, arg4);
39+
}
40+
3741
export function RunSetScutInfo(arg1, arg2) {
3842
return window['go']['SSHCommand']['SSHClass']['RunSetScutInfo'](arg1, arg2);
3943
}

0 commit comments

Comments
 (0)