Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
企猫商务
frp
提交
8e25f132
F
frp
项目概览
企猫商务
/
frp
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
frp
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
8e25f132
编写于
3月 10, 2021
作者:
Y
yuyulei
提交者:
GitHub
3月 10, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update: support ipv6 (#2288)
上级
b5aee82c
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
25 addition
and
21 deletion
+25
-21
client/admin.go
client/admin.go
+1
-3
client/service.go
client/service.go
+2
-1
conf/frpc_full.ini
conf/frpc_full.ini
+1
-0
conf/frps_full.ini
conf/frps_full.ini
+1
-0
pkg/util/net/kcp.go
pkg/util/net/kcp.go
+2
-2
server/dashboard.go
server/dashboard.go
+2
-4
server/service.go
server/service.go
+16
-11
未找到文件。
client/admin.go
浏览文件 @
8e25f132
...
...
@@ -15,7 +15,6 @@
package
client
import
(
"fmt"
"net"
"net/http"
"time"
...
...
@@ -31,7 +30,7 @@ var (
httpServerWriteTimeout
=
10
*
time
.
Second
)
func
(
svr
*
Service
)
RunAdminServer
(
addr
string
,
port
int
)
(
err
error
)
{
func
(
svr
*
Service
)
RunAdminServer
(
addr
ess
string
)
(
err
error
)
{
// url router
router
:=
mux
.
NewRouter
()
...
...
@@ -51,7 +50,6 @@ func (svr *Service) RunAdminServer(addr string, port int) (err error) {
http
.
Redirect
(
w
,
r
,
"/static/"
,
http
.
StatusMovedPermanently
)
})
address
:=
fmt
.
Sprintf
(
"%s:%d"
,
addr
,
port
)
server
:=
&
http
.
Server
{
Addr
:
address
,
Handler
:
router
,
...
...
client/service.go
浏览文件 @
8e25f132
...
...
@@ -129,7 +129,8 @@ func (svr *Service) Run() error {
return
fmt
.
Errorf
(
"Load assets error: %v"
,
err
)
}
err
=
svr
.
RunAdminServer
(
svr
.
cfg
.
AdminAddr
,
svr
.
cfg
.
AdminPort
)
address
:=
net
.
JoinHostPort
(
svr
.
cfg
.
AdminAddr
,
strconv
.
Itoa
(
svr
.
cfg
.
AdminPort
))
err
=
svr
.
RunAdminServer
(
address
)
if
err
!=
nil
{
log
.
Warn
(
"run admin server error: %v"
,
err
)
}
...
...
conf/frpc_full.ini
浏览文件 @
8e25f132
...
...
@@ -2,6 +2,7 @@
[common]
# A literal address or host name for IPv6 must be enclosed
# in square brackets, as in "[::1]:80", "[ipv6-host]:http" or "[ipv6-host%zone]:80"
# For single "server_addr" field, no need square brackets, like "server_addr = ::".
server_addr
=
0.0.0.0
server_port
=
7000
...
...
conf/frps_full.ini
浏览文件 @
8e25f132
...
...
@@ -2,6 +2,7 @@
[common]
# A literal address or host name for IPv6 must be enclosed
# in square brackets, as in "[::1]:80", "[ipv6-host]:http" or "[ipv6-host%zone]:80"
# For single "bind_addr" field, no need square brackets, like "bind_addr = ::".
bind_addr
=
0.0.0.0
bind_port
=
7000
...
...
pkg/util/net/kcp.go
浏览文件 @
8e25f132
...
...
@@ -27,8 +27,8 @@ type KCPListener struct {
closeFlag
bool
}
func
ListenKcp
(
bindAddr
string
,
bindPort
int
)
(
l
*
KCPListener
,
err
error
)
{
listener
,
err
:=
kcp
.
ListenWithOptions
(
fmt
.
Sprintf
(
"%s:%d"
,
bindAddr
,
bindPort
)
,
nil
,
10
,
3
)
func
ListenKcp
(
address
string
)
(
l
*
KCPListener
,
err
error
)
{
listener
,
err
:=
kcp
.
ListenWithOptions
(
address
,
nil
,
10
,
3
)
if
err
!=
nil
{
return
l
,
err
}
...
...
server/dashboard.go
浏览文件 @
8e25f132
...
...
@@ -15,7 +15,6 @@
package
server
import
(
"fmt"
"net"
"net/http"
"time"
...
...
@@ -32,7 +31,7 @@ var (
httpServerWriteTimeout
=
10
*
time
.
Second
)
func
(
svr
*
Service
)
RunDashboardServer
(
addr
string
,
port
int
)
(
err
error
)
{
func
(
svr
*
Service
)
RunDashboardServer
(
addr
ess
string
)
(
err
error
)
{
// url router
router
:=
mux
.
NewRouter
()
...
...
@@ -58,14 +57,13 @@ func (svr *Service) RunDashboardServer(addr string, port int) (err error) {
http
.
Redirect
(
w
,
r
,
"/static/"
,
http
.
StatusMovedPermanently
)
})
address
:=
fmt
.
Sprintf
(
"%s:%d"
,
addr
,
port
)
server
:=
&
http
.
Server
{
Addr
:
address
,
Handler
:
router
,
ReadTimeout
:
httpServerReadTimeout
,
WriteTimeout
:
httpServerWriteTimeout
,
}
if
address
==
""
{
if
address
==
""
||
address
==
":"
{
address
=
":http"
}
ln
,
err
:=
net
.
Listen
(
"tcp"
,
address
)
...
...
server/service.go
浏览文件 @
8e25f132
...
...
@@ -23,6 +23,7 @@ import (
"net"
"net/http"
"sort"
"strconv"
"time"
"github.com/fatedier/frp/assets"
...
...
@@ -176,7 +177,8 @@ func NewService(cfg config.ServerCommonConf) (svr *Service, err error) {
}
// Listen for accepting connections from client.
ln
,
err
:=
net
.
Listen
(
"tcp"
,
fmt
.
Sprintf
(
"%s:%d"
,
cfg
.
BindAddr
,
cfg
.
BindPort
))
address
:=
net
.
JoinHostPort
(
cfg
.
BindAddr
,
strconv
.
Itoa
(
cfg
.
BindPort
))
ln
,
err
:=
net
.
Listen
(
"tcp"
,
address
)
if
err
!=
nil
{
err
=
fmt
.
Errorf
(
"Create server listener error, %v"
,
err
)
return
...
...
@@ -187,13 +189,14 @@ func NewService(cfg config.ServerCommonConf) (svr *Service, err error) {
ln
=
svr
.
muxer
.
DefaultListener
()
svr
.
listener
=
ln
log
.
Info
(
"frps tcp listen on %s
:%d"
,
cfg
.
BindAddr
,
cfg
.
BindPort
)
log
.
Info
(
"frps tcp listen on %s
"
,
address
)
// Listen for accepting connections from client using kcp protocol.
if
cfg
.
KCPBindPort
>
0
{
svr
.
kcpListener
,
err
=
frpNet
.
ListenKcp
(
cfg
.
BindAddr
,
cfg
.
KCPBindPort
)
address
:=
net
.
JoinHostPort
(
cfg
.
BindAddr
,
strconv
.
Itoa
(
cfg
.
KCPBindPort
))
svr
.
kcpListener
,
err
=
frpNet
.
ListenKcp
(
address
)
if
err
!=
nil
{
err
=
fmt
.
Errorf
(
"Listen on kcp address udp
[%s:%d] error: %v"
,
cfg
.
BindAddr
,
cfg
.
KCPBindPort
,
err
)
err
=
fmt
.
Errorf
(
"Listen on kcp address udp
%s error: %v"
,
address
,
err
)
return
}
log
.
Info
(
"frps kcp listen on udp %s:%d"
,
cfg
.
BindAddr
,
cfg
.
KCPBindPort
)
...
...
@@ -213,7 +216,7 @@ func NewService(cfg config.ServerCommonConf) (svr *Service, err error) {
},
svr
.
httpVhostRouter
)
svr
.
rc
.
HTTPReverseProxy
=
rp
address
:=
fmt
.
Sprintf
(
"%s:%d"
,
cfg
.
ProxyBindAddr
,
cfg
.
VhostHTTPPort
)
address
:=
net
.
JoinHostPort
(
cfg
.
ProxyBindAddr
,
strconv
.
Itoa
(
cfg
.
VhostHTTPPort
)
)
server
:=
&
http
.
Server
{
Addr
:
address
,
Handler
:
rp
,
...
...
@@ -238,11 +241,13 @@ func NewService(cfg config.ServerCommonConf) (svr *Service, err error) {
if
httpsMuxOn
{
l
=
svr
.
muxer
.
ListenHttps
(
1
)
}
else
{
l
,
err
=
net
.
Listen
(
"tcp"
,
fmt
.
Sprintf
(
"%s:%d"
,
cfg
.
ProxyBindAddr
,
cfg
.
VhostHTTPSPort
))
address
:=
net
.
JoinHostPort
(
cfg
.
ProxyBindAddr
,
strconv
.
Itoa
(
cfg
.
VhostHTTPSPort
))
l
,
err
=
net
.
Listen
(
"tcp"
,
address
)
if
err
!=
nil
{
err
=
fmt
.
Errorf
(
"Create server listener error, %v"
,
err
)
return
}
log
.
Info
(
"https service listen on %s"
,
address
)
}
svr
.
rc
.
VhostHTTPSMuxer
,
err
=
vhost
.
NewHTTPSMuxer
(
l
,
vhostReadWriteTimeout
)
...
...
@@ -250,7 +255,6 @@ func NewService(cfg config.ServerCommonConf) (svr *Service, err error) {
err
=
fmt
.
Errorf
(
"Create vhost httpsMuxer error, %v"
,
err
)
return
}
log
.
Info
(
"https service listen on %s:%d"
,
cfg
.
ProxyBindAddr
,
cfg
.
VhostHTTPSPort
)
}
// frp tls listener
...
...
@@ -261,14 +265,14 @@ func NewService(cfg config.ServerCommonConf) (svr *Service, err error) {
// Create nat hole controller.
if
cfg
.
BindUDPPort
>
0
{
var
nc
*
nathole
.
Controller
addr
:=
fmt
.
Sprintf
(
"%s:%d"
,
cfg
.
BindAddr
,
cfg
.
BindUDPPort
)
nc
,
err
=
nathole
.
NewController
(
addr
)
addr
ess
:=
net
.
JoinHostPort
(
cfg
.
BindAddr
,
strconv
.
Itoa
(
cfg
.
BindPort
)
)
nc
,
err
=
nathole
.
NewController
(
addr
ess
)
if
err
!=
nil
{
err
=
fmt
.
Errorf
(
"Create nat hole controller error, %v"
,
err
)
return
}
svr
.
rc
.
NatHoleController
=
nc
log
.
Info
(
"nat hole udp service listen on %s
:%d"
,
cfg
.
BindAddr
,
cfg
.
BindUDPPort
)
log
.
Info
(
"nat hole udp service listen on %s
"
,
address
)
}
var
statsEnable
bool
...
...
@@ -281,7 +285,8 @@ func NewService(cfg config.ServerCommonConf) (svr *Service, err error) {
return
}
err
=
svr
.
RunDashboardServer
(
cfg
.
DashboardAddr
,
cfg
.
DashboardPort
)
address
:=
net
.
JoinHostPort
(
cfg
.
DashboardAddr
,
strconv
.
Itoa
(
cfg
.
DashboardPort
))
err
=
svr
.
RunDashboardServer
(
address
)
if
err
!=
nil
{
err
=
fmt
.
Errorf
(
"Create dashboard web server error, %v"
,
err
)
return
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录