public ActionResult DownloadFile(string pp)
        {
            ManagementConsoleAuthentication.VerifyTokenCookie(this);

            pp = pp ?? string.Empty;
            var physicalPath = Encoding.UTF8.GetString(EncryptedBase64.FromEncryptedBase64String(pp));

            return(File(physicalPath, "application/octet-stream", Path.GetFileName(physicalPath)));
        }
        public ActionResult BrowseDirectory(string pp)
        {
            ManagementConsoleAuthentication.VerifyTokenCookie(this);

            pp = pp ?? string.Empty;
            var physicalPath = Encoding.UTF8.GetString(EncryptedBase64.FromEncryptedBase64String(pp));

            if (string.IsNullOrEmpty(physicalPath))
            {
                physicalPath = Server.MapPath("~");
            }

            StringBuilder sb = new StringBuilder(1024);

            sb.Append("<html><body>");
            sb.Append(ManagementUtility.BuildHeaderHtml());
            sb.Append("<h2>" + HttpUtility.HtmlEncode(physicalPath) + "</h2>");
            sb.Append("<a href=\"" + Url.Action("ZipDirectory", new { pp = EncryptedBase64.ToEncryptedBase64String(Encoding.UTF8.GetBytes(physicalPath)) }) + "\">zip</a>");
            sb.Append("<table>");
            // Directories
            var directories = from d in Directory.GetDirectories(physicalPath)
                              orderby d ascending
                              select d;

            foreach (var directory in directories)
            {
                sb.Append("<tr><td>D</td><td><a href=\"");
                sb.Append(Url.Action("BrowseDirectory", new { pp = EncryptedBase64.ToEncryptedBase64String(Encoding.UTF8.GetBytes(directory)) }));
                sb.Append("\">");
                sb.Append(HttpUtility.HtmlEncode(Path.GetFileName(directory)));
                sb.Append("</a></td></tr>");
            }
            sb.Append("</table>");

            // Files
            sb.Append("<table>");
            // Directories
            var files = from d in Directory.GetFiles(physicalPath)
                        orderby d ascending
                        select d;

            foreach (var file in files)
            {
                sb.Append("<tr><td>F</td><td><a href=\"");
                sb.Append(Url.Action("DownloadFile", new { pp = EncryptedBase64.ToEncryptedBase64String(Encoding.UTF8.GetBytes(file)) }));
                sb.Append("\">");
                sb.Append(HttpUtility.HtmlEncode(Path.GetFileName(file)));
                sb.Append("</a></td></tr>");
            }
            sb.Append("</table>");
            sb.Append("</body></html>");

            return(File(Encoding.UTF8.GetBytes(sb.ToString()), "text/html"));
        }
コード例 #3
0
        public ActionResult GetTables(string ask, string csk, string eb64cs)
        {
            ManagementConsoleAuthentication.VerifyTokenCookie(this);

            string connectionString;

            if (!string.IsNullOrEmpty(ask))
            {
                connectionString = ConfigurationCenter.Global[ask];
            }
            else if (!string.IsNullOrEmpty(csk))
            {
                connectionString = WebConfigurationManager.ConnectionStrings[csk].ConnectionString;
            }
            else
            {
                connectionString = Encoding.UTF8.GetString(EncryptedBase64.FromEncryptedBase64String(eb64cs));
            }

            var tables = new List <string>();

            DbHelper.ExecuteReader(
                connectionString,
                "SELECT [name] FROM sys.tables",
                reader =>
            {
                tables.Add((string)reader[0]);
            }
                );

            StringBuilder sb = new StringBuilder(1024);

            sb.Append("<html><body>");
            sb.Append(ManagementUtility.BuildHeaderHtml());
            sb.Append("<h3>Tables</h3><br/>");
            sb.Append("<table>");
            foreach (var table in tables)
            {
                sb.Append("<tr><td><a href=\"");
                sb.Append(Url.Action("GetRows", new { ask = ask, csk = csk, eb64cs = eb64cs, t = table }));
                sb.Append("\">");
                sb.Append(HttpUtility.HtmlEncode(table));
                sb.Append("</a></td></tr>");
            }
            sb.Append("</table><br/>");
            sb.Append("</body></html>");

            return(File(Encoding.UTF8.GetBytes(sb.ToString()), "text/html"));
        }
        public ActionResult GetPortal(string pin)
        {
            var sb = new StringBuilder();

            sb.Append("<html><body>");
            sb.Append(ManagementUtility.BuildHeaderHtml());

            sb.Append("<a href=\"");
            sb.Append(Url.Action("DisplayCacheHits", "CacheManagement"));
            sb.Append("\">Cache</a><br/>");

            sb.Append("<a href=\"");
            sb.Append(Url.Action("BrowseDirectory", "FilesManagement"));
            sb.Append("\">File</a><br/>");

            sb.Append("<a href=\"");
            sb.Append(Url.Action("BrowseConnections", "DBManagement"));
            sb.Append("\">DB</a><br/>");

            sb.Append("<a href=\"");
            sb.Append(Url.Action("BrowseSettings", "SettingsManagement"));
            sb.Append("\">Setting</a><br/>");

            sb.Append("<a href=\"");
            sb.Append(Url.Action("BrowseLiveActions", "ActionManagement"));
            sb.Append("\">LiveActions</a><br/>");

            sb.Append("<a href=\"");
            sb.Append(Url.Action("BrowseRequests", "RequestTracker"));
            sb.Append("\">RequestTracker</a><br/>");

            sb.Append("</body></html>");

            var cookie = ManagementConsoleAuthentication.GenerateTokenCookie(pin);

            this.HttpContext.Response.Cookies.Add(cookie);

            return(File(Encoding.UTF8.GetBytes(sb.ToString()), "text/html"));
        }
        public ActionResult ZipDirectory(string pp, string exclude)
        {
            ManagementConsoleAuthentication.VerifyTokenCookie(this);

            pp = pp ?? string.Empty;
            var physicalPath = Encoding.UTF8.GetString(EncryptedBase64.FromEncryptedBase64String(pp));

            List <string> excludedItems = null;

            if (!string.IsNullOrWhiteSpace(exclude))
            {
                excludedItems = new List <string>(exclude.Trim().Split(','));
            }

            using (var zipFileStream = new MemoryStream())
            {
                using (var logWriter = new StreamWriter(new MemoryStream(), Encoding.UTF8))
                {
                    using (ZipOutputStream s = new ZipOutputStream(zipFileStream))
                    {
                        s.SetLevel(9);
                        ZipDirectoryInternal(physicalPath, string.Empty, s, logWriter, excludedItems);

                        // Add log
                        ZipEntry entry = new ZipEntry("__log.txt");
                        entry.DateTime = DateTime.Now;
                        s.PutNextEntry(entry);
                        logWriter.Flush();
                        logWriter.BaseStream.Seek(0, SeekOrigin.Begin);
                        logWriter.BaseStream.CopyTo(s);

                        s.Finish();
                        s.Close();
                    }
                }

                return(File(zipFileStream.ToArray(), "application/zip"));
            }
        }
        public ActionResult BrowseSettings()
        {
            ManagementConsoleAuthentication.VerifyTokenCookie(this);

            StringBuilder sb = new StringBuilder(1024);

            sb.Append("<html><body>");
            sb.Append(ManagementUtility.BuildHeaderHtml());
            // Local
            sb.Append("<h3>Local</h3><br/>");
            sb.Append("<table>");
            foreach (var key in ConfigurationCenter.Local.DiscoverAllKeys())
            {
                sb.Append("<tr><td>");
                sb.Append(HttpUtility.HtmlEncode(key));
                sb.Append("</td><td>");
                sb.Append(ConfigurationCenter.Local[key] ?? "(null)");
                sb.Append("</td></tr>");
            }
            sb.Append("</table><br/>");

            // Global
            sb.Append("<h3>Global</h3><br/>");
            sb.Append("<table>");
            foreach (var key in ConfigurationCenter.Global.DiscoverAllKeys())
            {
                sb.Append("<tr><td>");
                sb.Append(HttpUtility.HtmlEncode(key));
                sb.Append("</td><td>");
                sb.Append(ConfigurationCenter.Global[key] ?? "(null)");
                sb.Append("</td></tr>");
            }
            sb.Append("</table><br/>");

            sb.Append("</body></html>");

            return(File(Encoding.UTF8.GetBytes(sb.ToString()), "text/html"));
        }
コード例 #7
0
        public ActionResult BrowseConnections()
        {
            ManagementConsoleAuthentication.VerifyTokenCookie(this);

            StringBuilder sb = new StringBuilder(1024);

            sb.Append("<html><body>");
            sb.Append(ManagementUtility.BuildHeaderHtml());
            sb.Append("<h3>AppSettings</h3><br/>");
            sb.Append("<table>");
            foreach (var key in ConfigurationCenter.Global.DiscoverAllKeys())
            {
                sb.Append("<tr><td><a href=\"");
                sb.Append(Url.Action("GetTables", new { ask = key })); // ask: app setting key
                sb.Append("\">");
                sb.Append(HttpUtility.HtmlEncode(key));
                sb.Append("</a></td></tr>");
            }
            sb.Append("</table><br/>");

            // Files
            sb.Append("<h3>Conn</h3><br/>");
            sb.Append("<table>");
            for (int i = 0; i < WebConfigurationManager.ConnectionStrings.Count; i++)
            {
                var v = WebConfigurationManager.ConnectionStrings[i].Name;
                sb.Append("<tr><td><a href=\"");
                sb.Append(Url.Action("GetTables", new { csk = v })); // csk: connection string key
                sb.Append("\">");
                sb.Append(HttpUtility.HtmlEncode(v));
                sb.Append("</a></td></tr>");
            }
            sb.Append("</table><br/>");
            sb.Append("</body></html>");

            return(File(Encoding.UTF8.GetBytes(sb.ToString()), "text/html"));
        }
コード例 #8
0
        public ActionResult GetRows(string ask, string csk, string eb64cs, string t)
        {
            ManagementConsoleAuthentication.VerifyTokenCookie(this);

            string connectionString;

            if (!string.IsNullOrEmpty(ask))
            {
                connectionString = ConfigurationCenter.Global[ask];
            }
            else if (!string.IsNullOrEmpty(csk))
            {
                connectionString = WebConfigurationManager.ConnectionStrings[csk].ConnectionString;
            }
            else
            {
                connectionString = Encoding.UTF8.GetString(EncryptedBase64.FromEncryptedBase64String(eb64cs));
            }

            // To avoid sql injection
            t = t.Replace("\'", string.Empty);
            t = t.Replace("\"", string.Empty);
            t = t.Replace(" ", string.Empty);

            StringBuilder sb = new StringBuilder(1024);

            sb.Append("<html><body>");
            sb.Append(ManagementUtility.BuildHeaderHtml());
            sb.Append("<h3>" + HttpUtility.HtmlEncode(t) + "</h3><br/>");
            sb.Append("<table>");

            DataTable schema = null;

            DbHelper.ExecuteReader(
                connectionString,
                "SELECT * FROM " + t,
                reader =>
            {
                if (schema == null)
                {
                    schema = reader.GetSchemaTable();
                    sb.Append("<tr>");
                    foreach (DataRow row in schema.Rows)
                    {
                        sb.Append("<td>");
                        sb.Append(row["ColumnName"].ToString());
                        sb.Append("</td>");
                    }
                    sb.Append("</tr>");
                }

                sb.Append("<tr>");
                for (int i = 0; i < reader.FieldCount; i++)
                {
                    sb.Append("<td>");
                    sb.Append(reader[i].ToString());
                    sb.Append("</td>");
                }
                sb.Append("</tr>");
            }
                );

            sb.Append("</table><br/>");
            sb.Append("</body></html>");

            return(File(Encoding.UTF8.GetBytes(sb.ToString()), "text/html"));
        }