public Task <bool> Send(int userSocket, string message) { var formatted = "user_cmd msg_user {:" + userSocket + "} msg " + StringToUrlConverter.Convert(message + "\n", ConverterMode.StandardToUrl); return(this.SendData(formatted)); }
public async Task <bool> ConnectAsync() { if (this.Login != String.Empty && this.Password != String.Empty) { try { if (await this.Init()) { var info = await InitConnection(); if (info != null) { var md5 = this.CalcMD5(info.RandomMD5 + "-" + info.ClientIp + "/" + info.ClientPort.ToString() + this.Password); var ret = await this.SendData(string.Format("auth_ag ext_user {0} {1}\n", "none", this.UserLocation)); if (ret == true) { var buffer = await this.ReadData(); if (buffer == "rep 002 -- cmd end\n") { ret = await this.SendData("ext_user_log " + this.Login + " " + md5 + " " + StringToUrlConverter.Convert(this.UserLocation, ConverterMode.StandardToUrl) + " " + StringToUrlConverter.Convert(this.UserData, ConverterMode.StandardToUrl) + "\n"); if (ret == true) { buffer = await this.ReadData(); if (buffer == "rep 002 -- cmd end\n") { ret = await SetStatus(ContactStatus.Online); this.InitListener(); this.IsLogued = true; return(this.IsLogued); } } } } } } } catch (Exception ex) { return(false); } } return(false); }
protected async Task ParseReceivedData(string buffer) { if (buffer != null) { string[] command = buffer.Split(' '); switch (command[0]) { case "ping": await this.SendData(buffer); break; case "user_cmd": if (buffer.Contains("|")) { string[] userCommand = buffer.Split('|')[1].Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries); string[] parse = null; switch (userCommand[0]) { case "msg": parse = buffer.Split('|')[1].Split(' '); var msg = "message:" + buffer.Split('|')[0].Split(':')[3].Split('@')[0] + ":" + buffer.Split('|')[0].Split(':')[0].Split(' ')[1] + ":" + buffer.Split('|')[0].Split(':')[5] + ":" + StringToUrlConverter.Convert(parse[2], ConverterMode.UrlToStandard); if (this.OnMessage != null) { this.OnMessage(this, new NetsoulMessageEventArgs(msg)); } break; case "who": parse = buffer.Split('|')[1].Split(' '); if (parse[2] == "rep") { break; } //var t1 = parse[3]; //var t2 = parse[12].Split(':')[0]; //var t3 = parse[10]; //var t4 = parse[13].Split('\n')[0]; //var t5 = parse[2]; if (this.OnContactUpdate != null) { this.OnContactUpdate(this, new NetSoulContactUpdateEventArgs(parse[3], NetsoulHelper.GetStatus(parse[12].Split(':')[0]), parse[10], parse[13].Split('\n')[0], parse[2])); } break; case "login": case "state": parse = command[1].Split(':'); var status = userCommand[1].Split(':')[0]; if (this.OnContactUpdate != null) { this.OnContactUpdate(this, new NetSoulContactUpdateEventArgs(parse[3].Split('@')[0], NetsoulHelper.GetStatus(status), parse[5], "", parse[0])); } break; case "logout": parse = command[1].Split(':'); if (this.OnContactUpdate != null) { this.OnContactUpdate(this, new NetSoulContactUpdateEventArgs(parse[3].Split('@')[0], ContactStatus.Offline, null, null, "-1")); } break; default: break; } } break; default: break; } } }