void Save() { StartSession(); var realname = Form.Find("Realname"); var birth = Form.Find("Birth"); var gender = Form.Find <int>("Gender"); var phone = Form.Find("Phone"); var account = JsonSerializer.Deserialize <Account>(Session["account"]); account = RowAdapter.Load <Account>(p => p.ID == account.ID).FirstOrDefault(); if (account == null) { WrapResult(false, "save fail!"); return; } account.Realname = realname; account.Birth = DateTime.Parse(birth); account.Gender = (Gender)gender; account.Phone = phone; account.Save(); Session["account"] = JsonSerializer.Serialize(account); WrapResult(true, "save success!"); }
void Refresh() { var token = Form.Find("refresh_token"); var access = RowAdapter.LoadFirstOrDefault <Access>(p => p.RefreshToken == token); if (access == null) { WrapResult(false, "invaild access!"); return; } access.Refresh(); access.Save(); if (!access.Available) { WrapResult(false, "invaild access!"); return; } var json = new JsonObject(); json["access_token"] = access.AccessToken; json["expires_in"] = (access.DeathLine - DateTime.Now).TotalSeconds; WrapResult(true, json); }
public RoomModel(DataRow Row) { using (RowAdapter Adapter = new RowAdapter(Row)) { this.Id = Adapter.PopInt32("id"); this.Caption = Adapter.PopString("caption"); this.Map = Adapter.PopString("map").Replace(((char)10).ToString(),string.Empty); this.LocationDoorX = Adapter.PopInt32("location_door_x"); this.LocationDoorY = Adapter.PopInt32("location_door_y"); this.LocationDoorZ = Adapter.PopInt32("location_door_z"); this.LocationDoorRotation = Adapter.PopInt32("location_door_rotation"); this.MaximalUnits = Adapter.PopInt32("maximal_units"); this.RequiredMembership = Adapter.PopEnum<Membership>("required_membership"); } this.Nodes = new List<TileNode>(); for (int y = 0; y < this.Map.Split((char)13).Length; y++) { var Line = this.Map.Split((char)13)[y]; for (int x = 0; x < Line.Length; x++) { char Item = Line[x]; TileNode Node = new TileNode(Item, x, y); Nodes.Add(Node); } } this.ParametersWithDoor = GetParametersWithDoor(); this.ParametersWithOutDoor = GetParametersWithOutDoor(); }
public Achievement(DataRow Row) { using (RowAdapter Adapter = new RowAdapter(Row)) { Id = Adapter.PopInt32("id"); CategoryId = Adapter.PopInt32("category_id"); BadgeId = Adapter.PopInt32("badge_id"); PixelReward = Adapter.PopInt32("pixel_reward"); ScoreReward = Adapter.PopInt32("score_reward"); PixelMultiply = Adapter.PopDouble("pixel_multiply"); ScoreMultiply = Adapter.PopDouble("score_multiply"); EnableBadgeBuilding = Adapter.PopBoolean("enable_bagde_building"); } Limits = new Dictionary<int, int>(); foreach (DataRow LimitRow in System.MySQLManager.GetObject(new AchievementLimitsQuery(Id)).GetOutput<DataTable>().Rows) { using (RowAdapter Adapter = new RowAdapter(LimitRow)) { int Level = Adapter.PopInt32("level"); int Limit = Adapter.PopInt32("required"); if (Limit < 0) { Limit = 1; } if (!Limits.ContainsKey(Level)) { Limits.Add(Level, Limit); } } } }
void UserInfo() { var token = Form.Find("access_token"); var access = RowAdapter.LoadFirstOrDefault <Access>(p => p.AccessToken == token); if (access == null) { WrapResult(false, "invaild access_token!"); return; } if (!access.Available) { WrapResult(false, "access_token expire!"); return; } var account = RowAdapter.LoadFirstOrDefault <Account>(p => p.ID == access.OwnerID); var json = new JsonObject(); json["app_id"] = access.AppID; json["open_id"] = account.OpenID; json["nick_name"] = account.Nickname; json["real_name"] = account.Realname; json["gender"] = account.Gender; json["phone"] = account.Phone; WrapResult(true, json); }
void AppInfo() { long appID; if (!Form.TryGet("app_id", out appID)) { WrapResult(false, "invalid param!"); return; } var app = RowAdapter.LoadFirstOrDefault <App>(p => p.ID == appID && p.Deleted == false); if (app == null) { WrapResult(false, "not found app!"); return; } var json = new JsonObject(); json["name"] = app.Name; json["domain"] = app.Domain; json["icon"] = app.IconURL; WrapResult(true, json); }
void Update() { var id = Form.Find <long>("ID"); var account = RowAdapter.LoadFirstOrDefault <Account>(p => p.ID == id && p.Deleted == false); if (account == null) { WrapResult(false, "未找到指定账号!"); return; } var view = EntitySchemaManager.GetSchema <Account>(true); foreach (var column in view.Columns) { string str; if (Form.TryGet(column.Name, out str)) { var json = Json.Parse(str); var value = JsonSerializer.Deserialize(json, column.PropertyType); column.SetValue(account, value); } } account.Save(); var myaccount = JsonSerializer.Deserialize <Account>(Session["account"]); if (account.ID == myaccount.ID) { Session["account"] = JsonSerializer.Serialize(account); } WrapResult(true, FromAccount(account)); }
public Character(DataRow Row) { using (RowAdapter Adapter = new RowAdapter(Row)) { this.Id = Adapter.PopInt32("id"); this.Username = Adapter.PopString("username"); this.Motto = Adapter.PopString("motto"); this.Figure = Adapter.PopString("figure"); this.Registered = Adapter.PopString("registered_stamp"); this.LastSeen = Adapter.PopString("last_seen"); this.Gender = Adapter.PopEnum<Gender>("gender"); this.Muted = Adapter.PopBoolean("muted"); this.AllowNewFriends = Adapter.PopBoolean("allow_new_friends"); this.Rank = System.HabboSystem.CharacterManager.GetRank(Adapter.PopInt32("rank")); this.Credits = Adapter.PopInt32("credits"); this.ActivityPoints = Adapter.PopInt32("activity_points"); this.SoundSettings = Adapter.PopInt32("sound_settings"); this.TimeOnline = Adapter.PopInt32("time_online"); this.HomeRoom = Adapter.PopInt32("home_room"); this.RespectEarned = Adapter.PopInt32("respect_earned"); this.RespectGiven = Adapter.PopInt32("respect_given"); this.RespectLeftHuman = Adapter.PopInt32("respect_left_human"); this.RespectLeftAnimal = Adapter.PopInt32("respect_left_animal"); this.LoadingRoom = 0; this.ConnectedRoom = 0; } }
public BadgeInformation(DataRow Row) { using (RowAdapter Adapter = new RowAdapter(Row)) { Id = Adapter.PopInt32("id"); BadgeCode = Adapter.PopString("badge_code"); } }
void GetFirendList() { var token = Form.Find("access_token"); var openStrings = Form.Find("opens"); JsonArray opens; if (!Json.TryParse <JsonArray>(openStrings, out opens)) { WrapResult(false, "invaild param: opens!"); return; } if (string.IsNullOrEmpty(token)) { WrapResult(false, "nvaild param: access_token"); return; } if (opens.Count == 0) { WrapResult(false, "opens length error!"); return; } var access = RowAdapter.LoadFirstOrDefault <Access>(p => p.AccessToken == token); if (access == null) { WrapResult(false, "invaild access_token!"); return; } if (!access.Available) { WrapResult(false, "access_token expire!"); return; } var view = EntitySchemaManager.GetSchema <Account>(true); var dbProvider = DbFactory.Gain(view.ConnectKey); var commandStruct = dbProvider.CreateCommand <Account>(view.Name, DbCommandMode.Select); var member = SqlExpression.Member(view.Columns.First(p => p.Name == "OpenID").Name); var newArray = SqlExpression.NewArray(opens.Select(p => SqlExpression.Constant((string)p)).ToArray()); commandStruct.Condition = SqlExpression.In(member, newArray); var accounts = RowAdapter.Load <Account>(dbProvider, commandStruct); var array = new JsonArray(); foreach (var account in accounts) { var json = new JsonObject(); json["open_id"] = account.OpenID; json["nick_name"] = account.Nickname; json["real_name"] = account.Realname; json["gender"] = account.Gender; json["available"] = account.Available; array.Add(json); } WrapResult(true, array); }
public CharacterRank(DataRow Row) { using (RowAdapter Adapter = new RowAdapter(Row)) { this.Id = Adapter.PopInt32("id"); this.Caption = Adapter.PopString("caption"); this.ShowCaptionInGame = Adapter.PopBoolean("show_caption_ingame"); } }
public Character(DataRow Row) { using (var Adapter = new RowAdapter(Row)) { this.Id = Adapter.Get<int>("id"); this.Username = Adapter.Get<string>("username"); this.ActivityPoints = Adapter.Get<int>("activity_points"); this.Credits = Adapter.Get<int>("credits"); } }
void List() { var appList = RowAdapter.Load <App>(p => p.OwnerID == _account.ID && p.Deleted == false); var arrayForApp = new JsonArray(); foreach (var app in appList) { var json = JsonSerializer.Serialize(app); arrayForApp.Add(json); } WrapResult(true, arrayForApp); }
public Room(DataRow Row) { using (RowAdapter Adapter = new RowAdapter(Row)) { this.Id = Adapter.PopInt32("id"); this.Caption = Adapter.PopString("caption"); this.Description = Adapter.PopString("description"); this.CharacterId = Adapter.PopInt32("character_id"); this.ModelId = Adapter.PopInt32("model_id"); this.DoorState = Adapter.PopEnum<DoorState>("door_state"); this.Password = Adapter.PopString("password"); } }
void Delete() { var id = Form.Find <long>("id"); var account = RowAdapter.Load <Account>(p => p.Deleted == false && p.ID == id).FirstOrDefault(); if (account == null) { WrapResult(false, "指定帐号不存在!"); return; } account.Delete(); WrapResult(true); }
void List() { var account = JsonSerializer.Deserialize <Account>(Session["account"]); if (account.AdminType <= AdminType.普通) { WrapResult(false, "无权操作!"); return; } var accounts = RowAdapter.Load <Account>(p => p.Deleted == false); WrapResult(true, accounts); }
public override void OnViewCreated(View view, Bundle savedInstanceState) { base.OnViewCreated(view, savedInstanceState); contactList = new List <Row> { new Row("Undef1", "undef1"), new Row("Undef2", "undef2"), new Row("Undef3", "undef3") }; listV = View.FindViewById <ListView>(Resource.Id.listFragment); RowAdapter listAdapter = new RowAdapter(Context, contactList); listV.Adapter = listAdapter; listV.ItemClick += OpenDetails; }
void Delete() { long id = Form.Find <long>("app_id"); var apps = RowAdapter.Load <App>(p => p.OwnerID == _account.ID && p.Deleted == false && p.ID == id); var app = apps.FirstOrDefault(); if (app == null) { WrapResult(false, "not found app id:" + id); return; } app.Delete(); WrapResult(true); }
protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetContentView(Resource.Layout.Main); listV = FindViewById <ListView>(Resource.Id.listFragment); RowAdapter listAdapter = new RowAdapter(this, contactList); listV.Adapter = listAdapter; listV.ItemClick += OpenDetails; var orientation = new DeviceOrientationImplementation(); LinearLayout root = FindViewById <LinearLayout>(CoolLooks.Resource.Id.Root); switch (orientation.GetOrientation()) { case DeviceOrientations.Undefined: throw new Exception(); break; case DeviceOrientations.Landscape: root.Orientation = Orientation.Vertical; break; case DeviceOrientations.Portrait: root.Orientation = Orientation.Horizontal; break; } DetailFragment detailsFragment = new DetailFragment(); var trans = SupportFragmentManager.BeginTransaction(); trans.Replace(Resource.Id.DetailsRoot, detailsFragment, "Details"); Fragments.MyListFragment listFragment = new Fragments.MyListFragment(); var listTrans = SupportFragmentManager.BeginTransaction(); trans.Replace(Resource.Id.ListRoot, listFragment, "List"); }
void New() { var name = Form.Find("app_name"); var domain = Form.Find("app_domain"); var icon = Form.Find("icon"); var app = RowAdapter.Create <App>(); app.OwnerID = _account.ID; app.Name = name; app.Domain = domain; app.IconURL = icon; app.Save(); var json = new JsonObject(); json["ID"] = app.ID; WrapResult(true, json); }
public void Delete() { var id = Form.Find <long>("id"); var invite = RowAdapter.Load <Invite>(p => p.ID == id && p.Deleted == false).FirstOrDefault(); if (invite == null) { WrapResult(ResultCode.InvalidParam, string.Format("not found Invite.ID:{0}", id)); return; } if (!invite.Available) { WrapResult(ResultCode.InvalidAction, "不能删除已使用的邀请码!"); return; } invite.Delete(); WrapResult(ResultCode.OK); }
void Update() { long id = Form.Find <long>("app_id"); var name = Form.Find("app_name"); var domain = Form.Find("app_domain"); var apps = RowAdapter.Load <App>(p => p.OwnerID == _account.ID && p.Deleted == false && p.ID == id); var app = apps.FirstOrDefault(); if (app == null) { WrapResult(false, "not found app id:" + id); return; } app.Name = name; app.Domain = domain; app.Save(); WrapResult(true, FromApp(app)); }
protected override void OnStartup() { var sb = new SqlConnectionStringBuilder(); sb.DataSource = "(local)"; sb.IntegratedSecurity = true; sb.InitialCatalog = "Manager.OAuth"; DbFactory.Register("OAuth", new MsSqlDbProvider(10, sb.ConnectionString)); EntitySchemaManager.LoadAssemblys(new Assembly[] { typeof(App).Assembly }); foreach (var dbProvider in DbFactory.DbProviders) { EntityUtils.CheckCreateDatabase(dbProvider.ConnectionString); } foreach (var view in EntitySchemaManager.Schemas) { EntityUtils.CheckSchema(view); RowAdapter.LoadPrimary(view); } }
public AchievementCategory(DataRow Row) { using (RowAdapter Adapter = new RowAdapter(Row)) { Id = Adapter.PopInt32("id"); Caption = Adapter.PopString("caption"); } Achievements = new Dictionary<int, Achievement>(); foreach (DataRow AchievementRow in System.MySQLManager.GetObject(new AchievementsQuery(Id)).GetOutput<DataTable>().Rows) { Achievement Achievement = new Achievement(AchievementRow); if (!Achievements.ContainsKey(Achievement.Id)) { Achievements.Add(Achievement.Id, Achievement); } } }
public void Build() { var count = Form.Find <int>("count"); if (count <= 0) { WrapResult(ResultCode.InvalidParam, "参数错误!"); return; } var result = new List <Invite>(); for (int i = 0; i < count; i++) { var invite = RowAdapter.Create <Invite>(); result.Add(invite); invite.Save(); } WrapResult(ResultCode.OK, result); }
void ChangePassword() { var oldPassword = Form.Find("old_password"); var newPassword = Form.Find("new_password"); var account = JsonSerializer.Deserialize <Account>(Session["account"]); account = RowAdapter.LoadFirst <Account>(p => p.ID == account.ID); if (account == null) { WrapResult(false, "指定帐号不存在!"); return; } if (!account.Available) { WrapResult(false, "该帐号不可用!"); return; } account.CheckErrorReset(); if (account.TodayErrorTimes >= MaxErrorTimes) { WrapResult(false, "您的账号已被限制登录!"); return; } if (account.Password != oldPassword) { account.TodayErrorTimes++; account.TotalErrorTimes++; account.Save(); WrapResult(false, "密码错误!"); return; } account.Password = newPassword; account.ResetError(); account.Save(); Session["account"] = JsonSerializer.Serialize(account); WrapResult(true, "修改成功"); }
public MessengerGroup(DataRow Row) { using (RowAdapter Adapter = new RowAdapter(Row)) { this.Id = Adapter.PopInt32("id"); this.CharacterId = Adapter.PopInt32("character_id"); this.Caption = Adapter.PopString("caption"); } Members = new List<int>(); foreach (DataRow Member in System.MySQLManager.GetObject(new MessengerGroupMembersQuery(Id)).GetOutput<DataTable>().Rows) { using (RowAdapter Adapter = new RowAdapter(Member)) { int MemberId = Adapter.PopInt32("character_id"); if (!Members.Contains(MemberId)) { Members.Add(MemberId); } } } }
void Login() { var name = Form.Find("account"); var timestamp = Form.Find <long>("timestamp"); var token = Form.Find("token"); if (string.IsNullOrEmpty(name)) { WrapResult(false, "账号不能为空!"); return; } if (string.IsNullOrEmpty(token)) { WrapResult(false, "Token 不能为空!"); return; } var time = DateTimeExtension.ConvertFromTimestamp(timestamp); if (Math.Abs((DateTime.Now - time).TotalSeconds) > Interval.TotalSeconds) { WrapResult(false, "Token 已过期!"); return; } var account = RowAdapter.LoadFirstOrDefault <Account>(p => p.Deleted == false && p.Name == name); if (account == null) { WrapResult(false, "指定帐号不存在!"); return; } if (!account.Available) { WrapResult(false, "该帐号不可用!"); return; } account.CheckErrorReset(); if (account.TodayErrorTimes >= MaxErrorTimes) { WrapResult(false, "您的账号已被限制登录!"); return; } var credentials = new ServerCredentials(account.Password); var authorization = new Framework.Security.Authorization(name, timestamp, token); if (!credentials.Authenticate(authorization)) { account.TodayErrorTimes++; account.TotalErrorTimes++; account.Save(); WrapResult(false, "密码错误!"); return; } if (account.TodayErrorTimes > 0) { account.ResetError(); account.Save(); } StartSession(); Session["has-login"] = true; Session["account"] = JsonSerializer.Serialize(account); WrapResult(true, "ok"); }
public void List() { var list = RowAdapter.Load <Invite>(p => p.Deleted == false); WrapResult(ResultCode.OK, list); }
/// <summary> /// Returns an collection of messengerrequests /// </summary> /// <param name="CharacterId"></param> /// <returns></returns> public ICollection<int> GetMessengerRequests(int CharacterId) { ICollection<int> Output = new List<int>(); foreach (DataRow Row in System.MySQLManager.GetObject(new MessengerRequestsQuery(CharacterId)).GetOutput<DataTable>().Rows) { using (RowAdapter Adapter = new RowAdapter(Row)) { int xCharacterId = Adapter.PopInt32("character_id"); if (!Output.Contains(xCharacterId)) { Output.Add(xCharacterId); } } } return Output; }
/// <summary> /// Gets achievements for an specified character. /// </summary> /// <param name="CharacterId"></param> /// <returns></returns> public Dictionary<int, int> GetCharacterAchievement(int CharacterId) { Dictionary<int, int> Output = new Dictionary<int, int>(); foreach (DataRow Row in System.MySQLManager.GetObject(new CharacterAchievementsQuery(CharacterId)).GetOutput<DataTable>().Rows) { using (RowAdapter Adapter = new RowAdapter(Row)) { int AchievementId = Adapter.PopInt32("achievement_id"); int Progress = Adapter.PopInt32("progress"); if (!Output.ContainsKey(AchievementId)) { Output.Add(AchievementId, Progress); } } } return Output; }
void Login() { string token, name; long appID, timestamp; if (!Form.TryGet("token", out token) || !Form.TryGet("account", out name) || !Form.TryGet("app_id", out appID) || !Form.TryGet("timestamp", out timestamp)) { WrapResult(ResultCode.InvalidParam, "invalid param!"); return; } if (string.IsNullOrEmpty(name)) { WrapResult(ResultCode.InvalidParam, "账号不能为空!"); return; } if (string.IsNullOrEmpty(token)) { WrapResult(ResultCode.InvalidParam, "Token 不能为空!"); return; } var time = DateTimeExtension.ConvertFromTimestamp(timestamp); if (Math.Abs((DateTime.Now - time).TotalSeconds) > Interval.TotalSeconds) { WrapResult(ResultCode.InvalidParam, "Token 已过期!"); return; } var app = RowAdapter.LoadFirstOrDefault <App>(p => p.ID == appID && p.Deleted == false); if (app == null) { WrapResult(ResultCode.InvalidParam, "指定应用未找到!"); return; } if (!app.AccessRestriction.Security(Request.RemoteEndPoint.Address)) { WrapResult(ResultCode.InvalidParam, "限制访问!"); return; } var account = RowAdapter.LoadFirstOrDefault <Account>(p => p.Name == name); if (account == null) { WrapResult(ResultCode.InvalidParam, "指定帐号不存在!"); return; } if (!account.Available) { WrapResult(ResultCode.InvalidAction, "该帐号不可用!"); return; } account.CheckErrorReset(); if (account.TodayErrorTimes >= MaxErrorTimes) { WrapResult(ResultCode.InvalidAction, "您的账号已被限制登录!"); return; } var credentials = new Framework.Security.ServerCredentials(account.Password); var authorization = new Framework.Security.Authorization(name, timestamp, token); if (!credentials.Authenticate(authorization)) { account.TodayErrorTimes++; account.TotalErrorTimes++; account.Save(); WrapResult(ResultCode.InvalidAction, "无效的Token!"); return; } if (string.IsNullOrEmpty(account.Realname)) { WrapResult((byte)ResultError.Incompletion, "帐号信息不完善,请先完善帐号信息!"); return; } var auth = RowAdapter.LoadFirstOrDefault <Authorization>(p => p.OwnerID == account.ID && p.AppID == app.ID); if (auth == null) { auth = RowAdapter.Create <Authorization>(); auth.OwnerID = account.ID; auth.AppID = appID; } else { auth.Reset(); } if (account.TodayErrorTimes > 0) { account.ResetError(); account.Save(); } auth.Save(); var json = new JsonObject(); json["auth_token"] = auth.Token; json["expires_in"] = (auth.DeathLine - DateTime.Now).TotalSeconds; WrapResult(ResultCode.OK, json); }
public ICollection<Room> GetRooms(int CharacterId) { ICollection<Room> Output = new List<Room>(); foreach(DataRow Row in System.MySQLManager.GetObject(new RoomsQuery(CharacterId)).GetOutput<DataTable>().Rows) { using (RowAdapter Adapter = new RowAdapter(Row)) { Room Room = GetRoom(Adapter.PopInt32("id")); Output.Add(Room); } } return Output; }
void New() { var name = Form.Find("user_name"); var password = Form.Find("user_pwd"); var nickname = Form.Find("nick_name"); var realname = Form.Find("realname"); var birth = Form.Find("birth"); var gender = Form.Find <int>("gender"); var phone = Form.Find("phone"); var inviteCode = Form.Find("invite_code"); if (string.IsNullOrEmpty(name)) { WrapResult(false, "账号不能为空!"); return; } if (name.Length > 50) { WrapResult(false, "账号长度不合法!"); return; } if (string.IsNullOrEmpty(password)) { WrapResult(false, "密码不能为空!"); return; } var gbkEncoding = System.Text.Encoding.GetEncoding("GBK"); if (gbkEncoding.GetByteCount(password) > 200) { WrapResult(false, "密码长度不合法!"); return; } if (string.IsNullOrEmpty(nickname)) { WrapResult(false, "昵称不能为空!"); return; } if (nickname.Length > 50) { WrapResult(false, "昵称长度不合法!"); return; } if (string.IsNullOrEmpty(realname)) { WrapResult(false, "实名不能为空!"); return; } if (realname.Length > 5) { WrapResult(false, "实名长度不合法!"); return; } if (string.IsNullOrEmpty(inviteCode)) { WrapResult(false, "邀请码不能为空!"); return; } if (inviteCode.Length != 32) { WrapResult(false, "非法邀请码!"); return; } var invites = RowAdapter.Load <Invite>(p => p.Code == inviteCode); if (invites.Count == 0) { WrapResult(false, "指定邀请码不存在!"); return; } var invite = invites.First(); if (!invite.Available) { WrapResult(false, "无效的邀请码!"); return; } var accounts = RowAdapter.Load <Account>(p => p.Name == name); if (accounts.Count > 0) { WrapResult(false, "指定帐号已存在!"); return; } invite.Available = false; invite.UseTime = DateTime.Now; invite.Account = name; invite.Save(); var account = RowAdapter.Create <Account>(); account.Name = name; account.Password = password; account.Nickname = nickname; account.Realname = realname; account.Birth = DateTime.Parse(birth); account.Gender = (Gender)gender; account.Phone = phone; account.Save(); WrapResult(true, "ok"); }
/// <summary> /// Returns an collection of characterlogs. /// </summary> /// <param name="CharacterId"></param> /// <returns></returns> public ICollection<DateTime> GetCharacterLogs(int CharacterId) { ICollection<DateTime> Output = new List<DateTime>(); foreach (DataRow Row in System.MySQLManager.GetObject(new CharacterLogsQuery(CharacterId)).GetOutput<DataTable>().Rows) { using (RowAdapter Adapter = new RowAdapter(Row)) { string Stamp = Adapter.PopString("login_stamp"); using (DateTimeAdapter dtAdapter = new DateTimeAdapter(Stamp)) { if (!Output.Contains(dtAdapter.PopDateTime())) { Output.Add(dtAdapter.PopDateTime()); } } } } return Output; }
void Authorization() { var appID = Form.Find <long>("app_id"); var appKey = Form.Find("app_key"); var authToken = Form.Find("auth_token"); var app = RowAdapter.LoadFirstOrDefault <App>(p => p.ID == appID && p.Deleted == false); if (app == null) { WrapResult(false, "not found app!"); return; } if (!app.AccessRestriction.Security(Request.RemoteEndPoint.Address)) { WrapResult(ResultCode.InvalidParam, "restricted access!"); return; } if (!app.Key.Equals(appKey)) { WrapResult(false, "invaild app key!"); return; } var auth = RowAdapter.LoadFirstOrDefault <Authorization>(p => p.AppID == appID && p.Token == authToken); logger.Info("ID:{0} Key:{1} Token:{2}", appID, appKey, authToken); if (auth == null) { WrapResult(false, "invaild code!"); return; } if (!auth.Available) { WrapResult(false, "code expire!"); return; } var access = RowAdapter.LoadFirstOrDefault <Access>(p => p.AppID == appID && p.OwnerID == auth.OwnerID); if (access == null) { access = RowAdapter.Create <Access>(); access.OwnerID = auth.OwnerID; access.AppID = appID; } access.Reset(); access.Save(); if (!access.Available) { WrapResult(false, "invaild access!"); return; } var json = new JsonObject(); json["access_token"] = access.AccessToken; json["refresh_token"] = access.RefreshToken; json["expires_in"] = (access.DeathLine - DateTime.Now).TotalSeconds; WrapResult(true, json); }
void Token() { var appID = Form.Find <long>("app_id"); var name = Form.Find("account"); var timestamp = Form.Find <long>("timestamp"); var token = Form.Find("token"); if (string.IsNullOrEmpty(name)) { WrapResult(false, "账号不能为空!"); return; } if (string.IsNullOrEmpty(token)) { WrapResult(false, "Token 不能为空!"); return; } var time = DateTimeExtension.ConvertFromTimestamp(timestamp); if (Math.Abs((DateTime.Now - time).TotalSeconds) > Interval.TotalSeconds) { WrapResult(false, "Token 已过期!"); return; } var app = RowAdapter.LoadFirstOrDefault <App>(p => p.ID == appID && p.Deleted == false); if (app == null) { WrapResult(false, "not found app!"); return; } if (!app.AccessRestriction.Security(Request.RemoteEndPoint.Address)) { WrapResult(ResultCode.InvalidParam, "限制访问!"); return; } var account = RowAdapter.LoadFirstOrDefault <Account>(p => p.Name == name); if (account == null) { WrapResult(false, "指定帐号不存在!"); return; } if (!account.Available) { WrapResult(false, "该帐号不可用!"); return; } account.CheckErrorReset(); if (account.TodayErrorTimes >= MaxErrorTimes) { WrapResult(false, "您的账号已被限制登录!"); return; } var credentials = new Framework.Security.ServerCredentials(account.Password); var authorization = new Framework.Security.Authorization(name, timestamp, token); if (!credentials.Authenticate(authorization)) { account.TodayErrorTimes++; account.TotalErrorTimes++; account.Save(); WrapResult(false, "无效的Token!"); return; } if (account.TodayErrorTimes > 0) { account.ResetError(); account.Save(); } var access = RowAdapter.LoadFirstOrDefault <Access>(p => p.AppID == appID && p.OwnerID == account.ID); if (access == null) { access = RowAdapter.Create <Access>(); access.OwnerID = account.ID; access.AppID = appID; } access.Reset(); access.Save(); var json = new JsonObject(); json["access_token"] = access.AccessToken; json["expires_in"] = (access.DeathLine - DateTime.Now).TotalSeconds; WrapResult(true, json); }
/// <summary> /// Returns an collection of ignored characters. /// </summary> /// <param name="CharacterId"></param> /// <returns></returns> public ICollection<int> GetIgnores(int CharacterId) { ICollection<int> Output = new List<int>(); foreach (DataRow Row in System.MySQLManager.GetObject(new CharacterIgnoresQuery(CharacterId)).GetOutput<DataTable>().Rows) { using(RowAdapter Adapter = new RowAdapter(Row)) { int IgnoreId = Adapter.PopInt32("ignore_id"); if (Output.Contains(IgnoreId)) { Output.Add(IgnoreId); } } } return Output; }
public void Invoke(Network.Session Session, Messages.PacketEvent Packet) { string Username = Packet.PopString(); ICollection<int> Friends = new List<int>(); ICollection<int> NoFriends = new List<int>(); foreach (DataRow Row in System.MySQLManager.GetObject(new MessengerCharacterSearchQuery(Username)).GetOutput<DataTable>().Rows) { using (RowAdapter Adapter = new RowAdapter(Row)) { int CharacterId = Adapter.PopInt32("id"); if (Session.Character.MessengerFriends.Contains(CharacterId)) { Friends.Add(CharacterId); } else NoFriends.Add(CharacterId); } } Session.WriteComposer(new HabboSearchResultComposer(Session.Character, Friends, NoFriends)); }