public string GetAutoBanDuration(string callsign, int banTypeId) { CheckAccess(); using (var db = new CSSDataContext()) { DataAccess.Login login = DataAccess.Login.FindLoginByUsernameOrCallsign(db, callsign); DataAccess.BanType banType = db.BanTypes.FirstOrDefault(p => p.Id == banTypeId); if (login != null && banType != null) { TimeSpan?duration = DataAccess.Ban.CalculateDuration(login.Identity, banType); if (duration == null) { return("Infinite"); } else { return(duration.Value.ToString()); } } else { throw new Exception("Could not find login or ban type."); } } }
public LauncherSignInResult LauncherSignIn(LauncherSignInData data) { try { LauncherSignInResult result = new LauncherSignInResult(); bool succeeded = data.Authenticate(); if (succeeded == true) { result.Status = CheckInStatus.Ok; using (CSSDataContext db = new CSSDataContext()) { if (Identity.IsLinkedToAnOlderAccount(db, data.Username) == true) { result.LinkedAccount = Identity.GetOldestLinkedAcccountUsername(db, data.Username); result.Status = CheckInStatus.AccountLinked; } } } else { result.Status = CheckInStatus.InvalidCredentials; } return(result); } catch (Exception error) { Error.Write(error); throw; } }
public ListAliasesResult ListAliases(AuthenticatedData data) { try { if (!data.Authenticate()) { return(null); } ListAliasesResult result = new ListAliasesResult(); using (var db = new CSSDataContext()) { result.Aliases = Alias.ListDecoratedAliases(db, data.Username, true); result.AvailableAliasCount = Alias.GetAliasCount(db, data.Username); } return(result); } catch (Exception error) { Error.Write(error); throw; } }
public static bool Write(CSSDataContext db, LogType type, string message, bool submit) { try { db.Logs.InsertOnSubmit(new Log() { DateOccurred = DateTime.Now, Message = message, Type = (byte)type }); if (submit) { db.SubmitChanges(); } return(true); } catch (Exception error) { var errorMessage = new StringBuilder() .AppendLine("Failed to write data to log:") .Append("Type: ").AppendLine(type.ToString()) .Append("Message: ").AppendLine(message); Debug.WriteLine(errorMessage); Error.Write(db, new Exception(errorMessage.ToString(), error), submit); return(false); } }
static public List <IMessage> GetGroupMessages(CSSDataContext db, string callsign) { var messages = new List <IMessage>(); var aliases = Alias.ListAliases(db, callsign); foreach (var alias in aliases) { messages.AddRange( alias.GroupMessage_Alias.Where(p => p.DateViewed == null).Select(p => (IMessage)p.GroupMessage).ToList() ); //messages.AddRange(alias.GroupMessages // .Where( // p => p.DateExpires <= DateTime.Now // && p.DateToSend >= DateTime.Now // && p.GroupMessage_Alias // .FirstOrDefault(r => r.Alias == alias && r.DateViewed == null) != null) // .Select(q => (IMessage)q).ToList()); foreach (var gma in alias.GroupMessage_Alias.Where(p => p.DateViewed == null && messages.Select(q => q.Id).Contains(p.GroupMessageId))) { //if (messages.FirstOrDefault(p => p.Id == gma.GroupMessageId) != null) gma.DateViewed = DateTime.Now; } db.SubmitChanges(); } return(messages); }
/// <summary> /// Calls BlackboxServer module to verify login and retrieve blackbox information. /// </summary> internal LoginResult Verify(bool useDebugBlackbox) { byte[] data; var alias = Alias; string ipAddress = "127.0.0.1"; if (HttpContext.Current != null) { ipAddress = HttpContext.Current.Request.UserHostAddress; } var result = Validation.CreateSession(ipAddress, Username, Password, LobbyId, useDebugBlackbox, ref alias, out data); int rank = 0; using (CSSDataContext db = new CSSDataContext()) { var rankDetail = DataAccess.Alias.GetRankForCallsign(db, alias); if (rankDetail != null) { rank = (int)rankDetail.Rank; } } return(new LoginResult() { Status = result, BlackboxData = data, AcceptedAlias = alias, Rank = rank }); }
private void ClearDataForCallsign(string callsign) { using (var db = new CSSDataContext()) { var login = Login.FindLoginByUsernameOrCallsign(db, callsign); if (login != null) { foreach (var associatedLogin in login.Identity.Logins) { db.Alias.DeleteAllOnSubmit(associatedLogin.Aliases); db.Login_UnlinkedLogins.DeleteAllOnSubmit(associatedLogin.Login_UnlinkedLogins); db.Bans.DeleteAllOnSubmit(associatedLogin.Bans); db.Bans.DeleteAllOnSubmit(associatedLogin.IssuedBans); db.PollVotes.DeleteAllOnSubmit(associatedLogin.PollVotes); db.MachineRecords.DeleteAllOnSubmit(associatedLogin.MachineRecords); db.Logins.DeleteOnSubmit(associatedLogin); } db.PollVotes.DeleteAllOnSubmit(login.PollVotes); db.Bans.DeleteAllOnSubmit(login.Bans); db.Bans.DeleteAllOnSubmit(login.IssuedBans); db.MachineRecords.DeleteAllOnSubmit(login.MachineRecords); db.Logins.DeleteAllOnSubmit(db.Logins.Where(p => p.Id == login.Id)); db.Identities.DeleteOnSubmit(login.Identity); db.LogIPs.DeleteAllOnSubmit(login.Identity.LogIPs); db.SubmitChanges(); } } }
public void TestUnlinking() { TestMerging(); using (DataAccess.CSSDataContext db = new CSSDataContext()) { Identity principal = Alias.GetAliasByCallsign(db, "User1").Login.Identity; Login loginToUnlink = Alias.GetAliasByCallsign(db, "User2").Login; Identity.UnlinkLogin(db, principal, loginToUnlink); loginToUnlink = Alias.GetAliasByCallsign(db, "User3").Login; Identity.UnlinkLogin(db, principal, loginToUnlink); db.SubmitChanges(); var user3 = Alias.GetAliasByCallsign(db, "User3").Login; Assert.AreEqual(2, user3.Identity.MachineRecords.Count()); Assert.AreEqual(1, user3.Identity.PollVotes.Count()); Assert.AreEqual(0, user3.Identity.Bans.Count()); var user2 = Alias.GetAliasByCallsign(db, "User2").Login; Assert.AreEqual(0, user2.Identity.MachineRecords.Count()); Assert.AreEqual(0, user2.Identity.PollVotes.Count()); Assert.AreEqual(2, user2.Identity.Bans.Count()); var user1 = Alias.GetAliasByCallsign(db, "User1").Login; Assert.AreEqual(0, user1.Identity.MachineRecords.Count()); Assert.AreEqual(0, user1.Identity.PollVotes.Count()); Assert.AreEqual(0, user1.Identity.Bans.Count()); } }
private void LoadTestVirtualMachineMarkers() { using (CSSDataContext db = new CSSDataContext()) { db.VirtualMachineMarkers.InsertOnSubmit(new VirtualMachineMarker() { IdentifierMask = "%|Virtual HD|%", RecordTypeId = 2 }); db.VirtualMachineMarkers.InsertOnSubmit(new VirtualMachineMarker() { IdentifierMask = "%|VirtualBox %", RecordTypeId = 1 }); db.VirtualMachineMarkers.InsertOnSubmit(new VirtualMachineMarker() { IdentifierMask = "%|VMware %", RecordTypeId = 1 }); db.VirtualMachineMarkers.InsertOnSubmit(new VirtualMachineMarker() { IdentifierMask = "%|QEMU HARDDISK|%", RecordTypeId = 2 }); db.SubmitChanges(); } }
private void LoadTestMachineExclusions() { using (CSSDataContext db = new CSSDataContext()) { db.MachineRecordExclusions.InsertOnSubmit(new MachineRecordExclusion() { Id = 1, IdentifierMask = "Volume0", RecordTypeId = 2 }); db.MachineRecordExclusions.InsertOnSubmit(new MachineRecordExclusion() { Id = 2, IdentifierMask = "%Volume1", RecordTypeId = 2 }); db.MachineRecordExclusions.InsertOnSubmit(new MachineRecordExclusion() { Id = 3, IdentifierMask = "Volume2%", RecordTypeId = 2 }); db.MachineRecordExclusions.InsertOnSubmit(new MachineRecordExclusion() { Id = 4, IdentifierMask = "%Volume3%", RecordTypeId = 2 }); db.SubmitChanges(); } }
protected void cvCaptcha_ServerValidate(object source, ServerValidateEventArgs args) { bool isValid = false; if (ViewState["captchaToken"] != null) { Guid captchaToken = (Guid)ViewState["captchaToken"]; using (CSSDataContext db = new CSSDataContext()) { var captcha = db.Captchas.FirstOrDefault(p => p.Id == captchaToken); //args.Value //CustomValidator cvCaptcha = (CustomValidator)source; //TextBox txtValidationCode = (TextBox) cvCaptcha.ControlToValidate; if (captcha != null && args.Value.Equals(captcha.Answer, StringComparison.InvariantCultureIgnoreCase) == true) { isValid = true; } } } if (isValid == false) { ViewState["captchaToken"] = null; } args.IsValid = isValid; }
public static DataAccess.Alias GetAliasByCallsign(CSSDataContext db, string callsign) { string cleanCallsign = GetCallsignFromStringWithTokensAndTags(db, callsign); var alias = db.Alias.FirstOrDefault(p => p.Callsign == cleanCallsign); return(alias); }
protected void btnSaveNewGroup_Click(object sender, EventArgs e) { using (CSSDataContext db = new CSSDataContext()) { if (db.Groups.FirstOrDefault(p => p.Name == txtName.Text.Trim()) != null) { lblErrorText.Text = "The group or squad name you specified: " + txtName.Text + " already exists."; return; } if (db.Groups.FirstOrDefault(p => p.Tag == txtTag.Text.Trim()) != null) { lblErrorText.Text = "The tag name you specified: " + txtTag.Text + " already exists."; return; } db.Groups.InsertOnSubmit(new Group() { Name = txtName.Text.Trim(), DateCreated = DateTime.Now, IsSquad = chkIsSquad.Checked, Tag = txtTag.Text }); db.SubmitChanges(); this.DataBind(); } }
public void ClearDatabase() { if (_initialized) { return; } using (var db = new CSSDataContext()) { //Clear data try { db.DeleteDatabase(); } catch (Exception ex) { Debug.WriteLine(ex.ToString()); } db.CreateDatabase(); //Create any other functions which weren't created SetupFunctions(db); //Insert any test data InsertTestData(db); //Submit changes db.SubmitChanges(); _initialized = true; } }
public static void Clean() { using (var db = new CSSDataContext()) { db.Errors.DeleteAllOnSubmit(db.Errors.Where(p => p.DateOccurred < DateTime.Now.AddDays(-30))); db.SubmitChanges(); } }
/// <summary> /// Gets the username of the oldest linked account to the username passed. /// </summary> /// <param name="db"></param> /// <param name="username"></param> /// <returns></returns> public static string GetOldestLinkedAcccountUsername(CSSDataContext db, string username) { var alias = Alias.GetAliasByCallsign(db, username); var oldestLogin = alias.Login.Identity.Logins.OrderBy(p => p.DateCreated).FirstOrDefault(p => p != alias.Login); return(oldestLogin.Username); }
private void BindData() { using (CSSDataContext db = new CSSDataContext()) { gvPolls.DataSource = db.Polls.OrderByDescending(p => p.DateExpires); gvPolls.DataBind(); } }
public void MarkRead(CSSDataContext db, int aliasId) { var ga = db.GroupMessage_Alias.FirstOrDefault(gma => gma.GroupMessageId == Id && gma.AliasId == aliasId); ga.DateViewed = DateTime.Now; db.SubmitChanges(); }
internal static List <Ban> ListBans(string alias) { using (var db = new CSSDataContext()) { var login = Login.FindLoginByUsernameOrCallsign(db, alias); return(login.Identity.Bans.ToList()); } }
public static void Clean() { using (var db = new CSSDataContext()) { db.LogIPs.DeleteAllOnSubmit(db.LogIPs.Where(p => p.LastAccessed < DateTime.Now.AddDays(-180))); db.SubmitChanges(); } }
public static CheckAliasResult ValidateAlias(string callsignWithTags) { using (var db = new CSSDataContext()) { Alias alias; return(Alias.ValidateUsage(db, ref callsignWithTags, out alias)); } }
private BanType Initialize() { DataAccess.BanType banType; using (var db = new CSSDataContext()) { banType = db.BanTypes.FirstOrDefault(p => p.RocNumber == 1); if (_initialized) { return(banType); } if (db.Logins.FirstOrDefault(p => p.Username == "Admin") == null) { //Create new user CreateUser("Admin", "Test", "NA", 10); var admin = Login.FindLoginByUsernameOrCallsign(db, "Admin"); admin.Login_Roles.Add(new Login_Role() { RoleId = (int)RoleType.Administrator }); admin.Login_Roles.Add(new Login_Role() { RoleId = (int)RoleType.SuperAdministrator }); } db.Bans.DeleteAllOnSubmit(db.Bans); var banClass = new BanClass() { Id = 1, Name = "Minor" }; db.BanClasses.DeleteAllOnSubmit(db.BanClasses); db.BanClasses.InsertOnSubmit(banClass); banType = new BanType() { BanClassId = 1, BaseTimeInMinutes = 30, Description = "Harassment / Threats", IsIncremental = true, RocNumber = 1 }; db.BanTypes.DeleteAllOnSubmit(db.BanTypes); db.BanTypes.InsertOnSubmit(banType); db.SubmitChanges(); } _initialized = true; return(banType); }
internal static ActiveKey GenerateBlackbox(CSSDataContext db, bool debugMode) { var key = Compiler.Build(debugMode); db.ActiveKeys.InsertOnSubmit(key); db.SubmitChanges(); return(key); }
public ListMessageResult ListMessages(AuthenticatedData data) { try { if (!data.Authenticate()) { return(null); } using (var db = new CSSDataContext()) { var messages = new List <IMessage>(); messages.AddRange(GroupMessage.GetGroupMessages(db, data.Username)); messages.AddRange(PersonalMessage.GetPrivateMessages(db, data.Username)); messages.AddRange(GroupMessage.GetGlobalMessages(db, data.Username)); //Re-insert messages into list since windows services //don't seem to be able to handle objects wrapped in a baseclass. //var result = messages // .OrderByDescending(p => p.DateToSend) // .Select(p => new BaseMessage() //{ // Id = p.Id, // Sender = p.Sender, // Subject = p.Subject, // Message = p.Message, // DateCreated = p.DateToSend, //User doesn't actually have to know the date the message was created - only sent. // DateToSend = p.DateToSend, // DateExpires = p.DateExpires, //}).ToList(); //return result; ListMessageResult returnValue = new ListMessageResult(); returnValue.Messages = new List <ListMessageResult.ListMessage>(); messages.ForEach(p => returnValue.Messages.Add(new ListMessageResult.ListMessage() { DateCreated = p.DateCreated, DateExpires = p.DateExpires, DateToSend = p.DateToSend, Id = p.Id, Sender = p.Sender, Subject = p.Subject, Message = p.Message })); return(returnValue); } } catch (Exception error) { Error.Write(error); throw; } }
public static void MergeLogin(CSSDataContext db, Login principalLogin, Login loginToMerge) { foreach (var item in loginToMerge.Aliases) { item.LoginId = principalLogin.Id; } foreach (var item in loginToMerge.Bans) { item.LoginId = principalLogin.Id; } foreach (var item in loginToMerge.IssuedBans) { item.BannedByLoginId = principalLogin.Id; } foreach (var item in loginToMerge.Login_UnlinkedLogins.Where(p => p.LoginId1 == loginToMerge.Id)) { item.LoginId1 = principalLogin.Id; } foreach (var item in loginToMerge.Login_UnlinkedLogins.Where(p => p.LoginId2 == loginToMerge.Id)) { item.LoginId2 = principalLogin.Id; } foreach (var item in loginToMerge.MachineRecords) { item.LoginId = principalLogin.Id; } foreach (var item in loginToMerge.PersonalMessages) { item.LoginId = principalLogin.Id; } foreach (var item in loginToMerge.PollVotes) { item.LoginId = principalLogin.Id; } foreach (var item in loginToMerge.Sessions) { item.LoginId = principalLogin.Id; } Log.Write(LogType.ManagementWeb, "User " + loginToMerge.Username + " was merged to login " + principalLogin.Username); db.Login_Roles.DeleteAllOnSubmit(loginToMerge.Login_Roles); db.UsedKeys.DeleteAllOnSubmit(loginToMerge.UsedKeys); db.Lobby_Logins.DeleteAllOnSubmit(loginToMerge.Lobby_Logins); db.Logins.DeleteOnSubmit(loginToMerge); db.SubmitChanges(); }
public static void RemoveExpiredCaptchas() { using (CSSDataContext db = new CSSDataContext()) { var timeout = DateTime.Now.AddSeconds(-CaptchaExpirationTimeInSeconds); var oldCaptchas = db.Captchas.Where(p => p.DateCreated < timeout); db.Captchas.DeleteAllOnSubmit(oldCaptchas); db.SubmitChanges(); } }
public static List <Login> GetAllFromCache() { return(CacheManager <List <Login> > .Get("Login::GetAll()", CacheSeconds.TenSeconds, delegate() { using (CSSDataContext db = new CSSDataContext()) { return db.Logins.ToList(); } })); }
private void DeletePollOption(int pollOptionID) { using (CSSDataContext db = new CSSDataContext()) { db.PollOptions.DeleteOnSubmit(db.PollOptions.FirstOrDefault(p => p.Id == pollOptionID)); db.SubmitChanges(); } Response.Redirect("EditPoll.aspx?pollID=" + PollID); }
public static void MyClassInitialize(TestContext testContext) { using (var db = new CSSDataContext()) { if (db.DatabaseExists() == false) { db.CreateDatabase(); } } }
public static IQueryable <Lobby> FindAvailable(CSSDataContext db, Login account) { return(from l in db.Lobbies where l.IsEnabled && ( !l.IsRestrictive || l.Lobby_Logins.Any(p => p.Login == account) ) select l); }
public static List<MachineRecordByIdentity> GetAllFromCache() { return CacheManager<List<MachineRecordByIdentity>>.Get("MachineRecordByIdentity::GetAll()", CacheSeconds.TenSeconds, delegate() { using(CSSDataContext db = new CSSDataContext()) { return db.MachineRecords.Select(p => new MachineRecordByIdentity() { Identifier = p.Identifier, IdentityId = p.Login.IdentityId, RecordTypeId = p.RecordTypeId }) .ToList(); } }); }
public virtual void MarkRead(CSSDataContext db, int aliasId) { }
public override System.Web.Security.MembershipUser GetUser(string username, bool userIsOnline) { // TODO: (Optional) if userIsOnline is true, then the user's last action timestamp may be updated. // the current db schema does not support this column. MembershipUser returnValue = MembershipUserUtility.FindUserByPredicate(p => p.Username == username); if (returnValue == null) { using (CSSDataContext db = new CSSDataContext()) { var login = Login.FindLoginByUsernameOrCallsign(db, username); if(login != null) returnValue = MembershipUserUtility.FindUserByPredicate(p => p.Username == login.Username); } } return returnValue; }