INNER CODE UNIT · JavaScript

doEncrypt

wangshengithub/staticshield · src/server.js:42

async function doEncrypt(body) {
  if (!body || typeof body !== 'object') throw new Error('请求体格式错误');
  var password = body.password, files = body.files, mode = body.mode || 'single';
  if (!password) throw new Error('密码不能为空');
  if (!Array.isArray(files) || files.length === 0) throw new Error('未提供任何文件');
  var html, stats = {};
  if (mode === 'site') {
    var siteTmp = fs.mkdtempSync(path.join(os.tmpdir(), 'ss-gui-'));
    try {
      for (var si = 0; si < files.length; si++) safeWrite(siteTmp, files[si].path, files[si].content, files[si].isDataUri);
      var siteRes = await batchEncryptDir(siteTmp, password, { useSha512: !!body.useSha512, hint: body.hint, rememberDays: body.rememberDays, logo: body.logo });
      var zipFiles = require('./zip').zipFiles;
      var siteItems = siteRes.pages.map(r => ({ path: r.path, data: r.product })).concat(siteRes.assets.map(a => ({ path: a.path, data: a.data })));
      var siteZip = zipFiles(siteItems);
      var siteAgg = { css: 0, js: 0, img: 0, icon: 0, imp: 0 };
      siteRes.pages.forEach(r => { siteAgg.css += r.stats.css || 0; siteAgg.js += r.stats.js || 0; siteAgg.img += r.stats.img || 0; siteAgg.icon += r.stats.icon || 0; siteAgg.imp += r.stats.import || 0; });
      return { ok: true, zip: siteZip.toString('base64'), count: siteRes.pages.length, assetCount: siteRes.assets.length, stats: siteAgg };
    } finally { try { fs.rmSync(siteTmp, { recursive: true, force: true }); } catch (e) {} }

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…