Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 2f5e1f7

Browse files
authored
Merge pull request #4999 from fatedier/dev
bump version
2 parents 22ae816 + b5e90c0 commit 2f5e1f7

File tree

27 files changed

+328
-70
lines changed

27 files changed

+328
-70
lines changed

.circleci/config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ version: 2
22
jobs:
33
go-version-latest:
44
docker:
5-
- image: cimg/go:1.23-node
5+
- image: cimg/go:1.24-node
66
resource_class: large
77
steps:
88
- checkout

.github/workflows/golangci-lint.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
- uses: actions/checkout@v4
1818
- uses: actions/setup-go@v5
1919
with:
20-
go-version: '1.23'
20+
go-version: '1.24'
2121
cache: false
2222
- name: golangci-lint
2323
uses: golangci/golangci-lint-action@v8

.github/workflows/goreleaser.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
- name: Set up Go
1616
uses: actions/setup-go@v5
1717
with:
18-
go-version: '1.23'
18+
go-version: '1.24'
1919

2020
- name: Make All
2121
run: |

README.md

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,18 @@ frp is an open source project with its ongoing development made possible entirel
1313

1414
<h3 align="center">Gold Sponsors</h3>
1515
<!--gold sponsors start-->
16+
<p align="center">
17+
<a href="https://www.recall.ai/?utm_source=github&utm_medium=sponsorship&utm_campaign=fatedier-frp" target="_blank">
18+
<b>Recall.ai - API for meeting recordings</b><br>
19+
<br>
20+
<sup>If you're looking for a meeting recording API, consider checking out Recall.ai, an API that records Zoom, Google Meet, Microsoft Teams, in-person meetings, and more.</sup>
21+
</a>
22+
</p>
1623
<p align="center">
1724
<a href="https://go.warp.dev/frp" target="_blank">
1825
<img width="360px" src="https://raw.githubusercontent.com/warpdotdev/brand-assets/refs/heads/main/Github/Sponsor/Warp-Github-LG-01.png">
1926
<br>
20-
<b>Warp, the intelligent terminal</b>
27+
<b>Warp, built for collaborating with AI Agents</b>
2128
<br>
2229
<sub>Available for macOS, Linux and Windows</sub>
2330
</a>
@@ -519,7 +526,7 @@ name = "ssh"
519526
type = "tcp"
520527
localIP = "127.0.0.1"
521528
localPort = 22
522-
remotePort = "{{ .Envs.FRP_SSH_REMOTE_PORT }}"
529+
remotePort = {{ .Envs.FRP_SSH_REMOTE_PORT }}
523530
```
524531

525532
With the config above, variables can be passed into `frpc` program like this:

README_zh.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,43 @@ frp 是一个完全开源的项目,我们的开发工作完全依靠赞助者
1515

1616
<h3 align="center">Gold Sponsors</h3>
1717
<!--gold sponsors start-->
18+
<p align="center">
19+
<a href="https://www.recall.ai/?utm_source=github&utm_medium=sponsorship&utm_campaign=fatedier-frp" target="_blank">
20+
<b>Recall.ai - API for meeting recordings</b><br>
21+
<br>
22+
<sup>If you're looking for a meeting recording API, consider checking out Recall.ai, an API that records Zoom, Google Meet, Microsoft Teams, in-person meetings, and more.</sup>
23+
</a>
24+
</p>
25+
<p align="center">
26+
<a href="https://go.warp.dev/frp" target="_blank">
27+
<img width="360px" src="https://raw.githubusercontent.com/warpdotdev/brand-assets/refs/heads/main/Github/Sponsor/Warp-Github-LG-01.png">
28+
<br>
29+
<b>Warp, built for collaborating with AI Agents</b>
30+
<br>
31+
<sub>Available for macOS, Linux and Windows</sub>
32+
</a>
33+
</p>
1834
<p align="center">
1935
<a href="https://jb.gg/frp" target="_blank">
2036
<img width="420px" src="https://raw.githubusercontent.com/fatedier/frp/dev/doc/pic/sponsor_jetbrains.jpg">
37+
<br>
38+
<b>The complete IDE crafted for professional Go developers</b>
2139
</a>
2240
</p>
2341
<p align="center">
2442
<a href="https://github.com/daytonaio/daytona" target="_blank">
2543
<img width="420px" src="https://raw.githubusercontent.com/fatedier/frp/dev/doc/pic/sponsor_daytona.png">
44+
<br>
45+
<b>Secure and Elastic Infrastructure for Running Your AI-Generated Code</b>
2646
</a>
2747
</p>
2848
<p align="center">
2949
<a href="https://github.com/beclab/Olares" target="_blank">
3050
<img width="420px" src="https://raw.githubusercontent.com/fatedier/frp/dev/doc/pic/sponsor_olares.jpeg">
51+
<br>
52+
<b>The sovereign cloud that puts you in control</b>
53+
<br>
54+
<sub>An open source, self-hosted alternative to public clouds, built for data ownership and privacy</sub>
3155
</a>
3256
</p>
3357
<!--gold sponsors end-->

Release.md

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
## Features
22

3-
* Support tokenSource for loading authentication tokens from files.
4-
5-
## Fixes
6-
7-
* Fix SSH tunnel gateway incorrectly binding to proxyBindAddr instead of bindAddr, which caused external connections to fail when proxyBindAddr was set to 127.0.0.1.
3+
* Add NAT traversal configuration options for XTCP proxies and visitors. Support disabling assisted addresses to avoid using slow VPN connections during NAT hole punching.
4+
* Enhanced OIDC client configuration with support for custom TLS certificate verification and proxy settings. Added `trustedCaFile`, `insecureSkipVerify`, and `proxyURL` options for OIDC token endpoint connections.
5+
* Added detailed Prometheus metrics with `proxy_counts_detailed` metric that includes both proxy type and proxy name labels, enabling monitoring of individual proxy connections instead of just aggregate counts.

client/connector.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ package client
1717
import (
1818
"context"
1919
"crypto/tls"
20-
"io"
2120
"net"
2221
"strconv"
2322
"strings"
@@ -115,7 +114,8 @@ func (c *defaultConnectorImpl) Open() error {
115114

116115
fmuxCfg := fmux.DefaultConfig()
117116
fmuxCfg.KeepAliveInterval = time.Duration(c.cfg.Transport.TCPMuxKeepaliveInterval) * time.Second
118-
fmuxCfg.LogOutput = io.Discard
117+
// Use trace level for yamux logs
118+
fmuxCfg.LogOutput = xlog.NewTraceWriter(xl)
119119
fmuxCfg.MaxStreamWindowSize = 6 * 1024 * 1024
120120
session, err := fmux.Client(conn, fmuxCfg)
121121
if err != nil {

client/control.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,10 +276,12 @@ func (ctl *Control) heartbeatWorker() {
276276
}
277277

278278
func (ctl *Control) worker() {
279+
xl := ctl.xl
279280
go ctl.heartbeatWorker()
280281
go ctl.msgDispatcher.Run()
281282

282283
<-ctl.msgDispatcher.Done()
284+
xl.Debugf("control message dispatcher exited")
283285
ctl.closeSession()
284286

285287
ctl.pm.Close()

client/proxy/xtcp.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,19 @@ func (pxy *XTCPProxy) InWorkConn(conn net.Conn, startWorkConnMsg *msg.StartWorkC
6464
}
6565

6666
xl.Tracef("nathole prepare start")
67-
prepareResult, err := nathole.Prepare([]string{pxy.clientCfg.NatHoleSTUNServer})
67+
68+
// Prepare NAT traversal options
69+
var opts nathole.PrepareOptions
70+
if pxy.cfg.NatTraversal != nil && pxy.cfg.NatTraversal.DisableAssistedAddrs {
71+
opts.DisableAssistedAddrs = true
72+
}
73+
74+
prepareResult, err := nathole.Prepare([]string{pxy.clientCfg.NatHoleSTUNServer}, opts)
6875
if err != nil {
6976
xl.Warnf("nathole prepare error: %v", err)
7077
return
7178
}
79+
7280
xl.Infof("nathole prepare success, nat type: %s, behavior: %s, addresses: %v, assistedAddresses: %v",
7381
prepareResult.NatType, prepareResult.Behavior, prepareResult.Addrs, prepareResult.AssistedAddrs)
7482
defer prepareResult.ListenConn.Close()

client/service.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,9 +149,15 @@ func NewService(options ServiceOptions) (*Service, error) {
149149
}
150150
webServer = ws
151151
}
152+
153+
authSetter, err := auth.NewAuthSetter(options.Common.Auth)
154+
if err != nil {
155+
return nil, err
156+
}
157+
152158
s := &Service{
153159
ctx: context.Background(),
154-
authSetter: auth.NewAuthSetter(options.Common.Auth),
160+
authSetter: authSetter,
155161
webServer: webServer,
156162
common: options.Common,
157163
configFilePath: options.ConfigFilePath,

0 commit comments

Comments
 (0)