public Delimiters(DelimiterOptions DelimiterOption)
 {
     switch (DelimiterOption)
     {
         case DelimiterOptions.Parentheses:
             StartDelimiter = '(';
             EndDelimiter = ')';
             break;
         case DelimiterOptions.Brackets:
             StartDelimiter = '[';
             EndDelimiter = ']';
             break;
         case DelimiterOptions.Braces:
             StartDelimiter = '{';
             EndDelimiter = '}';
             break;
         case DelimiterOptions.SingleQuotes:
             StartDelimiter = '\'';
             EndDelimiter = '\'';
             break;
         case DelimiterOptions.DoubleQuotes:
             StartDelimiter = '"';
             EndDelimiter = '"';
             break;
         case DelimiterOptions.None:
             StartDelimiter = ' ';
             EndDelimiter = ';';
             break;
         default:
             throw new Exception("Invalid Delimiter Option");
     }
 }
        public Hook(string FunctionName, int Parameters, DelimiterOptions DelimiterOption)
        {
            this.FunctionName = FunctionName;
            ReplacementName = "Hook_" + _md5.ComputeHash(FunctionName) + Parameters;

            var d = new Delimiters(DelimiterOption);

            this.StartDelimiter = d.StartDelimiter;
            this.EndDelimiter = d.EndDelimiter;

            StringBuilder funcParams = new StringBuilder();
            StringBuilder echoes = new StringBuilder();

            string fileOpen = "$f = fopen($_SERVER['DOCUMENT_ROOT'] . '/" +
                TraceFile + "', 'a') or die('error opening trace file');\r\n",
                fileClose = "fclose($f);\r\n";

            string callInfoStart = new string('-', 32) + "Start\\n",
                callInfoEnd = new string('-', 32) + "End\\n";

            string startEcho = "fwrite($f, \"" + callInfoStart + "\");\r\n",
                endEcho = "fwrite($f, \"" + callInfoEnd + "\");\r\n";

            for (int i = 0; i < Parameters; i++)
            {
                string paramName = "$Param" + i.ToString();

                echoes.AppendLine("fwrite($f, '" + paramName + ": '." + paramName + ".\"\\n\");");
                funcParams.Append((funcParams.Length != 0 ? "," : "") + paramName);
            }

            ReplacementFunction =
                DelimiterOption == DelimiterOptions.Parentheses ?
                "function " + ReplacementName + "(" + funcParams + ")\r\n{\r\n" +
                fileOpen +
                startEcho +
                "fwrite($f, \"Function Called: " + FunctionName + "\\n\");\r\n" +
                echoes.ToString() +
                endEcho +
                fileClose +
                "return " + FunctionName + StartDelimiter + funcParams + EndDelimiter + ";\r\n}\r\n" :

                "function " + ReplacementName + "(" + funcParams + ")\r\n{\r\n" +
                fileOpen +
                startEcho +
                "fwrite($f, \"Function Called: \\" + FunctionName + "\\n\");\r\n" +
                echoes.ToString() +
                "fwrite($f, \"Value: \");\r\n" +
                //"$e=var_export(" + FunctionName + "[$Param0]);fwrite($f, $e);\r\n" +
                "if (isset(" + FunctionName + "[$Param0])) { fwrite($f, is_array(" + FunctionName + "[$Param0]) ? " +
                    "implode(',', " + FunctionName + "[$Param0]) : " + FunctionName + "[$Param0]); }\r\n" +
                "fwrite($f, \"\\n\");\r\n" +
                endEcho +
                fileClose +
                "return $Param0;\r\n}\r\n";

            if (DelimiterOption == DelimiterOptions.None)
                ReplacementFunction = "";
        }
        public Delimiters(DelimiterOptions DelimiterOption)
        {
            switch (DelimiterOption)
            {
            case DelimiterOptions.Parentheses:
                StartDelimiter = '(';
                EndDelimiter   = ')';
                break;

            case DelimiterOptions.Brackets:
                StartDelimiter = '[';
                EndDelimiter   = ']';
                break;

            case DelimiterOptions.Braces:
                StartDelimiter = '{';
                EndDelimiter   = '}';
                break;

            case DelimiterOptions.SingleQuotes:
                StartDelimiter = '\'';
                EndDelimiter   = '\'';
                break;

            case DelimiterOptions.DoubleQuotes:
                StartDelimiter = '"';
                EndDelimiter   = '"';
                break;

            case DelimiterOptions.None:
                StartDelimiter = ' ';
                EndDelimiter   = ';';
                break;

            default:
                throw new Exception("Invalid Delimiter Option");
            }
        }
Exemple #4
0
        public Hook(string FunctionName, int Parameters, DelimiterOptions DelimiterOption)
        {
            this.FunctionName = FunctionName;
            ReplacementName   = "Hook_" + _md5.ComputeHash(FunctionName) + Parameters;

            var d = new Delimiters(DelimiterOption);

            this.StartDelimiter = d.StartDelimiter;
            this.EndDelimiter   = d.EndDelimiter;

            StringBuilder funcParams = new StringBuilder();
            StringBuilder echoes     = new StringBuilder();

            string fileOpen = "$f = fopen($_SERVER['DOCUMENT_ROOT'] . '/" +
                              TraceFile + "', 'a') or die('error opening trace file');\r\n",
                   fileClose = "fclose($f);\r\n";

            string callInfoStart = new string('-', 32) + "Start\\n",
                   callInfoEnd   = new string('-', 32) + "End\\n";

            string startEcho = "fwrite($f, \"" + callInfoStart + "\");\r\n",
                   endEcho   = "fwrite($f, \"" + callInfoEnd + "\");\r\n";

            for (int i = 0; i < Parameters; i++)
            {
                string paramName = "$Param" + i.ToString();

                echoes.AppendLine("fwrite($f, '" + paramName + ": '." + paramName + ".\"\\n\");");
                funcParams.Append((funcParams.Length != 0 ? "," : "") + paramName);
            }

            ReplacementFunction =
                DelimiterOption == DelimiterOptions.Parentheses ?
                "function " + ReplacementName + "(" + funcParams + ")\r\n{\r\n" +
                fileOpen +
                startEcho +
                "fwrite($f, \"Function Called: " + FunctionName + "\\n\");\r\n" +
                echoes.ToString() +
                endEcho +
                fileClose +
                "return " + FunctionName + StartDelimiter + funcParams + EndDelimiter + ";\r\n}\r\n" :

                "function " + ReplacementName + "(" + funcParams + ")\r\n{\r\n" +
                fileOpen +
                startEcho +
                "fwrite($f, \"Function Called: \\" + FunctionName + "\\n\");\r\n" +
                echoes.ToString() +
                "fwrite($f, \"Value: \");\r\n" +
                //"$e=var_export(" + FunctionName + "[$Param0]);fwrite($f, $e);\r\n" +
                "if (isset(" + FunctionName + "[$Param0])) { fwrite($f, is_array(" + FunctionName + "[$Param0]) ? " +
                "implode(',', " + FunctionName + "[$Param0]) : " + FunctionName + "[$Param0]); }\r\n" +
                "fwrite($f, \"\\n\");\r\n" +
                endEcho +
                fileClose +
                "return $Param0;\r\n}\r\n";

            if (DelimiterOption == DelimiterOptions.None)
            {
                ReplacementFunction = "";
            }
        }
Exemple #5
0
        public static IEnumerable <Memory <T> > Split <T>(this Memory <T> memory, T delimiter, DelimiterOptions option = DelimiterOptions.Exclude) where T : IEquatable <T>
        {
            switch (option)
            {
            default:
            case DelimiterOptions.Exclude:
                return(SplitWithExclude <T>(memory, delimiter));

            case DelimiterOptions.Return:
                return(SplitWithReturn <T>(memory, delimiter));

            case DelimiterOptions.Carry:
                return(SplitWithCarry <T>(memory, delimiter));
            }

            throw new NotSupportedException();
        }
Exemple #6
0
 public static IEnumerable <Memory <char> > Split(this Memory <char> memory, char delimiter, DelimiterOptions option = DelimiterOptions.Exclude)
 {
     return(memory.Split <char>(delimiter, option));
 }
Exemple #7
0
 public static IEnumerable <Memory <byte> > Split(this Memory <byte> memory, byte delimiter, DelimiterOptions option = DelimiterOptions.Exclude)
 {
     return(memory.Split <byte>(delimiter, option));
 }