mirror of https://github.com/bjdgyc/anylink.git
commit
ccce143f85
|
@ -2,12 +2,12 @@
|
||||||
FROM node:lts-alpine as builder_node
|
FROM node:lts-alpine as builder_node
|
||||||
WORKDIR /web
|
WORKDIR /web
|
||||||
COPY ./web /web
|
COPY ./web /web
|
||||||
RUN npm install --registry=https://registry.npm.taobao.org \
|
RUN yarn install \
|
||||||
&& npm run build \
|
&& yarn run build \
|
||||||
&& ls /web/ui
|
&& ls /web/ui
|
||||||
|
|
||||||
# server
|
# server
|
||||||
FROM golang:1.16-alpine as builder_golang
|
FROM golang:1.17-alpine as builder_golang
|
||||||
#TODO 本地打包时使用镜像
|
#TODO 本地打包时使用镜像
|
||||||
ENV GOPROXY=https://goproxy.io
|
ENV GOPROXY=https://goproxy.io
|
||||||
ENV GOOS=linux
|
ENV GOOS=linux
|
||||||
|
|
25
README.md
25
README.md
|
@ -30,16 +30,6 @@ AnyLink 服务端仅在 CentOS 7、Ubuntu 18.04 测试通过,如需要安装
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Donate
|
|
||||||
|
|
||||||
> 如果您觉得 anylink 对你有帮助,欢迎给我们打赏,也是帮助 anylink 更好的发展。
|
|
||||||
>
|
|
||||||
> [查看打赏列表](doc/README.md)
|
|
||||||
|
|
||||||
<p>
|
|
||||||
<img src="doc/screenshot/wxpay2.png" width="400" />
|
|
||||||
</p>
|
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
> 没有编程基础的同学建议直接下载 release 包,从下面的地址下载 anylink-deploy.tar.gz
|
> 没有编程基础的同学建议直接下载 release 包,从下面的地址下载 anylink-deploy.tar.gz
|
||||||
|
@ -56,7 +46,7 @@ AnyLink 服务端仅在 CentOS 7、Ubuntu 18.04 测试通过,如需要安装
|
||||||
|
|
||||||
### 自行编译安装
|
### 自行编译安装
|
||||||
|
|
||||||
> 需要提前安装好 golang >= 1.16 和 nodejs >= 14.x
|
> 需要提前安装好 golang >= 1.17 和 nodejs >= 14.x 和 yarn >= v1.22.x
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
git clone https://github.com/bjdgyc/anylink.git
|
git clone https://github.com/bjdgyc/anylink.git
|
||||||
|
@ -250,14 +240,15 @@ sh bridge-init.sh
|
||||||
5. 启动容器
|
5. 启动容器
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
# -e IPV4_CIDR=192.168.10.0/24 这个参数要与配置文件内的网段一致
|
||||||
docker run -itd --name anylink --privileged \
|
docker run -itd --name anylink --privileged \
|
||||||
|
-e IPV4_CIDR=192.168.10.0/24
|
||||||
-p 443:443 -p 8800:8800 \
|
-p 443:443 -p 8800:8800 \
|
||||||
--restart=always \
|
--restart=always \
|
||||||
bjdgyc/anylink
|
bjdgyc/anylink
|
||||||
```
|
```
|
||||||
|
|
||||||
6. 使用自定义参数启动容器
|
6. 使用自定义参数启动容器
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 参数可以参考 -h 命令
|
# 参数可以参考 -h 命令
|
||||||
docker run -itd --name anylink --privileged \
|
docker run -itd --name anylink --privileged \
|
||||||
|
@ -277,6 +268,16 @@ sh bridge-init.sh
|
||||||
docker build -t anylink .
|
docker build -t anylink .
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Donate
|
||||||
|
|
||||||
|
> 如果您觉得 anylink 对你有帮助,欢迎给我们打赏,也是帮助 anylink 更好的发展。
|
||||||
|
>
|
||||||
|
> [查看打赏列表](doc/README.md)
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<img src="doc/screenshot/wxpay2.png" width="400" />
|
||||||
|
</p>
|
||||||
|
|
||||||
## 常见问题
|
## 常见问题
|
||||||
|
|
||||||
请前往 [问题地址](doc/question.md) 查看具体信息
|
请前往 [问题地址](doc/question.md) 查看具体信息
|
||||||
|
|
8
build.sh
8
build.sh
|
@ -16,9 +16,13 @@ echo "编译前端项目"
|
||||||
cd $cpath/web
|
cd $cpath/web
|
||||||
#国内可替换源加快速度
|
#国内可替换源加快速度
|
||||||
#npx browserslist@latest --update-db
|
#npx browserslist@latest --update-db
|
||||||
npm install --registry=https://registry.npm.taobao.org
|
#npm install --registry=https://registry.npm.taobao.org
|
||||||
#npm install
|
#npm install
|
||||||
npm run build
|
#npm run build
|
||||||
|
|
||||||
|
yarn install
|
||||||
|
yarn run build
|
||||||
|
|
||||||
RETVAL $?
|
RETVAL $?
|
||||||
|
|
||||||
echo "编译二进制文件"
|
echo "编译二进制文件"
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
package admin
|
package admin
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"crypto/tls"
|
||||||
"embed"
|
"embed"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/http/pprof"
|
"net/http/pprof"
|
||||||
|
@ -69,7 +70,25 @@ func StartAdmin() {
|
||||||
}
|
}
|
||||||
|
|
||||||
base.Info("Listen admin", base.Cfg.AdminAddr)
|
base.Info("Listen admin", base.Cfg.AdminAddr)
|
||||||
err := http.ListenAndServeTLS(base.Cfg.AdminAddr, base.Cfg.CertFile, base.Cfg.CertKey, r)
|
|
||||||
|
// 修复 CVE-2016-2183
|
||||||
|
cipherSuites := tls.CipherSuites()
|
||||||
|
selectedCipherSuites := make([]uint16, 0, len(cipherSuites))
|
||||||
|
for _, s := range cipherSuites {
|
||||||
|
selectedCipherSuites = append(selectedCipherSuites, s.ID)
|
||||||
|
}
|
||||||
|
// 设置tls信息
|
||||||
|
tlsConfig := &tls.Config{
|
||||||
|
NextProtos: []string{"http/1.1"},
|
||||||
|
MinVersion: tls.VersionTLS12,
|
||||||
|
CipherSuites: selectedCipherSuites,
|
||||||
|
}
|
||||||
|
srv := &http.Server{
|
||||||
|
Addr: base.Cfg.AdminAddr,
|
||||||
|
Handler: r,
|
||||||
|
TLSConfig: tlsConfig,
|
||||||
|
}
|
||||||
|
err := srv.ListenAndServeTLS(base.Cfg.CertFile, base.Cfg.CertKey)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
base.Fatal(err)
|
base.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,6 @@ package base
|
||||||
|
|
||||||
const (
|
const (
|
||||||
APP_NAME = "AnyLink"
|
APP_NAME = "AnyLink"
|
||||||
// 修复前端bug
|
// 修复 CVE-2016-2183
|
||||||
APP_VER = "0.7.3"
|
APP_VER = "0.7.4"
|
||||||
)
|
)
|
||||||
|
|
|
@ -111,7 +111,7 @@ func addInitData() error {
|
||||||
Name: "ops",
|
Name: "ops",
|
||||||
AllowLan: true,
|
AllowLan: true,
|
||||||
ClientDns: []ValData{{Val: "114.114.114.114"}},
|
ClientDns: []ValData{{Val: "114.114.114.114"}},
|
||||||
RouteInclude: []ValData{{Val: "10.0.0.0/8"}},
|
RouteInclude: []ValData{{Val: All}},
|
||||||
}
|
}
|
||||||
err = SetGroup(&g1)
|
err = SetGroup(&g1)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -19,11 +19,8 @@ func startTls() {
|
||||||
var (
|
var (
|
||||||
err error
|
err error
|
||||||
|
|
||||||
addr = base.Cfg.ServerAddr
|
addr = base.Cfg.ServerAddr
|
||||||
certFile = base.Cfg.CertFile
|
ln net.Listener
|
||||||
keyFile = base.Cfg.CertKey
|
|
||||||
certs = make([]tls.Certificate, 1)
|
|
||||||
ln net.Listener
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// 判断证书文件
|
// 判断证书文件
|
||||||
|
@ -36,16 +33,20 @@ func startTls() {
|
||||||
// certs[0], err = tls.LoadX509KeyPair(certFile, keyFile)
|
// certs[0], err = tls.LoadX509KeyPair(certFile, keyFile)
|
||||||
// }
|
// }
|
||||||
|
|
||||||
certs[0], err = tls.LoadX509KeyPair(certFile, keyFile)
|
// 修复 CVE-2016-2183
|
||||||
if err != nil {
|
// https://segmentfault.com/a/1190000038486901
|
||||||
panic(err)
|
// nmap -sV --script ssl-enum-ciphers -p 443 www.example.com
|
||||||
|
cipherSuites := tls.CipherSuites()
|
||||||
|
selectedCipherSuites := make([]uint16, 0, len(cipherSuites))
|
||||||
|
for _, s := range cipherSuites {
|
||||||
|
selectedCipherSuites = append(selectedCipherSuites, s.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 设置tls信息
|
// 设置tls信息
|
||||||
tlsConfig := &tls.Config{
|
tlsConfig := &tls.Config{
|
||||||
NextProtos: []string{"http/1.1"},
|
NextProtos: []string{"http/1.1"},
|
||||||
MinVersion: tls.VersionTLS12,
|
MinVersion: tls.VersionTLS12,
|
||||||
Certificates: certs,
|
CipherSuites: selectedCipherSuites,
|
||||||
// InsecureSkipVerify: true,
|
// InsecureSkipVerify: true,
|
||||||
}
|
}
|
||||||
srv := &http.Server{
|
srv := &http.Server{
|
||||||
|
@ -66,7 +67,7 @@ func startTls() {
|
||||||
}
|
}
|
||||||
|
|
||||||
base.Info("listen server", addr)
|
base.Info("listen server", addr)
|
||||||
err = srv.ServeTLS(ln, "", "")
|
err = srv.ServeTLS(ln, base.Cfg.CertFile, base.Cfg.CertKey)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
base.Fatal(err)
|
base.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue