update
This commit is contained in:
5
internal/proxy/ali/config.conf
Normal file
5
internal/proxy/ali/config.conf
Normal file
@@ -0,0 +1,5 @@
|
||||
[url]
|
||||
# 消息进来的端口,即监听端口
|
||||
in=:3333
|
||||
# 消息发出去的端口,即转发端口
|
||||
out=47.129.22.53:21000
|
||||
BIN
internal/proxy/ali/main
Normal file
BIN
internal/proxy/ali/main
Normal file
Binary file not shown.
80
internal/proxy/ali/main.go
Normal file
80
internal/proxy/ali/main.go
Normal file
@@ -0,0 +1,80 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"io"
|
||||
"log"
|
||||
"net"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"gopkg.in/ini.v1"
|
||||
)
|
||||
|
||||
func readConfig() (string, string) {
|
||||
cfg, err := ini.Load("config.conf")
|
||||
if err != nil {
|
||||
log.Fatalf("无法读取配置文件: %v", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
section := cfg.Section("url")
|
||||
|
||||
minerPort := strings.Trim(section.Key("in").String(), `""`)
|
||||
minerPoolAddr := strings.Trim(section.Key("out").String(), `""`)
|
||||
|
||||
return minerPort, minerPoolAddr
|
||||
}
|
||||
|
||||
var minerPort, minerPoolAddr = readConfig()
|
||||
|
||||
// 处理矿机请求的函数
|
||||
func handleMinerConnection(minerConn net.Conn) {
|
||||
defer minerConn.Close()
|
||||
log.Println("有矿机接入")
|
||||
// 连接到矿池
|
||||
poolConn, err := net.Dial("tcp", minerPoolAddr)
|
||||
if err != nil {
|
||||
log.Printf("无法连接到矿池: %v", err)
|
||||
return
|
||||
}
|
||||
defer poolConn.Close()
|
||||
|
||||
// 启动两个 goroutine:一个从矿机接收数据并转发到矿池,另一个从矿池接收数据并转发回矿机
|
||||
go transferData(minerConn, poolConn)
|
||||
go transferData(poolConn, minerConn)
|
||||
|
||||
// 保持服务运行,直到矿机或矿池关闭连接
|
||||
select {}
|
||||
}
|
||||
|
||||
// 数据转发函数:从源连接读取数据并写入到目标连接
|
||||
func transferData(src net.Conn, dest net.Conn) {
|
||||
_, err := io.Copy(dest, src)
|
||||
if err != nil {
|
||||
log.Printf("数据转发失败: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
// 设置代理服务监听端口
|
||||
listener, err := net.Listen("tcp", minerPort)
|
||||
if err != nil {
|
||||
log.Fatalf("无法启动监听服务: %v", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
defer listener.Close()
|
||||
|
||||
log.Printf("代理服务启动,监听端口 %s\n", minerPort)
|
||||
|
||||
// 不断接收来自矿机的连接
|
||||
for {
|
||||
// 接受矿机连接
|
||||
minerConn, err := listener.Accept()
|
||||
if err != nil {
|
||||
log.Printf("接受连接失败: %v", err)
|
||||
continue
|
||||
}
|
||||
|
||||
// 为每个矿机连接启动一个新的 goroutine 来处理
|
||||
go handleMinerConnection(minerConn)
|
||||
}
|
||||
}
|
||||
5
internal/proxy/aws/config.conf
Normal file
5
internal/proxy/aws/config.conf
Normal file
@@ -0,0 +1,5 @@
|
||||
[url]
|
||||
# 消息进来的端口,即监听端口
|
||||
in=:21000
|
||||
# 消息发出去的端口,即转发端口
|
||||
out=stratum+tcp://nexa.m2pool.com:33333
|
||||
80
internal/proxy/aws/main.go
Normal file
80
internal/proxy/aws/main.go
Normal file
@@ -0,0 +1,80 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"io"
|
||||
"log"
|
||||
"net"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"gopkg.in/ini.v1"
|
||||
)
|
||||
|
||||
func readConfig() (string, string) {
|
||||
cfg, err := ini.Load("config.conf")
|
||||
if err != nil {
|
||||
log.Fatalf("无法读取配置文件: %v", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
section := cfg.Section("url")
|
||||
|
||||
minerPort := strings.Trim(section.Key("in").String(), `""`)
|
||||
minerPoolAddr := strings.Trim(section.Key("out").String(), `""`)
|
||||
|
||||
return minerPort, minerPoolAddr
|
||||
}
|
||||
|
||||
var minerPort, minerPoolAddr = readConfig()
|
||||
|
||||
// 处理矿机请求的函数
|
||||
func handleMinerConnection(minerConn net.Conn) {
|
||||
defer minerConn.Close()
|
||||
log.Println("有矿机接入")
|
||||
// 连接到矿池
|
||||
poolConn, err := net.Dial("tcp", minerPoolAddr)
|
||||
if err != nil {
|
||||
log.Printf("无法连接到矿池: %v", err)
|
||||
return
|
||||
}
|
||||
defer poolConn.Close()
|
||||
|
||||
// 启动两个 goroutine:一个从矿机接收数据并转发到矿池,另一个从矿池接收数据并转发回矿机
|
||||
go transferData(minerConn, poolConn)
|
||||
go transferData(poolConn, minerConn)
|
||||
|
||||
// 保持服务运行,直到矿机或矿池关闭连接
|
||||
select {}
|
||||
}
|
||||
|
||||
// 数据转发函数:从源连接读取数据并写入到目标连接
|
||||
func transferData(src net.Conn, dest net.Conn) {
|
||||
_, err := io.Copy(dest, src)
|
||||
if err != nil {
|
||||
log.Printf("数据转发失败: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
// 设置代理服务监听端口
|
||||
listener, err := net.Listen("tcp", minerPort)
|
||||
if err != nil {
|
||||
log.Fatalf("无法启动监听服务: %v", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
defer listener.Close()
|
||||
|
||||
log.Printf("代理服务启动,监听端口 %s\n", minerPort)
|
||||
|
||||
// 不断接收来自矿机的连接
|
||||
for {
|
||||
// 接受矿机连接
|
||||
minerConn, err := listener.Accept()
|
||||
if err != nil {
|
||||
log.Printf("接受连接失败: %v", err)
|
||||
continue
|
||||
}
|
||||
|
||||
// 为每个矿机连接启动一个新的 goroutine 来处理
|
||||
go handleMinerConnection(minerConn)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user