Exemplo n.º 1
0
        public void ProcessRequest(HttpContext context)
        {
            string userName = HttpContext.Current.Request.Params.Get("user");
            string password = HttpContext.Current.Request.Params.Get("password");
            string scriptParam = HttpContext.Current.Request.Params.Get("script");
            string scriptDbParam = HttpContext.Current.Request.Params.Get("scriptDb");
            string itemParam = HttpContext.Current.Request.Params.Get("item");
            string itemDbParam = HttpContext.Current.Request.Params.Get("itemDb");

            bool authenticated = !string.IsNullOrEmpty(userName) &&
                                 !string.IsNullOrEmpty(password) &&
                                 AuthenticationManager.Login(userName, password, false);

            Database scriptDb = !authenticated || string.IsNullOrEmpty(scriptDbParam)
                ? Sitecore.Context.Database
                : Database.GetDatabase(scriptDbParam);

            Database itemDb = !authenticated || string.IsNullOrEmpty(itemDbParam)
                ? Sitecore.Context.Database
                : Database.GetDatabase(itemDbParam);

            Item scriptItem = scriptDb.GetItem(scriptParam);

            if (scriptItem == null)
            {
                scriptItem = scriptDb.GetItem("/sitecore/system/Modules/PowerShell/Script Library/" + scriptParam);
            }

            if (scriptItem == null || scriptItem.Fields[ScriptItemFieldNames.Script] == null)
            {
                return;
            }

            using (var session = new ScriptSession(ApplicationNames.Default))
            {
                String script = scriptItem.Fields[ScriptItemFieldNames.Script].Value;

                if (!string.IsNullOrEmpty(itemParam))
                {
                    Item item = itemDb.GetItem(itemParam);
                    if (item != null)
                        session.SetItemLocationContext(item);
                }

                context.Response.ContentType = "text/plain";

                session.ExecuteScriptPart(script, true);

                context.Response.Write(session.Output.ToString());

                if (session.Output.HasErrors)
                {
                    context.Response.StatusCode = 424;
                    context.Response.StatusDescription = "Method Failure";
                }
            }
        }
Exemplo n.º 2
0
        public void OnEvent(object sender, EventArgs args)
        {
            var eventArgs = args as SitecoreEventArgs;
            if (eventArgs == null)
            {
                return;
            }
            Item item = eventArgs.Parameters[0] as Item;
            string eventName = eventArgs.EventName.Replace(':', '/');

            Database database = item != null ? item.Database ?? Context.ContentDatabase : Context.ContentDatabase;
            Item libraryItem = database.GetItem(EventHandlerLibraryPath + eventName);

            if (libraryItem == null)
            {
                return;
            }
            using (var session = new ScriptSession(ApplicationNames.Default))
            {

                foreach (Item scriptItem in libraryItem.Children)
                {
                    if (item != null)
                    {
                        session.SetItemLocationContext(item);
                    }

                    session.SetVariable("eventArgs", eventArgs);
                    string script = scriptItem["Script"];
                    if (!String.IsNullOrEmpty(script))
                    {
                        session.ExecuteScriptPart(script);
                    }
                }
            }
        }
Exemplo n.º 3
0
        protected virtual void ClientExecute(ClientPipelineArgs args)
        {
            Settings = ApplicationSettings.GetInstance(ApplicationNames.IseConsole);
            using(var scriptSession = new ScriptSession(Settings.ApplicationName)){
            EnterScriptInfo.Visible = false;

            try
            {
                scriptSession.ExecuteScriptPart(Settings.Prescript);
                scriptSession.SetItemLocationContext(DataContext.CurrentItem);
                scriptSession.ExecuteScriptPart(Editor.Value);

                if (scriptSession.Output != null)
                {
                    Context.ClientPage.ClientResponse.SetInnerHtml("Result", scriptSession.Output.ToHtml());
                }
            }
            catch (Exception exc)
            {
                Context.ClientPage.ClientResponse.SetInnerHtml("Result",
                                                               string.Format("<pre style='background:red;'>{0}</pre>",
                                                                             scriptSession.GetExceptionString(exc)));
            }
            }
            if (Settings.SaveLastScript)
            {
                Settings.Load();
                Settings.LastScript = Editor.Value;
                Settings.Save();
            }
        }