コード例 #1
0
        public List <User> Users(Guid organizationId)
        {
            Dictionary <string, string> para = new Dictionary <string, string>();

            para.Add("organizationId", organizationId.ToString());
            return(HttpHelper.Post <List <User> >(AccountUrlHelper.Org("Users"), para));
        }
コード例 #2
0
        public Organization GetFromAccount(Guid id)
        {
            if (lastfail.ContainsKey(id))
            {
                var lasttime = lastfail[id];
                if (lasttime > DateTime.Now.AddHours(-1))
                {
                    return(null);
                }
            }

            Dictionary <string, string> para = new Dictionary <string, string>();

            para.Add("id", id.ToString());
            var org = HttpHelper.Post <Organization>(AccountUrlHelper.Org("get"), para);

            if (org == null)
            {
                // try one more time.
                org = HttpHelper.Post <Organization>(AccountUrlHelper.Org("get"), para);
            }

            if (org != null)
            {
                return(org);
            }
            else
            {
                lastfail[id] = DateTime.Now;
                return(null);
            }
        }
コード例 #3
0
        public string AddUser(string userName, Guid organizationId)
        {
            Dictionary <string, string> para = new Dictionary <string, string>();

            para.Add("organizationId", organizationId.ToString());
            para.Add("userName", userName);
            var result = HttpHelper.Post <string>(AccountUrlHelper.Org("adduser"), para);

            var userid = Lib.Security.Hash.ComputeGuidIgnoreCase(userName);

            Kooboo.Data.Cache.OrganizationUserCache.AddUser(organizationId, userid);

            return(result);
        }
コード例 #4
0
        public bool DeleteUser(string userName, Guid organizationId)
        {
            Dictionary <string, string> para = new Dictionary <string, string>();

            para.Add("organizationId", organizationId.ToString());
            para.Add("userName", userName);
            var ok = HttpHelper.Post <bool>(AccountUrlHelper.Org("deleteuser"), para);

            if (ok)
            {
                var userid = Lib.Security.Hash.ComputeGuidIgnoreCase(userName);
                Kooboo.Data.Cache.OrganizationUserCache.RemoveUser(organizationId, userid);
            }
            return(ok);
        }
コード例 #5
0
        public static async Task <Certificate> Get(string host)
        {
            var url = AccountUrlHelper.Certificate("get");
            Dictionary <string, string> paraDic = new Dictionary <string, string>();

            paraDic.Add("domain", host);
            string      para        = JsonHelper.Serialize(paraDic);
            Certificate certificate = null;

            try
            {
                certificate = await HttpHelper.GetAsync <Certificate>(url, paraDic);
            }
            catch (Exception ex)
            {
            }
            return(certificate);
        }
コード例 #6
0
        public ClusterEditViewModel GetNew(ApiCall call)
        {
            var user = call.Context.User;

            if (user == null)
            {
                return(null);
            }

            ClusterEditViewModel viewmodel = new ClusterEditViewModel();

            Dictionary <string, string> para = new Dictionary <string, string>();

            para.Add("SiteId", call.GetValue("SiteId"));
            para.Add("OrganizationId", user.CurrentOrgId.ToString());

            var datacenterlist = Lib.Helper.HttpHelper.Get <List <DataCenter> >(AccountUrlHelper.Cluster("GetDataCenter"), para, user.UserName, user.PasswordHash.ToString());

            viewmodel.DataCenter = datacenterlist;

            viewmodel.EnableCluster = datacenterlist.Where(o => o.IsSelected).Count() >= 2;

            viewmodel.EnableLocationRedirect = datacenterlist.Where(o => !string.IsNullOrWhiteSpace(o.PrimaryDomain)).Any();

            if (viewmodel.EnableLocationRedirect)
            {
                foreach (var item in datacenterlist.Where(o => !string.IsNullOrWhiteSpace(o.PrimaryDomain)))
                {
                    var domainresult = Kooboo.Data.Helper.DomainHelper.Parse(item.PrimaryDomain);
                    if (domainresult != null)
                    {
                        viewmodel.LocationRedirect.Add(new ClusterLocationRedirect()
                        {
                            Name = item.Name, SubDomain = domainresult.SubDomain, RootDomain = domainresult.Domain
                        });
                    }
                }
            }

            return(viewmodel);
        }
コード例 #7
0
        public void Post(ClusterEditViewModel model, ApiCall call)
        {
            ValidatePort(call);

            var sitedb = call.Context.WebSite.SiteDb();

            Data.GlobalDb.WebSites.UpdateBoolColumn(call.Context.WebSite.Id, o => o.EnableCluster, model.EnableCluster);

            if (Data.AppSettings.IsOnlineServer)
            {
                // check and update the SiteInfo of EnableCluster.
                var siteid = call.GetValue <Guid>("SiteId");
                var user   = call.Context.User;
                if (user == null)
                {
                    throw new Exception(Data.Language.Hardcoded.GetValue("user required", call.Context));
                }
                // Set the website doamins and send to Account for update...
                // Get a list of ServerId back for sync purpose...
                string url = AccountUrlHelper.Cluster("SaveSetting") + "?SiteId=" + siteid.ToString() + "&OrganizatioinId=" + user.CurrentOrgId.ToString();

                var result = Lib.Helper.HttpHelper.Post <List <SiteClusterViewModel> >(url, Lib.Helper.JsonHelper.Serialize(model));

                if (result != null)
                {
                }
                /// var errro;
            }

            else
            {
                // local server, no need for location redirect.
                // local server does not support location redirect..
                List <SiteCluster> updates = new List <SiteCluster>();
                foreach (var item in model.DataCenter)
                {
                    if (!item.IsRoot)
                    {
                        // can not contains itself...
                        SiteCluster cluster = new SiteCluster();
                        cluster.ServerIp   = item.Ip;
                        cluster.Port       = item.Port;
                        cluster.Name       = item.DisplayName;
                        cluster.DataCenter = item.Name;
                        cluster.IsRoot     = item.IsRoot;
                        cluster.IsSelected = item.IsSelected;
                        updates.Add(cluster);
                    }
                }

                // do the delection.
                HashSet <Guid> deleteIds = new HashSet <Guid>();
                foreach (var item in sitedb.SiteCluster.All())
                {
                    var find = updates.Find(o => o.Id == item.Id);
                    if (find == null)
                    {
                        deleteIds.Add(item.Id);
                    }
                }
                foreach (var item in deleteIds)
                {
                    sitedb.SiteCluster.Delete(item);
                }

                foreach (var item in updates)
                {
                    sitedb.SiteCluster.AddOrUpdate(item);
                }
            }
        }