Пример #1
0
    protected void WriteResults()
    {
        string isOK;

        // Savvy Console JSON
        CommandStatus.success = true;

        if (mode == "GenModels")
        {
            Web.Write("<b>Generating Savvy Active Record Classes</b><br /><br />");
            ActiveRecordGenerator.Run();
            Web.Write("<br>Done.");
            CommandStatus.message = "Models updated successfully";
        }
        else if (mode == "AddDbFields")
        {
            Web.Write("<b>Creating any missing fields in Database from Savvy Active Record Classes</b><br /><br />");
            ActiveRecordDatabaseGenerator.CreateAnyMissingFields();
            Web.Write("<br>Done.");
            CommandStatus.message = "Database updated successfully";
        }
        else if (mode == "MinifyJsCss")
        {
            Web.Write("<b>Minifying JS and CSS files</b><br /><br />");
            MinifyJS();
            MinifyCSS();
            Web.Write("<br>Done. (Note: The script will only minify immediate children files)");
            CommandStatus.message = "Minified JS and CSS files created successfully";
        }
        else if (mode == "GenDatabaseScripts")
        {
            Web.Write("<b>Generating Database Create Statements from Savvy Active Record Classes</b><br /><br />");
            Web.Write(Fmt.Text(ActiveRecordDatabaseGenerator.GetSqlStatements()));
            Web.Write("<br>Done.");
        }
        else if (mode == "ImportFromLive")
        {
            isOK = OKToImport("LVE");
            if (isOK == "OK")
            {
                Web.Write("<b>Importing all data from Live and replacing local data</b><br /><br />");
                //ActiveRecordDatabaseGenerator.ImportDataFrom(Util.GetSetting("LinkedServerDatabaseLVE", "throw"));
                ActiveRecordDatabaseGenerator.ImportDataFrom("LVE");
            }
            else
            {
                Web.Write(isOK);
            }
        }
        else if (mode == "ImportFromStaging")
        {
            isOK = OKToImport("STG");
            if (isOK == "OK")
            {
                Web.Write("<b>Importing all data from Staging and replacing local data</b><br /><br />");
                ActiveRecordDatabaseGenerator.ImportDataFrom("STG");
                Web.Write("<br>Done.");
            }
            else
            {
                Web.Write(isOK);
            }
        }
        else if (mode == "LegacyMigration")
        {
            Web.Write("<b>Migrating all Old Data</b><br /><br />");
            //LegacyDataMigration.GenerateDataMigrationScripts("RinnaiWebsite", true);
            Web.Write("<br>Done.");
        }
        else if (mode == "ExportToStaging")
        {
            Web.Write("<b>Copying all local data up to Staging and replacing existing staging data</b><br /><br />");
            ActiveRecordDatabaseGenerator.ExportDataTo("STG");
            Web.Write("<br>Done.");
        }
        else if (mode == "ViewCache")
        {
            Web.Write("<b>Displaying all objects in ASP.NET Web Cache</b><br /><br />");
            Web.Write(Fmt.Text(Logging.DumpCache()));
            Web.Write("<br>Done.");
        }
        else if (mode == "ClearCache")
        {
            Web.Write("<b>Clearing all objects in ASP.NET Web Cache</b><br /><br />");
            Web.CacheClearAll();
            Web.Write("<br>Done.");
            CommandStatus.message = "Cache cleared successfully";
        }
        else if (mode == "UpdateDLLs")
        {
            Web.Write("<b>Updating DLLs</b><br /><br />");
            UpdateDLLs();
            Web.Write("<br>Done.");
            Web.Write("<br>");
            Web.Write("<br><br><a href='?mode=AddDbFields'>Add fields to database</a>");
            Web.Write("<br><br><a href='?mode=RollbackDLLs'>Rollback</a>");
            Web.Write("<br><br><a href='" + Web.Root + "'>Check homepage</a>");
        }
        else if (mode == "RollbackDLLs")
        {
            Web.Write("<b>Rolling back DLLs to backup</b><br /><br />");
            RollbackDLLs();
            Web.Write("<br>Done.");
            Web.Write("<br><br><a href='" + Web.Root + "'>Check homepage</a>");
        }
        else if (mode == "FixError")
        {
            Web.Write("<b>Applying a Fix</b><br /><br />");
            Beweb.Logging.FixError(Request["message"], Request["title"], Request["lineThatDied"]);
            Web.Write("<br>Done.");
        }
        else if (currentClass == "all")
        {
            Assert.RunAllTests();
            Web.Write("<br>Done.");
        }
        else if (currentClass != null)
        {
            Assert.RunTests(currentClass);
            Web.Write("<br>Done.");
        }
        else if (mode == "CreateTable")
        {
            if (Util.ServerIsDev)
            {
                var tableName = Request["tableName"].UpperCaseFirstLetter();
                var ar        = new ActiveRecord(tableName, tableName + "ID");
                var sql       = ar.GetSqlForCreate();
                sql.Execute();
                CommandStatus.message = "Created table " + tableName;
            }
            else
            {
                CommandStatus.success = false;
                CommandStatus.message = "Only allowed on dev.";
            }
        }
        else if (mode == "DropTable")
        {
            if (Util.ServerIsDev)
            {
                var tableName = Request["tableName"].UpperCaseFirstLetter();
                new Sql("DROP TABLE " + tableName).Execute();
                CommandStatus.message = "Dropped table " + tableName;
            }
            else
            {
                CommandStatus.success = false;
                CommandStatus.message = "Only allowed on dev.";
            }
        }
        else if (mode == "ListTables")
        {
            var sql = new Sql().AddRawSqlString("SELECT t.name as [Table Name] FROM sys.tables AS t INNER JOIN sys.schemas AS s ON t.[schema_id] = s.[schema_id] ORDER BY t.name");
            CommandStatus.message = "Done";
            CommandStatus.data    = Logging.DumpTableToHtml(sql.GetDataTable());
        }
        else if (mode == "Sql")
        {
            var query = Request["query"];
            if (query.IsNotBlank())
            {
                if (query.ToLower().DoesntContain("select"))
                {
                    try {
                        int affectedRows = new Sql().AddRawSqlString(query).Execute();
                        CommandStatus.message = "Affected rows: " + affectedRows;
                    } catch (Exception ex) {
                        CommandStatus.success = false;
                        CommandStatus.message = ex.Message;
                    }
                }
                else
                {
                    var sql = new Sql().AddRawSqlString(query);
                    CommandStatus.message = query;
                    CommandStatus.data    = Logging.DumpTableToHtml(sql.GetDataTable());
                }
            }
            else
            {
                CommandStatus.success = false;
                CommandStatus.message = "Missing parameter";
            }
        }
        else if (mode == "ListTables")
        {
            var sql = new Sql().AddRawSqlString("SELECT t.name as [Table Name] FROM sys.tables AS t INNER JOIN sys.schemas AS s ON t.[schema_id] = s.[schema_id] ORDER BY t.name");
            CommandStatus.message = "Done";
            CommandStatus.data    = Logging.DumpTableToHtml(sql.GetDataTable());
        }
        else if (mode == "SendEmail")
        {
            var email   = Request["email"];
            var subject = Request["subject"];
            var message = Request["message"];
            if (email.IsNotBlank() && subject.IsNotBlank() && message.IsNotBlank())
            {
                try {
                    SendEMail.SimpleSendHTMLEmail(email, subject, message);
                    CommandStatus.message = "Email sent to " + email;
                } catch (Exception ex) {
                    CommandStatus.success = false;
                    CommandStatus.message = ex.Message;
                }
            }
            else
            {
                CommandStatus.success = false;
                CommandStatus.message = "Missing parameters";
            }
        }
        else if (mode == "WhoAmI")
        {
            if (Security.IsLoggedIn)
            {
                CommandStatus.message = "You are logged in as " + UserSession.Person.FullName;
            }
            else
            {
                CommandStatus.message = "You are not logged in";
                CommandStatus.success = false;
            }
        }
        else if (mode == "gotoServerStage")
        {
            var serverStage = Request["serverStage"];
            CommandStatus.data    = Util.GetSetting("WebsiteBaseUrl" + serverStage);
            CommandStatus.message = "Going to " + serverStage + " url " + CommandStatus.data;
        }
        else if (mode == "ServerIs")
        {
            CommandStatus.message = "Server is: " + Util.ServerIs();
        }
        else if (mode == "UploadFile")
        {
            try {
                var file = Request.Files[0];
                if (file.ContentLength > 0)
                {
                    var fullPath = Server.MapPath(Path.Combine("~/attachments/", Path.GetFileName(file.FileName)));
                    int count    = 1;

                    string fileNameOnly = Path.GetFileNameWithoutExtension(fullPath);
                    string extension    = Path.GetExtension(fullPath);
                    string path         = Path.GetDirectoryName(fullPath);
                    string newFullPath  = fullPath;

                    while (File.Exists(newFullPath))
                    {
                        string tempFileName = string.Format("{0}({1})", fileNameOnly, count++);
                        newFullPath = Path.Combine(path, tempFileName + extension);
                    }

                    file.SaveAs(newFullPath);

                    CommandStatus.message = "The file was uploaded successfully. <a href='" + Web.Attachments + Path.GetFileName(newFullPath) + "' target='_blank'>" + Path.GetFileName(newFullPath) + "</a>";
                }
                else
                {
                    throw new Exception("No file selected");
                }
            } catch (Exception ex) {
                CommandStatus.success = false;
                CommandStatus.message = ex.Message.Replace("\\", "\\\\");
            }
        }
        else if (mode == "UploadURL")
        {
            var url = Request["url"];
            if (url.IsNotBlank())
            {
                try {
                    var filename = url.RightFrom("/");

                    if (!url.Replace("http://", "").Replace("https://", "").Contains("/") || !filename.Contains("."))
                    {
                        throw new Exception("The URL doesn't point to any file");
                    }

                    var newFilename = FileSystem.GetUniqueAttachmentFilename(filename);

                    using (var client = new WebClient()) {
                        client.DownloadFile(url, Server.MapPath(Path.Combine("~/attachments/", newFilename)));
                    }

                    CommandStatus.message = "The file was uploaded successfully. <a href='" + Web.Attachments + newFilename + "' target='_blank'>" + newFilename + "</a>";
                } catch (Exception ex) {
                    CommandStatus.success = false;
                    CommandStatus.message = ex.Message;
                }
            }
            else
            {
                CommandStatus.success = false;
                CommandStatus.message = "Missing parameter";
            }
        }
        else if (mode == "EncodeKeystoneID")
        {
            CommandStatus.message = "Encoded ID: " + Crypto.EncryptID(Request["id"].ToInt(0));
        }
        else if (mode == "EncodeKeystoneIDClassic")
        {
            CommandStatus.message = "Encoded ID: " + Crypto.EncryptIDClassic(Request["id"].ToInt(0));
        }
        else if (mode == "Encrypt")
        {
            CommandStatus.message = "Encrypted: " + Crypto.Encrypt(Request["enc"]);
        }
        else if (mode == "Decrypt")
        {
            CommandStatus.message = "Decrypted: " + Crypto.Decrypt(Request["decr"]);
        }
        else if (mode == "DecodeKeystoneID")
        {
            try {
                var id = Crypto.DecryptID(Request["encid"]);
                if (id == -1)
                {
                    throw new Exception();
                }
                CommandStatus.message = "Decoded ID: " + id;
            } catch {
                CommandStatus.success = false;
                CommandStatus.message = "Invalid ID";
            }
        }
        else if (mode == "DecodeKeystoneIDClassic")
        {
            try {
                var id = Crypto.DecryptIDClassic(Request["encid"]);
                if (id == -1)
                {
                    throw new Exception();
                }
                CommandStatus.message = "Decoded ID: " + id;
            } catch {
                CommandStatus.success = false;
                CommandStatus.message = "Invalid ID";
            }
        }
        else if (mode == "LockSite")
        {
            try {
                ConfigurationManager.AppSettings["LockSiteHomepage" + Util.ServerIs()] = "true";
                ConfigurationManager.RefreshSection("appSettings");

                //edit the actual web config
                SetLockSiteHomepageAppSettingsValue(true);

                //clear the cookie so if it works the lockscreen will appear on next page load / refresh
                var httpCookie = Response.Cookies["pwlock"];
                if (httpCookie != null)
                {
                    httpCookie.Expires = DateTime.Now.AddDays(-1);
                }

                CommandStatus.message = "Site locked. [PWD:" + Util.GetSetting("LockSitePassword") + "] Double check your app settings before your next deploy";
            } catch (Exception) {
                CommandStatus.success = false;
                CommandStatus.message = "Failed to lock site";
            }
        }
        else if (mode == "UnlockSite")
        {
            try {
                //update app settings in memory.
                ConfigurationManager.AppSettings["LockSiteHomepage" + Util.ServerIs()] = "false";
                ConfigurationManager.RefreshSection("appSettings");

                //edit the actual web config

                SetLockSiteHomepageAppSettingsValue(false);

                //var replaceText = fileContent.ExtractTextBetween(@"<add key=""LockSiteHomepage"+Util.ServerIs()+@""" value=""", @"""/>");
                //clear the cookie so if it fails the lockscreen will appear on next page load / refresh
                var httpCookie = Response.Cookies["pwlock"];
                if (httpCookie != null)
                {
                    httpCookie.Expires = DateTime.Now.AddDays(-1);
                }

                CommandStatus.message = "Site unlocked. Double check your app settings before your next deploy.";
            } catch (Exception) {
                CommandStatus.success = false;
                CommandStatus.message = "Failed to unlock site";
            }
        }
    }