72 lines
2.4 KiB
Handlebars
72 lines
2.4 KiB
Handlebars
<!DOCTYPE html>
|
|
<html lang="cn">
|
|
<head>
|
|
<title>{{title}}</title>
|
|
<link rel='stylesheet' href='/stylesheets/style.css' />
|
|
<link rel="stylesheet" href="/stylesheets/bootstrap.min.css">
|
|
<link rel="icon" href="/favicon.ico">
|
|
<script src="/socket.io/socket.io.js"></script>
|
|
</head>
|
|
<body>
|
|
{{{body}}}
|
|
</body>
|
|
|
|
<script>
|
|
let numberOfFiles = 0;
|
|
const downloadWebsite = document.getElementsByClassName('btn-success')[0];
|
|
|
|
// connect to current socket.io server
|
|
const socket = io.connect(document.URL);
|
|
if(!localStorage['token'])
|
|
localStorage['token']=generateToken(20);
|
|
|
|
// wait for events for this token
|
|
socket.on(localStorage['token'],(event)=>{
|
|
console.log(event);
|
|
document.getElementById('progress').hidden=false;
|
|
const log = document.getElementById('log');
|
|
if (event.progress==="Converting") {
|
|
log.innerHTML=(`<code>100%! 正在压缩中...</code><br>`)
|
|
} else if( event.progress==="Completed") {
|
|
document.getElementById('progress').hidden=true;
|
|
log.innerHTML=(`<code>压缩成功 !</code><br>`)
|
|
downloadWebsite.style='display:'
|
|
downloadWebsite.onclick=function() {
|
|
window.location='/sites/'+event.file+".zip";
|
|
}
|
|
} else {
|
|
if(event.progress.includes('200 OK'))
|
|
numberOfFiles++;
|
|
document.getElementById('nFilesP').hidden=false;
|
|
document.getElementById('nFiles').innerHTML=numberOfFiles
|
|
|
|
log.innerHTML=(`<code> ${event.progress}</code><br>`)
|
|
}
|
|
})
|
|
|
|
// Download a website on click
|
|
const downloadBtn = document.getElementById("download");
|
|
downloadBtn.onclick=()=>{
|
|
const website = document.getElementById('website').value;
|
|
if (website) {
|
|
console.log("Now downloading the website ... %s",website)
|
|
socket.emit('request', { token: localStorage['token'] , website});
|
|
} else {
|
|
console.log("no url")
|
|
}
|
|
}
|
|
|
|
// Generate token for each user for the first time.
|
|
function generateToken(n) {
|
|
const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
|
|
let token = '';
|
|
for(let i = 0; i < n; i++) {
|
|
token += chars[Math.floor(Math.random() * chars.length)];
|
|
}
|
|
return token;
|
|
}
|
|
</script>
|
|
|
|
</html>
|
|
|