protected override bool WorkFlow(Pipe pipeClient2Server, Pipe pipeServer2Client) { bool result = false; byte[] request = pipeClient2Server.ReadByte(); if (request != null) { int version = request[0]; // check if is socks version 5 if (version == '\u0005') { string reply = "\u0005\u0000"; pipeServer2Client.Write(reply); request = pipeClient2Server.ReadByte(); if (request != null) { CMDType cmdType = (CMDType)request[1]; if (cmdType == CMDType.Connect) { result = HandleTCPReq(request, pipeServer2Client, pipeClient2Server); } else if (cmdType == CMDType.Udp) { // result = HandleUDPReq(request, pipeServer2Client, pipeClient2Server); } } } } return(result); }
protected override void HandleClient(object clientObj) { Connect connect2Client = clientObj as Connect; TcpClient socket2Client = connect2Client.client; Pipe client2Server = new Pipe( socket2Client, null, connect2Client.userFrom ); Pipe server2Client = new Pipe( null, socket2Client, connect2Client.userFrom ); client2Server.EncryptFrom = true; server2Client.EncryptTo = true; try { byte[] request = client2Server.Read(); if (request == null) { return; } // not socket 5 request int version = request[0]; if (version != '\u0005') { return; } string reply = "\u0005\u0000"; server2Client.Write(reply); request = client2Server.Read(); if (request == null) { return; } CMDType cmdType = (CMDType)request[1]; if (cmdType == CMDType.Connect) { HandleTCPReq(request, server2Client, client2Server); } else if (cmdType == CMDType.Udp) { //HandleUDPReq(request, server2Client); } } catch (SocketException se) { Console.WriteLine(se.Message); client2Server.Close(); server2Client.Close(); } }
public CMD(CMDType Type) { type = Type; sPin = 0; sMode = PinMode.Lock; if (Type == CMDType.Pause) { value = 1000; } else { value = 0; } }
/// <summary> /// 获取指定协议类型的正则表达式 /// </summary> /// <param name="cmdType">协议类型</param> /// <returns>指定协议的正则表达式</returns> static public string GetProtocolPattern(CMDType cmdType) { UnityModule.DebugPrint("开始获取协议正则表达式:{0}", cmdType.ToString()); string ProtocolString = ""; //每条协议最后使用换行符结束 try { switch (cmdType) { case CMDType.ChatMessage: { ProtocolString = "HEY_CVER=(?<CLIENTVERSION>.+?)_CMDTYPE=CHATMESSAGE_TOID=(?<TOID>.+?)_MESSAGE=(?<MESSAGE>.+?)\n"; break; } case CMDType.GetChatHistory: { ProtocolString = "HEY_CVER=(?<CLIENTVERSION>.+?)_CMDTYPE=GETCHATHISTORY_FRIENDID=(?<FRIENDID>.+?)_FIRSTMESSAGEID=(?<FIRSTMESSAGEID>.+?)\n"; break; } case CMDType.SignIn: { ProtocolString = "HEY_CVER=(?<CLIENTVERSION>.+?)_CMDTYPE=SIGNIN_USERID=(?<USERID>.+?)_PASSWORD=(?<PASSWORD>.+?)\n"; break; } case CMDType.WhoAmI: { ProtocolString = "HEY_CVER=(?<CLIENTVERSION>.+?)_CMDTYPE=WHOAMI_USERID=(?<USERID>.+?)\n"; break; } default: { ProtocolString = ""; break; } } UnityModule.DebugPrint("协议正则表达式:{0}", ProtocolString); return(ProtocolString); } catch (Exception ex) { UnityModule.DebugPrint("获取 {0} 协议正则表达式时遇到错误:{1}", cmdType.ToString(), ex.Message); return(""); } }
public static CMDType GetJsonCMD(string jstr) { JObject obj = new JObject(); CMDType cmd = CMDType.CMDErr; try { obj = (JObject)JsonConvert.DeserializeObject(jstr); cmd = (CMDType)Convert.ToInt16(obj["cmd"].ToString()); } catch { } return(cmd); }
/// <summary> /// 获取指定协议类型的正则表达式 /// </summary> /// <param name="cmdType">协议类型</param> /// <returns>指定协议的正则表达式</returns> static public string GetProtocolPattern(CMDType cmdType) { UnityModule.DebugPrint("开始获取协议正则表达式:{0}", cmdType.ToString()); string ProtocolString = null; //每条协议最后使用换行符结束 switch (cmdType) { case CMDType.ChatMessage: { ProtocolString = "HI_CMDTYPE=CHATMESSAGE_FROMID=(?<FROMID>.+?)_CHATTIME=(?<CHATTIME>.+?)_MESSAGEID=(?<MESSAGEID>.+?)_MESSAGE=(?<MESSAGE>.+?)\n"; break; } case CMDType.GetFriendsList: { ProtocolString = "HI_CMDTYPE=GETFRIENDSLIST_FRIENDID=(?<FRIENDID>.+?)_NICKNAME=(?<NICKNAME>.+?)_SIGNATURE=(?<SIGNATURE>.+?)_ONLINE=(?<ONLINE>.+?)\n"; break; } case CMDType.FriendSignIn: { ProtocolString = "HI_CMDTYPE=FRIENDSIGNIN_FRIENDID=(?<FRIENDID>.+?)\n"; break; } case CMDType.FriendSignOut: { ProtocolString = "HI_CMDTYPE=FRIENDSIGNOUT_FRIENDID=(?<FRIENDID>.+?)\n"; break; } default: { ProtocolString = ""; break; } } UnityModule.DebugPrint("协议正则表达式:{0}", ProtocolString); return(ProtocolString); }
public CMD(CMDType type, params object[] args) { this.type = type; this.args = args; }
public CMD(CMDType type) { this.type = type; }
/// <summary> /// 获取按指定协议类型格式化的协议字符串 /// </summary> /// <param name="cmdType">协议类型</param> /// <returns>协议字符串</returns> static public string FormatProtocol(CMDType cmdType, params string[] ProtocolValues) { UnityModule.DebugPrint("开始格式化通信协议:{0} : {1}", cmdType.ToString(), string.Join(" + ", ProtocolValues)); string ProtocolString = null; //每条协议最后加一个换行符,否则服务端无法使用正则匹配最后一个参数 try { switch (cmdType) { case CMDType.ChatMessage: { ProtocolString = string.Format("HI_CMDTYPE=CHATMESSAGE_FROMID={0}_CHATTIME={1}_MESSAGEID={2}_MESSAGE={3}\n", ProtocolValues[0], ProtocolValues[1], ProtocolValues[2], ProtocolValues[3]); break; } case CMDType.GetFriendsList: { ProtocolString = string.Format("HI_CMDTYPE=GETFRIENDSLIST_FRIENDID={0}_NICKNAME={1}_SIGNATURE={2}_ONLINE={3}\n", ProtocolValues[0], Convert.ToBase64String(Encoding.UTF8.GetBytes(ProtocolValues[1])), Convert.ToBase64String(Encoding.UTF8.GetBytes(ProtocolValues[2])), ProtocolValues[3]); break; } case CMDType.SignInSuccessfully: { ProtocolString = string.Format("HI_CMDTYPE=SIGNINSUCCESSFULLY_USERID={0}\n", ProtocolValues[0]); break; } case CMDType.SignInUnsuccessfully: { ProtocolString = string.Format("HI_CMDTYPE=SIGNINUNSUCCESSFULLY_USERID={0}\n", ProtocolValues[0]); break; } case CMDType.FriendsListComplete: { ProtocolString = string.Format("HI_CMDTYPE=FRIENDSLISTCOMPLETE_USERID={0}\n", ProtocolValues[0]); break; } case CMDType.MessageNSYComplete: { ProtocolString = string.Format("HI_CMDTYPE=MESSAGENSYCOMPLETE_USERID={0}\n", ProtocolValues[0]); break; } case CMDType.FriendSignIn: { ProtocolString = string.Format("HI_CMDTYPE=FRIENDSIGNIN_FRIENDID={0}\n", ProtocolValues[0]); break; } case CMDType.FriendSignOut: { ProtocolString = string.Format("HI_CMDTYPE=FRIENDSIGNOUT_FRIENDID={0}\n", ProtocolValues[0]); break; } case CMDType.AnothorSignIn: { ProtocolString = string.Format("HI_CMDTYPE=ANOTHORSIGNIN_USERID={0}\n", ProtocolValues[0]); break; } case CMDType.ServerShutdown: { ProtocolString = string.Format("HI_CMDTYPE=SERVERSHUTDOWN_\n"); break; } default: { ProtocolString = ""; break; } } UnityModule.DebugPrint("协议内容:{0}", ProtocolString); return(ProtocolString); } catch (Exception ex) { UnityModule.DebugPrint("获取 {0} 通信协议时遇到错误:{1}", cmdType.ToString(), ex.Message); return(""); } }
public Cmd(string filename, byte[] data, CMDType type) { this.filename = filename; this.data = data; this.type = type; }
public void AddCMD(CMDType type, params object[] args) { cmds.Add(new CMD(type, args)); }
/// <summary> /// 获取按指定协议类型格式化的协议字符串 /// </summary> /// <param name="cmdType">协议类型</param> /// <returns>协议字符串</returns> static public string FormatProtocol(CMDType cmdType, params string[] ProtocolValues) { UnityModule.DebugPrint("开始格式化通信协议:{0} : {1}", cmdType.ToString(), string.Join(" + ", ProtocolValues)); //每条协议最后加一个换行符,否则服务端无法使用正则匹配最后一个参数 string ProtocolString = ""; try { switch (cmdType) { case CMDType.ChatMessage: { ProtocolString = string.Format("HEY_CVER={0}_CMDTYPE=CHATMESSAGE_TOID={1}_MESSAGE={2}\n", ProtocolValues[0], ProtocolValues[1], Convert.ToBase64String(Encoding.UTF8.GetBytes(ProtocolValues[2]))); break; } case CMDType.SignIn: { ProtocolString = string.Format("HEY_CVER={0}_CMDTYPE=SIGNIN_USERID={1}_PASSWORD={2}\n", ProtocolValues[0], ProtocolValues[1], ProtocolValues[2]); break; } case CMDType.WhoAmI: { ProtocolString = string.Format("HEY_CVER={0}_CMDTYPE=WHOAMI_USERID={1}\n", ProtocolValues[0], ProtocolValues[1]); break; } case CMDType.GetFriendsList: { ProtocolString = string.Format("HEY_CVER={0}_CMDTYPE=GETFRIENDSLIST_USERID={1}\n", ProtocolValues[0], ProtocolValues[1]); break; } case CMDType.SignOut: { ProtocolString = string.Format("HEY_CVER={0}_CMDTYPE=SIGNOUT_USERID={1}\n", ProtocolValues[0], ProtocolValues[1]); break; } case CMDType.GetMessageNotSendYet: { ProtocolString = string.Format("HEY_CVER={0}_CMDTYPE=GETMESSAGENOTSENDYET_USERID={1}\n", ProtocolValues[0], ProtocolValues[1]); break; } case CMDType.GetChatHistory: { ProtocolString = string.Format("HEY_CVER={0}_CMDTYPE=GETCHATHISTORY_FRIENDID={1}_FIRSTMESSAGEID={2}\n", ProtocolValues[0], ProtocolValues[1], ProtocolValues[2]); break; } default: { ProtocolString = ""; break; } } UnityModule.DebugPrint("协议内容:{0}", ProtocolString); return(ProtocolString); } catch (Exception ex) { UnityModule.DebugPrint("获取 {0} 通信协议时遇到错误:{1}", cmdType.ToString(), ex.Message); return(""); } }