コード例 #1
0
        // ----------------------------------------------------------------------------------------
        // Route: "/login"
        public static ResponseContext Login(RequestContext context)
        {
            if (context.Method == RequestMethod.POST)
            {
                if (context.GetParam("login") != "")
                {
                    try
                    {
                        PrincipalContext ctx        = new PrincipalContext(ContextType.Machine);
                        bool             userExists = ctx.ValidateCredentials(context.GetParam("login"), context.GetParam("password"));

                        if (userExists)
                        {
                            context.sessionManager.SessionSetKey(ref context.session, "user", context.GetParam("login"));
                        }
                        else
                        {
                            // проверка на внутреннего пользователя
                            if (context.GetParam("login") == "test" && context.GetParam("password") == "1")
                            {
                                context.sessionManager.SessionSetKey(ref context.session, "user", "test");
                            }
                        }
                    }
                    catch { };
                }
            }

            return(new ResponseContext("", "/"));
        }
コード例 #2
0
        // ----------------------------------------------------------------------------------------
        // Route: "/input"
        public static ResponseContext Input(RequestContext context)
        {
            // проверим доступ
            if (context.sessionManager.SessionGetKey(context.session, "user") == null)
            {
                // пользователь неавторизован - ничего не возвращаем
                return(new ResponseContext(""));
            }

            // глобальные переменные в сессии
            TaggedProcess p = (TaggedProcess)context.sessionManager.SessionGetKey(context.session, "process");

            if (p == null)
            {
                // процесс еще не запущен - ничего не возвращаем
                return(new ResponseContext(""));
            }

            if (context.Method == RequestMethod.POST)
            {
                // AJAX ЗАПРОС: ЗАПРОС ВВОДА КОМАНДЫ
                p?.StandardInput.WriteLine((string)context.GetParam("cmd") + "\r\n");
            }

            return(new ResponseContext(""));
        }
コード例 #3
0
        // ----------------------------------------------------------------------------------------
        // Route: "/cmdline"
        public static ResponseContext Cmdline(RequestContext context)
        {
            // проверим доступ
            if (context.sessionManager.SessionGetKey(context.session, "user") == null)
            {
                // пользователь неавторизован - редирект на главную страницу
                return(new ResponseContext("", "/"));
            }

            // глобальные переменные в сессии
            TaggedProcess p   = (TaggedProcess)context.sessionManager.SessionGetKey(context.session, "process");
            string        cmd = (string)context.sessionManager.SessionGetKey(context.session, "cmd", "cmd.exe");

            if (context.Method == RequestMethod.GET)
            {
                // отобразим страницу
                context.templateVariables.Add("status", (p == null ? false : (!p.HasExited ? true : false)));
                context.templateVariables.Add("cmd", cmd);

                TemplateParser tp = new TemplateParser();
                return(new ResponseContext(tp.ParseFromResource("cmdline.html", context.templateVariables)));
            }
            else if (context.Method == RequestMethod.POST)
            {
                if (context.parameters.ContainsKey("btnRun"))
                {
                    // ЗАПРОС ЗАПУСКА КОМАНДЫ

                    p?.Kill(); // завершим процесс, если был открыт

                    cmd = context.GetParam("cmd", "cmd.exe");
                    context.sessionManager.SessionSetKey(ref context.session, "cmd", cmd);

                    // запустим процесс в скрытом окне, перенаправим потоки Stdin и Stdout в наш обработчик
                    p = new TaggedProcess(cmd);

                    try
                    {
                        p.Start();
                        p.BeginOutputReadLine();
                        p.BeginErrorReadLine();
                        p.StandardInput.WriteLine();
                    }
                    catch
                    {
                        p = null;
                    }

                    context.sessionManager.SessionSetKey(ref context.session, "process", p);
                    context.templateVariables.Add("status", (p == null ? false : (!p.HasExited ? true : false)));
                    context.templateVariables.Add("cmd", cmd);

                    TemplateParser tp = new TemplateParser();
                    return(new ResponseContext(tp.ParseFromResource("cmdline.html", context.templateVariables)));
                }
                else if (context.parameters.ContainsKey("btnStop"))
                {
                    // ЗАПРОС ОСТАНОВА КОМАНДЫ

                    p?.Kill();
                    p = null;

                    context.sessionManager.SessionSetKey(ref context.session, "process", p);
                    context.templateVariables.Add("status", (p == null ? false : (!p.HasExited ? true : false)));
                    context.templateVariables.Add("cmd", cmd);

                    TemplateParser tp = new TemplateParser();
                    return(new ResponseContext(tp.ParseFromResource("cmdline.html", context.templateVariables)));
                }
            }

            return(new ResponseContext("", ""));
        }