コード例 #1
0
ファイル: PlansModule.cs プロジェクト: pingortle/CloudPanel
        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"));
            };
        }
コード例 #2
0
ファイル: PlansModule.cs プロジェクト: blinds52/CloudPanel
        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");
            };
        }
コード例 #3
0
        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();
                }
            }
        }
コード例 #4
0
        /// <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();
                }
            }
        }