Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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;
                }
            }
        }