public PlansModule(CloudPanelContext db) : base("Plans") { //this.RequiresAuthentication(); //this.RequiresAnyClaim(new[] { "SuperAdmin" }); Get["/Mailbox"] = parameters => { List <MailboxPlanObject> plans = new List <MailboxPlanObject>(); plans.Add(new MailboxPlanObject() { MailboxPlanID = 1, MailboxPlanName = "Bronze" }); ViewBag.Plans = plans; return(View["Plans/MailboxPlans.cshtml"]); }; Get["/Company"] = parameters => { try { var plans = (from p in db.Plans_Organization select p).ToList(); return(View["Plans/CompanyPlans.cshtml", plans]); } catch (Exception ex) { log.Error("Error retrieving company plans", ex); return(View["Plans/CompanyPlans.cshtml", null]); } }; Post["/Company/Update"] = parameters => { var formModel = this.Bind <Plans_Organization>(); try { if (formModel.OrgPlanID <= 0) { db.Plans_Organization.Add(formModel); db.SaveChanges(); } else { var plan = (from p in db.Plans_Organization where p.OrgPlanID == formModel.OrgPlanID select p).FirstOrDefault(); plan.OrgPlanName = formModel.OrgPlanName; plan.MaxUsers = formModel.MaxUsers; plan.MaxDomains = formModel.MaxDomains; plan.MaxExchangeMailboxes = formModel.MaxExchangeMailboxes; plan.MaxExchangeContacts = formModel.MaxExchangeContacts; plan.MaxExchangeDistLists = formModel.MaxExchangeDistLists; plan.MaxExchangeResourceMailboxes = formModel.MaxExchangeResourceMailboxes; plan.MaxExchangeMailPublicFolders = formModel.MaxExchangeMailPublicFolders; db.SaveChanges(); } } catch (Exception ex) { log.Error("Error retrieving company plans", ex); } return(Response.AsRedirect("~/Plans/Company")); }; }
public PlansModule(CloudPanelContext db) : base("Plans") { //this.RequiresAuthentication(); //this.RequiresAnyClaim(new[] { "SuperAdmin" }); Get["/Mailbox"] = parameters => { List<MailboxPlanObject> plans = new List<MailboxPlanObject>(); plans.Add(new MailboxPlanObject() { MailboxPlanID = 1, MailboxPlanName = "Bronze" }); ViewBag.Plans = plans; return View["Plans/MailboxPlans.cshtml"]; }; Get["/Company"] = parameters => { try { var plans = (from p in db.Plans_Organization select p).ToList(); return View["Plans/CompanyPlans.cshtml", plans]; } catch (Exception ex) { log.Error("Error retrieving company plans", ex); return View["Plans/CompanyPlans.cshtml", null]; } }; Post["/Company/Update"] = parameters => { var formModel = this.Bind<Plans_Organization>(); try { if (formModel.OrgPlanID <= 0) { db.Plans_Organization.Add(formModel); db.SaveChanges(); } else { var plan = (from p in db.Plans_Organization where p.OrgPlanID == formModel.OrgPlanID select p).FirstOrDefault(); plan.OrgPlanName = formModel.OrgPlanName; plan.MaxUsers = formModel.MaxUsers; plan.MaxDomains = formModel.MaxDomains; plan.MaxExchangeMailboxes = formModel.MaxExchangeMailboxes; plan.MaxExchangeContacts = formModel.MaxExchangeContacts; plan.MaxExchangeDistLists = formModel.MaxExchangeDistLists; plan.MaxExchangeResourceMailboxes = formModel.MaxExchangeResourceMailboxes; plan.MaxExchangeMailPublicFolders = formModel.MaxExchangeMailPublicFolders; db.SaveChanges(); } } catch (Exception ex) { log.Error("Error retrieving company plans", ex); } return Response.AsRedirect("~/Plans/Company"); }; }
public void Create(Company newReseller) { OrganizationalUnits organizationalUnits = null; Groups groups = null; ReverseActions reverse = new ReverseActions(); try { organizationalUnits = new OrganizationalUnits(Settings.Username, Settings.DecryptedPassword, Settings.PrimaryDC); groups = new Groups(Settings.Username, Settings.DecryptedPassword, Settings.PrimaryDC); // Check if the user provided a company code or not // If they didn't then we will automatically generate one if (string.IsNullOrEmpty(newReseller.CompanyCode)) { newReseller.CompanyCode = OtherStatics.FindAvailableCompanyCode(newReseller.CompanyName, this.db); } OrganizationalUnit newOrg = new OrganizationalUnit(); newOrg.Name = newReseller.CompanyCode; newOrg.DisplayName = newReseller.CompanyName; newOrg.City = newReseller.City; newOrg.State = newReseller.State; newOrg.PostalCode = newReseller.ZipCode; newOrg.Country = newReseller.Country; newOrg.UPNSuffixes = null; // Do not allow UPNSuffixes on the reseller OU newOrg.Description = newReseller.Description; var createdReseller = organizationalUnits.Create(Settings.HostingOU, newOrg); reverse.AddAction(Actions.CreateOrganizationalUnit, createdReseller.DistinguishedName); // // Create GPOAccess Group // SecurityGroup newGroup = new SecurityGroup(); newGroup.Name = string.Format("GPOAccess@{0}", newReseller.CompanyCode.Replace(" ", string.Empty)); newGroup.SamAccountName = newGroup.Name.Length > 19 ? newGroup.Name.Substring(0, 18) : newGroup.Name; groups.Create(createdReseller.DistinguishedName, newGroup); reverse.AddAction(Actions.CreateSecurityGroup, newGroup.Name); // // Add group to hoster GPOAccess group // groups.AddGroup("GPOAccess@Hosting", newGroup.Name); // Add to SQL log.DebugFormat("Saving new reseller {0} to the database.", newReseller.CompanyName); newReseller.Created = DateTime.Now; newReseller.DistinguishedName = createdReseller.DistinguishedName; newReseller.IsReseller = true; db.Companies.Add(newReseller); db.SaveChanges(); log.InfoFormat("Successfully created new reseller {0}", newReseller.CompanyName); } catch (Exception ex) { log.ErrorFormat("Error creating new reseller: {0}", ex.ToString()); reverse.RollbackNow(); throw; } finally { if (groups != null) { groups.Dispose(); } if (organizationalUnits != null) { organizationalUnits.Dispose(); } } }
/// <summary> /// Creates a new company in AD and the database /// </summary> /// <param name="newCompany"></param> /// <param name="domainName"></param> /// <param name="resellerCode"></param> public void Create(Company newCompany, string domainName, string resellerCode) { OrganizationalUnits organizationalUnits = null; Groups groups = null; ReverseActions reverse = new ReverseActions(); try { if (string.IsNullOrEmpty(domainName)) { throw new MissingFieldException("", "DomainName"); } if (string.IsNullOrEmpty(resellerCode)) { throw new MissingFieldException("", "ResellerCode"); } organizationalUnits = new OrganizationalUnits(Settings.Username, Settings.DecryptedPassword, Settings.PrimaryDC); groups = new Groups(Settings.Username, Settings.DecryptedPassword, Settings.PrimaryDC); // Check if the user provided a company code or not // If they didn't then we will automatically generate one if (string.IsNullOrEmpty(newCompany.CompanyCode)) { newCompany.CompanyCode = OtherStatics.FindAvailableCompanyCode(newCompany.CompanyName, this.db); } OrganizationalUnit newOrg = new OrganizationalUnit(); newOrg.Name = newCompany.CompanyCode; newOrg.DisplayName = newCompany.CompanyName; newOrg.City = newCompany.City; newOrg.State = newCompany.State; newOrg.PostalCode = newCompany.ZipCode; newOrg.Country = newCompany.Country; newOrg.UPNSuffixes = new[] { domainName }; newOrg.Description = newCompany.Description; var createdCompany = organizationalUnits.Create(Settings.HostingOU, newOrg); reverse.AddAction(Actions.CreateOrganizationalUnit, createdCompany.DistinguishedName); // // Create security groups // string strippedCompanyCode = newCompany.CompanyCode.Replace(" ", string.Empty); // Create Admins@ group SecurityGroup newGroup = new SecurityGroup(); newGroup.Name = string.Format("Admins@", strippedCompanyCode); newGroup.SamAccountName = newGroup.Name.Length > 19 ? newGroup.Name.Substring(0, 18) : newGroup.Name; groups.Create(createdCompany.DistinguishedName, newGroup); reverse.AddAction(Actions.CreateSecurityGroup, newGroup.Name); // Create AllUsers@ group newGroup.Name = string.Format("AllUsers@", strippedCompanyCode); newGroup.SamAccountName = newGroup.Name.Length > 19 ? newGroup.Name.Substring(0, 18) : newGroup.Name; groups.Create(createdCompany.DistinguishedName, newGroup); reverse.AddAction(Actions.CreateSecurityGroup, newGroup.Name); // Create AllTSUsers@ group newGroup.Name = string.Format("AllTSUsers@", strippedCompanyCode); newGroup.SamAccountName = newGroup.Name.Length > 19 ? newGroup.Name.Substring(0, 18) : newGroup.Name; groups.Create(createdCompany.DistinguishedName, newGroup); reverse.AddAction(Actions.CreateSecurityGroup, newGroup.Name); groups.AddGroup("GPOAccess@" + resellerCode, newGroup.Name); // Add group to the GPOAccess group in resellers OU // // Create Exchange and Applications OU // newOrg = new OrganizationalUnit(); newOrg.Name = Settings.ExchangeOU; newOrg.DisplayName = Settings.ExchangeOU; newOrg.UPNSuffixes = new[] { domainName }; var createdOrg = organizationalUnits.Create(createdCompany.DistinguishedName, newOrg); reverse.AddAction(Actions.CreateOrganizationalUnit, createdOrg.DistinguishedName); newOrg = new OrganizationalUnit(); newOrg.Name = Settings.ApplicationsOU; newOrg.DisplayName = Settings.ApplicationsOU; newOrg.UPNSuffixes = new[] { domainName }; createdOrg = organizationalUnits.Create(createdCompany.DistinguishedName, newOrg); reverse.AddAction(Actions.CreateOrganizationalUnit, createdOrg.DistinguishedName); // Add to SQL log.DebugFormat("Saving new company {0} to the database.", newCompany.CompanyName); newCompany.Created = DateTime.Now; newCompany.DistinguishedName = createdCompany.DistinguishedName; newCompany.IsReseller = false; db.Companies.Add(newCompany); db.SaveChanges(); log.InfoFormat("Successfully created new company {0}", newCompany.CompanyName); } catch (Exception ex) { log.ErrorFormat("Error creating new company: {0}", ex.ToString()); reverse.RollbackNow(); throw; } finally { if (groups != null) { groups.Dispose(); } if (organizationalUnits != null) { organizationalUnits.Dispose(); } } }