コード例 #1
0
        public static int DeleteOrganization(int itemId)
        {
            // check account
            int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive);

            if (accountCheck < 0)
            {
                return(accountCheck);
            }

            // place log record
            TaskManager.StartTask("SFB", "DELETE_ORG", itemId);

            try
            {
                // delete organization in Exchange
                //System.Threading.Thread.Sleep(5000);
                Organization org = (Organization)PackageController.GetPackageItem(itemId);

                int       sfbServiceId = GetSfBServiceID(org.PackageId);
                SfBServer sfb          = GetSfBServer(sfbServiceId, org.ServiceId);

                bool successful = sfb.DeleteOrganization(org.OrganizationId, org.DefaultDomain);

                return(successful ? 0 : BusinessErrorCodes.ERROR_SFB_DELETE_SOME_PROBLEMS);
            }
            catch (Exception ex)
            {
                throw TaskManager.WriteError(ex);
            }
            finally
            {
                TaskManager.CompleteTask();
            }
        }
コード例 #2
0
        public static SfBFederationDomain[] GetFederationDomains(int itemId)
        {
            // place log record
            TaskManager.StartTask("SFB", "GET_SFB_FEDERATIONDOMAINS", itemId);

            SfBFederationDomain[] sfbFederationDomains = null;

            try
            {
                Organization org = (Organization)PackageController.GetPackageItem(itemId);

                int       sfbServiceId = GetSfBServiceID(org.PackageId);
                SfBServer sfb          = GetSfBServer(sfbServiceId, org.ServiceId);

                sfbFederationDomains = sfb.GetFederationDomains(org.OrganizationId);
            }
            catch (Exception ex)
            {
                throw TaskManager.WriteError(ex);
            }
            finally
            {
                TaskManager.CompleteTask();
            }

            return(sfbFederationDomains);
        }
コード例 #3
0
        public static SfBUserResult SetUserSfBPlan(int itemId, int accountId, int sfbUserPlanId)
        {
            SfBUserResult res = TaskManager.StartResultTask <SfBUserResult>("SFB", "SET_SFB_USER_SFBPLAN");

            int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive);

            if (accountCheck < 0)
            {
                TaskManager.CompleteResultTask(res, SfBErrorCodes.NOT_AUTHORIZED);
                return(res);
            }

            try
            {
                Organization org = (Organization)PackageController.GetPackageItem(itemId);
                if (org == null)
                {
                    throw new ApplicationException(
                              string.Format("Organization is null. ItemId={0}", itemId));
                }

                int       sfbServiceId = GetSfBServiceID(org.PackageId);
                SfBServer sfb          = GetSfBServer(sfbServiceId, org.ServiceId);

                SfBUserPlan plan = GetSfBUserPlan(itemId, sfbUserPlanId);

                OrganizationUser user;
                user = OrganizationController.GetAccount(itemId, accountId);

                if (!sfb.SetSfBUserPlan(org.OrganizationId, user.UserPrincipalName, plan))
                {
                    TaskManager.CompleteResultTask(res, SfBErrorCodes.CANNOT_ADD_SFB_USER);
                    return(res);
                }

                try
                {
                    DataProvider.SetSfBUserSfBUserplan(accountId, sfbUserPlanId);
                }
                catch (Exception ex)
                {
                    TaskManager.CompleteResultTask(res, SfBErrorCodes.CANNOT_ADD_SFB_USER_TO_DATABASE, ex);
                    return(res);
                }

                res.IsSuccess = true;
                TaskManager.CompleteResultTask();
                return(res);
            }
            catch (Exception ex)
            {
                TaskManager.CompleteResultTask(res, SfBErrorCodes.CANNOT_UPDATE_SFB_USER, ex);
                return(res);
            }
        }
コード例 #4
0
        public static string[] GetPolicyList(int itemId, SfBPolicyType type, string name)
        {
            string[] ret = null;
            try
            {
                if (itemId == -1)
                {
                    // policy list in all sfb servers
                    List <string>     allpolicylist = new List <string>();
                    List <ServerInfo> servers       = ServerController.GetAllServers();
                    foreach (ServerInfo server in servers)
                    {
                        List <ServiceInfo> services = ServerController.GetServicesByServerIdGroupName(server.ServerId, ResourceGroups.SfB);
                        foreach (ServiceInfo service in services)
                        {
                            SfBServer sfb    = GetSfBServer(service.ServiceId, -1);
                            string[]  values = sfb.GetPolicyList(type, name);
                            foreach (string val in values)
                            {
                                if (allpolicylist.IndexOf(val) == -1)
                                {
                                    allpolicylist.Add(val);
                                }
                            }
                        }
                    }
                    ret = allpolicylist.ToArray();
                }
                else
                {
                    Organization org = (Organization)PackageController.GetPackageItem(itemId);

                    int       sfbServiceId = GetSfBServiceID(org.PackageId);
                    SfBServer sfb          = GetSfBServer(sfbServiceId, org.ServiceId);

                    ret = sfb.GetPolicyList(type, name);
                }
            }
            catch (Exception)
            {
            }
            finally
            {
            }

            return(ret);
        }
コード例 #5
0
        public static SfBServer GetSfBServer(int sfbServiceId, int organizationServiceId)
        {
            SfBServer ws = new SfBServer();

            ServiceProviderProxy.Init(ws, sfbServiceId);

            string[] sfbSettings = ws.ServiceProviderSettingsSoapHeaderValue.Settings;

            List <string> resSettings = new List <string>(sfbSettings);

            if (organizationServiceId != -1)
            {
                ExtendSfBSettings(resSettings, "primarydomaincontroller", GetProviderProperty(organizationServiceId, "primarydomaincontroller"));
                ExtendSfBSettings(resSettings, "rootou", GetProviderProperty(organizationServiceId, "rootou"));
            }
            ws.ServiceProviderSettingsSoapHeaderValue.Settings = resSettings.ToArray();
            return(ws);
        }
コード例 #6
0
        public static SfBUser GetSfBUserGeneralSettings(int itemId, int accountId)
        {
            TaskManager.StartTask("SFB", "GET_SFB_USER_GENERAL_SETTINGS");

            SfBUser user = null;

            try
            {
                Organization org = (Organization)PackageController.GetPackageItem(itemId);
                if (org == null)
                {
                    throw new ApplicationException(
                              string.Format("Organization is null. ItemId={0}", itemId));
                }

                int       sfbServiceId = GetSfBServiceID(org.PackageId);
                SfBServer sfb          = GetSfBServer(sfbServiceId, org.ServiceId);

                OrganizationUser usr;
                usr = OrganizationController.GetAccount(itemId, accountId);

                if (usr != null)
                {
                    user = sfb.GetSfBUserGeneralSettings(org.OrganizationId, usr.UserPrincipalName);
                }

                if (user != null)
                {
                    SfBUserPlan plan = ObjectUtils.FillObjectFromDataReader <SfBUserPlan>(DataProvider.GetSfBUserPlanByAccountId(accountId));

                    if (plan != null)
                    {
                        user.SfBUserPlanId   = plan.SfBUserPlanId;
                        user.SfBUserPlanName = plan.SfBUserPlanName;
                    }
                }
            }
            catch (Exception ex)
            {
                throw TaskManager.WriteError(ex);
            }
            TaskManager.CompleteTask();
            return(user);
        }
コード例 #7
0
        public static SfBUserResult RemoveFederationDomain(int itemId, string domainName)
        {
            SfBUserResult res = TaskManager.StartResultTask <SfBUserResult>("SFB", "REMOVE_SFB_FEDERATIONDOMAIN", itemId, new BackgroundTaskParameter("domainName", domainName));

            int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive);

            if (accountCheck < 0)
            {
                TaskManager.CompleteResultTask(res, SfBErrorCodes.NOT_AUTHORIZED);
                return(res);
            }

            try
            {
                Organization org = (Organization)PackageController.GetPackageItem(itemId);
                if (org == null)
                {
                    throw new ApplicationException(
                              string.Format("Organization is null. ItemId={0}", itemId));
                }

                int       sfbServiceId = GetSfBServiceID(org.PackageId);
                SfBServer sfb          = GetSfBServer(sfbServiceId, org.ServiceId);

                if (org.OrganizationId.ToLower() == domainName.ToLower())
                {
                    TaskManager.CompleteResultTask(res, SfBErrorCodes.CANNOT_REMOVE_SFB_FEDERATIONDOMAIN);
                    return(res);
                }

                sfb.RemoveFederationDomain(org.OrganizationId, domainName);
            }
            catch (Exception ex)
            {
                TaskManager.CompleteResultTask(res, SfBErrorCodes.CANNOT_REMOVE_SFB_FEDERATIONDOMAIN, ex);
                return(res);
            }

            TaskManager.CompleteResultTask();
            return(res);
        }
コード例 #8
0
        private void Enable_CsComputer()
        {
            int[] sfbServiceIds;

            SfBController.GetSfBServices(sfbServiceId, out sfbServiceIds);

            foreach (int id in sfbServiceIds)
            {
                SfBServer sfb = null;
                try
                {
                    sfb = SfBController.GetSfBServer(id, organizationServiceId);
                    if (sfb != null)
                    {
                        sfb.ReloadConfiguration();
                    }
                }
                catch (Exception exe)
                {
                    TaskManager.WriteError(exe);
                    continue;
                }
            }
        }
コード例 #9
0
        public static SfBUserResult AddFederationDomain(int itemId, string domainName, string proxyFqdn)
        {
            List <BackgroundTaskParameter> parameters = new List <BackgroundTaskParameter>();

            parameters.Add(new BackgroundTaskParameter("domainName", domainName));
            parameters.Add(new BackgroundTaskParameter("proxyFqdn", proxyFqdn));

            SfBUserResult res = TaskManager.StartResultTask <SfBUserResult>("SFB", "ADD_SFB_FEDERATIONDOMAIN", itemId, parameters);

            int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive);

            if (accountCheck < 0)
            {
                TaskManager.CompleteResultTask(res, SfBErrorCodes.NOT_AUTHORIZED);
                return(res);
            }


            try
            {
                Organization org = (Organization)PackageController.GetPackageItem(itemId);
                if (org == null)
                {
                    throw new ApplicationException(
                              string.Format("Organization is null. ItemId={0}", itemId));
                }

                int       sfbServiceId = GetSfBServiceID(org.PackageId);
                SfBServer sfb          = GetSfBServer(sfbServiceId, org.ServiceId);

                if (string.IsNullOrEmpty(org.SfBTenantId))
                {
                    PackageContext cntx = PackageController.GetPackageContext(org.PackageId);

                    org.SfBTenantId = sfb.CreateOrganization(org.OrganizationId,
                                                             org.DefaultDomain,
                                                             Convert.ToBoolean(cntx.Quotas[Quotas.SFB_CONFERENCING].QuotaAllocatedValue),
                                                             Convert.ToBoolean(cntx.Quotas[Quotas.SFB_ALLOWVIDEO].QuotaAllocatedValue),
                                                             Convert.ToInt32(cntx.Quotas[Quotas.SFB_MAXPARTICIPANTS].QuotaAllocatedValue),
                                                             Convert.ToBoolean(cntx.Quotas[Quotas.SFB_FEDERATION].QuotaAllocatedValue),
                                                             Convert.ToBoolean(cntx.Quotas[Quotas.SFB_ENTERPRISEVOICE].QuotaAllocatedValue));

                    if (string.IsNullOrEmpty(org.SfBTenantId))
                    {
                        TaskManager.CompleteResultTask(res, SfBErrorCodes.CANNOT_ENABLE_ORG);
                        return(res);
                    }
                    else
                    {
                        PackageController.UpdatePackageItem(org);
                    }
                }

                sfb = GetSfBServer(sfbServiceId, org.ServiceId);

                bool bDomainExists            = false;
                SfBFederationDomain[] domains = GetFederationDomains(itemId);
                foreach (SfBFederationDomain d in domains)
                {
                    if (d.DomainName.ToLower() == domainName.ToLower())
                    {
                        bDomainExists = true;
                        break;
                    }
                }

                if (!bDomainExists)
                {
                    sfb.AddFederationDomain(org.OrganizationId, domainName.ToLower(), proxyFqdn);
                }
            }
            catch (Exception ex)
            {
                TaskManager.CompleteResultTask(res, SfBErrorCodes.CANNOT_ADD_SFB_FEDERATIONDOMAIN, ex);
                return(res);
            }

            TaskManager.CompleteResultTask();
            return(res);
        }
コード例 #10
0
        public static SfBUserResult SetSfBUserGeneralSettings(int itemId, int accountId, string sipAddress, string lineUri)
        {
            SfBUserResult res = TaskManager.StartResultTask <SfBUserResult>("SFB", "SET_SFB_USER_GENERAL_SETTINGS");

            string PIN = "";

            string[] uriAndPin = ("" + lineUri).Split(':');

            if (uriAndPin.Length > 0)
            {
                lineUri = uriAndPin[0];
            }
            if (uriAndPin.Length > 1)
            {
                PIN = uriAndPin[1];
            }

            SfBUser user = null;

            try
            {
                Organization org = (Organization)PackageController.GetPackageItem(itemId);
                if (org == null)
                {
                    throw new ApplicationException(
                              string.Format("Organization is null. ItemId={0}", itemId));
                }

                int       sfbServiceId = GetSfBServiceID(org.PackageId);
                SfBServer sfb          = GetSfBServer(sfbServiceId, org.ServiceId);

                OrganizationUser usr;
                usr = OrganizationController.GetAccount(itemId, accountId);

                if (usr != null)
                {
                    user = sfb.GetSfBUserGeneralSettings(org.OrganizationId, usr.UserPrincipalName);
                }

                if (user != null)
                {
                    SfBUserPlan plan = ObjectUtils.FillObjectFromDataReader <SfBUserPlan>(DataProvider.GetSfBUserPlanByAccountId(accountId));

                    if (plan != null)
                    {
                        user.SfBUserPlanId   = plan.SfBUserPlanId;
                        user.SfBUserPlanName = plan.SfBUserPlanName;
                    }


                    if (!string.IsNullOrEmpty(sipAddress))
                    {
                        if (user.SipAddress != sipAddress)
                        {
                            if (sipAddress != usr.UserPrincipalName)
                            {
                                if (DataProvider.SfBUserExists(accountId, sipAddress))
                                {
                                    TaskManager.CompleteResultTask(res, SfBErrorCodes.ADDRESS_ALREADY_USED);
                                    return(res);
                                }
                            }
                            user.SipAddress = sipAddress;
                        }
                    }

                    user.LineUri = lineUri;
                    user.PIN     = PIN;

                    sfb.SetSfBUserGeneralSettings(org.OrganizationId, usr.UserPrincipalName, user);

                    DataProvider.UpdateSfBUser(accountId, sipAddress);
                }
            }
            catch (Exception ex)
            {
                TaskManager.CompleteResultTask(res, SfBErrorCodes.FAILED_SET_SETTINGS, ex);
                return(res);
            }

            res.IsSuccess = true;
            TaskManager.CompleteResultTask();
            return(res);
        }