public Simias.Host.HostInfo[] GetHosts() { Simias.Server.EnterpriseDomain enterpriseDomain = new Simias.Server.EnterpriseDomain(false); if (enterpriseDomain == null) { throw new SimiasException("Enterprise server domain does not exist."); } Simias.Host.HostInfo[] infoList; HostNode[] hosts = HostNode.GetHosts(enterpriseDomain.ID); if (hosts.Length > 0) { infoList = new Simias.Host.HostInfo[hosts.Length]; int i = 0; foreach (HostNode hn in hosts) { infoList[i++] = new Simias.Host.HostInfo(hn); } } else { infoList = new Simias.Host.HostInfo[0]; } return(infoList); }
public ProvisionInfo InitializeUserInfo(string user) { ProvisionInfo info = null; Simias.Server.EnterpriseDomain enterpriseDomain = new Simias.Server.EnterpriseDomain(false); if (enterpriseDomain == null) { throw new SimiasException("Enterprise server domain does not exist."); } Store store = Store.GetStore(); Simias.Storage.Domain domain = store.GetDomain(enterpriseDomain.ID); if (domain == null) { throw new SimiasException("Enterprise server domain does not exist."); } // find user Member member = domain.GetMemberByName(user); if (member != null) { info = new ProvisionInfo(); info.UserID = member.UserID; // post-office box //POBox.POBox poBox = POBox.POBox.GetPOBox( store, domain.ID, info.UserID ); //info.POBoxID = poBox.ID; //info.POBoxName = poBox.Name; //Member poMember = poBox.GetMemberByID( member.UserID ); //info.MemberNodeName = poMember.Name; //info.MemberNodeID = poMember.ID; //info.MemberRights = poMember.Rights.ToString(); info.MemberNodeName = member.Name; info.MemberNodeID = member.ID; // Clients before this build do not understand "Secondary" rights so change that to ReadWrite. Also, Secondary rights // are relevant only for server and not for clients, so makes sense. Access.Rights rights = (Access.Rights)member.Rights; // ( Access.Rights )Enum.Parse( typeof( Access.Rights ), member.Rights ); Access.Rights NewRight = rights; if (rights == Access.Rights.Secondary) { NewRight = Access.Rights.ReadWrite; } info.MemberRights = NewRight.ToString(); } else { throw new SimiasException("User: "******" does not exist"); } return(info); }
public DomainInfo GetDomainInfo(string userID) { Simias.Server.EnterpriseDomain enterpriseDomain = new Simias.Server.EnterpriseDomain(false); if (enterpriseDomain == null) { throw new SimiasException("Enterprise server domain does not exist."); } Store store = Store.GetStore(); Simias.Storage.Domain domain = store.GetDomain(enterpriseDomain.ID); if (domain == null) { throw new SimiasException("Enterprise server domain does not exist."); } DomainInfo info = new DomainInfo(); info.ID = domain.ID; info.Name = domain.Name; info.Description = domain.Description; // member info Member member = domain.GetMemberByID(userID); if (member != null) { info.MemberNodeName = member.Name; info.MemberNodeID = member.ID; // Clients before this build do not understand "Secondary" rights so change that to ReadWrite. Also, Secondary rights // are relevant only for server and not for clients, so makes sense. Access.Rights rights = (Access.Rights)member.Rights; // ( Access.Rights )Enum.Parse( typeof( Access.Rights ), member.Rights ); Access.Rights NewRight = rights; if (rights == Access.Rights.Secondary) { NewRight = Access.Rights.ReadWrite; } info.MemberRights = NewRight.ToString(); } else { throw new SimiasException("User: "******" does not exist"); } return(info); }
/// <summary> /// Starts the thread service. /// </summary> public void Start() { log.Debug("Start called"); //Thread.Sleep( 30 * 1000 ); // Instantiate the server domain // The domain will be created the first time the // server is run EnterpriseDomain enterpriseDomain = new EnterpriseDomain(true); if (enterpriseDomain != null) { new Simias.Host.HostProvider(enterpriseDomain.GetServerDomain(false)); //new Simias.Host.HostProvider( new EnterpriseDomain( false ).GetServerDomain( false ) ); if (Simias.Service.Manager.LdapServiceEnabled == false) { // Valid enterprise domain - start the external // identity sync service Simias.IdentitySync.Service.Start(); } if (userProvider == null) { LoadIdentityProvider(); } if (Simias.Service.Manager.LdapServiceEnabled == false) { // Register with the domain provider service. if (authProvider == null) { authProvider = new Simias.Server.Authentication(); DomainProvider.RegisterProvider(this.authProvider); } } Simias.Server.Catalog.StartCatalogService(); ExtractMemberPoliciesOnMaster(); CheckStoreAndLoadRA(); CheckServerForChageMasterError(); } }
public Simias.Host.HostInfo GetHomeServer(string user) { Simias.Server.EnterpriseDomain enterpriseDomain = new Simias.Server.EnterpriseDomain(false); if (enterpriseDomain == null) { throw new SimiasException("Enterprise server domain does not exist."); } Store store = Store.GetStore(); Simias.Storage.Domain domain = store.GetDomain(enterpriseDomain.ID); if (domain == null) { throw new SimiasException("Enterprise server domain does not exist."); } // find user Member member = domain.GetMemberByName(user); HostNode hNode = member.HomeServer; if (hNode == null) { if (HostNode.GetLocalHost().IsMasterHost) { return(ProvisionService.ProvisionUser(user)); } else { return(null); //need to get the home server from master. } } return(new Simias.Host.HostInfo(hNode)); }
public string GetDomainID() { Simias.Server.EnterpriseDomain domain = new Simias.Server.EnterpriseDomain(false); return((domain != null) ? domain.ID : null); }
public string CreateMaster(string collectionID, string collectionName, string rootDirID, string rootDirName, string userID, string memberName, string memberID, string memberRights) { Simias.Server.EnterpriseDomain enterpriseDomain = new Simias.Server.EnterpriseDomain(false); if (enterpriseDomain == null) { throw new SimiasException("Enterprise server domain does not exist."); } Store store = Store.GetStore(); Simias.Storage.Domain domain = store.GetDomain(enterpriseDomain.ID); if (domain == null) { throw new SimiasException("Enterprise server domain does not exist."); } ArrayList nodeList = new ArrayList(); Collection c = new Collection(store, collectionName, collectionID, domain.ID); c.Proxy = true; nodeList.Add(c); string existingUserID = Thread.CurrentPrincipal.Identity.Name; Member existingMember = domain.GetMemberByID(existingUserID); if (existingMember == null) { throw new SimiasException(String.Format("Impersonating user: {0} is not a member of the domain.", Thread.CurrentPrincipal.Identity.Name)); } // Make sure the creator and the owner are the same ID. if (existingUserID != userID) { throw new SimiasException(String.Format("Creator ID {0} is not the same as the caller ID {1}.", existingUserID, userID)); } // member node. Access.Rights rights = (Access.Rights)Enum.Parse(typeof(Access.Rights), memberRights); Member member = new Member(memberName, memberID, userID, rights, null); member.IsOwner = true; member.Proxy = true; nodeList.Add(member); // check for a root dir node if (((rootDirID != null) && (rootDirID.Length > 0)) && (rootDirName != null) && (rootDirName.Length > 0)) { // Get the collections Unmanaged Path string path = c.UnmanagedPath; path = Path.Combine(path, rootDirName); // create root directory node DirNode dn = new DirNode(c, path, rootDirID); if (!System.IO.Directory.Exists(path)) { System.IO.Directory.CreateDirectory(path); } dn.Proxy = true; nodeList.Add(dn); } // Create the collection. c.Commit(nodeList.ToArray(typeof(Node)) as Node[]); // get the collection master url Uri request = Context.Request.Url; UriBuilder uri = new UriBuilder(request.Scheme, request.Host, request.Port, Context.Request.ApplicationPath.TrimStart(new char[] { '/' })); return(uri.ToString()); }