Example #1
0
 public static string InitVar(string input, PipelineCommand command, ExecutionLog log)
 {
     foreach (var variableName in command.GetMultiArgument("var"))
     {
         if (!command.Pipeline.Variables.ContainsKey(variableName))
         {
             command.Pipeline.SafeSetVariable(variableName, String.Empty);
         }
     }
     return(input);
 }
Example #2
0
        public static string IsInGroup(string input, PipelineCommand command)
        {
            if (HttpContext.Current == null)
            {
                return(input);
            }

            var groups = command.GetMultiArgument("group");

            foreach (var group in groups)
            {
                if (HttpContext.Current.User.IsInRole(group))
                {
                    command.SendToLabel = command.GetArgument("label");
                    return(input);
                }
            }

            return(input);
        }
Example #3
0
        public static string Proxy(string input, PipelineCommand command, ExecutionLog log)
        {
            var method = command.GetArgument("method", HttpContext.Current.Request.HttpMethod);
            var get    = command.GetMultiArgument("get");
            var post   = command.GetMultiArgument("post");
            var cookie = command.GetMultiArgument("cookie");
            var header = command.GetMultiArgument("header");
            var url    = GetUrlArgument(input, command);

            var builder = new UriBuilder(url);

            // Add querystring args
            var query = HttpUtility.ParseQueryString(builder.Query);

            foreach (var getItem in get)
            {
                if (HttpContext.Current.Request.QueryString.AllKeys.Contains(getItem))
                {
                    query[getItem] = HttpContext.Current.Request.QueryString[getItem];
                }
            }
            builder.Query = query.ToString();

            //var request = CreateProxyRequest(builder.Uri);
            var request = (HttpWebRequest)WebRequest.Create(builder.Uri);

            request.Method = method.ToUpper();

            // Add form args
            if (post.Count > 0)
            {
                var postBody = HttpUtility.ParseQueryString("");
                foreach (var postItem in post)
                {
                    postBody[postItem] = HttpContext.Current.Request.Form[postItem];
                }
                if (postBody.Count > 0)
                {
                    var buf = Encoding.UTF8.GetBytes(postBody.ToString());
                    request.ContentLength = buf.Length;
                    request.GetRequestStream().Write(buf, 0, buf.Length);
                }
            }

            HttpWebResponse response;

            try
            {
                response = (HttpWebResponse)request.GetResponse();
            }
            catch (Exception e)
            {
                throw new DeninaException("Proxy request returned an error.", e);
            }

            var responseStream = response.GetResponseStream();

            if (responseStream == null)
            {
                return(String.Empty);
            }

            var enc = Encoding.UTF8;  // TODO: This is very poor form. I need to dynamically detect encoding...

            return(new StreamReader(responseStream, enc).ReadToEnd());
        }
Example #4
0
        public static string Concat(string input, PipelineCommand command)
        {
            var arguments = command.GetMultiArgument("value");

            return(String.Join(String.Empty, arguments));
        }