Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        /// <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();
            }
        }
Example #5
0
        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));
        }
Example #6
0
 public string GetDomainID()
 {
     Simias.Server.EnterpriseDomain domain =
         new Simias.Server.EnterpriseDomain(false);
     return((domain != null) ? domain.ID : null);
 }
Example #7
0
        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());
        }