0.2.1
This commit is contained in:
@@ -234,7 +234,7 @@ function handleRequest(req: http.IncomingMessage, res: http.ServerResponse, shar
|
||||
'Content-Type': 'text/html; charset=utf-8',
|
||||
'Cache-Control': 'no-store',
|
||||
});
|
||||
res.end(file.buf);
|
||||
res.end(mobilePreviewPage(file));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -296,6 +296,35 @@ function chooserPage(files: SharedFile[]): string {
|
||||
</body></html>`;
|
||||
}
|
||||
|
||||
function mobilePreviewPage(file: SharedFile): string {
|
||||
const playableJson = JSON.stringify(file.buf.toString('utf8')).replace(/<\/script/gi, '<\\/script');
|
||||
const title = file.filename.replace(/[&<>"]/g, (c) =>
|
||||
({ '&': '&', '<': '<', '>': '>', '"': '"' }[c] as string)
|
||||
);
|
||||
return `<!DOCTYPE html>
|
||||
<html><head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
||||
<title>${title}</title>
|
||||
<style>
|
||||
html, body { width: 100%; height: 100%; margin: 0; overflow: hidden; background: #000; }
|
||||
iframe { position: fixed; inset: 0; width: 100%; height: 100%; border: 0; background: #000; }
|
||||
.boot { position: fixed; inset: 0; display: grid; place-items: center; color: #777; font: 12px system-ui, sans-serif; }
|
||||
</style>
|
||||
</head><body>
|
||||
<div id="boot" class="boot">Loading preview...</div>
|
||||
<iframe id="playable" sandbox="allow-scripts allow-same-origin allow-pointer-lock allow-forms allow-popups allow-popups-to-escape-sandbox allow-top-navigation-by-user-activation"></iframe>
|
||||
<script>
|
||||
const playableHtml = ${playableJson};
|
||||
setTimeout(() => {
|
||||
const frame = document.getElementById('playable');
|
||||
document.getElementById('boot').style.display = 'none';
|
||||
frame.srcdoc = playableHtml;
|
||||
}, 750);
|
||||
</script>
|
||||
</body></html>`;
|
||||
}
|
||||
|
||||
interface LanIp { address: string; iface: string; }
|
||||
|
||||
function getLanIps(): LanIp[] {
|
||||
|
||||
Reference in New Issue
Block a user