mirror of https://github.com/bjdgyc/anylink.git
commit
3c3b3110a2
|
@ -4,6 +4,9 @@
|
||||||
[](https://pkg.go.dev/github.com/bjdgyc/anylink)
|
[](https://pkg.go.dev/github.com/bjdgyc/anylink)
|
||||||
[](https://goreportcard.com/report/github.com/bjdgyc/anylink)
|
[](https://goreportcard.com/report/github.com/bjdgyc/anylink)
|
||||||
[](https://codecov.io/gh/bjdgyc/anylink)
|
[](https://codecov.io/gh/bjdgyc/anylink)
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
AnyLink 是一个企业级远程办公sslvpn的软件,可以支持多人同时在线使用。
|
AnyLink 是一个企业级远程办公sslvpn的软件,可以支持多人同时在线使用。
|
||||||
|
|
||||||
|
@ -204,9 +207,9 @@ eth_gateway="192.168.1.1"
|
||||||
sh bridge-init.sh
|
sh bridge-init.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
## Soft
|
## 常见问题
|
||||||
|
|
||||||
相关软件下载: QQ群共享文件: 567510628
|
请前往 [问题地址](question.md) 查看具体信息
|
||||||
|
|
||||||
## Discussion
|
## Discussion
|
||||||
|
|
||||||
|
@ -214,6 +217,8 @@ sh bridge-init.sh
|
||||||
|
|
||||||
添加QQ群: 567510628
|
添加QQ群: 567510628
|
||||||
|
|
||||||
|
QQ群共享文件有相关软件下载
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
|
|
||||||
欢迎提交 PR、Issues,感谢为AnyLink做出贡献。
|
欢迎提交 PR、Issues,感谢为AnyLink做出贡献。
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
# 常见问题
|
||||||
|
|
||||||
|
* 远程桌面连接
|
||||||
|
> 本软件不支持远程桌面连接,请注意。
|
||||||
|
|
||||||
|
* 私有证书问题
|
||||||
|
> 可以通过 https://github.com/square/certstrap 生成私有的证书, 然后把CA证书放在客户端机器上即可以连接。
|
|
@ -227,12 +227,19 @@ func userAccountMail(user *dbdata.User) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setting := &dbdata.SettingOther{}
|
||||||
|
err = dbdata.SettingGet(setting)
|
||||||
|
if err != nil {
|
||||||
|
base.Error(err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
data := userAccountMailData{
|
data := userAccountMailData{
|
||||||
LinkAddr: base.Cfg.LinkAddr,
|
LinkAddr: setting.LinkAddr,
|
||||||
Group: strings.Join(user.Groups, ","),
|
Group: strings.Join(user.Groups, ","),
|
||||||
Username: user.Username,
|
Username: user.Username,
|
||||||
PinCode: user.PinCode,
|
PinCode: user.PinCode,
|
||||||
OtpImg: fmt.Sprintf("https://%s/otp_qr?id=%d&jwt=%s", base.Cfg.LinkAddr, user.Id, tokenString),
|
OtpImg: fmt.Sprintf("https://%s/otp_qr?id=%d&jwt=%s", setting.LinkAddr, user.Id, tokenString),
|
||||||
}
|
}
|
||||||
w := bytes.NewBufferString("")
|
w := bytes.NewBufferString("")
|
||||||
t, _ := template.New("auth_complete").Parse(htmlBody)
|
t, _ := template.New("auth_complete").Parse(htmlBody)
|
||||||
|
|
|
@ -30,7 +30,7 @@ var (
|
||||||
// rekey-method = ssl
|
// rekey-method = ssl
|
||||||
|
|
||||||
type ServerConfig struct {
|
type ServerConfig struct {
|
||||||
LinkAddr string `json:"link_addr"`
|
// LinkAddr string `json:"link_addr"`
|
||||||
ServerAddr string `json:"server_addr"`
|
ServerAddr string `json:"server_addr"`
|
||||||
AdminAddr string `json:"admin_addr"`
|
AdminAddr string `json:"admin_addr"`
|
||||||
ProxyProtocol bool `json:"proxy_protocol"`
|
ProxyProtocol bool `json:"proxy_protocol"`
|
||||||
|
|
|
@ -16,7 +16,6 @@ type config struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
var configs = []config{
|
var configs = []config{
|
||||||
{Typ: cfgStr, Name: "link_addr", Usage: "vpn服务对外地址", ValStr: "vpn.xx.com"},
|
|
||||||
{Typ: cfgStr, Name: "server_addr", Usage: "前台服务监听地址", ValStr: ":443"},
|
{Typ: cfgStr, Name: "server_addr", Usage: "前台服务监听地址", ValStr: ":443"},
|
||||||
{Typ: cfgStr, Name: "admin_addr", Usage: "后台服务监听地址", ValStr: ":8800"},
|
{Typ: cfgStr, Name: "admin_addr", Usage: "后台服务监听地址", ValStr: ":8800"},
|
||||||
{Typ: cfgBool, Name: "proxy_protocol", Usage: "TCP代理协议", ValBool: false},
|
{Typ: cfgBool, Name: "proxy_protocol", Usage: "TCP代理协议", ValBool: false},
|
||||||
|
|
|
@ -21,12 +21,9 @@ issuer = "XX公司VPN"
|
||||||
admin_user = "admin"
|
admin_user = "admin"
|
||||||
#pass 123456
|
#pass 123456
|
||||||
admin_pass = "$2a$10$UQ7C.EoPifDeJh6d8.31TeSPQU7hM/NOM2nixmBucJpAuXDQNqNke"
|
admin_pass = "$2a$10$UQ7C.EoPifDeJh6d8.31TeSPQU7hM/NOM2nixmBucJpAuXDQNqNke"
|
||||||
jwt_secret = "iLmspvOiz*%ovfcs*wersdf#^heR8pNU^4XxBm&mW$aPCjSRMbYH#&"
|
jwt_secret = "iLmspvOiz*%ovfcs*wersdf#heR8pNU4XxBm&mW$aPCjSRMbYH#&"
|
||||||
|
|
||||||
|
|
||||||
#vpn服务对外地址,影响开通邮件二维码
|
|
||||||
link_addr = "vpn.xx.com"
|
|
||||||
|
|
||||||
#前台服务监听地址
|
#前台服务监听地址
|
||||||
server_addr = ":443"
|
server_addr = ":443"
|
||||||
#后台服务监听地址
|
#后台服务监听地址
|
||||||
|
|
|
@ -55,6 +55,7 @@ func initData() {
|
||||||
_ = SettingSet(smtp)
|
_ = SettingSet(smtp)
|
||||||
|
|
||||||
other := &SettingOther{
|
other := &SettingOther{
|
||||||
|
LinkAddr: "vpn.xx.com",
|
||||||
Banner: "您已接入公司网络,请按照公司规定使用。\n请勿进行非工作下载及视频行为!",
|
Banner: "您已接入公司网络,请按照公司规定使用。\n请勿进行非工作下载及视频行为!",
|
||||||
AccountMail: accountMail,
|
AccountMail: accountMail,
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,6 +42,7 @@ type SettingSmtp struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type SettingOther struct {
|
type SettingOther struct {
|
||||||
|
LinkAddr string `json:"link_addr"`
|
||||||
Banner string `json:"banner"`
|
Banner string `json:"banner"`
|
||||||
AccountMail string `json:"account_mail"`
|
AccountMail string `json:"account_mail"`
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,11 +13,6 @@ import (
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
)
|
)
|
||||||
|
|
||||||
func GetCertificate(*tls.ClientHelloInfo) (*tls.Certificate, error) {
|
|
||||||
cert, err := tls.LoadX509KeyPair(base.Cfg.CertFile, base.Cfg.CertKey)
|
|
||||||
return &cert, err
|
|
||||||
}
|
|
||||||
|
|
||||||
func startTls() {
|
func startTls() {
|
||||||
addr := base.Cfg.ServerAddr
|
addr := base.Cfg.ServerAddr
|
||||||
certFile := base.Cfg.CertFile
|
certFile := base.Cfg.CertFile
|
||||||
|
@ -28,7 +23,6 @@ func startTls() {
|
||||||
NextProtos: []string{"http/1.1"},
|
NextProtos: []string{"http/1.1"},
|
||||||
MinVersion: tls.VersionTLS12,
|
MinVersion: tls.VersionTLS12,
|
||||||
InsecureSkipVerify: true,
|
InsecureSkipVerify: true,
|
||||||
GetCertificate: GetCertificate,
|
|
||||||
}
|
}
|
||||||
srv := &http.Server{
|
srv := &http.Server{
|
||||||
Addr: addr,
|
Addr: addr,
|
||||||
|
|
|
@ -8,6 +8,6 @@ User=root
|
||||||
WorkingDirectory= /usr/local/anylink-deploy
|
WorkingDirectory= /usr/local/anylink-deploy
|
||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
RestartSec=5s
|
RestartSec=5s
|
||||||
ExecStart=/usr/local/anylink-deploy/anylink -conf=conf/server.toml
|
ExecStart=/usr/local/anylink-deploy/anylink --conf=conf/server.toml
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
|
|
|
@ -30,6 +30,14 @@
|
||||||
|
|
||||||
<el-tab-pane label="其他设置" name="dataOther">
|
<el-tab-pane label="其他设置" name="dataOther">
|
||||||
<el-form :model="dataOther" ref="dataOther" :rules="rules" label-width="100px" class="tab-one">
|
<el-form :model="dataOther" ref="dataOther" :rules="rules" label-width="100px" class="tab-one">
|
||||||
|
|
||||||
|
<el-form-item label="vpn对外地址" prop="link_addr">
|
||||||
|
<el-input
|
||||||
|
placeholder="请输入内容"
|
||||||
|
v-model="dataOther.link_addr">
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="Banner信息" prop="banner">
|
<el-form-item label="Banner信息" prop="banner">
|
||||||
<el-input
|
<el-input
|
||||||
type="textarea"
|
type="textarea"
|
||||||
|
|
Loading…
Reference in New Issue