Exemplo n.º 1
0
 /// <summary>
 /// 压缩javascript内容
 /// </summary>
 /// <param name="jsContent"></param>
 /// <returns></returns>
 private string PackJavascript(string jsContent)
 {
     try
     {
         jsContent = new ECMAScriptPacker().Pack(jsContent).Replace("\n", "\r\n");
     }
     catch { }
     return(jsContent);
 }
Exemplo n.º 2
0
        public string JSPackerCrypto(string js)
        {
            string after = new ECMAScriptPacker().Pack(js);

            if (next != null)
            {
                return(next.JSPackerCrypto(after));
            }
            return(after);
        }
Exemplo n.º 3
0
        private void encodingHandler(object thread)
        {
            while (true)
            {
                int processingIndex = NowFileIndex;
                lock (this)
                {
                    processingIndex = NowFileIndex;
                    ++NowFileIndex;
                }
                if (processingIndex >= Files.Count)
                {
                    ((Thread)thread).Abort();
                }
                try
                {
                    using (StreamReader fileReader = new StreamReader(Files[processingIndex].Path, FileEncoding))
                    {
                        string jsCode = fileReader.ReadToEnd();

                        ECMAScriptPacker encoder           = new ECMAScriptPacker(PackerEncoding, isFastCode, isSpecialCharacters);
                        string           encodeJs          = encoder.Pack(jsCode).Replace("\n", "\r\n");
                        string           outPutFilePath    = Path.Combine(OutPutDirPath, Files[processingIndex].OutputDir.Substring(1));
                        string           outPutFileDirPath = Path.GetDirectoryName(outPutFilePath);

                        if (!Directory.Exists(outPutFileDirPath))
                        {
                            Directory.CreateDirectory(outPutFileDirPath);
                        }

                        using (StreamWriter fileWriter = new StreamWriter(outPutFilePath, true, FileEncoding))
                        {
                            fileWriter.Write(encodeJs);
                        }
                    }
                    IncreaseProgress(processingIndex);
                }
                catch
                {
                    FailureFileList.Add(Files[processingIndex].Path);

                    this.Dispatcher.BeginInvoke(new ThreadStart(() =>
                    {
                        ++ProgressBar.Value;
                    }));
                }
            }
        }
Exemplo n.º 4
0
 public void Process(BundleContext context, BundleResponse response)
 {
     if (context == null)
     {
         throw new ArgumentNullException("context");
     }
     if (response == null)
     {
         throw new ArgumentNullException("response");
     }
     if (!context.EnableInstrumentation)
     {
         try
         {
             ECMAScriptPacker p = new ECMAScriptPacker(ECMAScriptPacker.PackerEncoding.Normal, true, true);
             response.Content = p.Pack(response.Content);
         }
         catch (Exception ex)
         {
             response.Content = "/*\r\nError:" + ex.Message + "\r\n*/\r\n" + response.Content;
         }
     }
     response.ContentType = "text/javascript";
 }
Exemplo n.º 5
0
    protected void Page_Load(object sender, EventArgs e)
    {
        string sType = Request.QueryString["t"];

        if (sType == null)
        {
            Response.Write("WebPackage Tools Version 1.0.0<br>");
            Response.Write("請使用參數 t 選擇打包範圍:<br>");
            Response.Write("EX:__EncodePage.aspx?t=1<br><br>");
            Response.Write("1:HTML網頁編碼並打包<br>");
            Response.Write("2:HTML網頁編碼與Bin檔案打包<br>");
            Response.Write("3:打包網站所有必須內容<br>");
            return;
        }

        int           iType  = int.Parse(sType);
        List <string> cFiles = new List <string>(128);

        cFiles.AddRange(Directory.GetFiles(Server.MapPath("."), "*.html"));
        cFiles.AddRange(Directory.GetFiles(Server.MapPath("~\\html\\"), "*.html", SearchOption.AllDirectories));
        cFiles.AddRange(Directory.GetFiles(Server.MapPath("."), "*.aspx"));

        StringBuilder    cBuilder      = new StringBuilder(10485760);
        ECMAScriptPacker cScriptPacker = new ECMAScriptPacker(ECMAScriptPacker.PackerEncoding.Normal, true, false);

        Directory.CreateDirectory(Server.MapPath("~\\encode_pages\\") + "html\\");

        foreach (string sFile in cFiles)
        {
            string sSrcPath  = Path.GetDirectoryName(sFile) + "\\";
            string sDestPath = sSrcPath.Replace("html", "encode_pages\\html");
            bool   bHtmlDir  = sFile.LastIndexOf("\\html\\") > -1;
            if (!bHtmlDir)
            {
                sDestPath += "encode_pages\\";
            }

            string sFilename = sFile.Substring(sFile.LastIndexOf("\\") + 1);
            if (sFilename.Equals("__EncodePage.aspx"))
            {
                continue;
            }

            string sContent = File.ReadAllText(sFile, Encoding.UTF8);

            cBuilder.Length = 0;

            int iCurrent = 0;
            while (true)
            {
                int iIndex = sContent.IndexOf("<script type=\"text/javascript\">", iCurrent);
                if (iIndex == -1)
                {
                    cBuilder.Append(sContent.Substring(iCurrent));
                    break;
                }

                int iStart = sContent.IndexOf(">", iIndex);
                if (iStart > -1)
                {
                    ++iStart;

                    iIndex = sContent.IndexOf("</script>", iStart);
                    if (iIndex > -1)
                    {
                        cBuilder.Append(sContent.Substring(iCurrent, iStart - iCurrent));

                        string sScript = sContent.Substring(iStart, iIndex - iStart);
                        if (sScript.Length > 0)
                        {
                            string sEncode = cScriptPacker.Pack(sScript);
                            cBuilder.Append(sEncode);
                        }

                        iCurrent = iIndex;
                    }
                }
            }

            if (!Directory.Exists(sDestPath))
            {
                Directory.CreateDirectory(sDestPath);
            }
            File.WriteAllText(sDestPath + sFilename, cBuilder.ToString(), Encoding.UTF8);
        }

        cFiles.Clear();
        cFiles.AddRange(Directory.GetFiles(Server.MapPath("~\\mobile\\"), "*.html", SearchOption.AllDirectories));

        Directory.CreateDirectory(Server.MapPath("~\\encode_pages\\") + "mobile\\");

        foreach (string sFile in cFiles)
        {
            string sSrcPath  = Path.GetDirectoryName(sFile) + "\\";
            string sDestPath = sSrcPath.Replace("mobile", "encode_pages\\mobile");
            bool   bHtmlDir  = sFile.LastIndexOf("\\mobile\\") > -1;
            if (!bHtmlDir)
            {
                sDestPath += "encode_pages\\";
            }

            string sFilename = sFile.Substring(sFile.LastIndexOf("\\") + 1);
            string sContent  = File.ReadAllText(sFile, Encoding.UTF8);

            cBuilder.Length = 0;

            int iCurrent = 0;
            while (true)
            {
                int iIndex = sContent.IndexOf("<script type=\"text/javascript\">", iCurrent);
                if (iIndex == -1)
                {
                    cBuilder.Append(sContent.Substring(iCurrent));
                    break;
                }

                int iStart = sContent.IndexOf(">", iIndex);
                if (iStart > -1)
                {
                    ++iStart;

                    iIndex = sContent.IndexOf("</script>", iStart);
                    if (iIndex > -1)
                    {
                        cBuilder.Append(sContent.Substring(iCurrent, iStart - iCurrent));

                        string sScript = sContent.Substring(iStart, iIndex - iStart);
                        if (sScript.Length > 0)
                        {
                            string sEncode = cScriptPacker.Pack(sScript);
                            cBuilder.Append(sEncode);
                        }

                        iCurrent = iIndex;
                    }
                }
            }

            if (!Directory.Exists(sDestPath))
            {
                Directory.CreateDirectory(sDestPath);
            }
            File.WriteAllText(sDestPath + sFilename, cBuilder.ToString(), Encoding.UTF8);
        }

        cFiles.Clear();
        cFiles.AddRange(Directory.GetFiles(Server.MapPath("~\\scripts\\"), "*.*", SearchOption.AllDirectories));

        foreach (string sFile in cFiles)
        {
            string sSrcPath  = Path.GetDirectoryName(sFile) + "\\";
            string sDestPath = sSrcPath.Replace("scripts", "encode_pages\\Scripts");
            string sFilename = Path.GetFileName(sFile);
            string sExtName  = Path.GetExtension(sFile);

            if (!Directory.Exists(sDestPath))
            {
                Directory.CreateDirectory(sDestPath);
            }

            if (sExtName.Equals(".js"))
            {
                string sContent = File.ReadAllText(sFile, Encoding.UTF8);

                if (sContent.StartsWith("//__ZEGHS_PACKER_ENCODE_ENABLED"))
                {
                    string sEncode = cScriptPacker.Pack(sContent);
                    File.WriteAllText(sDestPath + sFilename, sEncode, Encoding.UTF8);
                }
                else
                {
                    File.Copy(sFile, sDestPath + sFilename, true);
                }
            }
            else
            {
                File.Copy(sFile, sDestPath + sFilename, true);
            }
        }
        Response.Write("JavaScript編碼已經轉換完畢<br>");

        if (iType > 1)
        {
            cFiles.Clear();
            cFiles.AddRange(Directory.GetFiles(Server.MapPath("~\\bin\\"), "*.*", SearchOption.AllDirectories));

            foreach (string sFile in cFiles)
            {
                string sSrcPath  = Path.GetDirectoryName(sFile) + "\\";
                string sDestPath = sSrcPath.Replace("bin", "encode_pages\\bin");
                string sFilename = Path.GetFileName(sFile);
                string sExtName  = Path.GetExtension(sFile);

                if (!Directory.Exists(sDestPath))
                {
                    Directory.CreateDirectory(sDestPath);
                }

                if (!sExtName.Equals(".xml") && !sExtName.Equals(".pdb"))
                {
                    File.Copy(sFile, sDestPath + sFilename, true);
                }
            }
            Response.Write("Bin 資料夾已經複製完畢<br>");
        }

        if (iType > 2)
        {
            cFiles.Clear();
            cFiles.AddRange(Directory.GetFiles(Server.MapPath("~\\Content\\"), "*.*", SearchOption.AllDirectories));

            foreach (string sFile in cFiles)
            {
                string sSrcPath  = Path.GetDirectoryName(sFile) + "\\";
                string sDestPath = sSrcPath.Replace("Content", "encode_pages\\Content");
                string sFilename = Path.GetFileName(sFile);
                string sExtName  = Path.GetExtension(sFile);

                if (!Directory.Exists(sDestPath))
                {
                    Directory.CreateDirectory(sDestPath);
                }

                File.Copy(sFile, sDestPath + sFilename, true);
            }
            Response.Write("Content 資料夾已經複製完畢<br>");
        }

        string sZipFile = "d:\\wytc.zip";

        if (File.Exists(sZipFile))
        {
            File.Delete(sZipFile);
        }
        ZipFile.CreateFromDirectory(Server.MapPath("~\\encode_pages\\"), sZipFile, CompressionLevel.Fastest, false);
        Response.Write(sZipFile + " 壓縮檔案已經建立完畢<br>");

        cFiles.Clear();
        cFiles.AddRange(Directory.EnumerateDirectories(Server.MapPath("~\\encode_pages\\")));

        foreach (string sFile in cFiles)
        {
            Directory.Delete(sFile, true);
        }

        cFiles.Clear();
        cFiles.AddRange(Directory.GetFiles(Server.MapPath("~\\encode_pages\\"), "*.*"));

        foreach (string sFile in cFiles)
        {
            File.Delete(sFile);
        }
        Response.Write("打包暫存檔案已經刪除完畢<br><br>");
        Response.Write("==打包檔案已經建立完成==<br>");
    }
Exemplo n.º 6
0
            public void Process(BundleContext context, BundleResponse response)
            {
                var p = new ECMAScriptPacker(ECMAScriptPacker.PackerEncoding.Normal, true, false);

                response.Content = p.Pack(response.Content);
            }
        /// <summary>
        /// Packs the provided script
        /// </summary>
        /// <param name="script">Script to pack</param>
        /// <returns>Packed script</returns>
        private static string RunPacker(string script)
        {
            ECMAScriptPacker p = new ECMAScriptPacker(ECMAScriptPacker.PackerEncoding.Normal, true, false);

            return(p.Pack(script).Replace("\n", "\r\n"));
        }
        // Upload entire file
        private void UploadWholeFile(HttpContext context, List<FilesStatus> statuses)
        {
            StringBuilder stbCSS = new StringBuilder();
            StringBuilder stbJS = new StringBuilder();
            var ext = string.Empty;
            string guideCSS = string.Empty;
            string guideJS = string.Empty;
            int aptcss = 0;
            int aptjs = 0;

            for (int i = 0; i < context.Request.Files.Count; i++)
            {
                string filecomp = string.Empty;
                var file = context.Request.Files[i];
                string guid = Guid.NewGuid().ToString();
                var fullPath = StorageRoot + Path.GetFileName(guid + "$" + file.FileName);
                file.SaveAs(fullPath);
                byte[] filebyte = GetByteArquivo(file);
                ECMAScriptPacker p = new ECMAScriptPacker(0, true, true);
                filecomp = p.Pack(ByteToString(filebyte)).Replace("\n", "\r\n");
                System.IO.File.WriteAllText(fullPath, filecomp);
                string fullName = Path.GetFileName(guid + "$" + file.FileName);
                statuses.Add(new FilesStatus(fullName, filecomp.Length, fullPath));
                ext = Path.GetExtension(fullPath);
                if (IsJS(ext))
                {
                    stbJS.Append(filecomp);
                    if (aptjs == 0)
                    {
                        aptjs = 1;
                        guideJS = guid;
                    }
                }
                else if (IsCSS(ext))
                {
                    stbCSS.Append(filecomp);
                    if (aptcss == 0)
                    {
                        aptcss = 1;
                        guideCSS = guid;
                    }
                }
            }
            if (aptjs != 0)
            {
                string pathjs = StorageRoot + guideJS + "bundleJS.js";
                if (!File.Exists(pathjs))
                {
                    File.Create(pathjs).Dispose();
                }

                System.IO.File.WriteAllText(pathjs, stbJS.ToString());
            }
            if (aptcss != 0)
            {
                string pathcss = StorageRoot + guideCSS + "bundleCSS.js";
                File.Create(pathcss).Dispose();
                System.IO.File.WriteAllText(pathcss, stbCSS.ToString());
            }
        }
        public override string Transform(string fullFileName, string text, EnvDTE.ProjectItem projectItem)
        {
            ECMAScriptPacker p = new ECMAScriptPacker(this.Settings.ChirpDeanEdwardsPackerEncoding, this.Settings.ChirpDeanEdwardsPackerFastDecode, this.Settings.ChirpDeanEdwardsPackerSpecialChars);

            return(p.Pack(text));
        }