INNER CODE UNIT · JavaScript
safeWrite
wangshengithub/staticshield · src/server.js:36
function safeWrite(tmpDir, fileRel, content, isDataUri) {
var fp = resolveSafely(tmpDir, fileRel);
fs.mkdirSync(path.dirname(fp), { recursive: true });
if (isDataUri) { var m = /^data:[^;]*;base64,(.*)$/s.exec(content); fs.writeFileSync(fp, Buffer.from(m ? m[1] : content, 'base64')); }
else fs.writeFileSync(fp, content);
}
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;