Beispiel #1
0
        public static string GetJsonValueForKey(string html, string key)
        {
            string value = string.Empty;

            try
            {
                // Getting json string from variable
                HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
                doc.LoadHtml(html);
                var script = doc.DocumentNode.Descendants()
                             .Where(n => n.Name == "script")
                             .First().InnerText;

                // Return the data of spect and stringify it into a proper JSON object
                var engine = new Jurassic.ScriptEngine();
                var result = engine.Evaluate("(function() { " + script + " return gm_init_vars; })()");
                var json   = JSONObject.Stringify(engine, result);

                // Json parsing
                value = GetJsonObjectValue(json, key);
            }
            catch (Exception ex)
            {
                ex.ToString();
                throw;
            }

            return(value);
        }
        private void Init()
        {
            var BaiduEncoderResourceBase64 = File.ReadAllText(_ResourceFilePath);

            bool IsHashCorrect = false;

            using (SHA256 sha256Hash = SHA256.Create())
            {
                IsHashCorrect = Helper.VerifyHash(sha256Hash, BaiduEncoderResourceBase64, savedHash);
            }

            if (!IsHashCorrect)
            {
                return;
            }

            try
            {
                string BaiduEncoderJS = Helper.Base64Decode(BaiduEncoderResourceBase64);

                _BaiduEncoderEngine = new Jurassic.ScriptEngine();
                _BaiduEncoderEngine.Evaluate(BaiduEncoderJS);
            }
            catch (Exception e)
            {
                _Logger?.WriteLog(e.ToString());
                _IsAvaliable = false;
                return;
            }

            _IsAvaliable = true;
        }
 private decimal CalTotal(int grade, List <StudentScore> scores)
 {
     if (UserSettings.Current != null)
     {
         try
         {
             var func = UserSettings.Current.GetTotalExpression(grade);
             if (!string.IsNullOrEmpty(func))
             {
                 func = Extra(func, scores, "0");
             }
             if (!string.IsNullOrEmpty(func))
             {
                 if (_JS == null)
                 {
                     _JS = new Jurassic.ScriptEngine();
                 }
                 object temp = _JS.Evaluate(func);
                 return(Math.Round(Convert.ToDecimal(temp), 1));
             }
         }
         catch (Exception ex)
         {
             LJH.GeneralLibrary.ExceptionHandling.ExceptionPolicy.HandleException(ex);
         }
     }
     return(0);
 }
Beispiel #4
0
        protected override void Initialize()
        {
            timers = new TimerManager();

            js = new Jurassic.ScriptEngine();
            js.SetGlobalFunction("setTimeout", new Action <Jurassic.Library.FunctionInstance, int>(setTimeout));
            js.SetGlobalFunction("setInterval", new Action <Jurassic.Library.FunctionInstance, int>(setInterval));
            js.SetGlobalFunction("clearTimeout", new Action <int>(clearTimeout));
            js.SetGlobalFunction("clearInterval", new Action <int>(clearInterval));

            js.SetGlobalValue("window", js.Global);
            js.SetGlobalValue("console", new JSConsole(js));
            js.SetGlobalValue("Canvas", new JSCanvasConstructor(js));
            js.SetGlobalValue("Image", new JSImageConstructor(js));

#if !XBOX
            if (GenerateAndExit != null)
            {
                GenerateAssemblyAndExit(GenerateAndExit);
                return;
            }
#endif

#if XBOX || RELEASE
            // On the XBOX or RELEASE config, run the compiled JavaScript from the Assembly
            js.LoadFromAssembly("ImpactGame");
            Generated.Main(js, js.CreateGlobalScope(), js.Global);
#else
            // In Windows/DEBUG, run JavaScript directly from source
            js.EnableDebugging = true;
            js.Evaluate(new Jurassic.FileScriptSource("Game/index.js"));
#endif
            base.Initialize();
        }
        protected override object InnerEvaluate(string expression, string documentName)
        {
            object result;
            string uniqueDocumentName = GetUniqueDocumentName(documentName, false);

            lock (_executionSynchronizer)
            {
                try
                {
                    var source = new OriginalStringScriptSource(expression, uniqueDocumentName);
                    result = _jsEngine.Evaluate(source);
                }
                catch (OriginalJsException e)
                {
                    throw ConvertJavascriptExceptionToJsRuntimeException(e);
                }
                catch (NotImplementedException e)
                {
                    throw new JsRuntimeException(e.Message, e);
                }
            }

            result = MapToHostType(result);

            return(result);
        }
        private void Init()
        {
            var PapagoEncoderResource = File.ReadAllText(ResourceFilePath);

            bool IsHashCorrect = false;

            using (SHA256 sha256Hash = SHA256.Create())
            {
                IsHashCorrect = Helper.VerifyHash(sha256Hash, PapagoEncoderResource, savedHash);
            }

            if (!IsHashCorrect)
            {
                return;
            }
            try
            {
                string PapagoEncoderResourceDecrypted = StringCipher.Decrypt(PapagoEncoderResource, password);
                string PapagoEncoderJS = Helper.Base64Decode(PapagoEncoderResourceDecrypted);

                PapgoEncoderEngine = new Jurassic.ScriptEngine();
                PapgoEncoderEngine.Evaluate(PapagoEncoderJS);
            }
            catch (Exception e)
            {
                _Logger?.WriteLog(e.ToString());
                _IsAvaliable = false;
                return;
            }

            _IsAvaliable = true;
        }
Beispiel #7
0
        public static object Evaluate(string script)
        {
            object result;

            if (Engine == JSEngine.JScript)
            {
                if (jscriptEngine == null)
                {
                    jscriptEngine = ActiveScriptEngine.FromLanguage(ScriptLanguage.JScript);
                }
                result = jscriptEngine.Evaluate(script);
                if (result == DBNull.Value)
                {
                    result = Jurassic.Null.Value;
                }
                else if (result == null)
                {
                    result = Jurassic.Undefined.Value;
                }
            }
            else
            {
                InitializeJurassic();
                result = jurassicScriptEngine.Evaluate(script);
            }
            return(result);
        }
Beispiel #8
0
        protected override void Decrypt(string content, out string[] links, out string password)
        {
            links    = null;
            password = null;

            // unescape content
            content = Regex.Unescape(content);

            // get encrypted data
            Regex  rgxData = new Regex("crypted=(.*?)(&|$)");
            String data    = rgxData.Match(content).Groups[1].ToString();

            // get encrypted pass
            Regex  rgxKey = new Regex("jk=(.*?){(.*?)}(;|&|$)");
            String key    = rgxKey.Match(content).Groups[2].ToString();

            // get archive password
            Regex rgxPass = new Regex("passwords=(.*?)(&|$)");

            password = rgxPass.Match(content).Groups[1].ToString();

            var jsEngine = new Jurassic.ScriptEngine();

            key = jsEngine.Evaluate("(function (){" + key + "})()").ToString();

            // decode key
            key = key.ToUpper();
            String decKey = "";

            for (int i = 0; i < key.Length; i += 2)
            {
                decKey += (char)Convert.ToUInt16(key.Substring(i, 2), 16);
            }

            // decode data
            byte[] dataByte = Convert.FromBase64String(data);

            // decrypt that shit!
            RijndaelManaged rDel = new RijndaelManaged();

            System.Text.ASCIIEncoding aEc = new System.Text.ASCIIEncoding();
            rDel.Key     = aEc.GetBytes(decKey);
            rDel.IV      = aEc.GetBytes(decKey);
            rDel.Mode    = CipherMode.CBC;
            rDel.Padding = PaddingMode.None;
            ICryptoTransform cTransform = rDel.CreateDecryptor();

            byte[] resultArray = cTransform.TransformFinalBlock(dataByte, 0, dataByte.Length);
            String rawLinks    = aEc.GetString(resultArray);

            // replace empty paddings
            Regex  rgx        = new Regex("\u0000+$");
            String cleanLinks = rgx.Replace(rawLinks, "");

            // replace newlines
            rgx        = new Regex("\n+");
            cleanLinks = rgx.Replace(cleanLinks, "\r\n");
            links      = cleanLinks.Split("\r\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
        }
Beispiel #9
0
        protected override Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            var task = base.SendAsync(request, cancellationToken);

            var response = task.Result;

            if (base.CookieContainer.GetCookieHeader(request.RequestUri).Contains("cf_clearance"))
            {
                return(task);
            }

            IEnumerable <string> values;

            if (response.Headers.TryGetValues("refresh", out values) && values.FirstOrDefault().Contains("URL=/cdn-cgi/") && response.Headers.Server.ToString() == "cloudflare-nginx")
            {
                Console.WriteLine("Solving cloudflare challenge . . . ");

                string content = response.Content.ReadAsStringAsync().Result;

                var htmlDocument = new HtmlDocument();
                htmlDocument.LoadHtml(content);

                var jschl_vc = htmlDocument.DocumentNode.SelectSingleNode(@".//input[@name=""jschl_vc""]").Attributes["value"].Value;
                var pass     = htmlDocument.DocumentNode.SelectSingleNode(@".//input[@name=""pass""]").Attributes["value"].Value;

                var script = htmlDocument.DocumentNode.SelectSingleNode(@".//script").InnerText;

                var regex = new string[3] {
                    @"setTimeout\(function\(\){(.+)},\s*\d*\s*\)\s*;",
                    @"^\n*\s*(var\s+.*?;)",
                    @"(?<=\s+;)(.+t.length;)"
                };

                string function, vars, calc;

                function = Regex.Match(script, regex[0], RegexOptions.Singleline).Value;
                vars     = Regex.Match(function, regex[1], RegexOptions.Multiline).Value;
                calc     = Regex.Match(function, regex[2], RegexOptions.Singleline).Value
                           .Replace("a.value", "var result")
                           .Replace("t.length", (request.RequestUri.Host.Length).ToString());;

                var    engine = new Jurassic.ScriptEngine();
                object result = engine.Evaluate("function getAnswer() {" + vars + calc + "return result;" + "} getAnswer();");

                Thread.Sleep(5000);

                var requestUri = request.RequestUri;

                request.RequestUri = new Uri(requestUri, String.Format("cdn-cgi/l/chk_jschl?jschl_vc={0}&pass={1}&jschl_answer={2}", jschl_vc, pass, result.ToString()));

                base.SendAsync(request, cancellationToken).Wait();

                request.RequestUri = requestUri;

                return(base.SendAsync(request, cancellationToken));
            }

            return(task);
        }
Beispiel #10
0
        public void PreevaluateStaticMethod()
        {
            var expression = Expression(model => GetText());
            var script     = Translate(expression);

            var engine = new Jurassic.ScriptEngine();
            var result = engine.Evaluate($"({script})()");

            Assert.AreEqual("Text", result);
        }
Beispiel #11
0
        public async static Task <string> GetCoinCheckupDataPath()
        {
            var Scraper = new ScrapingBrowser();

            var js = new Jurassic.ScriptEngine();

            Scraper.AllowAutoRedirect = true;

            Scraper.AllowMetaRedirect = true;

            var Page = await Scraper.NavigateToPageAsync(new Uri("https://coincheckup.com/analysis"));

            var RootScript = Page.Html.SelectSingleNode("//script[contains(text(), 'DATA_URI')]");
            var x          = js.Evaluate("window = {}");
            var result     = js.Evaluate(RootScript.InnerText);

            var root = js.GetGlobalValue <string>("DATA_URI");

            return(root);
        }
Beispiel #12
0
        static void Main(string[] args)
        {
            var eng = new Jurassic.ScriptEngine();

            eng.Evaluate("function text(){return JSON.stringify( {'a':10,'b':20});}");
            var rs = eng.CallGlobalFunction <string>("text");

            //var model = Util.SerializerJsonOrEntity.GetObject<model>(rs);
            //Console.WriteLine(model.a);
            Console.Read();
        }
Beispiel #13
0
        public T Evaluate <T>(string script, params object[] parameters)
        {
            var engine = new Jurassic.ScriptEngine();
            int i      = 0;

            foreach (var p in parameters)
            {
                engine.SetGlobalValue("parameter" + i, p);
                i++;
            }
            return(engine.Evaluate <T>(script));
        }
Beispiel #14
0
 private T Evaluate <T>(Jurassic.ScriptEngine engine, string script)
 {
     try
     {
         return(engine.Evaluate <T>(script));
     }
     catch (Exception e)
     {
         this._log.Error("脚本解析异常", e);
         throw new Exception("脚本解析异常:" + e.Message);
     }
 }
        static object EvalJScript(string jScript, params string[] dependencies)
        {
            var engine = new Jurassic.ScriptEngine();

            var scriptWithDependencies = string.Join("\r\n\r\n", dependencies) + "\r\n" + jScript;
            object result = null;
            try
            {
                var evalJScript = engine.Evaluate(scriptWithDependencies);
                if (evalJScript is Jurassic.Library.UserDefinedFunction)
                {
                    engine.Execute(scriptWithDependencies);
                    return engine.Evaluate("out()");
                }
                return evalJScript;
            }
            catch (Exception ex)
            {
                throw new InvalidJavascriptException(jScript, ex);
            }

            return result;
        }        
Beispiel #16
0
        public void EngineTest()
        {
            var engine = new Jurassic.ScriptEngine();
            engine.SetGlobalValue("i", 1);
            engine.SetGlobalValue("i", 2);
            Assert.AreEqual(2, engine.GetGlobalValue("i"));

            engine.SetGlobalFunction("test", new Func<object, object, object, object, string>(Test));

            Trace.WriteLine(engine.Evaluate<string>("test(1)"));
            Trace.WriteLine(engine.CallGlobalFunction<string>("test", new object[] { 1 }));

            Trace.WriteLine(engine.Array.Call(1, 2, 3).ElementValues.ToList()[2]);
        }
Beispiel #17
0
        public Jurassic.ScriptEngine Debug()
        {
            Jurassic.ScriptEngine engine = new Jurassic.ScriptEngine();

            foreach (string item in Directory.GetFiles(TemplateFolder, "*.js"))
            {
                engine.Evaluate(new Jurassic.FileScriptSource(item));
            }

            DatabaseJson = Newtonsoft.Json.JsonConvert.SerializeObject(Database, Newtonsoft.Json.Formatting.Indented, new Newtonsoft.Json.Converters.StringEnumConverter());
            SettingJson  = Newtonsoft.Json.JsonConvert.SerializeObject(Settings, Newtonsoft.Json.Formatting.Indented);

            return(engine);
        }
        private void Init()
        {
            try
            {
                var YandexEncoderResource = File.ReadAllText(_ResourceFilePath);
                var YandexAuthResource    = File.ReadAllText(_AccountsFilePath);

                bool IsHashCorrect = false;

                using (SHA256 sha256Hash = SHA256.Create())
                {
                    IsHashCorrect = Helper.VerifyHash(sha256Hash, YandexEncoderResource, _EncoderHash);
                    IsHashCorrect = IsHashCorrect && Helper.VerifyHash(sha256Hash, YandexAuthResource, _AuthHash);
                }

                if (!IsHashCorrect)
                {
                    return;
                }

                string YandexEncoderResourceDecrypted = StringCipher.Decrypt(YandexEncoderResource, _Password);
                string YandexEncoderJS = Helper.Base64Decode(YandexEncoderResourceDecrypted);

                _YandexEncoderEngine = new Jurassic.ScriptEngine();
                _YandexEncoderEngine.Evaluate(YandexEncoderJS);


                string yandexAuthResourceDecrypted = StringCipher.Decrypt(YandexAuthResource, _Password);
                string yandexAuthJson = Helper.Base64Decode(yandexAuthResourceDecrypted);

                var yandexAccs = JsonConvert.DeserializeObject <List <YandexAuthContainer> >(yandexAuthJson);

                List <YandexSession> sessions = new List <YandexSession>();
                foreach (var acc in yandexAccs)
                {
                    sessions.Add(new YandexSession(acc, _Logger));
                }

                _YandexSessions = sessions.Shuffle();

                _IsAvaliable = true;
            }
            catch (Exception e)
            {
                _Logger?.WriteLog(e.ToString());
                _IsAvaliable = false;
                return;
            }
        }
Beispiel #19
0
        public void EngineTest()
        {
            var engine = new Jurassic.ScriptEngine();

            engine.SetGlobalValue("i", 1);
            engine.SetGlobalValue("i", 2);
            Assert.AreEqual(2, engine.GetGlobalValue("i"));

            engine.SetGlobalFunction("test", new Func <object, object, object, object, string>(Test));

            Trace.WriteLine(engine.Evaluate <string>("test(1)"));
            Trace.WriteLine(engine.CallGlobalFunction <string>("test", new object[] { 1 }));

            Trace.WriteLine(engine.Array.Call(1, 2, 3).ElementValues.ToList()[2]);
        }
Beispiel #20
0
        public bool Jurassic(Parameter parameter)
        {
            Jurassic.ScriptEngine engine = new Jurassic.ScriptEngine();

            List <int> results = new List <int>(parameter.Statements.Length);

            foreach (string statement in parameter.Statements)
            {
                int result = engine.Evaluate <int>(statement);

                results.Add(result);
            }

            return(Assert(results, parameter.Sum));
        }
        public string UseJurassic(List <string> Parameters)
        {
            int a;
            int b;

            int.TryParse(Parameters[0], out a);
            int.TryParse(Parameters[1], out b);

            var engine = new Jurassic.ScriptEngine();

            engine.Evaluate("function test(a, b) { return a + b }");
            var ret = engine.CallGlobalFunction <int>("test", a, b);


            return(ret.ToString());
        }
Beispiel #22
0
        public bool Jurassic(Parameter parameter)
        {
            Jurassic.ScriptEngine engine = new Jurassic.ScriptEngine();

            List <int> results = new List <int>(parameter.Numbers.Length);

            foreach (int number in parameter.Numbers)
            {
                engine.SetGlobalValue("n", number);

                int result = engine.Evaluate <int>(EXPRESSION);

                results.Add(result);
            }

            return(Assert(results, parameter.Sum));
        }
Beispiel #23
0
        public bool Jurassic(Parameter parameter)
        {
            Jurassic.ScriptEngine engine = new Jurassic.ScriptEngine();
            //engine.EnableExposedClrTypes = true;
            engine.SetGlobalValue("n", engine.Array.New(parameter.Numbers.Cast <object>().ToArray()));

            List <int> results = new List <int>(parameter.Numbers.Length);

            foreach (int number in parameter.Numbers)
            {
                int result = engine.Evaluate <int>(parameter.Statements[number]);

                results.Add(result);
            }

            return(Assert(results, parameter.Sum));
        }
Beispiel #24
0
        protected override object InnerEvaluate(string expression)
        {
            object result;

            try
            {
                result = _jsEngine.Evaluate(expression);
            }
            catch (OriginalJsException e)
            {
                throw ConvertJavascriptExceptionToJsRuntimeException(e);
            }

            result = MapToHostType(result);

            return(result);
        }
Beispiel #25
0
        private void list()
        {
            try
            {
                txtPageNow.Text = pageNow.ToString();

                string start = pageNow > 1 ? ((pageNow - 1) * interval).ToString() : "0";
                string url   = getUrl(curcol, start);

                string s;
                using (System.Net.WebClient wc = new System.Net.WebClient())
                {
                    Byte[] pageData = wc.DownloadData(url);

                    s = System.Text.Encoding.GetEncoding("GBK").GetString(pageData);
                    //Stream stream = new System.IO.MemoryStream(Encoding.Convert(Encoding.GetEncoding("GBK"), Encoding.UTF8, pageData));
                    //s = System.Text.Encoding.UTF8.GetString(pageData);去除中文乱码

                    s += @"
    function getstring(){
        var s=serv_loadColumnNews();
        return  JSON.stringify(s);
    }
";
                    var eng = new Jurassic.ScriptEngine();
                    eng.Evaluate(s);
                    var b = eng.CallGlobalFunction <string>(@"getstring");

                    m = JsonConvert.DeserializeObject <oainfo>(b);
                }
                pagesAll        = m.total / interval + (m.total % interval == 0 ? 0 : 1);
                labPageAll.Text = pagesAll.ToString();

                listDoc.Items.Clear();
                foreach (var v in m.informations)
                {
                    ListViewItem lvi = new ListViewItem();
                    lvi = listDoc.Items.Add(v.id);
                    lvi.SubItems.Add(v.bt);
                    lvi.SubItems.Add(v.time);
                    lvi.SubItems.Add(v.mc);
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }
Beispiel #26
0
        private static void StartSpider(Options param)
        {
            ScriptProcessor pageProcessor = ScriptProcessorBuilder.Custom().Language(param.Lang).ScriptFromFile(param.File).Thread(param.Thread).Build();

            pageProcessor.Site.SleepTime      = param.Sleep;
            pageProcessor.Site.RetryTimes     = 3;
            pageProcessor.Site.AcceptStatCode = new HashSet <int> {
                200, 404, 403, 500, 502
            };
            Core.Spider spider = Core.Spider.Create(pageProcessor).SetThreadNum(param.Thread);
            spider.ClearPipeline();

            StringBuilder builder = new StringBuilder();

            using (StreamReader sr = new StreamReader(typeof(ScriptConsole).Assembly.GetManifestResourceStream("Java2Dotnet.Spider.Scripts.Resource.js.define.js")))
            {
                string line;

                while ((line = sr.ReadLine()) != null)
                {
                    builder.AppendLine(line);
                }
            }

            string script = builder + Environment.NewLine + File.ReadAllText(param.File);

            Jurassic.ScriptEngine engine = new Jurassic.ScriptEngine {
                EnableExposedClrTypes = true
            };
            //engine.SetGlobalValue("page", new Page());
            engine.SetGlobalValue("config", new Site());

            engine.Evaluate(script);

            foreach (string url in param.Urls)
            {
                spider.AddUrl(url);
            }
            spider.Run();
        }
        protected override object InnerEvaluate(string expression, string documentName)
        {
            object result;
            string uniqueDocumentName = GetUniqueDocumentName(documentName, false);

            lock (_executionSynchronizer)
            {
                try
                {
                    var source = new OriginalStringScriptSource(expression, uniqueDocumentName);
                    result = _jsEngine.Evaluate(source);
                }
                catch (OriginalJavaScriptException e)
                {
                    throw WrapJavaScriptException(e);
                }
            }

            result = MapToHostType(result);

            return(result);
        }
Beispiel #28
0
        public static string analysis(string s)
        {
            var engine = new Jurassic.ScriptEngine();

            engine.Evaluate(@"var _0x37e6 = ['\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x2B\x2F\x3D', '', '\x73\x75\x62\x73\x74\x72', '\x63\x68\x61\x72\x41\x74', '\x69\x6E\x64\x65\x78\x4F\x66', '\x66\x72\x6F\x6D\x43\x68\x61\x72\x43\x6F\x64\x65', '\x6C\x65\x6E\x67\x74\x68', '\x6A\x6F\x69\x6E', '\x63\x68\x61\x72\x43\x6F\x64\x65\x41\x74'];
function jj(_0x79b1x2) {
    var _0x79b1x3 = _0x37e6[0];
    var _0x79b1x4, _0x79b1x5, _0x79b1x6, _0x79b1x7, _0x79b1x8, _0x79b1x9, _0x79b1xa, _0x79b1xb, _0x79b1xc = 0,
    _0x79b1xd = 0,
    _0x79b1xe = _0x37e6[1],
    _0x79b1xf = [];
    if (!_0x79b1x2) {
        return _0x79b1x2;
    };
    _0x79b1x2 = _0x79b1x2[_0x37e6[2]](2);
    _0x79b1x2 += _0x37e6[1];
    do {
        _0x79b1x7 = _0x79b1x3[_0x37e6[4]](_0x79b1x2[_0x37e6[3]](_0x79b1xc++));
        _0x79b1x8 = _0x79b1x3[_0x37e6[4]](_0x79b1x2[_0x37e6[3]](_0x79b1xc++));
        _0x79b1x9 = _0x79b1x3[_0x37e6[4]](_0x79b1x2[_0x37e6[3]](_0x79b1xc++));
        _0x79b1xa = _0x79b1x3[_0x37e6[4]](_0x79b1x2[_0x37e6[3]](_0x79b1xc++));
        _0x79b1xb = _0x79b1x7 << 18 | _0x79b1x8 << 12 | _0x79b1x9 << 6 | _0x79b1xa;
        _0x79b1x4 = _0x79b1xb >> 16 & 0xff;
        _0x79b1x5 = _0x79b1xb >> 8 & 0xff;
        _0x79b1x6 = _0x79b1xb & 0xff;
        if (_0x79b1x9 == 64) {
            _0x79b1xf[_0x79b1xd++] = String[_0x37e6[5]](_0x79b1x4);
        } else {
            if (_0x79b1xa == 64) {
                _0x79b1xf[_0x79b1xd++] = String[_0x37e6[5]](_0x79b1x4, _0x79b1x5);
            } else {
                _0x79b1xf[_0x79b1xd++] = String[_0x37e6[5]](_0x79b1x4, _0x79b1x5, _0x79b1x6);
            };
        };
    } while ( _0x79b1xc < _0x79b1x2 [ _0x37e6 [ 6 ]]);;
    _0x79b1xe = _0x79b1xf[_0x37e6[7]](_0x37e6[1]);
    return utf8d(_0x79b1xe);
};
function utf8d(_0x79b1x11) {
    var _0x79b1x12 = _0x37e6[1],
    _0x79b1xc = 0,
    _0x79b1x13 = c1 = c2 = 0;
    while (_0x79b1xc < _0x79b1x11[_0x37e6[6]]) {
        _0x79b1x13 = _0x79b1x11[_0x37e6[8]](_0x79b1xc);
        if (_0x79b1x13 < 128) {
            _0x79b1x12 += String[_0x37e6[5]](_0x79b1x13);
            _0x79b1xc++;
        } else {
            if ((_0x79b1x13 > 191) && (_0x79b1x13 < 224)) {
                c2 = _0x79b1x11[_0x37e6[8]](_0x79b1xc + 1);
                _0x79b1x12 += String[_0x37e6[5]](((_0x79b1x13 & 31) << 6) | (c2 & 63));
                _0x79b1xc += 2;
            } else {
                c2 = _0x79b1x11[_0x37e6[8]](_0x79b1xc + 1);
                c3 = _0x79b1x11[_0x37e6[8]](_0x79b1xc + 2);
                _0x79b1x12 += String[_0x37e6[5]](((_0x79b1x13 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                _0x79b1xc += 3;
            };
        };
    };
    return _0x79b1x12;
};");
            string res = engine.CallGlobalFunction <string>("jj", s);

            //Regex r2 = new Regex(@"Vídeo Id: .*<br>Sìze:");
            //Item.id = r2.Matches(res)[0].Value.Split(new string[] { "Vídeo Id: ", "<br>Sìze:" }, StringSplitOptions.RemoveEmptyEntries)[0];
            //Item.id = "<a>" + Item.torrent.Replace(">", "/>")+"</a>";
            //XmlDocument xmlDoc = new XmlDocument();
            //xmlDoc.LoadXml(Item.id);
            //string id="";
            //foreach (XmlNode x in xmlDoc.GetElementsByTagName("a")[0].ChildNodes)
            //{
            //    string key = x.Attributes["style"].Value;
            //    key = key.Substring(0, key.IndexOf(";") + 1);
            //    key = dictionary[key];
            //    id += key;
            //}
            res = res.Replace(">", "/>");
            Regex r1 = new Regex("<img src=\".*?px;\"/>");

            MatchCollection mc = r1.Matches(res);

            foreach (Match m in mc)
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.LoadXml(m.ToString());
                string key = xmlDoc.GetElementsByTagName("img")[0].Attributes["style"].Value;
                key = key.Substring(0, key.IndexOf(";"));
                string cha = dictionary[key];
                res = res.Replace(m.ToString(), cha);
            }
            Item.info = res;
            Regex r2 = new Regex("Vídeo Id: .*?<br/>");

            Item.id = r2.Matches(res)[0].ToString().Split(new string[] { "Vídeo Id: ", "<br/>" }, StringSplitOptions.RemoveEmptyEntries)[0];
            return(Item.id);
        }
Beispiel #29
0
 public static object Evaluate(string script)
 {
     InitializeJurassic();
     return(jurassicScriptEngine.Evaluate(script));
 }
Beispiel #30
0
        private void list()
        {
            try
            {
                txtPageNow.Text = pageNow.ToString();

                string start = pageNow > 1 ? ((pageNow - 1) * interval).ToString() : "0";
                string url = getUrl(curcol, start);

                string s;
                using (System.Net.WebClient wc = new System.Net.WebClient())
                {
                    Byte[] pageData = wc.DownloadData(url);

                    s = System.Text.Encoding.GetEncoding("GBK").GetString(pageData);
                    //Stream stream = new System.IO.MemoryStream(Encoding.Convert(Encoding.GetEncoding("GBK"), Encoding.UTF8, pageData));
                    //s = System.Text.Encoding.UTF8.GetString(pageData);去除中文乱码

                    s += @"
            function getstring(){
            var s=serv_loadColumnNews();
            return  JSON.stringify(s);
            }
            ";
                    var eng = new Jurassic.ScriptEngine();
                    eng.Evaluate(s);
                    var b = eng.CallGlobalFunction<string>(@"getstring");

                    m = JsonConvert.DeserializeObject<oainfo>(b);
                }
                pagesAll = m.total / interval + (m.total % interval == 0 ? 0 : 1);
                labPageAll.Text = pagesAll.ToString();

                listDoc.Items.Clear();
                foreach (var v in m.informations)
                {
                    ListViewItem lvi = new ListViewItem();
                    lvi = listDoc.Items.Add(v.id);
                    lvi.SubItems.Add(v.bt);
                    lvi.SubItems.Add(v.time);
                    lvi.SubItems.Add(v.mc);
                }

            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }
        protected void ProcessRequest(HttpListenerContext context)
        {
            Debug.WriteLine(context.Request.RawUrl);

            // build response data
            HttpListenerResponse response = context.Response;
            string responseString = "";

            response.StatusCode = 200;
            response.Headers.Add("Content-Type: text/html");

            // crossdomain.xml
            if (context.Request.RawUrl == "/crossdomain.xml")
            {
                responseString = "<?xml version=\"1.0\"?>"
                    + "<!DOCTYPE cross-domain-policy SYSTEM \"http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd\">"
                    + "<cross-domain-policy>"
                    + "<allow-access-from domain=\"*\" />"
                    + "</cross-domain-policy>";

            } else if( context.Request.RawUrl == "/jdcheck.js" )
            {
                responseString = "jdownloader=true; var version='18507';";

            }
            else if (context.Request.RawUrl.StartsWith("/flash"))
            {
                if (context.Request.RawUrl.Contains("addcrypted2"))
                {
                    System.IO.Stream body = context.Request.InputStream;
                    System.IO.StreamReader reader = new System.IO.StreamReader(body, context.Request.ContentEncoding);

                    String requestBody = System.Web.HttpUtility.UrlDecode(reader.ReadToEnd());

                    // get encrypted data
                    Regex rgxData = new Regex("crypted=(.*?)(&|$)");
                    String data = rgxData.Match(requestBody).Groups[1].ToString();

                    // get encrypted pass
                    Regex rgxPass = new Regex("jk=(.*?){(.*?)}(&|$)");
                    String pass = rgxPass.Match(requestBody).Groups[2].ToString();

                    var jsEngine = new Jurassic.ScriptEngine();
                    pass = jsEngine.Evaluate("(function (){" + pass + "})()").ToString();

                    // show decrypted links
                    Dispatcher.BeginInvoke(
                        new Action<Object>((sender) => { showDecryptedLinks(pass,data); })
                    ,   new object[] { this }
                    );

                    responseString = "success\r\n";
                }
                else
                {
                    responseString = "JDownloader";
                }
            }
            else
            {
                response.StatusCode = 400;
            }

            byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
            response.ContentLength64 = buffer.Length;

            // output response
            System.IO.Stream output = response.OutputStream;
            output.Write(buffer, 0, buffer.Length);
            output.Close();
        }
Beispiel #32
0
        private static void StartSpider(Options param)
        {
            ScriptProcessor pageProcessor = ScriptProcessorBuilder.Custom().Language(param.Lang).ScriptFromFile(param.File).Thread(param.Thread).Build();
            pageProcessor.Site.SleepTime = param.Sleep;
            pageProcessor.Site.RetryTimes = 3;
            pageProcessor.Site.AcceptStatCode=new HashSet<int> { 200, 404, 403, 500, 502 };
            Core.Spider spider = Core.Spider.Create(pageProcessor).SetThreadNum(param.Thread);
            spider.ClearPipeline();

            StringBuilder builder = new StringBuilder();
            using (StreamReader sr = new StreamReader(typeof(ScriptConsole).Assembly.GetManifestResourceStream("Java2Dotnet.Spider.Scripts.Resource.js.define.js")))
            {
                string line;

                while ((line = sr.ReadLine()) != null)
                {
                    builder.AppendLine(line);
                }
            }

            string script = builder + Environment.NewLine + File.ReadAllText(param.File);

            Jurassic.ScriptEngine engine = new Jurassic.ScriptEngine { EnableExposedClrTypes = true };
            //engine.SetGlobalValue("page", new Page());
            engine.SetGlobalValue("config", new Site());

            engine.Evaluate(script);

            foreach (string url in param.Urls)
            {
                spider.AddUrl(url);
            }
            spider.Run();
        }
        private string EvalJs(string js)
        {
            var engine = new Jurassic.ScriptEngine();

            return(engine.Evaluate(js).ToString());
        }
Beispiel #34
0
        /// <summary>
        /// 进行打卡
        /// </summary>
        /// <returns></returns>
        public bool Do()
        {
            GlobalVars.log.Info("正在进行打卡");
            FrmMain.statusHandler?.Invoke(null, new Msg("正在进行打卡"));
            // 先GET一下BASE,获取到WID、UID以及历史打卡数据
            HttpClientHandler handler = new HttpClientHandler
            {
                CookieContainer = this.cookie,
                UseCookies      = true
            };
            HttpClient client = new HttpClient(handler);

            client.Timeout = TimeSpan.FromSeconds(60);
            client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36");
            HttpResponseMessage res;

            try
            {
                res = client.GetAsync(IsBachelor ? BASE_BC : BASE).Result;
            }
            catch (AggregateException e)
            {
                GlobalVars.log.Error($"打卡凭据获取失败,请检查网络链接,详细信息:{e.Message}");
                FrmMain.statusHandler?.Invoke(null, new Msg("打卡凭据获取失败,请检查网络链接"));
                return(false);
            }
            // 把结果加载成HAP文档
            HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
            doc.LoadHtml(res.Content.ReadAsStringAsync().Result);
            var scripts = doc.DocumentNode.Descendants()
                          .Where(n => n.Name == "script");
            string fullScript = "";

            foreach (var t in scripts)
            {
                if (t.InnerHtml.Length > 0)
                {
                    fullScript = t.InnerHtml;
                    break;
                }
            }
            // 解析WID和UID
            object result;
            string wid, uid;

            string[] fullScriptLines = fullScript.Split('\n');
            var      engine          = new Jurassic.ScriptEngine();

            try
            {
                result = engine.Evaluate("(function() { " + fullScriptLines[WIDLine] + "\n return _selfFormWid; })()");
                wid    = result.ToString();
                result = engine.Evaluate("(function() { " + fullScriptLines[UIDLine] + "\n return _userId; })()");
                uid    = result.ToString();
                // 检查uid是否合理
                long.Parse(uid);
            }
            catch (IndexOutOfRangeException e)
            {
                GlobalVars.log.Error($"解析WID和UID失败,错误类型1,详细信息:{e.Message}");
                FrmMain.statusHandler?.Invoke(null, new Msg("解析WID和UID失败"));
                return(false);
            }
            catch (Jurassic.JavaScriptException e)
            {
                GlobalVars.log.Error($"解析WID和UID失败,错误类型2,详细信息:{e.Message}");
                FrmMain.statusHandler?.Invoke(null, new Msg("解析WID和UID失败"));
                return(false);
            }
            catch (Exception e)
            {
                GlobalVars.log.Error($"解析WID和UID失败,错误类型3,详细信息:{e.Message}");
                FrmMain.statusHandler?.Invoke(null, new Msg("解析WID和UID失败"));
                return(false);
            }
            // 计算得到真正的API接口
            string realAPI = API + $"?wid={wid}&userId={uid}";
            // 取得往日填报信息
            StringBuilder sb = new StringBuilder();

            try
            {
                for (int i = FillBeginLine; i <= FillEndLine; i++)
                {
                    sb.Append(fullScriptLines[i]).Append("\n");
                }
            }
            catch (IndexOutOfRangeException e)
            {
                GlobalVars.log.Error($"解析历史打卡数据失败,详细信息:{e.Message}");
                FrmMain.statusHandler?.Invoke(null, new Msg("解析历史打卡数据失败"));
                return(false);
            }
            // 生成打卡信息
            BachelorCheckinData bachelorCheckinData = default(BachelorCheckinData);
            CheckinData         checkinData         = default(CheckinData);

            try
            {
                // 序列化填报信息
                result = engine.Evaluate("(function() { " + sb.ToString() + " return fillDetail; })()");
                string  json = JSONObject.Stringify(engine, result);
                dynamic fillDatas;
                // 将填报信息转换成打卡信息
                if (IsBachelor)
                {
                    fillDatas           = JsonConvert.DeserializeObject <List <BachelorFillData> >(json);
                    bachelorCheckinData = Utils.ChangeType <BachelorFillData, BachelorCheckinData>(fillDatas[0]);
                }
                else
                {
                    fillDatas   = JsonConvert.DeserializeObject <List <FillData> >(json);
                    checkinData = Utils.ChangeType <FillData, CheckinData>(fillDatas[0]);
                }
            }
            catch (Exception e)
            {
                GlobalVars.log.Error($"序列化历史打卡数据失败,详细信息:{e.Message}");
                FrmMain.statusHandler?.Invoke(null, new Msg("序列化历史打卡数据失败"));
                return(false);
            }
            // 赋值打卡数据的最后一项
            var now = DateTime.Now;
            var nvc = new List <KeyValuePair <string, string> >();

            if (IsBachelor)
            {
                bachelorCheckinData.DATETIME_CYCLE = now.ToString("yyyy/MM/dd");
                nvc = Utils.ConvertToKeyValuePairs <BachelorCheckinData>(bachelorCheckinData);
            }
            else
            {
                checkinData.DATETIME_CYCLE = now.ToString("yyyy/MM/dd");
                nvc = Utils.ConvertToKeyValuePairs <CheckinData>(checkinData);
            }
            // 打卡
            var req = new HttpRequestMessage(HttpMethod.Post, realAPI)
            {
                Content = new FormUrlEncodedContent(nvc)
            };

            try
            {
                res = client.SendAsync(req).Result;
            }
            catch (AggregateException e)
            {
                GlobalVars.log.Error($"传输打卡数据失败,请检查网络连接,详细信息:{e.Message}");
                FrmMain.statusHandler?.Invoke(null, new Msg("打卡失败,请检查网络链接"));
                return(false);
            }
            if (res.StatusCode == HttpStatusCode.OK)
            {
                GlobalVars.log.Info("打卡成功!");
                FrmMain.statusHandler?.Invoke(null, new Msg("打卡成功!"));
                return(true);
            }
            else
            {
                GlobalVars.log.Error($"打卡失败!服务器返回代码:{res.StatusCode}");
                FrmMain.statusHandler?.Invoke(null, new Msg("打卡失败,未知原因"));
                return(false);
            }
        }
Beispiel #35
0
        int BuildWordXmlTableLine(PrintOption option,
            List<ListViewItem> items,
            int nIndex,
            XmlTextWriter writer,
            bool bCutText)
        {
            string strError = "";
            int nRet = 0;

            if (nIndex >= items.Count)
            {
                strError = "error: nIndex(" + nIndex.ToString() + ") >= items.Count(" + items.Count.ToString() + ")";
                goto ERROR1;
            }

            ListViewItem item = items[nIndex];
            string strMARC = "";
            string strOutMarcSyntax = "";

            if (this.MarcFilter != null
                || option.HasEvalue() == true)
            {

                // TODO: 有错误要明显报出来,否则容易在打印出来后才发现,就晚了

                // 获得MARC格式书目记录
                string strBiblioRecPath = ListViewUtil.GetItemText(item, COLUMN_BIBLIORECPATH);
                nRet = GetMarc(strBiblioRecPath,
                    out strMARC,
                    out strOutMarcSyntax,
                    out strError);
                if (nRet == -1)
                    goto ERROR1;

                if (this.MarcFilter != null)
                {
                    this.ColumnTable.Clear();   // 清除上一记录处理时残余的内容
                    this.MarcFilter.Host.UiItem = item; // 当前正在处理的 ListViewItem

                    // 触发filter中的Record相关动作
                    nRet = this.MarcFilter.DoRecord(
                        null,
                        strMARC,
                        strOutMarcSyntax,
                        nIndex,
                        out strError);
                    if (nRet == -1)
                        goto ERROR1;
                }
            }

            // <w:tr>
            writer.WriteStartElement("w", "tr", m_strWordMlNsUri);

            for (int i = 0; i < option.Columns.Count; i++)
            {
                Column column = option.Columns[i];

                // int nIndex = nPage * option.LinesPerPage + nLine;

                /*
                if (nIndex >= items.Count)
                    break;

                ListViewItem item = items[nIndex];
                 * */

                string strContent = "";
                if (string.IsNullOrEmpty(column.Evalue) == false)
                {
                    Jurassic.ScriptEngine engine = new Jurassic.ScriptEngine();
                    engine.EnableExposedClrTypes = true;
                    engine.SetGlobalValue("syntax", strOutMarcSyntax);
                    engine.SetGlobalValue("biblio", new MarcRecord(strMARC));
                    strContent = engine.Evaluate(column.Evalue).ToString();
                }
                else
                {
                    strContent = GetColumnContent(item,
                        column.Name);

                    if (strContent == "!!!#")
                    {
                        // strContent = ((nPage * option.LinesPerPage) + nLine + 1).ToString();
                        strContent = (nIndex + 1).ToString();
                    }

                    if (strContent == "!!!biblioPrice")
                    {
                        // 看看自己是不是处在切换边沿
                        string strCurLineBiblioRecPath = GetColumnContent(item, "biblioRecpath");

                        string strNextLineBiblioRecPath = "";

                        if (nIndex < items.Count - 1)
                        {
                            ListViewItem next_item = items[nIndex + 1];
                            strNextLineBiblioRecPath = GetColumnContent(next_item, "biblioRecpath");
                        }

                        if (strCurLineBiblioRecPath != strNextLineBiblioRecPath)
                        {
                            // 处在切换边沿

                            // 汇总前面的册价格
                            strContent = ComputeBiblioPrice(items, nIndex).ToString();
                            // bBiblioSumLine = true;
                        }
                        else
                        {
                            // 其他普通行
                            strContent = "";    //  "&nbsp;";
                        }
                    }
                }

                if (bCutText == true)
                {
                    // 截断字符串
                    if (column.MaxChars != -1)
                    {
                        if (strContent.Length > column.MaxChars)
                        {
                            strContent = strContent.Substring(0, column.MaxChars);
                            strContent += "...";
                        }
                    }
                }

                if (String.IsNullOrEmpty(strContent) == true)
                    strContent = "";    //  "&nbsp;";

                // string strClass = Global.GetLeft(column.Name);

                // <w:tc>
                writer.WriteStartElement("w", "tc", m_strWordMlNsUri);

                WriteParagraph(writer, strContent);

                // <w:tc>
                writer.WriteEndElement();
            }

            /*
            if (bBiblioSumLine == false)
            {
                StreamUtil.WriteText(strFileName,
        "<tr class='content'>");
            }
            else
            {
                StreamUtil.WriteText(strFileName,
        "<tr class='content_biblio_sum'>");
            }*/

            // <w:tr>
            writer.WriteEndElement();
            // sw.WriteLine(strLineContent);
            return 0;
        ERROR1:
            // <w:tr>
            writer.WriteStartElement("w", "tr", m_strWordMlNsUri);

            // <w:tc>
            writer.WriteStartElement("w", "tc", m_strWordMlNsUri);

            WriteParagraph(writer, strError);

            // <w:tc>
            writer.WriteEndElement();

            // <w:tr>
            writer.WriteEndElement();

            return -1;
        }
Beispiel #36
0
        int BuildTextTableLine(PrintOption option,
            List<ListViewItem> items,
            int nIndex,
            StreamWriter sw,
            // ref ExcelDocument doc,
            IXLWorksheet sheet,
            bool bCutText)
        {
            string strError = "";
            int nRet = 0;

            if (nIndex >= items.Count)
            {
                strError = "error: nIndex(" + nIndex.ToString() + ") >= items.Count(" + items.Count.ToString() + ")";
                goto ERROR1;
            }

            ListViewItem item = items[nIndex];
            string strMARC = "";
            string strOutMarcSyntax = "";

            if (this.MarcFilter != null
                || option.HasEvalue() == true)
            {

                // TODO: 有错误要明显报出来,否则容易在打印出来后才发现,就晚了

                // 获得MARC格式书目记录
                string strBiblioRecPath = ListViewUtil.GetItemText(item, COLUMN_BIBLIORECPATH);
                nRet = GetMarc(strBiblioRecPath,
                    out strMARC,
                    out strOutMarcSyntax,
                    out strError);
                if (nRet == -1)
                    goto ERROR1;

                if (this.MarcFilter != null)
                {
                    this.ColumnTable.Clear();   // 清除上一记录处理时残余的内容
                    this.MarcFilter.Host.UiItem = item; // 当前正在处理的 ListViewItem

                    // 触发filter中的Record相关动作
                    nRet = this.MarcFilter.DoRecord(
                        null,
                        strMARC,
                        strOutMarcSyntax,
                        nIndex,
                        out strError);
                    if (nRet == -1)
                        goto ERROR1;
                }
            }

            // 栏目内容
            string strLineContent = "";

            // bool bBiblioSumLine = false;    // 是否为种的最后一行(汇总行)
            List<CellData> cells = new List<CellData>();
            int nColIndex = 0;

            for (int i = 0; i < option.Columns.Count; i++)
            {
                Column column = option.Columns[i];
                bool bNumber = false;

                // int nIndex = nPage * option.LinesPerPage + nLine;

                /*
                if (nIndex >= items.Count)
                    break;

                ListViewItem item = items[nIndex];
                 * */
                string strContent = "";
                if (string.IsNullOrEmpty(column.Evalue) == false)
                {
                    Jurassic.ScriptEngine engine = new Jurassic.ScriptEngine();
                    engine.EnableExposedClrTypes = true;
                    engine.SetGlobalValue("syntax", strOutMarcSyntax);
                    engine.SetGlobalValue("biblio", new MarcRecord(strMARC));
                    strContent = engine.Evaluate(column.Evalue).ToString();

                }
                else
                {
                    strContent = GetColumnContent(item,
                        column.Name);

                    if (strContent == "!!!#")
                    {
                        // strContent = ((nPage * option.LinesPerPage) + nLine + 1).ToString();
                        strContent = (nIndex + 1).ToString();
                        bNumber = true;
                    }

                    if (strContent == "!!!biblioPrice")
                    {
                        // 看看自己是不是处在切换边沿
                        string strCurLineBiblioRecPath = GetColumnContent(item, "biblioRecpath");

                        string strNextLineBiblioRecPath = "";

                        if (nIndex < items.Count - 1)
                        {
                            ListViewItem next_item = items[nIndex + 1];
                            strNextLineBiblioRecPath = GetColumnContent(next_item, "biblioRecpath");
                        }

                        if (strCurLineBiblioRecPath != strNextLineBiblioRecPath)
                        {
                            // 处在切换边沿

                            // 汇总前面的册价格
                            strContent = ComputeBiblioPrice(items, nIndex).ToString();
                            // bBiblioSumLine = true;
                        }
                        else
                        {
                            // 其他普通行
                            strContent = "";    //  "&nbsp;";
                        }

                    }
                }

                if (bCutText == true)
                {
                    // 截断字符串
                    if (column.MaxChars != -1)
                    {
                        if (strContent.Length > column.MaxChars)
                        {
                            strContent = strContent.Substring(0, column.MaxChars);
                            strContent += "...";
                        }
                    }
                }

                if (String.IsNullOrEmpty(strContent) == true)
                    strContent = "";    //  "&nbsp;";

                // string strClass = Global.GetLeft(column.Name);

                if (i != 0)
                    strLineContent += "\t";

                strLineContent += strContent;

                if (sheet != null)
                {
#if NO
                    CellData cell = new CellData(nColIndex++, strContent,
            !bNumber,
            5);
                    cells.Add(cell);
#endif
                    IXLCell cell = sheet.Cell(nIndex + _nTopIndex + 1, nColIndex + 1);
                    if (bNumber == true)
                        cell.Value = strContent;
                    else
                        cell.SetValue(strContent);
                    cell.Style.Alignment.WrapText = true;
                    cell.Style.Alignment.Vertical = XLAlignmentVerticalValues.Center;

                    nColIndex++;
                }
            }

            /*
            if (bBiblioSumLine == false)
            {
                StreamUtil.WriteText(strFileName,
        "<tr class='content'>");
            }
            else
            {
                StreamUtil.WriteText(strFileName,
        "<tr class='content_biblio_sum'>");
            }*/
            if (sw != null)
                sw.WriteLine(strLineContent);

#if NO
            if (doc != null)
                doc.WriteExcelLine(nIndex + _nTopIndex,
                    cells,
                    WriteExcelLineStyle.AutoString);  // WriteExcelLineStyle.None
#endif

            return 0;
        ERROR1:
            if (sw != null)
                sw.WriteLine(strError);
        if (sheet != null)
        {
#if NO
            List<CellData> temp_cells = new List<CellData>();
            temp_cells.Add(new CellData(0, strError));
            doc.WriteExcelLine(nIndex + _nTopIndex, temp_cells);
#endif
            IXLCell cell = sheet.Cell(nIndex + _nTopIndex + 1, 1);
            cell.Value = strError;

        }
            return -1;
        }
Beispiel #37
0
        int BuildHtmlTableLine(PrintOption option,
            List<ListViewItem> items,
            string strFileName,
            int nPage,
            int nLine)
        {
            // 栏目内容
            string strLineContent = "";
            int nRet = 0;

            bool bBiblioSumLine = false;    // 是否为种的最后一行(汇总行)

            int nIndex = nPage * option.LinesPerPage + nLine;

            if (nIndex >= items.Count)
                goto END1;

            ListViewItem item = items[nIndex];

            string strMARC = "";
            string strOutMarcSyntax = "";

            if (this.MarcFilter != null
                || option.HasEvalue() == true)
            {
                string strError = "";

                // TODO: 有错误要明显报出来,否则容易在打印出来后才发现,就晚了

                // 获得MARC格式书目记录
                string strBiblioRecPath = ListViewUtil.GetItemText(item, COLUMN_BIBLIORECPATH);

                // TODO: 可以 cache,提高速度
                nRet = GetMarc(strBiblioRecPath,
                    out strMARC,
                    out strOutMarcSyntax,
                    out strError);
                if (nRet == -1)
                {
                    strLineContent = strError;
                    goto END1;
                }

                if (this.MarcFilter != null)
                {
                    this.ColumnTable.Clear();   // 清除上一记录处理时残余的内容
                    this.MarcFilter.Host.UiItem = item; // 当前正在处理的 ListViewItem

                    // 触发filter中的Record相关动作
                    nRet = this.MarcFilter.DoRecord(
                        null,
                        strMARC,
                        strOutMarcSyntax,
                        nIndex,
                        out strError);
                    if (nRet == -1)
                    {
                        strLineContent = strError;
                        goto END1;
                    }
                }
            }

            for (int i = 0; i < option.Columns.Count; i++)
            {
                Column column = option.Columns[i];

                /*
                int nIndex = nPage * option.LinesPerPage + nLine;

                if (nIndex >= items.Count)
                    break;

                ListViewItem item = items[nIndex];
                 * */

                string strContent = "";

                if (string.IsNullOrEmpty(column.Evalue) == false)
                {
                    Jurassic.ScriptEngine engine = new Jurassic.ScriptEngine();
                    engine.EnableExposedClrTypes = true;
                    engine.SetGlobalValue("syntax", strOutMarcSyntax);
                    engine.SetGlobalValue("biblio", new MarcRecord(strMARC));
                    strContent = engine.Evaluate(column.Evalue).ToString();

                }
                else
                {

                    strContent = GetColumnContent(item,
                        column.Name);

                    if (strContent == "!!!#")
                        strContent = ((nPage * option.LinesPerPage) + nLine + 1).ToString();

                    if (strContent == "!!!biblioPrice")
                    {
                        // 看看自己是不是处在切换边沿
                        string strCurLineBiblioRecPath = GetColumnContent(item, "biblioRecpath");

                        string strNextLineBiblioRecPath = "";

                        if (nIndex < items.Count - 1)
                        {
                            ListViewItem next_item = items[nIndex + 1];
                            strNextLineBiblioRecPath = GetColumnContent(next_item, "biblioRecpath");
                        }

                        if (strCurLineBiblioRecPath != strNextLineBiblioRecPath)
                        {
                            // 处在切换边沿

                            // 汇总前面的册价格
                            strContent = ComputeBiblioPrice(items, nIndex).ToString();
                            bBiblioSumLine = true;
                        }
                        else
                        {
                            // 其他普通行
                            strContent = "&nbsp;";
                        }
                    }

                }

                // 截断字符串
                if (column.MaxChars != -1)
                {
                    if (strContent.Length > column.MaxChars)
                    {
                        strContent = strContent.Substring(0, column.MaxChars);
                        strContent += "...";
                    }
                }

                if (String.IsNullOrEmpty(strContent) == true)
                    strContent = "&nbsp;";

                string strClass = StringUtil.GetLeft(column.Name);
                if (strClass.Length > 0 && strClass[0] == '@')
                {
                    strClass = "ext_" + strClass.Substring(1);
                }

                strLineContent +=
                    IndentString(4) + "<td class='" + strClass + "'>" + strContent + "</td>\r\n";
            }

        END1:

            string strOdd = "";
            if (((nLine + 1) % 2) != 0) // 用每页内的行号来计算奇数
                strOdd = " odd";

            string strBiblioSum = "";
            if (bBiblioSumLine == true)
                strBiblioSum = " biblio_sum";

            // 2009/10/10 changed
            StreamUtil.WriteText(strFileName,
                IndentString(3) + "<tr class='content" + strBiblioSum + strOdd + "'><!-- 内容行"
                + (bBiblioSumLine == true ? "(书目汇总)" : "")
                + (nIndex + 1).ToString() + " -->\r\n");

            StreamUtil.WriteText(strFileName,
                strLineContent);

            StreamUtil.WriteText(strFileName,
                IndentString(3) + "</tr>\r\n");

            return 0;
        }
Beispiel #38
0
        public static HttpResponseMessage GetRequestedPage(WebProxy proxy, IShop shop, string url, CancellationToken token)
        {
            var initialUrl = new Uri(url);
            var host       = new Uri(shop.WebsiteBaseUrl);

            var    client      = ClientFactory.GetProxiedFirefoxClient();
            string initialPage = null;

            var message1 = new HttpRequestMessage()
            {
                Method     = HttpMethod.Get,
                RequestUri = initialUrl
            };

            message1.Headers.AddHeaders(ClientFactory.FireFoxHeaders);

            using (message1)
            {
                var task = client.SendAsync(message1);

                var result = task.Result;

                string pageSource = result.Content.ReadAsStringAsync().Result;
                if (!pageSource.Contains("s,t,o,p,b,r,e,a,k,i,n,g,f"))
                {
                    result.EnsureSuccessStatusCode();
                    return(result);
                }

                initialPage = pageSource;
                result.Dispose();
            }

            for (int i = 0; i < 3; i++)
            {
                var engine = new Jurassic.ScriptEngine();
                engine.SetGlobalValue("interop", "15");

                var pass   = Regex.Match(initialPage, "name=\"pass\" value=\"(.*?)\"/>").Groups[1].Value;
                var answer = Regex.Match(initialPage, "name=\"jschl_vc\" value=\"(.*?)\"/>").Groups[1].Value;

                var script = Regex.Match(initialPage, "setTimeout\\(function\\(\\){(.*?)}, 4000\\);",
                                         RegexOptions.Singleline | RegexOptions.IgnoreCase).Groups[1].Value;
                script = script.Replace("a = document.getElementById('jschl-answer');", string.Empty);
                script = script.Replace("f.action += location.hash;", string.Empty);
                script = script.Replace("f.submit();", string.Empty);
                script = script.Replace("f = document.getElementById('challenge-form');", string.Empty);
                script = script.Replace("a.value", "interop");
                script = script.Replace("t = document.createElement('div');", string.Empty);
                script = script.Replace("t.innerHTML=\"<a href='/'>x</a>\";", string.Empty);
                script = script.Replace("t = t.firstChild.href", $"t='{host.AbsoluteUri}';");



                var gga  = engine.Evaluate(script);
                var calc = engine.GetGlobalValue <string>("interop");

                Task.Delay(5000, token).Wait(token);
                var uri      = new Uri(host, $"/cdn-cgi/l/chk_jschl?jschl_vc={answer}&pass={pass}&jschl_answer={calc}");
                var message3 = new HttpRequestMessage()
                {
                    Method     = HttpMethod.Get,
                    RequestUri = uri,
                    Headers    = { Referrer = initialUrl }
                };

                message3.Headers.AddHeaders(ClientFactory.FireFoxHeaders);

                using (message3)
                {
                    var finalResult = client.SendAsync(message3, token).Result;


                    string pageSource = finalResult.Content.ReadAsStringAsync().Result;
                    if (!pageSource.Contains("s,t,o,p,b,r,e,a,k,i,n,g,f"))
                    {
                        finalResult.EnsureSuccessStatusCode();
                        return(finalResult);
                    }
                    finalResult.Dispose();
                }
            }

            throw new WebException("Couldn't bypass cloudfare");
        }
Beispiel #39
0
        protected override void Initialize()
        {
            timers = new TimerManager();

            js = new Jurassic.ScriptEngine();
            js.SetGlobalFunction("setTimeout", new Action<Jurassic.Library.FunctionInstance, int>(setTimeout));
            js.SetGlobalFunction("setInterval", new Action<Jurassic.Library.FunctionInstance, int>(setInterval));
            js.SetGlobalFunction("clearTimeout", new Action<int>(clearTimeout));
            js.SetGlobalFunction("clearInterval", new Action<int>(clearInterval));

            js.SetGlobalValue("window", js.Global);
            js.SetGlobalValue("console", new JSConsole(js));
            js.SetGlobalValue("Canvas", new JSCanvasConstructor(js));
            js.SetGlobalValue("Image", new JSImageConstructor(js));

            #if !XBOX
            if (GenerateAndExit != null)
            {
                GenerateAssemblyAndExit(GenerateAndExit);
                return;
            }

            #endif

            #if XBOX || RELEASE
            // On the XBOX or RELEASE config, run the compiled JavaScript from the Assembly
            js.LoadFromAssembly("ImpactGame");
            Generated.Main(js, js.CreateGlobalScope(), js.Global);
            #else
            // In Windows/DEBUG, run JavaScript directly from source
            js.EnableDebugging = true;
            js.Evaluate(new Jurassic.FileScriptSource("Game/index.js"));
            #endif
            base.Initialize();
        }