public static List <ConfigItem> GetData() { List <ConfigItem> data = new List <ConfigItem>(); DataTable dt = MyManager.ListAllProxyServer(); foreach (DataRow dr in dt.Rows) { ConfigItem item = new ConfigItem(); ProxyServer entity = new ProxyServer(); DbHelper.MapDataRowToObject(dr, entity); item.Entity = entity; if (isListening(entity.Id)) { item.StatusId = 1; } data.Add(item); } return(data); }
public void work() { var _globalSrv = MyManager.GetConfig("server").MyVal.Split(':'); var globalUserToken = MyManager.GetConfig("usertoken").MyVal; var globalSrvIp = _globalSrv[0]; var globalSrvPort = int.Parse(_globalSrv[1]); var srv = MyManager.GetProxyServer(Id); listener = new TcpListener(IPAddress.Any, srv.LocalPort); try { showMessage("开始监听" + srv.LocalPort); listener.Start(5); } catch { showMessage("监听出现错误"); return; } showMessage("等待连接"); while (!ShouldStop) { try { var socket = listener.AcceptSocket(); showMessage("收到转发请求"); var client = new TcpClient(); showMessage("开始连接服务器," + globalSrvIp + ":" + globalSrvPort); client.Connect(globalSrvIp, globalSrvPort); var stream = client.GetStream(); showMessage("开始握手"); byte[] data = Encoding.UTF8.GetBytes("auth"); stream.Write(data, 0, data.Length); byte[] receiveData = new byte[1024]; int len = stream.Read(receiveData, 0, receiveData.Length); string str = Encoding.UTF8.GetString(receiveData, 0, len); bool working = false; if (str == "ok") { showMessage("握手成功,开始认证"); data = Encoding.UTF8.GetBytes(guid + "," + globalUserToken + "," + srv.Server); stream.Write(data, 0, data.Length); len = stream.Read(receiveData, 0, receiveData.Length); str = Encoding.UTF8.GetString(receiveData, 0, len); if (str == "ok") { showMessage("认证成功,开始转发"); var p = new Tuple <Socket, NetworkStream>(socket, stream); Thread ts1 = new Thread(new ParameterizedThreadStart(this.forward1)); ts1.IsBackground = true; ts1.Start(p); Thread ts2 = new Thread(new ParameterizedThreadStart(this.forward2)); ts2.IsBackground = true; ts2.Start(p); working = true; } else { showMessage("认证失败"); } } else { showMessage("握手失败"); } if (!working) { socket.Close(); client.Close(); } } catch (Exception ex) { showMessage("程序异常:" + ex.Message); } } if (listener != null) { listener.Stop(); listener = null; } }