// writer permissions test method
        public static EnvironmentCheckResult WriteToFilesystemTest(string serverPath)
        {
            EnvironmentCheckResult result = new EnvironmentCheckResult();
            result.HelpLink = "http://www.rockrms.com/Rock/LetsFixThis#WebServerPermissions";
            result.Message = String.Format( "The username {0} does not have write access to the server's file system.", System.Security.Principal.WindowsIdentity.GetCurrent().Name );
            result.DidPass = false;

            string filename = serverPath + @"\write-permission.test";

            try
            {
                File.Create( filename ).Dispose();

                if ( File.Exists( filename ) )
                {
                    File.Delete( filename );
                    result.DidPass = true;
                    result.Message = "Your server's file permissions look correct.";
                }
            }
            catch ( Exception ex )
            {
                result.DidPass = false;
                result.Message = "Could not write to the file system. Error: " + ex.Message;
            }

            return result;
        }
示例#2
0
        // writer permissions test method
        public static EnvironmentCheckResult WriteToFilesystemTest(string serverPath)
        {
            EnvironmentCheckResult result = new EnvironmentCheckResult();

            result.HelpLink = "http://www.rockrms.com/Rock/LetsFixThis#WebServerPermissions";
            result.Message  = String.Format("The username {0} does not have write access to the server's file system.", System.Security.Principal.WindowsIdentity.GetCurrent().Name);
            result.DidPass  = false;

            string filename = serverPath + @"\write-permission.test";

            try
            {
                File.Create(filename).Dispose();

                if (File.Exists(filename))
                {
                    File.Delete(filename);
                    result.DidPass = true;
                    result.Message = "Your server's file permissions look correct.";
                }
            }
            catch (Exception ex)
            {
                result.DidPass = false;
                result.Message = "Could not write to the file system. Error: " + ex.Message;
            }

            return(result);
        }
        // internet connection test method
        public static EnvironmentCheckResult ConnectedToInternetTest()
        {
            EnvironmentCheckResult result = new EnvironmentCheckResult();
            result.Message = "You are connected to the Internet.";
            result.DidPass = true;

            WebClient client = new WebClient();

            try
            {
                string results = client.DownloadString( "https://rockrms.blob.core.windows.net/install/html-alive.txt" );

                if ( !results.Contains( "success" ) )
                {
                    result.DidPass = false;
                    result.Message = "It does not appear you are connected to the Internet. Rock requires a connection to download the installer.";
                }
            }
            catch ( Exception ex )
            {
                result.DidPass = false;
                result.Message = "Could not connect to the Internet.  Error: " + ex.Message;
                return result;
            }
            finally
            {
                client = null;
            }

            return result;
        }
示例#4
0
        // internet connection test method
        public static EnvironmentCheckResult ConnectedToInternetTest()
        {
            EnvironmentCheckResult result = new EnvironmentCheckResult();

            result.Message = "You are connected to the Internet.";
            result.DidPass = true;

            WebClient client = new WebClient();

            try
            {
                string results = client.DownloadString("https://rockrms.blob.core.windows.net/install/html-alive.txt");

                if (!results.Contains("success"))
                {
                    result.DidPass = false;
                    result.Message = "It does not appear you are connected to the Internet. Rock requires a connection to download the installer.";
                }
            }
            catch (Exception ex)
            {
                result.DidPass = false;
                result.Message = "Could not connect to the Internet.  Error: " + ex.Message;
                return(result);
            }
            finally
            {
                client = null;
            }

            return(result);
        }
示例#5
0
        // check iis version
        public static EnvironmentCheckResult CheckIisVersion(string iisString)
        {
            EnvironmentCheckResult result = new EnvironmentCheckResult();

            result.HelpLink = "http://www.rockrms.com/Rock/LetsFixThis#CheckIISVersion";
            result.DidPass  = false;

            try
            {
                iisString = iisString.Split('/')[1];

                double iisVersion = Convert.ToDouble(iisString);

                if (iisVersion >= iisVersionRequired)
                {
                    result.Message = "Your IIS version is correct.  You have version " + iisVersion + ".";
                    result.DidPass = true;
                }
                else
                {
                    result.Message = "The server's IIS version is not correct.  You have version " + iisVersion + " Rock requires version " + iisVersionRequired.ToString() + " or greater.";
                }
            }
            catch (Exception ex)
            {
                result.DidPass = true;
                result.Message = "We could not determine your IIS version please ensure you are running IIS v " + iisVersionRequired.ToString() + " or better.";;
            }

            return(result);
        }
示例#6
0
        // ensure rock is not yet installed
        public static EnvironmentCheckResult RockInstalledTest(string serverPath)
        {
            EnvironmentCheckResult isInstalledResult = new EnvironmentCheckResult();

            isInstalledResult.HelpLink = "http://www.rockrms.com/Rock/LetsFixThis#IsRockInstalledAlready";
            isInstalledResult.Message  = "Website is empty.";
            isInstalledResult.DidPass  = true;

            string rockFile = serverPath + @"\bin\Rock.dll";

            if (File.Exists(rockFile))
            {
                isInstalledResult.DidPass = false;
                isInstalledResult.Message = "It appears that Rock is already installed in this directory. You must remove this version of Rock before proceeding.";
            }

            // check that sql server spatial files don't exist
            string sqlSpatialFiles32Bit = serverPath + @"\SqlServerTypes\x86\SqlServerSpatial110.dll";
            string sqlSpatialFiles64Bit = serverPath + @"\SqlServerTypes\x64\SqlServerSpatial110.dll";

            if (File.Exists(sqlSpatialFiles32Bit) || File.Exists(sqlSpatialFiles64Bit))
            {
                isInstalledResult.DidPass = false;
                isInstalledResult.Message = "You must remove the 'SqlServerTypes' folder before proceeding. You may need to stop the webserver to enable deletion.";
            }

            return(isInstalledResult);
        }
示例#7
0
        // check trust level
        public static EnvironmentCheckResult CheckTrustLevel( )
        {
            EnvironmentCheckResult result = new EnvironmentCheckResult();

            result.HelpLink = "http://www.rockrms.com/Rock/LetsFixThis#WebServerTrust";
            result.DidPass  = false;

            try
            {
                new AspNetHostingPermission(AspNetHostingPermissionLevel.Unrestricted).Demand();
                result.DidPass = true;
                result.Message = "Your webserver is configured for Full-Trust.";
            }
            catch (System.Security.SecurityException)
            {
                result.DidPass = false;
                result.Message = "Your webserver is not configured for Full-Trust.";
            }

            return(result);
        }
示例#8
0
        // check dot net version
        public static EnvironmentCheckResult DotNetVersionTest()
        {
            EnvironmentCheckResult result = new EnvironmentCheckResult();

            result.HelpLink = "http://www.rockrms.com/Rock/LetsFixThis#IncorrectDotNETVersion";
            result.DidPass  = false;

            // check .net
            // ok this is not easy as .net 4.5.1 actually reports as 4.0.378675 or 4.0.378758 depending on how it was installed
            // http://en.wikipedia.org/wiki/List_of_.NET_Framework_versions
            if (System.Environment.Version.Major > 4)
            {
                result.DidPass = true;
            }
            else if (System.Environment.Version.Major == 4 && System.Environment.Version.Build > 30319)
            {
                result.DidPass = true;
            }
            else if (System.Environment.Version.Major == 4 && System.Environment.Version.Build == 30319 && System.Environment.Version.Revision >= 18408)
            {
                result.DidPass = true;
            }

            string version = System.Environment.Version.Major.ToString() + "." + System.Environment.Version.ToString();

            if (result.DidPass)
            {
                result.Message = String.Format("You have the correct version of .Net ({0}+).", requiredDotnetVersion);
            }
            else
            {
                result.Message = String.Format("The server does not have the correct .Net runtime.  You have .Net version {0} Rock requires version {1}.", version, requiredDotnetVersion);
            }


            return(result);
        }
示例#9
0
        // check dot net version
        public static EnvironmentCheckResult DotNetVersionTest()
        {
            EnvironmentCheckResult result = new EnvironmentCheckResult();
            result.HelpLink = "http://www.rockrms.com/Rock/LetsFixThis#IncorrectDotNETVersion";
            result.DidPass = false;

            // check .net
            // ok this is not easy as .net 4.5.1 actually reports as 4.0.378675 or 4.0.378758 depending on how it was installed
            // http://en.wikipedia.org/wiki/List_of_.NET_Framework_versions
            if ( System.Environment.Version.Major > 4 )
            {
                result.DidPass = true;
            }
            else if ( System.Environment.Version.Major == 4 && System.Environment.Version.Build > 30319 )
            {
                result.DidPass = true;
            }
            else if ( System.Environment.Version.Major == 4 && System.Environment.Version.Build == 30319 && System.Environment.Version.Revision >= 18408 )
            {
                result.DidPass = true;
            }

            string version = System.Environment.Version.Major.ToString() + "." + System.Environment.Version.ToString();

            if ( result.DidPass )
            {
                result.Message = String.Format( "You have the correct version of .Net ({0}+).", requiredDotnetVersion );
            }
            else
            {
                result.Message = String.Format( "The server does not have the correct .Net runtime.  You have .Net version {0} Rock requires version {1}.", version, requiredDotnetVersion );
            }
            

            return result;
        }
        // check sql server
        public static EnvironmentCheckResult CheckSqlServer( string dbServer, string dbUsername, string dbPassword, string dbDatabase )
        {
            EnvironmentCheckResult result = new EnvironmentCheckResult();
            result.Message = "Your database settings all look good.";
            result.DidPass = true;

            // check that user can login
            DatabaseConnectionResult connectResult = CheckSqlLogin( dbServer, dbUsername, dbPassword );
            if ( !connectResult.CanConnect  )
            {
                result.Message = connectResult.Message;
                result.DidPass = false;
                return result;
            }

            // check sql version
            DatabaseConfigurationResult sqlVersionResult = CheckSqlServerVersion( dbServer, dbUsername, dbPassword );
            if ( !sqlVersionResult.Success )
            {
                result.Message = string.Format( "You are running SQL Server version: {0}", sqlVersionResult.Message );
                result.HelpLink = "http://www.rockrms.com/Rock/LetsFixThis#SqlServerWrongVersion";
                result.DidPass = false;
                return result;
            }

            // check if database exists
            if ( !CheckSqlDatabaseExists( dbServer, dbUsername, dbPassword, dbDatabase ) )
            {
                // try creating the database
                if ( !CheckSqlPermissionsCreateDatabase( dbServer, dbUsername, dbPassword ) )
                {
                    result.Message = String.Format( "The database '{0}' does not exist and the user '{1}' does not have permissions to create a database.", dbDatabase, dbUsername );
                    result.HelpLink = "http://www.rockrms.com/Rock/LetsFixThis#NoDatabaseNoPermissions";
                    result.DidPass = false;
                    return result;
                }

                result.Message = String.Format( "The '{0}' database does not exist on the server, but you have permissions to create it.  Rock will create it for you as part of the install.", dbDatabase );
            }
            else
            {
                // check that we have permissions to create a table in the database
                if ( !CheckSqlPermissionsCreateTable( dbServer, dbUsername, dbPassword, dbDatabase ) )
                {
                    result.Message = String.Format( "The user '{0}' does not have write access to the database '{1}'.", dbUsername, dbDatabase );
                    result.HelpLink = "http://www.rockrms.com/Rock/LetsFixThis#SqlServerPermissions";
                    result.DidPass = false;
                    return result;
                }

                // since the database exists make sure it's empty
                if ( !CheckSqlServerEmpty( dbServer, dbUsername, dbPassword, dbDatabase ) )
                {
                    result.Message = String.Format( "The database '{0}' is not empty. To protect your existing data Rock must be installed into a empty database.", dbDatabase );
                    result.HelpLink = "http://www.rockrms.com/Rock/LetsFixThis#DatabaseNotEmpty";
                    result.DidPass = false;
                    return result;
                }
            }

            DatabaseConfigurationResult sizeResult = CheckSqlDatabaseSize( dbServer, dbUsername, dbPassword, dbDatabase );
            if ( !sizeResult.Success )
            {
                result.Message = sizeResult.Message;
                result.HelpLink = "http://www.rockrms.com/Rock/LetsFixThis#DatabaseTooSmall";
                result.DidPass = false;
                return result;
            }

            return result;
        }
        // check iis version
        public static EnvironmentCheckResult CheckIisVersion( string iisString )
        {
            EnvironmentCheckResult result = new EnvironmentCheckResult();
            result.HelpLink = "http://www.rockrms.com/Rock/LetsFixThis#CheckIISVersion";
            result.DidPass = false;

            try
            {
                iisString = iisString.Split( '/' )[1];

                double iisVersion = Convert.ToDouble( iisString );

                if ( iisVersion >= iisVersionRequired )
                {
                    result.Message = "Your IIS version is correct.  You have version " + iisVersion + ".";
                    result.DidPass = true;
                }
                else
                {
                    result.Message = "The server's IIS version is not correct.  You have version " + iisVersion + " Rock requires version " + iisVersionRequired.ToString() + " or greater.";
                }
            }
            catch ( Exception ex )
            {
                result.DidPass = true;
                result.Message = "We could not determine your IIS version please ensure you are running IIS v " + iisVersionRequired.ToString() + " or better."; ;
            }

            return result; 
        }
        // check trust level
        public static EnvironmentCheckResult CheckTrustLevel( )
        {
            EnvironmentCheckResult result = new EnvironmentCheckResult();
            result.HelpLink = "http://www.rockrms.com/Rock/LetsFixThis#WebServerTrust";
            result.DidPass = false;

            try
            {
                new AspNetHostingPermission( AspNetHostingPermissionLevel.Unrestricted ).Demand();
                result.DidPass = true;
                result.Message = "Your webserver is configured for Full-Trust.";
            }
            catch ( System.Security.SecurityException )
            {
                result.DidPass = false;
                result.Message = "Your webserver is not configured for Full-Trust.";
            }

            return result;
        }
        // ensure rock is not yet installed
        public static EnvironmentCheckResult RockInstalledTest(string serverPath)
        {
            EnvironmentCheckResult isInstalledResult = new EnvironmentCheckResult();
            isInstalledResult.HelpLink = "http://www.rockrms.com/Rock/LetsFixThis#IsRockInstalledAlready";
            isInstalledResult.Message = "Website is empty.";
            isInstalledResult.DidPass = true;

            string rockFile = serverPath + @"\bin\Rock.dll";
            if ( File.Exists( rockFile ) )
            {
                isInstalledResult.DidPass = false;
                isInstalledResult.Message = "It appears that Rock is already installed in this directory. You must remove this version of Rock before proceeding.";
            }

            // check that sql server spatial files don't exist
            string sqlSpatialFiles32Bit = serverPath + @"\SqlServerTypes\x86\SqlServerSpatial110.dll";
            string sqlSpatialFiles64Bit = serverPath + @"\SqlServerTypes\x64\SqlServerSpatial110.dll";
            if ( File.Exists( sqlSpatialFiles32Bit ) || File.Exists( sqlSpatialFiles64Bit ) )
            {
                isInstalledResult.DidPass = false;
                isInstalledResult.Message = "You must remove the 'SqlServerTypes' folder before proceeding. You may need to stop the webserver to enable deletion.";
            }

            return isInstalledResult;
        }
示例#14
0
        // check sql server
        public static EnvironmentCheckResult CheckSqlServer(string dbServer, string dbUsername, string dbPassword, string dbDatabase)
        {
            EnvironmentCheckResult result = new EnvironmentCheckResult();

            result.Message = "Your database settings all look good.";
            result.DidPass = true;

            // check that user can login
            DatabaseConnectionResult connectResult = CheckSqlLogin(dbServer, dbUsername, dbPassword);

            if (!connectResult.CanConnect)
            {
                result.Message = connectResult.Message;
                result.DidPass = false;
                return(result);
            }

            // check sql version
            DatabaseConfigurationResult sqlVersionResult = CheckSqlServerVersion(dbServer, dbUsername, dbPassword);

            if (!sqlVersionResult.Success)
            {
                result.Message  = string.Format("You are running SQL Server version: {0}", sqlVersionResult.Message);
                result.HelpLink = "http://www.rockrms.com/Rock/LetsFixThis#SqlServerWrongVersion";
                result.DidPass  = false;
                return(result);
            }

            // check if database exists
            if (!CheckSqlDatabaseExists(dbServer, dbUsername, dbPassword, dbDatabase))
            {
                // try creating the database
                if (!CheckSqlPermissionsCreateDatabase(dbServer, dbUsername, dbPassword))
                {
                    result.Message  = String.Format("The database '{0}' does not exist and the user '{1}' does not have permissions to create a database.", dbDatabase, dbUsername);
                    result.HelpLink = "http://www.rockrms.com/Rock/LetsFixThis#NoDatabaseNoPermissions";
                    result.DidPass  = false;
                    return(result);
                }

                result.Message = String.Format("The '{0}' database does not exist on the server, but you have permissions to create it.  Rock will create it for you as part of the install.", dbDatabase);
            }
            else
            {
                // check that we have permissions to create a table in the database
                if (!CheckSqlPermissionsCreateTable(dbServer, dbUsername, dbPassword, dbDatabase))
                {
                    result.Message  = String.Format("The user '{0}' does not have write access to the database '{1}'.", dbUsername, dbDatabase);
                    result.HelpLink = "http://www.rockrms.com/Rock/LetsFixThis#SqlServerPermissions";
                    result.DidPass  = false;
                    return(result);
                }

                // since the database exists make sure it's empty
                if (!CheckSqlServerEmpty(dbServer, dbUsername, dbPassword, dbDatabase))
                {
                    result.Message  = String.Format("The database '{0}' is not empty. To protect your existing data Rock must be installed into a empty database.", dbDatabase);
                    result.HelpLink = "http://www.rockrms.com/Rock/LetsFixThis#DatabaseNotEmpty";
                    result.DidPass  = false;
                    return(result);
                }
            }

            DatabaseConfigurationResult sizeResult = CheckSqlDatabaseSize(dbServer, dbUsername, dbPassword, dbDatabase);

            if (!sizeResult.Success)
            {
                result.Message  = sizeResult.Message;
                result.HelpLink = "http://www.rockrms.com/Rock/LetsFixThis#DatabaseTooSmall";
                result.DidPass  = false;
                return(result);
            }

            return(result);
        }