protected override void DataOperation()
        {
            try
            {
                using (var db = new retrospyContext())
                {
                    var result = from u in db.Users
                                 join p in db.Profiles on u.Userid equals p.Userid
                                 join n in db.Subprofiles on p.Profileid equals n.Profileid
                                 //According to FSW partnerid is not nessesary
                                 where u.Email == _recv["email"] &&
                                 n.Gamename == _recv["gamename"] &&
                                 n.Namespaceid == _namespaceid
                                 select p.Profileid;

                    if (result.Count() == 0)
                    {
                        _sendingBuffer = @"\vr\0\final\";
                    }
                    else if (result.Count() == 1)
                    {
                        _sendingBuffer = @"\vr\1\final\";
                    }
                }
            }
            catch
            {
                _errorCode = GPErrorCode.DatabaseError;
            }
        }
Beispiel #2
0
        protected override void DataOperation(GStatsSession session, Dictionary <string, string> recv)
        {
            using (var db = new retrospyContext())
            {
                var result = from p in db.Pstorage
                             where p.Profileid == _profileid && p.Dindex == _dindex && p.Ptype == _ptype
                             select p;

                Pstorage ps;
                if (result.Count() == 0)
                {
                    //insert a new record in database
                    ps           = new Pstorage();
                    ps.Dindex    = _dindex;
                    ps.Profileid = _profileid;
                    ps.Ptype     = _ptype;
                    ps.Data      = _keyValueStr;
                    db.Pstorage.Add(ps);
                }
                else if (result.Count() == 1)
                {
                    //update an existed record in database
                    ps      = result.First();
                    ps.Data = _keyValueStr;
                }

                db.SaveChanges();
            }
        }
        protected override void DataOperation()
        {
            uint[] opids = _recv["opids"].TrimStart('|').Split('|').Select(uint.Parse).ToArray();

            try
            {
                using (var db = new retrospyContext())
                {
                    _sendingBuffer = @"\otherslist\";

                    foreach (var pid in opids)
                    {
                        var result = from n in db.Subprofiles
                                     where n.Profileid == pid && n.Namespaceid == _namespaceid
                                     select new { uniquenick = n.Uniquenick };

                        var info = result.FirstOrDefault();

                        _sendingBuffer += $@"\o\{pid}";
                        _sendingBuffer += $@"\uniquenick\{info.uniquenick}";
                    }

                    _sendingBuffer += @"oldone\final\";
                }
            }
            catch
            {
                _errorCode = GPErrorCode.DatabaseError;
            }
        }
        private void AuthtokenLogin()
        {
            using (var db = new retrospyContext())
            {
                var info = from u in db.Users
                           join p in db.Profiles on u.Userid equals p.Userid
                           join n in db.Subprofiles on p.Profileid equals n.Profileid
                           where n.Authtoken == _session.UserData.AuthToken &&
                           n.Partnerid == _session.UserData.PartnerID &&
                           n.Namespaceid == _session.UserData.NamespaceID
                           select new LoginDBResult
                {
                    Email             = u.Email,
                    UserID            = u.Userid,
                    ProfileID         = p.Profileid,
                    SubProfileID      = n.Subprofileid,
                    Nick              = p.Nick,
                    UniqueNick        = n.Uniquenick,
                    PasswordHash      = u.Password,
                    NamespaceID       = n.Namespaceid,
                    EmailVerifiedFlag = (bool)u.Emailverified,
                    BannedFlag        = u.Banned
                };

                if (info.Count() != 1)
                {
                    _errorCode = GPError.LoginBadPreAuth;
                    return;
                }
                _result = info.First();
            }
        }
Beispiel #5
0
        private void UniquenickLogin()
        {
            using (var db = new retrospyContext())
            {
                var info = from n in db.Subprofiles
                           join p in db.Profiles on n.Profileid equals p.Profileid
                           join u in db.Users on p.Userid equals u.Userid
                           where n.Uniquenick == _session.UserInfo.UniqueNick &&
                           n.Namespaceid == _session.UserInfo.NamespaceID
                           select new
                {
                    userid        = u.Userid,
                    profileid     = p.Profileid,
                    uniquenick    = n.Uniquenick,
                    password      = u.Password,
                    emailVerified = u.Emailverified,
                    blocked       = u.Banned
                };

                if (info.Count() != 1)
                {
                    _errorCode = GPErrorCode.LoginBadUniquenick;
                    return;
                }
                _session.UserInfo.Userid          = info.First().userid;
                _session.UserInfo.Profileid       = info.First().profileid;
                _session.UserInfo.UniqueNick      = info.First().uniquenick;
                _session.UserInfo.PasswordHash    = info.First().password;
                _session.UserInfo.IsEmailVerified = (bool)info.First().emailVerified;
                _session.UserInfo.IsBlocked       = info.First().blocked;
            }
        }
        protected override void DataOperation()
        {
            if (_session.UserInfo.BlockListSent)
            {
                return;
            }

            _session.UserInfo.BlockListSent = true;

            using (var db = new retrospyContext())
            {
                var buddies = db.Blocked.Where(
                    f => f.Profileid == _session.UserInfo.Profileid &&
                    f.Namespaceid == _session.UserInfo.NamespaceID);
                //if (buddies.Count() == 0)
                //{
                //    _sendingBuffer = @"\blk\0\list\\final\";
                //    return;
                //}
                _sendingBuffer = @"\blk\" + buddies.Count() + @"\list\";
                foreach (var b in buddies)
                {
                    _sendingBuffer += b.Profileid;

                    if (b != buddies.Last())
                    {
                        _sendingBuffer += @",";
                    }
                }
                _sendingBuffer += @"\final\";
            }
        }
        protected override void DataOperation()
        {
            using (var db = new retrospyContext())
            {
                var result = from b in db.Friends
                             where b.Profileid == _request.ProfileID && b.Namespaceid == _request.NamespaceID
                             select b.Targetid;

                foreach (var info in result)
                {
                    var b = from p in db.Profiles
                            join n in db.Subprofiles on p.Profileid equals n.Profileid
                            join u in db.Users on p.Userid equals u.Userid
                            where n.Namespaceid == _request.NamespaceID &&
                            n.Profileid == info && n.Gamename == _request.GameName
                            select new OthersHandlerDataModel
                    {
                        Profileid  = p.Profileid,
                        Nick       = p.Nick,
                        Uniquenick = n.Uniquenick,
                        Lastname   = p.Lastname,
                        Firstname  = p.Firstname,
                        Userid     = u.Userid,
                        Email      = u.Email
                    };

                    _result.Add(b.First());
                }
            }
        }
        public void NickAndEmailLogin()
        {
            using (var db = new retrospyContext())
            {
                var result = from u in db.Users
                             join p in db.Profiles on u.Userid equals p.Userid
                             where u.Email == _request.Email &&
                             p.Nick == _request.NickName &&
                             u.Password == _password
                             select new
                {
                    userid        = u.Userid,
                    profileid     = p.Profileid,
                    emailVerified = u.Emailverified,
                    banned        = u.Banned
                };

                if (result.Count() != 1)
                {
                    _errorCode = ChatError.DataOperation;
                    return;
                }
                _profileid = result.First().profileid;
                _userid    = result.First().userid;
            }
        }
        protected override void DataOperation()
        {
            using (var db = new retrospyContext())
            {
                if (db.Users.Where(e => e.Email == _recv["email"]).Count() < 1)
                {
                    _errorCode = GPErrorCode.CheckBadMail;
                    return;
                }

                if (db.Users.Where(u => u.Email == _recv["email"] && u.Password == _recv["passenc"]).Count() < 1)
                {
                    _errorCode = GPErrorCode.CheckBadPassword;
                    return;
                }

                var result = from p in db.Profiles
                             join u in db.Users on p.Userid equals u.Userid
                             where u.Email.Equals(_recv["email"])
                             && u.Password.Equals(_recv["passenc"])
                             && p.Nick.Equals(_recv["nick"])
                             select p.Profileid;

                if (result.Count() == 1)
                {
                    _sendingBuffer = @$"\cur\0\pid\{result.FirstOrDefault()}\final\";
                }
        protected override void DataOperation()
        {
            try
            {
                using (var db = new retrospyContext())
                {
                    var result = from u in db.Users
                                 join p in db.Profiles on u.Userid equals p.Userid
                                 join n in db.Subprofiles on p.Profileid equals n.Profileid
                                 where u.Email == _request.Email &&
                                 u.Password == _request.Password &&
                                 n.Namespaceid == _request.NamespaceID
                                 select new NickHandlerDataModel {
                        Nick = p.Nick, Uniquenick = n.Uniquenick
                    };

                    //we store data in strong type so we can use in next step
                    _result = result.ToList();
                }
            }
            catch
            {
                _errorCode = GPError.DatabaseError;
            }
        }
        protected override void DataOperation()
        {
            using (var db = new retrospyContext())
            {
                Profiles profile = db.Profiles.Where(
                    p => p.Userid == _session.UserData.UserID &&
                    p.Profileid == _session.UserData.ProfileID &&
                    p.Nick == p.Nick).First();

                Users user = db.Users.Where(
                    u => u.Userid == _session.UserData.UserID).First();

                Subprofiles subprofile = db.Subprofiles.Where(
                    s => s.Profileid == _session.UserData.ProfileID &&
                    s.Namespaceid == _session.UserData.NamespaceID &&
                    s.Uniquenick == _session.UserData.UniqueNick).First();

                if (_request.HasPublicMaskFlag)
                {
                    profile.Publicmask = (int)_request.PublicMask;
                }
                if (_request.HasFirstNameFlag)
                {
                    profile.Firstname = _request.FirstName;
                }
                if (_request.HasLastNameFlag)
                {
                    profile.Lastname = _request.LastName;
                }
                if (_request.HasICQFlag)
                {
                    profile.Icquin = _request.ICQUIN;
                }
                if (_request.HasHomePageFlag)
                {
                    profile.Homepage = _request.HomePage;
                }
                if (_request.HasBirthdayFlag)
                {
                    profile.Birthday   = _request.BirthDay;
                    profile.Birthmonth = _request.BirthMonth;
                    profile.Birthyear  = _request.BirthYear;
                }
                if (_request.HasSexFlag)
                {
                    profile.Sex = _request.Sex;
                }

                if (_request.HasZipCode)
                {
                    profile.Zipcode = _request.ZipCode;
                }
                if (_request.HasCountryCode)
                {
                    profile.Countrycode = _request.CountryCode;
                }

                db.Update(profile);
            }
        }
Beispiel #12
0
 protected override void DataOperation()
 {
     using (var db = new retrospyContext())
     {
         foreach (var id in _request.Namespaces)
         {
             var result = from p in db.Profiles
                          join n in db.Subprofiles on p.Profileid equals n.Profileid
                          join u in db.Users on p.Userid equals u.Userid
                          where n.Uniquenick == _request.Uniquenick &&
                          n.Namespaceid == id
                          select new SearchUniqueDBResult
             {
                 Profileid   = n.Profileid,
                 Nick        = p.Nick,
                 Uniquenick  = n.Uniquenick,
                 Email       = u.Email,
                 Firstname   = p.Firstname,
                 Lastname    = p.Lastname,
                 NamespaceID = n.Namespaceid
             };
             _result = result.ToList();
         }
     }
 }
Beispiel #13
0
        protected override void DataOperation()
        {
            try
            {
                using (var db = new retrospyContext())
                {
                    var players = from u in db.Users
                                  join p in db.Profiles on u.Userid equals p.Userid
                                  join n in db.Subprofiles on p.Profileid equals n.Profileid
                                  where u.Email == _recv["email"] && u.Password == _recv["passenc"] && n.Namespaceid == _namespaceid
                                  select new { nick = p.Nick, uniquenick = n.Uniquenick };

                    if (players.Count() == 0)
                    {
                        _errorCode = GPErrorCode.CheckBadPassword;
                    }

                    _sendingBuffer = @"\nr\";

                    foreach (var info in players)
                    {
                        _sendingBuffer += @"\nick\";
                        _sendingBuffer += info.nick;
                        _sendingBuffer += @"\uniquenick\";
                        _sendingBuffer += info.uniquenick;
                    }

                    _sendingBuffer += @"\ndone\final\";
                }
            }
            catch
            {
                _errorCode = GPErrorCode.DatabaseError;
            }
        }
Beispiel #14
0
        private void UpdateOtherInfo()
        {
            using (var db = new retrospyContext())
            {
                if (_request.HasPartnerIDFlag)
                {
                    _subProfile.Partnerid = _request.PartnerID;
                }

                if (_request.HasProductIDFlag)
                {
                    _subProfile.Productid = _request.ProductID;
                }

                if (_request.HasGameNameFlag)
                {
                    _subProfile.Gamename = _request.GameName;
                }

                if (_request.HasGamePortFlag)
                {
                    _subProfile.Port = _request.GamePort;
                }

                if (_request.HasCDKeyEncFlag)
                {
                    _subProfile.Cdkeyenc = _request.CDKeyEnc;
                }

                db.Subprofiles.Update(_subProfile);
                db.SaveChanges();
            }
        }
        protected override void DataOperation()
        {
            using (var db = new retrospyContext())
            {
                if (db.Users.Where(e => e.Email == _request.Email).Count() < 1)
                {
                    _errorCode = GPError.CheckBadMail;
                    return;
                }

                if (db.Users.Where(u => u.Email == _request.Email && u.Password == _request.Password).Count() < 1)
                {
                    _errorCode = GPError.CheckBadPassword;
                    return;
                }

                var result = from p in db.Profiles
                             join u in db.Users on p.Userid equals u.Userid
                             where u.Email.Equals(_request.Email)
                             && u.Password.Equals(_request.Password)
                             && p.Nick.Equals(_request.Nick)
                             select p.Profileid;

                if (result.Count() == 1)
                {
                    _profileid = result.First();
                }
                else
                {
                    _errorCode = GPError.CheckBadNick;
                }
            }
        }
Beispiel #16
0
        protected override void DataOperation()
        {
            using (var db = new retrospyContext())
            {
                var result = from p in db.Pstorage
                             where p.Profileid == _request.ProfileID &&
                             p.Dindex == _request.DataIndex &&
                             p.Ptype == (uint)_request.StorageType
                             select p;

                Pstorage ps;
                if (result.Count() == 0)
                {
                    //insert a new record in database
                    ps           = new Pstorage();
                    ps.Dindex    = _request.DataIndex;
                    ps.Profileid = _request.ProfileID;
                    ps.Ptype     = (uint)_request.StorageType;
                    ps.Data      = _request.KeyValueString;
                    db.Pstorage.Add(ps);
                }
                else if (result.Count() == 1)
                {
                    //update an existed record in database
                    ps      = result.First();
                    ps.Data = _request.KeyValueString;
                }

                db.SaveChanges();
            }
        }
        protected override void DataOperation()
        {
            //search database for user's password
            //We do not store user's plaintext password, so we can not check this response
            using (var db = new retrospyContext())
            {
                switch (_request.RequestType)
                {
                case AuthMethod.PartnerIDAuth:
                    FindProfileByAuthtoken();
                    break;

                case AuthMethod.ProfileIDAuth:
                    //even if we do not check response challenge
                    //we have to check the pid is in our databse
                    FindProfileByProfileid();
                    break;

                case AuthMethod.CDkeyAuth:
                    FrindProfileByCDKeyHash();
                    break;

                default:
                    _errorCode = GSError.Database;
                    break;
                }
            }
        }
 public void UniqueNickLogin()
 {
     using (var db = new retrospyContext())
     {
         var result = from n in db.Subprofiles
                      join p in db.Profiles on n.Profileid equals p.Profileid
                      join u in db.Users on p.Userid equals u.Userid
                      where n.Uniquenick == _request.UniqueNick &&
                      n.Namespaceid == _request.NameSpaceID
                      select new
         {
             userid        = u.Userid,
             profileid     = p.Profileid,
             uniquenick    = n.Uniquenick,
             emailVerified = u.Emailverified,
             banned        = u.Banned
         };
         if (result.Count() != 1)
         {
             _errorCode = ChatError.DataOperation;
             return;
         }
         _profileid = result.First().profileid;
         _userid    = result.First().userid;
     }
 }
        private void UpdateOtherInfo(Dictionary <string, string> _recv)
        {
            using (var db = new retrospyContext())
            {
                uint partnerid;

                if (_recv.ContainsKey("partnerid"))
                {
                    if (uint.TryParse(_recv["partnerid"], out partnerid))
                    {
                        _subProfiles.Partnerid = partnerid;
                    }
                    else
                    {
                        _errorCode = GPErrorCode.Parse;
                    }
                }

                uint productid;

                if (_recv.ContainsKey("productid"))
                {
                    if (uint.TryParse(_recv["productid"], out productid))
                    {
                        _subProfiles.Productid = productid;
                    }
                    else
                    {
                        _errorCode = GPErrorCode.Parse;
                    }
                }

                if (_recv.ContainsKey("gamename"))
                {
                    _subProfiles.Gamename = _recv["gamename"];
                }

                uint port;

                if (_recv.ContainsKey("port"))
                {
                    if (uint.TryParse(_recv["port"], out port))
                    {
                        _subProfiles.Port = port;
                    }
                    else
                    {
                        _errorCode = GPErrorCode.Parse;
                    }
                }

                if (_recv.ContainsKey("cdkeyenc"))
                {
                    _subProfiles.Cdkeyenc = _recv["cdkeyenc"];
                }
                db.Subprofiles.Update(_subProfiles);
                db.SaveChanges();
            }
        }
 protected override void DataOperation()
 {
     base.DataOperation();
     using (var db = new retrospyContext())
     {
         _profileIDList = db.Blocked
                          .Where(f => f.Profileid == _session.UserData.ProfileID &&
                                 f.Namespaceid == _session.UserData.NamespaceID)
                          .Select(f => f.Targetid).ToList();
     }
 }
Beispiel #21
0
        protected override void DataOperation()
        {
            using (var db = new retrospyContext())
            {
                //we have to make sure the search target has the same namespaceID
                var result = from p in db.Profiles
                             join s in db.Subprofiles on p.Profileid equals s.Profileid
                             join u in db.Users on p.Userid equals u.Userid
                             where p.Profileid == _request.ProfileID &&
                             s.Namespaceid == _session.UserData.NamespaceID
                             select new GetProfileDBResult
                {
                    Nick           = p.Nick,
                    ProfileID      = p.Profileid,
                    UniqueNick     = s.Uniquenick,
                    Email          = u.Email,
                    Firstname      = p.Firstname,
                    Lastname       = p.Lastname,
                    Icquin         = p.Icquin,
                    Homepage       = p.Homepage,
                    Zipcode        = p.Zipcode,
                    Countrycode    = p.Countrycode,
                    Longitude      = p.Longitude,
                    Latitude       = p.Latitude,
                    Location       = p.Location,
                    Birthday       = p.Birthday,
                    Birthmonth     = p.Birthmonth,
                    Birthyear      = p.Birthyear,
                    Sex            = p.Sex,
                    Publicmask     = p.Publicmask,
                    Aim            = p.Aim,
                    Picture        = p.Picture,
                    Occupationid   = p.Occupationid,
                    Industryid     = p.Industryid,
                    Incomeid       = p.Incomeid,
                    Marriedid      = p.Marriedid,
                    Childcount     = p.Childcount,
                    Interests1     = p.Interests1,
                    Ownership1     = p.Ownership1,
                    Connectiontype = p.Connectiontype,
                };

                if (result.Count() == 0)
                {
                    _errorCode = GPError.DatabaseError;
                    return;
                }

                _result = result.First();
            }
        }
Beispiel #22
0
 private void FindProfileByProfileid(Dictionary <string, string> recv)
 {
     using (var db = new retrospyContext())
     {
         var result = from p in db.Profiles
                      where p.Profileid == _profileid
                      select p.Profileid;
         if (result.Count() != 1)
         {
             _errorCode = GstatsErrorCode.Database;
             return;
         }
         _profileid = result.First();
     }
 }
Beispiel #23
0
 private void FindProfileByAuthtoken(Dictionary <string, string> recv)
 {
     using (var db = new retrospyContext())
     {
         var result = from s in db.Subprofiles
                      where s.Authtoken == recv["authtoken"]
                      select s.Profileid;
         if (result.Count() != 1)
         {
             _errorCode = GstatsErrorCode.Database;
             return;
         }
         _profileid = result.First();
     }
 }
 protected override void DataOperation()
 {
     using (var db = new retrospyContext())
     {
         var result = from f in db.Friends
                      where f.Profileid == _request.DeleteProfileID && f.Namespaceid == _session.UserData.NamespaceID
                      select f;
         if (result.Count() != 1)
         {
             _errorCode = GPError.DatabaseError;
             return;
         }
         db.Friends.Remove(result.FirstOrDefault());
     }
 }
 private void FindProfileByProfileid()
 {
     using (var db = new retrospyContext())
     {
         var result = from p in db.Profiles
                      where p.Profileid == _request.ProfileID
                      select p.Profileid;
         if (result.Count() != 1)
         {
             _errorCode = GSError.Database;
             return;
         }
         _profileID = result.First();
     }
 }
 private void FindProfileByAuthtoken()
 {
     using (var db = new retrospyContext())
     {
         var result = from s in db.Subprofiles
                      where s.Authtoken == _request.AuthToken
                      select s.Profileid;
         if (result.Count() != 1)
         {
             _errorCode = GSError.Database;
             return;
         }
         _profileID = result.First();
     }
 }
 protected override void DataOperation()
 {
     try
     {
         using (var db = new retrospyContext())
         {
             db.Subprofiles.Where(s => s.Profileid == _session.UserInfo.Profileid && s.Namespaceid == _session.UserInfo.NamespaceID)
             .First().Uniquenick = _recv["uniquenick"];
             db.SaveChanges();
         }
     }
     catch (Exception)
     {
         _errorCode = GPErrorCode.DatabaseError;
     }
 }
Beispiel #28
0
 protected override void DataOperation()
 {
     using (var db = new retrospyContext())
     {
         var result = from p in db.Profiles
                      join s in db.Subprofiles on p.Profileid equals s.Profileid
                      where s.Cdkeyenc == _request.KeyHash && p.Nick == _request.Nick
                      select s.Profileid;
         if (result.Count() != 1)
         {
             _errorCode = GSError.Database;
             return;
         }
         _protileid = result.First();
     }
 }
 protected override void DataOperation()
 {
     try
     {
         using (var db = new retrospyContext())
         {
             db.Subprofiles.Where(s => s.Subprofileid == _session.UserData.SubProfileID)
             .FirstOrDefault().Uniquenick = _request.UniqueNick;
             db.SaveChanges();
         }
     }
     catch
     {
         _errorCode = GPError.DatabaseError;
     }
 }
 private void FrindProfileByCDKeyHash()
 {
     using (var db = new retrospyContext())
     {
         var result = from s in db.Subprofiles
                      join p in db.Profiles on s.Profileid equals p.Profileid
                      where s.Cdkeyenc == _request.KeyHash && p.Nick == _request.Nick
                      select s.Profileid;
         if (result.Count() != 1)
         {
             _errorCode = GSError.Database;
             return;
         }
         _profileID = result.First();
     }
 }