func main() { LoadCfg() TCPServerManager.TCPServerManagerStart() KolonseWeb.DefaultLogs().Info("加载代理服务配置:\n%v", TCPServerManager.Dump()) KolonseWeb.DefaultApp.Get("/GetPort", func(req *HttpLib.Request, res *HttpLib.Response, next Type.Next) { domain := req.URL.Query().Get("domain") KolonseWeb.DefaultLogs().Info("处理客户端请求 Req Domain:%v,Client Addr:%v", domain, req.RemoteAddr) serverInfo := TCPServerManager.GetServerInfo(domain) res.Json(serverInfo) // 返回服务状态 }) KolonseWeb.DefaultApp.Listen("0.0.0.0", *Port) }
func (si *ServerInfo) handleConnection(conn net.Conn) { KolonseWeb.DefaultLogs().Info("Recv Conn,RemoteAddr:%v %v %v %v", conn.RemoteAddr().Network(), conn.RemoteAddr().String(), conn.LocalAddr().Network(), conn.LocalAddr().String()) // 收到一个连接 读取开始 i'm proxy server buff := make([]byte, 10000) // 缓存长度 err := si.ReadLessNByte(conn, len(PROXY_SERVER_MARK), buff) if err != nil { conn.Close() return } }
func (si *ServerInfo) Start() { ln, err := net.Listen("tcp", fmt.Sprintf(":%v", si.Port)) if err != nil { panic(err) } KolonseWeb.DefaultLogs().Info("TCP Server Listen On %v", si.Port) for { conn, err := ln.Accept() if err != nil { // handle error } go si.handleConnection(conn) } }