Compare commits
6 Commits
Author | SHA1 | Date | |
---|---|---|---|
c3ef51e87f | |||
72420f2ede | |||
a12552a608 | |||
5f200ea989 | |||
3f14df72be | |||
29902afe65 |
91
README.md
Normal file
91
README.md
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
# Wireguard-UI
|
||||||
|
> wireguard的管理面板UI
|
||||||
|
|
||||||
|
## 安装(仅提供docker方式)
|
||||||
|
|
||||||
|
OS X & Linux & Windows:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# 先要创建一个配置文件 app.yaml
|
||||||
|
http:
|
||||||
|
port: 6687
|
||||||
|
endpoint: localhost:3100,localhost:6687
|
||||||
|
|
||||||
|
database:
|
||||||
|
driver: sqlite # sqlite时只填写db即可,目前仅支持sqlite | mysql | pgsql
|
||||||
|
host:
|
||||||
|
port:
|
||||||
|
user:
|
||||||
|
password:
|
||||||
|
db: wg
|
||||||
|
|
||||||
|
cache:
|
||||||
|
type: redis # 缓存类型 暂时仅支持redis
|
||||||
|
host: 192.168.1.1
|
||||||
|
port: 6379
|
||||||
|
password: pGhQKwj7DE7FbFL1
|
||||||
|
db: 15
|
||||||
|
|
||||||
|
file:
|
||||||
|
type: oss # 文件类型支持本地文件存储与阿里云oss存储
|
||||||
|
path: test/ # oss填写前缀目录
|
||||||
|
endpoint: # oss必填
|
||||||
|
accessId: # oss必填
|
||||||
|
accessSecret: # oss必填
|
||||||
|
bucketName: # oss必填
|
||||||
|
|
||||||
|
# 邮件设置
|
||||||
|
mail:
|
||||||
|
host:
|
||||||
|
port:
|
||||||
|
user:
|
||||||
|
password:
|
||||||
|
skipTls:
|
||||||
|
|
||||||
|
# 一些系统配置
|
||||||
|
wireguard:
|
||||||
|
restartMode: DELAY
|
||||||
|
delayTime: 20
|
||||||
|
|
||||||
|
# 其中依赖了redis等,自行安装一个即可
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# 创建docker-compose.yaml
|
||||||
|
version: "3"
|
||||||
|
|
||||||
|
services:
|
||||||
|
wg:
|
||||||
|
image: gitea.mrx.ltd/go-pkg/wireguard-srv:2.1.0
|
||||||
|
container_name: wg-srv
|
||||||
|
restart: always
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
network_mode: host
|
||||||
|
logging:
|
||||||
|
driver: json-file
|
||||||
|
options:
|
||||||
|
max-size: 50m
|
||||||
|
volumes:
|
||||||
|
- ./app.yaml:/app/app.yaml
|
||||||
|
- ./db:/app/db
|
||||||
|
- ./logs:/app/logs
|
||||||
|
- /etc/wireguard:/etc/wireguard
|
||||||
|
- /etc/localtime:/etc/localtime
|
||||||
|
```
|
||||||
|
```sh
|
||||||
|
默认账户密码
|
||||||
|
账户: admin
|
||||||
|
密码: admin123
|
||||||
|
```
|
||||||
|
|
||||||
|
## 示例
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
33
http/api/remote.go
Normal file
33
http/api/remote.go
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
package api
|
||||||
|
|
||||||
|
import "github.com/gin-gonic/gin"
|
||||||
|
|
||||||
|
type remote struct{}
|
||||||
|
|
||||||
|
func Remote() remote {
|
||||||
|
return remote{}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SaveAuthClient
|
||||||
|
// @description: 添加授权客户端
|
||||||
|
// @receiver remote
|
||||||
|
// @param c
|
||||||
|
func (remote) SaveAuthClient(c *gin.Context) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteAuthClient
|
||||||
|
// @description: 删除授权客户端
|
||||||
|
// @receiver remote
|
||||||
|
// @param c
|
||||||
|
func (remote) DeleteAuthClient(c *gin.Context) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetClientNodes
|
||||||
|
// @description: 获取客户端节点
|
||||||
|
// @receiver remote
|
||||||
|
// @param c
|
||||||
|
func (remote) GetClientNodes(c *gin.Context) {
|
||||||
|
return
|
||||||
|
}
|
@@ -1,6 +1,7 @@
|
|||||||
package service
|
package service
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
gdb "wireguard-ui/global/client"
|
gdb "wireguard-ui/global/client"
|
||||||
"wireguard-ui/global/constant"
|
"wireguard-ui/global/constant"
|
||||||
@@ -39,6 +40,11 @@ func (s user) CreateUser(user *model.User) (err error) {
|
|||||||
return s.Model(&model.User{}).Where("id = ?", user.Id).Updates(&updates).Error
|
return s.Model(&model.User{}).Where("id = ?", user.Id).Updates(&updates).Error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 判断账号是否已经存在
|
||||||
|
if _, err = s.GetUserByAccount(user.Account); err == nil {
|
||||||
|
return errors.New("账号已经存在,请勿重复创建!")
|
||||||
|
}
|
||||||
|
|
||||||
defaultPassword := utils.Password().GenerateHashPassword("admin123")
|
defaultPassword := utils.Password().GenerateHashPassword("admin123")
|
||||||
if user.Password == "" { // 没有密码给一个默认密码
|
if user.Password == "" { // 没有密码给一个默认密码
|
||||||
user.Password = defaultPassword
|
user.Password = defaultPassword
|
||||||
|
@@ -10,7 +10,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p class="mt-40 text-14 opacity-60" style="cursor: pointer" @click="dailyPoe">{{ dailyPoetry.content || '莫向外求,但从心觅,行有不得,反求诸己。' }}</p>
|
<p class="mt-40 text-14 opacity-60">{{ dailyPoetry.content || '莫向外求,但从心觅,行有不得,反求诸己。' }}</p>
|
||||||
<p class="mt-32 text-right text-12 opacity-40">—— {{ dailyPoetry.author || '佚名' }}</p>
|
<p class="mt-32 text-right text-12 opacity-40">—— {{ dailyPoetry.author || '佚名' }}</p>
|
||||||
</n-card>
|
</n-card>
|
||||||
<n-card class="ml-12 w-70%">
|
<n-card class="ml-12 w-70%">
|
||||||
@@ -233,7 +233,7 @@ async function getClientConnections() {
|
|||||||
|
|
||||||
const initFunc = debounce(() => {
|
const initFunc = debounce(() => {
|
||||||
getClientConnections()
|
getClientConnections()
|
||||||
dailyPoe()
|
// dailyPoe()
|
||||||
// connectionList()
|
// connectionList()
|
||||||
},500)
|
},500)
|
||||||
|
|
||||||
|
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user