private MsieJsEngine SetupJsEngine()
        {
            var jsEngine = new MsieJsEngine();
            try
            {
                using (var sr = new StreamReader(
                    typeof(TypeScriptParserTests).Assembly.GetManifestResourceStream(
                        "Serenity.Test.CodeGeneration.TypeScriptParserTests.typescriptServices.js")))
                {
                    jsEngine.Evaluate(sr.ReadToEnd());
                }

                using (var sr = new StreamReader(
                    typeof(DtoGenerator).Assembly.GetManifestResourceStream(
                        "Serenity.Web.Scripts.tsservices.Serenity.CodeGeneration.js")))
                {
                    jsEngine.Evaluate(sr.ReadToEnd());
                }

                return jsEngine;
            }
            catch
            {
                jsEngine.Dispose();
                throw;
            }
        }
Example #2
0
        private MsieJsEngine SetupJsEngine()
        {
            var jsEngine = new MsieJsEngine();

            try
            {
                using (var sr = new StreamReader(
                           typeof(TypeScriptParserTests).Assembly.GetManifestResourceStream(
                               "Serenity.Test.CodeGeneration.TypeScriptParserTests.json2.min.js")))
                {
                    jsEngine.Evaluate(sr.ReadToEnd());
                }

                using (var sr = new StreamReader(
                           typeof(TypeScriptParserTests).Assembly.GetManifestResourceStream(
                               "Serenity.Test.CodeGeneration.TypeScriptParserTests.typescriptServices.js")))
                {
                    jsEngine.Evaluate(sr.ReadToEnd());
                }

                using (var sr = new StreamReader(
                           typeof(DtoGenerator).Assembly.GetManifestResourceStream(
                               "Serenity.Web.Scripts.tsservices.Serenity.CodeGeneration.js")))
                {
                    jsEngine.Evaluate(sr.ReadToEnd());
                }

                return(jsEngine);
            }
            catch
            {
                jsEngine.Dispose();
                throw;
            }
        }
Example #3
0
        private string ExecuteJs(string exeFilePath, string corlibPath, string entryPoint, out int exitCode, List <string> errors)
        {
            string jsOutput = null;

            exitCode = -1;
            using (var jsEngine = new MsieJsEngine(engineMode: JsEngineMode.Auto,
                                                   useEcmaScript5Polyfill: false, useJson2Library: false))
            {
                object exitCodeObj = null;
                try
                {
                    jsEngine.Execute(@"var braille_testlib_output = """";");
                    jsEngine.Execute(@"function braille_test_log(message) { braille_testlib_output += asm0.ToJavaScriptString(message) + ""\r\n""; }");

                    if (corlibPath != null)
                    {
                        jsEngine.ExecuteFile(corlibPath);
                    }

                    jsEngine.ExecuteFile(exeFilePath + ".js");
                    exitCodeObj = jsEngine.Evaluate(entryPoint + ".entryPoint()");
                }
                catch (JsEngineLoadException e)
                {
                    errors.Add("During loading of JavaScript engine an error occurred.\n" + JsErrorHelpers.Format(e));
                }
                catch (JsRuntimeException e)
                {
                    errors.Add("During execution of JavaScript code an error occurred.\n" + JsErrorHelpers.Format(e));
                }

                if (exitCodeObj == null || exitCodeObj == MsieJavaScriptEngine.Undefined.Value)
                {
                    exitCode = 0;
                }
                else
                {
                    exitCode = (int)(double)exitCodeObj;
                }

                try
                {
                    jsOutput = (string)jsEngine.Evaluate("braille_testlib_output");
                }
                catch
                {
                    errors.Add("Exception while evaluating script output");
                }
            }
            return(jsOutput);
        }
Example #4
0
        private static MsieJsEngine SetupJsEngine()
        {
            MsieJsEngine jsEngine;

            try
            {
                jsEngine = new MsieJsEngine(new JsEngineSettings {
                    EngineMode = JsEngineMode.ChakraIeJsRt
                });
            }
            catch
            {
                jsEngine = new MsieJsEngine();
            }
            try
            {
                using (var sr = new StreamReader(
                           typeof(ScriptBundleManager).Assembly.GetManifestResourceStream(
                               "Serenity.Web.Scripts.optimization.uglifyjs.min.js")))
                {
                    jsEngine.Evaluate(sr.ReadToEnd());
                }

                return(jsEngine);
            }
            catch
            {
                jsEngine.Dispose();
                throw;
            }
        }
Example #5
0
        public void EvaluationOfExpressionIsCorrect()
        {
            // Arrange

            // Act
            var result = _msieJsEngine.Evaluate <int>("7 * 8 - 20");

            // Assert
            Assert.AreEqual(36, result);
        }
Example #6
0
 public static string UnmaskFrom(string maskedUrl, string userId)
 {
     try
     {
         using (var jsEngine = new MsieJsEngine())
         {
             jsEngine.ExecuteResource("VkAudioSync.Vk.audioUnmask.js", Assembly.GetExecutingAssembly());
             return(jsEngine.Evaluate <string>($"unmaskUrl(\"{maskedUrl}\", {userId});"));
         }
     }
     catch (JsEngineLoadException e)
     {
         throw new Exception($"JS Compile error: {JsErrorHelpers.Format(e)}");
     }
     catch (JsRuntimeException e)
     {
         throw new Exception($"JS Runtime error: {JsErrorHelpers.Format(e)}");
     }
 }
Example #7
0
        private static string MinimizeWithUglifyJS(ref MsieJsEngine jsEngine, string code)
        {
            jsEngine = jsEngine ?? SetupJsEngine();
            jsEngine.SetVariableValue("CodeToCompress", code);

            jsEngine.Evaluate(
                @"(function() { 
                    var ast = UglifyJS.parse(CodeToCompress);
                    ast.figure_out_scope();
                    var compressor = UglifyJS.Compressor();
                    ast = ast.transform(compressor);
                    ast.figure_out_scope();
                    ast.compute_char_frequency();
                    ast.mangle_names();
                    CodeToCompress = ast.print_to_string();
                })();");

            return(jsEngine.GetVariableValue <string>("CodeToCompress"));
        }
        public virtual void EvaluationOfExpressionWithUndefinedResultIsCorrect()
        {
            // Arrange
            const string input        = "undefined";
            var          targetOutput = Undefined.Value;

            // Act
            var output = _jsEngine.Evaluate(input);

            // Assert
            Assert.AreEqual(targetOutput, output);
        }
Example #9
0
        private LoginBaseInfo GetLoginBaseInfo(AccountInfo accountInfo)
        {
            var httphelper = new HttpHelper(true, accountInfo.virtualAccount);

            var data = new Dictionary <string, string>();

            var item = GetHttpItem();

            item.URL = "https://passport.jd.com/new/login.aspx";

            var rs = httphelper.GetHtml(item);


            //返回的Html内容
            var html = rs.Html;

            if (!html.Contains("欢迎登录"))
            {
                Thread.Sleep(4000);
                rs   = httphelper.GetHtml(item);
                html = rs.Html;
            }
            //var htmlDoc = new HtmlAgilityPack.HtmlDocument();
            //htmlDoc.Load(html);
            //htmlDoc.SelectNodes

            CQ  dom    = html;
            var bold   = dom["form#formlogin input[type=hidden]"];
            var yzmUrl = "https://" + dom["img#JD_Verification1"][0].Attributes["src2"].Replace("//", "") +
                         "&yys=1495705227054";
            //var yzmUrl = dom["img#JD_Verification1"][0].Attributes["src"].Replace("//", "");

            var hiddenInputList = bold.Select(a => new { name = a.Attributes["name"], value = a.Attributes["value"] })
                                  .ToList();

            hiddenInputList.ForEach(a => { data.Add(a.name, a.value); });
            if (!hiddenInputList.Exists(a => a.name == "pubKey"))
            {
                var publicKey     = dom["input[name='pubKey']"];
                var publicKeyItem = publicKey
                                    .Select(a => new { name = a.Attributes["name"], value = a.Attributes["value"] }).First();
                hiddenInputList.Add(publicKeyItem);
            }

            var jdLoginJs = File.ReadAllText("./jd_login.js");
            var pubKey    = hiddenInputList.Find(a => a.name == "pubKey").value;

            data["pubKey"] = pubKey;
            string nloginpwd;

            jdLoginJs += ";get('" + pubKey + "','" + accountInfo.password + "');";
            using (var jsEngine = new MsieJsEngine())
            {
                nloginpwd = jsEngine.Evaluate <string>(jdLoginJs);
            }
            data["loginname"] = accountInfo.realAccount;
            data["nloginpwd"] = nloginpwd;
            //var ss = ;
            var eid = "GEOVEU4EP2CNEUQ3JFZENF2YARUJWXZZSBEGHDDWMYPXDIROG73DGBOELY3GMEAGGB427RQ5T5O2G3ODOSUODUMEUQ";
            var fp  = "c675b7cca9e276a3bca88c407cb14dbb";

            item.Postdata = "uuid=" + Encode(data["uuid"]) + "&" + "eid=" + Encode(eid) + "&" + "fp=" + fp + "&" +
                            "_t=" + Encode(data["_t"]) + "&" +
                            "loginType=f" + "&" + "loginname=" + accountInfo.realAccount + "&" + "nloginpwd=" +
                            accountInfo.password + "&" + "chkRememberMe=" + "&" +
                            "authcode=";

            var loginUrl = "https://passport.jd.com/uc/loginService?" + "uuid=" + Encode(data["uuid"]) + "&" + "r=" +
                           new Random().NextDouble() + "&" + "version=2015";

            return(new LoginBaseInfo {
                PostInfo = item.Postdata, YzmUrl = yzmUrl, LoginUrl = loginUrl
            });
        }
Example #10
0
        private static MsieJsEngine SetupJsEngine()
        {
            var jsEngine = new MsieJsEngine();
            try
            {
                using (var sr = new StreamReader(
                    typeof(ScriptBundleManager).Assembly.GetManifestResourceStream(
                        "Serenity.Web.Scripts.optimization.uglifyjs.min.js")))
                {
                    jsEngine.Evaluate(sr.ReadToEnd());
                }

                return jsEngine;
            }
            catch
            {
                jsEngine.Dispose();
                throw;
            }
        }
Example #11
0
        private static string MinimizeWithUglifyJS(ref MsieJsEngine jsEngine, string code)
        {
            jsEngine = jsEngine ?? SetupJsEngine();
            jsEngine.SetVariableValue("CodeToCompress", code);

            jsEngine.Evaluate(
                @"(function() {
                    var ast = UglifyJS.parse(CodeToCompress);
                    ast.figure_out_scope();
                    var compressor = UglifyJS.Compressor();
                    ast = ast.transform(compressor);
                    ast.figure_out_scope();
                    ast.compute_char_frequency();
                    ast.mangle_names();
                    CodeToCompress = ast.print_to_string();
                })();");

            return jsEngine.GetVariableValue<string>("CodeToCompress");
        }
        public virtual void ArrayEveryMethodIsSupported()
        {
            // Arrange
            const string initCode = "var engines = ['Chakra', 'V8', 'SpiderMonkey', 'Jurassic'];";

            const string input1        = "engines.every(function (value, index, array) { return value.length > 1; });";
            const bool   targetOutput1 = true;

            const string input2        = "engines.every(function (value, index, array) { return value.length < 10; });";
            const bool   targetOutput2 = false;

            // Act
            _jsEngine.Execute(initCode);

            var output1 = _jsEngine.Evaluate <bool>(input1);
            var output2 = _jsEngine.Evaluate <bool>(input2);

            // Assert
            Assert.AreEqual(targetOutput1, output1);
            Assert.AreEqual(targetOutput2, output2);
        }
Example #13
0
    static void Main()
    {
        api.Authorize(new ApiAuthParams()
        {
            // Your Token.
            AccessToken = ""
        });

        while (true)
        {
            // Your LongPoll.
            var lpsr  = api.Groups.GetLongPollServer(123123);
            var blphr = api.Groups.GetBotsLongPollHistory(
                new BotsLongPollHistoryParams()
            {
                Wait   = 25,
                Server = lpsr.Server,
                Ts     = lpsr.Ts,
                Key    = lpsr.Key
            });

            if (blphr?.Updates == null)
            {
                continue;
            }

            else
            {
                foreach (var events in blphr.Updates)
                {
                    if (events.Type == GroupUpdateType.MessageNew)
                    {
                        string userMessage = events.Message.Body.ToLower();
                        long?  userId      = events.Message.UserId;
                        long?  chatId      = events.Message.ChatId;

                        if (chatId == null)
                        {
                            if (userMessage.Contains("[JS code]".ToLower()))
                            {
                                string newText = userMessage.Replace("[JS code]".ToLower(), "");
                                newText = newText.Replace("?", " ");
                                try
                                {
                                    var engine = new MsieJsEngine();
                                    var result = engine.Evaluate(newText);
                                    engine.Execute(newText);
                                    SendMessage($"Output: {result}.", userId);
                                    Console.WriteLine($"[Log, user({userId})]: UserMessageText - {newText}, VariableResult - {result}.");
                                }

                                catch (Exception e)
                                {
                                    SendMessage($"Ошибка. Название исключения: {e.Message}.", userId);
                                    Console.WriteLine($"[Error Log, user({userId})]: Error - {e.Message}, UserMessageText - {newText}.");
                                }
                            }
                        }

                        else
                        {
                            if (userMessage.Contains("[JS code]".ToLower()))
                            {
                                string newText = userMessage.Replace("[JS code]".ToLower(), "");
                                newText = newText.Replace("?", " ");
                                try
                                {
                                    var engine = new MsieJsEngine();
                                    var result = engine.Evaluate(newText);
                                    engine.Execute(newText);
                                    SendChatMessage($"Output: {result}.", chatId);
                                    Console.WriteLine($"[Log, user({userId})]: UserMessageText - {newText}, VariableResult - {result}.");
                                }

                                catch (Exception e)
                                {
                                    SendChatMessage($"Ошибка. Название исключения: {e.Message}.", userId);
                                    Console.WriteLine($"[Error Log, user({userId})]: Error - {e.Message}, UserMessageText - {newText}.");
                                }
                            }
                        }
                    }
                }
            }
        }
    }
Example #14
0
 public object Evaluate(string code)
 {
     return(_engine.Evaluate(code));
 }