Exemplo n.º 1
0
        public LoginOK sp_loginSocial(int socialType, string socialID, string nick, string picurl, string email)
        {
            LoginOK resultValue = new LoginOK();

            int spError = -1;
            List <DBREQ_PARAM> dbParams = new List <DBREQ_PARAM>();

            dbParams.Add(new DBREQ_PARAM("_socialType", DbType.Int32, socialType));
            dbParams.Add(new DBREQ_PARAM("_socialID", DbType.String, socialID));
            dbParams.Add(new DBREQ_PARAM("_nick", DbType.String, nick));
            dbParams.Add(new DBREQ_PARAM("_picurl", DbType.String, picurl));
            dbParams.Add(new DBREQ_PARAM("_email", DbType.String, email));


            DataTable result = RunSP("sp_loginSocial", CreateDB(), dbParams);

            spError = result.Rows[0].Field <int>("Result");
            if (spError == 0)
            {
                resultValue.statusCode = 200;
                resultValue.authToken  = result.Rows[0].Field <string>("AuthToken");
            }
            else
            {
                resultValue.statusCode = spError;
            }
            return(resultValue);
        }
Exemplo n.º 2
0
        public LoginOK sp_loginuser(int _socialType, string _socialID, string _pw)
        {
            LoginOK resultValue = new LoginOK();

            int spError = -1;
            List <DBREQ_PARAM> dbParams = new List <DBREQ_PARAM>();

            dbParams.Add(new DBREQ_PARAM("_socialType", DbType.Int32, _socialType));
            dbParams.Add(new DBREQ_PARAM("_socialID", DbType.String, _socialID));
            dbParams.Add(new DBREQ_PARAM("_pw", DbType.String, _pw));
            DataTable result = RunSP("sp_loginuser", CreateDB(), dbParams);

            spError = result.Rows[0].Field <int>("Result");
            if (spError == 0)
            {
                resultValue.statusCode = 200;
                resultValue.authToken  = result.Rows[0].Field <string>("AuthToken");
            }
            else
            {
                resultValue.statusCode = spError;
            }
            return(resultValue);
        }
Exemplo n.º 3
0
        private Task Receiver(NetworkStream stream, CancellationTokenSource cts)
        {
            return(new Task(() =>
            {
                Trace.TraceInformation("Receiver task starting...");
                //stream.ReadTimeout = 5000;
                try
                {
                    while (true)
                    {
                        if (cts.Token.IsCancellationRequested)
                        {
                            break;
                        }
                        DataPackage dataPackage = DataPackage.FromStream(stream);
                        switch (dataPackage.Type)
                        {
                        case MessageType.SYSTEM_LOGIN_OK:
                            {
                                LoginInfo info = Serializer.Deserialize <LoginInfo>(dataPackage.Data);
                                Name = info.Name;
                                LoginOK?.Invoke(this, info);
                            }
                            break;

                        case MessageType.SYSTEM_LOGIN_FAILED:
                            {
                                LoginInfo info = Serializer.Deserialize <LoginInfo>(dataPackage.Data);
                                LoginFailed?.Invoke(this, info);
                            }
                            break;

                        case MessageType.SYSTEM_JOIN_ROOM_OK:
                            {
                                RoomInfo roomInfo = Serializer.Deserialize <RoomInfo>(dataPackage.Data);
                                JoinedInRoom?.Invoke(this, roomInfo);
                            }
                            break;

                        case MessageType.SYSTEM_LEAVE_ROOM_OK:
                            {
                                RoomInfo roomInfo = Serializer.Deserialize <RoomInfo>(dataPackage.Data);
                                LeavedFromRoom?.Invoke(this, roomInfo);
                            }
                            break;

                        case MessageType.CLIENT_MESSAGE:
                            {
                                Message message = Serializer.Deserialize <Message>(dataPackage.Data);
                                MessageReceived?.Invoke(this, message);
                            }
                            break;

                        case MessageType.CLIENT_IMAGE_MESSAGE:
                            {
                                var imageMessage = Serializer.Deserialize <ImageMessage>(dataPackage.Data);
                                ImageMessageReceived?.Invoke(this, imageMessage);
                            }
                            break;

                        case MessageType.CLIENT_FILE_MESSAGE:
                            {
                                var fileMessage = Serializer.Deserialize <FileMessage>(dataPackage.Data);
                                FileMessageReived?.Invoke(this, fileMessage);
                            }
                            break;

                        case MessageType.SYSTEM_FILE_TRANSFER:
                            {
                                var fileMessage = Serializer.Deserialize <FileMessage>(dataPackage.Data);
                                FileReived?.Invoke(this, fileMessage);
                            }
                            break;

                        case MessageType.SYSTEM_MESSAGE_OK:
                            {
                                Receipt receipt = Serializer.Deserialize <Receipt>(dataPackage.Data);
                                MessageArrivied?.Invoke(this, receipt);
                            }
                            break;

                        case MessageType.SYSTEM_MESSAGE:
                            {
                                var message = Encoding.UTF8.GetString(dataPackage.Data);
                                SystemMessageReceived?.Invoke(this, message);
                                break;
                            }

                        case MessageType.CLIENT_LOGOUT:
                            {
                                Name = null;
                                LogoutOK?.Invoke(this, null);
                                goto default;
                            }

                        default:
                            UnknownMessageReceived?.Invoke(this, new SystemMessageEventArgs(dataPackage.Type, dataPackage.Data));
                            break;
                        }
                    }
                }
                catch (EndOfStreamException ex)
                {
                    Debug.WriteLine($"Client {Name} Receiver: {ex.Message}");
                }
                catch (IOException ex)
                {
                    if (ex.InnerException is SocketException)
                    {
                        SocketExceptionRaising?.Invoke(this, (SocketException)ex.InnerException);
                    }
                    else
                    {
                        Trace.TraceInformation($"{ex}");
                    }
                }
                ReceiverTaskExited?.Invoke(this, null);
                Trace.TraceInformation("Receiver task exited");
            }, TaskCreationOptions.LongRunning));
        }
Exemplo n.º 4
0
        public LoginController()
        {
            parentSpace = "/api/login";
            dbhandler   = new DBLoginHandler(ConfigurationManager.AppSettings.Get("ConectionDBString"));

            Get["", true] = async(parameters, ct) => {
                //Default
                PageInfo pageInfo = new PageInfo();
                pageInfo.langcode = "ko_KR";
                pageInfo.langfile = string.Format("/js/lang/ko_KR.js");
                return(View["public/index.html", pageInfo]);
            };

            Get["/{langID}", true] = async(parameters, ct) => {
                PageInfo pageInfo = new PageInfo();
                pageInfo.langcode = parameters.langID;
                pageInfo.langfile = string.Format("/js/lang/{0}.js", parameters.langID);
                return(View["public/index.html", pageInfo]);
            };


            Post[parentSpace + "/createUser", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                int    socialType = (int)payload["socialType"];
                string socialID   = (string)payload["socialID"];
                string nickUtf8   = (string)payload["nick"];

                Encoding enc = new UTF32Encoding(true, true);
                //System.Text.Encoding utf8 = System.Text.Encoding.UTF8;
                string nick = System.Net.WebUtility.UrlDecode(nickUtf8);
                //string picurl = (string)payload["picurl"];

                Random r         = new Random();
                int    imgNumber = r.Next(1, 72);
                string picurl    = String.Format("/img/avatar/default/avartar_{0:00}.png", imgNumber);

                string email = (string)payload["email"];
                string pw    = (string)payload["pw"];

                pw = Utils.DecryptStringAES(pw);
                pw = Utils.GetMD5Hash(pw);

                bool isValidEmail = true;
                if (socialType == 0)
                {
                    isValidEmail = isValidEmail && Utils.IsValidEmail(socialID);
                }
                ;
                isValidEmail = isValidEmail && Utils.IsValidEmail(email);
                if (!isValidEmail)
                {
                    return(new WebException("ApiError_InvalidEmail", (int)ErrorCode.ApiError_InvalidEmail));
                }

                int  createResult = -1;
                Task t            = Task.Run(() => {
                    createResult = dbhandler.sp_createuser(socialType, socialID, nick, picurl, email, pw);
                });
                await t;
                if (createResult != 0)
                {
                    return(new WebException("Create failed", createResult));
                }

                return(new WebOK());
            };

            Post[parentSpace + "/deleteUser", true] = async(parameters, ctor) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                string      authToken = (string)payload["authtoken"];
                DBLoginInfo loginInfo = null;

                Task taskCheckLogin = Task.Run(() => {
                    loginInfo = dbhandler.sp_validtoken(authToken, 1);
                });
                await taskCheckLogin;

                if (loginInfo == null)
                {
                    return(new WebException("Login failed", 401));
                }

                string firstID = loginInfo.SocialID.Split('@')[0].Substring(0, 5);
                if (firstID == "guest")
                {
                    return(new WebException("Cant't delete guest", 401));
                }

                int  deleteResult = -1;
                Task deleteUser   = Task.Run(() =>
                {
                    deleteResult = dbhandler.sp_deleteuser(loginInfo.SocialType, loginInfo.SocialID);
                });
                await deleteUser;

                if (deleteResult != 0)
                {
                    return(new WebException("Deleted failed", 500));
                }

                return(new WebOK());
            };

            Post[parentSpace + "/loginUser", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                int    socialType = (int)payload["socialType"];
                string socialID   = (string)payload["socialID"];
                string pw         = (string)payload["pw"];
                if (socialType != 0)
                {
                    return(new WebException("ApiError_NotAlow SocialLogin", 401));
                }
                pw = Utils.DecryptStringAES(pw);
                pw = Utils.GetMD5Hash(pw);

                bool isValidEmail = true;
                if (socialType == 0)
                {
                    isValidEmail = isValidEmail && Utils.IsValidEmail(socialID);
                }
                ;
                if (!isValidEmail)
                {
                    return(new WebException("ApiError_InvalidEmail", (int)ErrorCode.ApiError_InvalidEmail));
                }

                LoginOK result = null;
                Task    t      = Task.Run(() => {
                    result = dbhandler.sp_loginuser(socialType, socialID, pw);
                });
                await t;
                return(result);
            };

            Post[parentSpace + "/loginUserSocial", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                int    socialType = (int)payload["socialType"];
                string authToken  = (string)payload["authToken"];
                if (socialType == 0)
                {
                    return(new WebException("ApiError_NotAlow NormalLogin", 401));
                }
                LoginOK resultValue = new LoginOK();
                resultValue.statusCode = -401;

                //FB Mode
                if (socialType == 1)
                {
                    DBLoginInfo fbInfo = null;
                    Task        t      = Task.Run(() => {
                        fbInfo = FBAPI.GetUserData(authToken);
                    });
                    await  t;
                    Random r         = new Random();
                    int    imgNumber = r.Next(1, 72);
                    string picurl    = String.Format("/img/avatar/default/avartar_{0:00}.png", imgNumber);
                    if (fbInfo != null)
                    {
                        resultValue = dbhandler.sp_loginSocial(socialType, fbInfo.SocialID, fbInfo.Nick, picurl, fbInfo.Email);
                    }
                }
                return(resultValue);
            };

            Post[parentSpace + "/validate", true] = async(parameters, ct) =>
            {
                IDictionary <string, object> payload = GetPayLoad();
                string      authToken = (string)payload["authtoken"];
                DBLoginInfo loginInfo = null;

                Task t = Task.Run(() => {
                    loginInfo = dbhandler.sp_validtoken(authToken, 1);
                });
                await t;

                if (loginInfo == null)
                {
                    return(new WebException("Login failed", 401));
                }
                return(loginInfo.ToString());
            };

            Post["/test2/{id}/add/{category}"] = parameters => {
                return("post test");
            };
        }
Exemplo n.º 5
0
 private void BtnOK_Click(object sender, System.Windows.RoutedEventArgs e)
 {
     LoginOK?.Invoke(this, new LoginEventAgrs(txtPassword.Password, txtUsername.Text));
 }