onionserver/static/admin.html
2020-07-31 14:50:57 +03:00

157 lines
4.3 KiB
HTML

<html>
<head>
<style type="text/css">
.shadow{
display:none;
position:absolute;
top:0;
left:0;
width:100%;
height:100%;
}
.midmsg{
position:fixed;
top:50%;
left:50%;
margin-left:auto;
margin-right:auto;
}
.C{text-align:center;}
.R{text-align:right;}
</style>
<script src="/pass.js" type="text/javascript" language="javascript"></script>
<script>
var user="", passwd="", level="", url="";
const CGI_PATH = "https://ishtar.sao.ru/cgi-bin/auth";
function parseErr(txt){
$('msg').innerHTML = "ïÛÉÂËÁ!<p></p>" + txt.replace("\n", "<br>");
setTimeout(function(){$('msg').innerHTML = "";}, 3500);
}
function sendrequest(request, req_STR, onOK){
var timeout_id
request = new XMLHttpRequest();
request.open("POST", CGI_PATH, true);
request.setRequestHeader("Accept-Charset", "koi8-r");
request.overrideMimeType("multipart/form-data; charset=koi8-r");
request.setRequestHeader("Cookie", document.cookie);
request.onreadystatechange=function(){
if (request.readyState == 4){
if (request.status == 200){
clearTimeout(timeout_id);
onOK(request);
}
else{
clearTimeout(timeout_id);
parseErr("ïÛÉÂËÁ ÐÅÒÅÄÁÞÉ ÚÁÐÒÏÓÁ. ðÏÐÒÏÂÕÊÔÅ ÅÝÅ ÒÁÚ.");
}
}
}
request.send(req_STR);
timeout_id = setTimeout(function(){parseErr("ôÁÊÍÁÕÔ ÐÅÒÅÄÁÞÉ ÚÁÐÒÏÓÁ. ðÏÐÒÏÂÕÊÔÅ ÅÝÅ ÒÁÚ.");}, 3000);
}
function run(){
var QS;
sendrequest(QS, "admin=lsusers", lsusers);
}
function lsusers(QS){
var ans = QS.responseText;
var pars = ans.split("\n");
var i, l, s;
for(i=0, l=pars.length; i < l; i++){
s = pars[i].split(";");
if(pars[i].length < 2) continue;
if(s.length != 3){
parseErr(ans+"<br>str="+s);
return;
}
addUsersString(s);
}
}
function addUsersString(str){
var ulist = $('userlist');
var div = document.createElement('div');
ulist.appendChild(div);
var u = str[0];
div.innerHTML = "<span>"+u+"</span> <span>"+str[1]+"</span> <span>"+str[2]+"</span> "+
"<span onclick='delUser(\""+u+"\");'>delete</span> "+
"<span onclick='editUser(\""+u+"\",\""+str[1]+"\",\""+str[2]+"\");'>edit</span>";
}
function useradd(arg){
function pair(name){
var str = "<div class='R'>"+name+"<input type=text id="+
name+" onchange=\""+name+"=$('"+name+"').value;\""+
" onblur=\""+name+"=$('"+name+"').value;\" value='"+eval(name)+"'></div>"
return str;
}
var div = document.createElement('div');
$("box").style.display = "block";
div.className = "midmsg";
$("box").appendChild(div);
div.innerHTML = "<div class='C'>äÏÂÁ×ÉÔØ/ÉÚÍÅÎÉÔØ ÐÏÌØÚÏ×ÁÔÅÌÑ</div>"+
pair("user")+pair("passwd")+pair("level")+pair("url")+
"<div class='C'><button onclick='addUser(\""+arg+"\");'>OK</button>"+
"<button onclick='cancelAdd();'>ïÔÍÅÎÁ</button></div>";
}
function chkAns(req, Msg){
if(req.responseText.length > 0)
parseErr(Msg);
else{
window.location.reload();
}
}
function addUser(arg){
var request;
function cantadd(req){
chkAns(req, "ÎÅ ÍÏÇÕ ÄÏÂÁ×ÉÔØ/ÒÅÄÁËÔÉÒÏ×ÁÔØ ÐÏÌØÚÏ×ÁÔÅÌÑ<br>"+req.responseText);
}
if(user==""){
parseErr("ïÔÓÕÔÓÔ×ÕÅÔ ÉÍÑ ÐÏÌØÚÏ×ÁÔÅÌÑ");
return;
}
if(passwd==""){
parseErr("îÅ ÚÁÄÁÎ ÐÁÒÏÌØ ÐÏÌØÚÏ×ÁÔÅÌÑ");
return;
}
if(level=="" || Number(level) < 0){
parseErr("îÅ ÚÁÄÁÎ ÉÌÉ ÚÁÄÁÎ ÎÅ×ÅÒÎÏ ÕÒÏ×ÅÎØ ÄÏÓÔÕÐÁ ÐÏÌØÚÏ×ÁÔÅÌÑ");
return;
}
if(url==""){
parseErr("îÅ ÚÁÄÁÎ ÁÄÒÅÓ ÄÏÓÔÕÐÎÙÈ ÐÏÌØÚÏ×ÁÔÅÌÀ ÒÅÓÕÒÓÏ× (ÉÌÉ \"/\", ÅÓÌÉ ÄÏÓÔÕÐÎÏ ×ÓÅ)");
return;
}
sendrequest(request,
"admin="+arg+"&user="+user+"&passwd="+passwd+"&level="+level+"&URL="+url,
cantadd);
user = passwd = level = url = "";
}
function cancelAdd(){
user = passwd = level = url = "";
$("box").innerHTML = "";
$("box").style.display = "none";
}
function delUser(username){
var request;
function cantdel(req){
chkAns(req, "ÎÅ ÍÏÇÕ ÕÄÁÌÉÔØ ÐÏÌØÚÏ×ÁÔÅÌÑ<br>"+req.responseText);
}
sendrequest(request, "admin=userdel&user="+username, cantdel);
}
function editUser(username, ulevl, uurl){
user = username; passwd = "";
level = ulevl; url = uurl;
useradd("usermod");
}
</script>
<title>õÐÒÁ×ÌÅÎÉÅ ÐÏÌØÚÏ×ÁÔÅÌÑÍÉ</title>
</head>
<body onload="getcookie(CGI_PATH); run();">
<div class="shadow" id="box"></div>
<div id="inout" style="position: fixed; top: 10px; right: 10px; cursor: pointer; font-weight: bold;" onclick="inout();" >÷ÈÏÄ</div>
<div onclick="useradd('useradd');">îÏ×ÙÊ ÐÏÌØÚÏ×ÁÔÅÌØ</div>
<div id="userlist"></div>
<div id="msg" style="margin-top: 15px; color: red;"></div>
</body>
</html>