diff options
| author | Roland Stigge <stigge@antcom.de> | 2018-01-11 21:36:51 +0100 | 
|---|---|---|
| committer | Roland Stigge <stigge@antcom.de> | 2018-01-11 21:36:51 +0100 | 
| commit | 732f6686bc94151591f7bae3401aac095076068e (patch) | |
| tree | 2587690efbd1b32c080518ebf581e146aa4b3d55 /html | |
| parent | b39ae2a8b4d2bddf054a45d52f9f52c0e971aaa1 (diff) | |
Prepared login page (WIP)
Diffstat (limited to 'html')
| -rw-r--r-- | html/index.html | 2 | ||||
| -rw-r--r-- | html/webbox.js | 96 | 
2 files changed, 73 insertions, 25 deletions
| diff --git a/html/index.html b/html/index.html index 904d5e0..3b75f44 100644 --- a/html/index.html +++ b/html/index.html @@ -81,7 +81,7 @@  			<br/>  		</div> -		<a download="webbox-download.zip" id="download-a" hidden></a> +		<a id="download-a" hidden></a>  		<div class="footer">  		</div> diff --git a/html/webbox.js b/html/webbox.js index 7c1b43f..6cbf23d 100644 --- a/html/webbox.js +++ b/html/webbox.js @@ -1,6 +1,8 @@  var currentDir = "/";  var listElements;  var numberOfSelectedRows = 0; +var username = "notaname"; +var password = "password";  function clearContents() {  	var result = "<table class=\"list\">"; @@ -56,6 +58,7 @@ function loadContents(dir) {  	}  	xhr.open("GET", "/bin/query" + currentDir + "?command=list", true); +	xhr.setRequestHeader("Authorization", "Basic " + btoa(username + ":" + password));  	xhr.send();  } @@ -244,26 +247,13 @@ function prepareReadOnly(readOnly) {  	}  } -function initMainpage() { -	setCurrentDir("/"); - -	// default action for "Cancel" button: hide dialog window -	document.getElementById("cancelbutton").onclick = hideDialog; - -	// on click outside of menu, close menu -	document.getElementById("greyout").onclick = function() { -		hideDialog(); -		hideMenu(); -	} -	 -	// on Escape, globally hide dialog and menu window -	document.onkeydown = function(evt) { -		if (evt.key == "Escape") { -			hideDialog(); -			hideMenu(); -		} -	} +function login() { +	username = "kneipen"; +	password = "band"; +	initMainpage(); +} +function initMainpage() {  	// load title  	var xhrTitle = new XMLHttpRequest(); @@ -271,6 +261,10 @@ function initMainpage() {  		if (this.readyState != 4) {  			return;  		} +		if (this.status == 401) { // login error: goto login page +			login(); +			return; +		} else  		if (this.status != 200) {  			document.getElementsByClassName("title")[0].innerHTML = "HTTP error";  			return; @@ -282,11 +276,38 @@ function initMainpage() {  		var readOnly = serverInfo.getElementsByTagName("readonly")[0].textContent;  		prepareReadOnly(readOnly); + +		// if successful: continue loading +		initMainpage2();  	}  	xhrTitle.open("GET", "/bin/query?command=server-info", true); +	xhrTitle.setRequestHeader("Authorization", "Basic " + btoa(username + ":" + password));  	xhrTitle.send(); +	// default action for "Cancel" button: hide dialog window +	document.getElementById("cancelbutton").onclick = hideDialog; + +	// on click outside of menu, close menu +	document.getElementById("greyout").onclick = function() { +		hideDialog(); +		hideMenu(); +	} +	 +	// on Escape, globally hide dialog and menu window +	document.onkeydown = function(evt) { +		if (evt.key == "Escape") { +			hideDialog(); +			hideMenu(); +		} +	} +} + +// deferred initialization after successful login +function initMainpage2() { +	// fill file list initially +	setCurrentDir("/"); +  	// load footer  	var xhrFooter = new XMLHttpRequest(); @@ -298,6 +319,7 @@ function initMainpage() {  	}  	xhrFooter.open("GET", "/bin/query?command=version", true); +	xhrFooter.setRequestHeader("Authorization", "Basic " + btoa(username + ":" + password));  	xhrFooter.send();  } @@ -341,6 +363,7 @@ function download(filename) {  				}  				var a = document.getElementById("download-a"); +				a.setAttribute("download", "webbox-download.zip");  				var file = new Blob([this.response]);  				a.href = window.URL.createObjectURL(file);  				a.click(); @@ -358,16 +381,34 @@ function download(filename) {  			}  			xhr.open("POST", "/bin/query" + currentDir + "?command=download-zip", true); +			xhr.setRequestHeader("Authorization", "Basic " + btoa(username + ":" + password));  			xhr.setRequestHeader("Content-type", "text/xml");  			xhr.responseType = 'blob';  			xhr.send(xmlDocument);  		} -	} else { +	} else { // single file download +		var xhr = new XMLHttpRequest(); + +		xhr.onreadystatechange = function() { +			if (this.readyState != 4 || this.status != 200) { +				return; +			} + +			var a = document.getElementById("download-a"); +			a.setAttribute("download", filename); +			var file = new Blob([this.response]); +			a.href = window.URL.createObjectURL(file); +			a.click(); +		} +  		var dir = currentDir;  		if (dir != "/") {  			dir += "/"  		} -		document.location.href = "/bin/query" + dir + filename; +		xhr.open("GET", "/bin/query" + dir + filename, true); +		xhr.setRequestHeader("Authorization", "Basic " + btoa(username + ":" + password)); +		xhr.responseType = 'blob'; +		xhr.send();  	}  } @@ -400,6 +441,7 @@ function createDir() {  		dirElement.appendChild(document.createTextNode(document.getElementById("newdir").value));  		xhr.open("POST", "/bin/query" + currentDir + "?command=newdir", true); +		xhr.setRequestHeader("Authorization", "Basic " + btoa(username + ":" + password));  		xhr.setRequestHeader("Content-type", "text/xml");  		xhr.send(xmlDocument);  	} @@ -457,6 +499,7 @@ function onUploadFile() {          formData.append("uploadfile", uploadfile.files[0]);          xhr.open("POST", "/bin/query" + currentDir + "?command=upload", true); +	xhr.setRequestHeader("Authorization", "Basic " + btoa(username + ":" + password));          xhr.send(formData);  } @@ -506,6 +549,7 @@ function deleteItems() {  		}  		xhr.open("POST", "/bin/query" + currentDir + "?command=delete", true); +		xhr.setRequestHeader("Authorization", "Basic " + btoa(username + ":" + password));  		xhr.setRequestHeader("Content-type", "text/xml");  		xhr.send(xmlDocument);  	} @@ -570,10 +614,12 @@ function move() {  		}  		xhr.open("POST", "/bin/query" + currentDir + "?command=move", true); +		xhr.setRequestHeader("Authorization", "Basic " + btoa(username + ":" + password));  		xhr.setRequestHeader("Content-type", "text/xml");  		xhr.send(xmlDocument);  	}  } +  function rename() {  	showDialog(); @@ -634,6 +680,7 @@ function rename() {  		filesElement.appendChild(newnameElement);  		xhr.open("POST", "/bin/query" + currentDir + "?command=rename", true); +		xhr.setRequestHeader("Authorization", "Basic " + btoa(username + ":" + password));  		xhr.setRequestHeader("Content-type", "text/xml");  		xhr.send(xmlDocument);  	} @@ -681,6 +728,7 @@ function info() {  	}  	xhr.open("POST", "/bin/query" + currentDir + "?command=info", true); +	xhr.setRequestHeader("Authorization", "Basic " + btoa(username + ":" + password));  	xhr.setRequestHeader("Content-type", "text/xml");  	xhr.send(xmlDocument);  } @@ -717,7 +765,7 @@ function logout() {  	clearContents(); -	var p = window.location.protocol + '//' -	// current location must return 200 OK for this GET -	window.location = window.location.href.replace(p, p + 'logout:password@') +	username = "notaname"; +	password = "password"; +	initMainpage();  } | 
