more wtv-admin stuff

This commit is contained in:
zefie
2022-10-07 20:46:30 -04:00
parent 86d8a09688
commit e0f070cdd7
9 changed files with 269 additions and 12 deletions

View File

@@ -51,17 +51,17 @@ if (auth === true) {
<tr> <tr>
<td><strike><a href="wtv-admin:/whitelist">Whitelist an SSID</a></strike> <td><strike><a href="wtv-admin:/whitelist">Whitelist an SSID</a></strike>
<td width = 10> <td width = 10>
<td><strike><a href="wtv-admin:/removeuserpasswd">Remove Pass from User </a></strike> <td><a href="wtv-admin:/removeuserpasswd">Remove Pass from User </a>
<tr> <tr>
<td colspan=3 height=6> <td colspan=3 height=6>
<tr> <tr>
<td><strike><a href="wtv-admin:/addadmin">Grant Admin to SSID</a></strike> <td><strike><a href="wtv-admin:/addadmin">Grant Admin to SSID</a></strike>
<td width = 10> <td width = 10>
<td><strike><a href="wtv-admin:/deladmin">Revoke Admin from SSID</a></strike> <td><strike><a href="wtv-admin:/modadmin">Modify Admin for SSID</a></strike>
<tr> <tr>
<td colspan=3 height=6> <td colspan=3 height=6>
<tr> <tr>
<td><!-- TODO --> <td><a href="wtv-admin:/polyzoot">Polyzoot a User</a>
<td width = 10> <td width = 10>
<td><!-- TODO --> <td><!-- TODO -->
<tr> <tr>

View File

@@ -60,12 +60,15 @@ wtv-noback-all: wtv-admin:/findaccount`;
} }
data += ` data += `
<tr> <tr>
<td border=0 colspan=2> <td border=0 colspan=2>`;
<a href="wtv-admin:/ban?ssid=${user_info.ssid}">Ban SSID</a> if (wtva.isBanned(user_info.ssid)) {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; data += `<a href="wtv-admin:/unban?ssid=${user_info.ssid}">Unban SSID</a>`;
<a href="wtv-admin:/unban?unban_ssid=${user_info.ssid}">Unban SSID</a> data += "&nbsp;".repeat(28);
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {
<a href="wtv-admin:/deleteaccount?ssid=${user_info.ssid}">Delete Account</span> data += `<a href="wtv-admin:/ban?ssid=${user_info.ssid}">Ban SSID</a>`;
data += "&nbsp;".repeat(32);
}
data += `<a href="wtv-admin:/deleteaccount?ssid=${user_info.ssid}">Delete Account</span>
</td> </td>
</tr> </tr>
` `

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

View File

@@ -0,0 +1,133 @@
var minisrv_service_file = true;
var WTVAdmin = require("./WTVAdmin.js");
var wtva = new WTVAdmin(minisrv_config, ssid_sessions[socket.ssid], service_name);
var auth = wtva.isAuthorized();
if (auth === true) {
var password = null;
if (request_headers.Authorization) {
var authheader = request_headers.Authorization.split(' ');
if (authheader[0] == "Basic") {
password = Buffer.from(authheader[1], 'base64').toString();
if (password) password = password.split(':')[1];
}
}
if (wtva.checkPassword(password)) {
if (request_headers.query.username) {
var user_info = wtva.getAccountInfo(request_headers.query.username.toLowerCase()); // username search
if (user_info) {
var userAccount = wtva.getAccountBySSID(user_info.ssid);
userAccount.switchUserID(user_info.user_id, false, false);
if (request_headers.query.confirm) {
var polyzooot = 1407;
var WTVBGMusic = require("./WTVBGMusic.js");
var wtvbgm = new WTVBGMusic(minisrv_config, userAccount);
var bgmcat = wtvbgm.getSongCategory(polyzooot);
var music_obj = wtvbgm.getMusicObj();
music_obj.enableCategories = [bgmcat];
music_obj.enableSongs = [polyzooot];
music_obj = Object.assign({}, music_obj)
userAccount.setSessionData("wtv-bgmusic", music_obj);
var settings_obj = userAccount.getSessionData("wtv-setup");
if (settings_obj === null) settings_obj = {};
settings_obj['setup-play-bgm'] = 1;
userAccount.setSessionData("wtv-setup", Object.assign({}, settings_obj));
userAccount.saveSessionData();
}
if (request_headers.query.reset) {
var WTVBGMusic = require("./WTVBGMusic.js");
userAccount.deleteSessionData("wtv-bgmusic")
var wtvbgm = new WTVBGMusic(minisrv_config, userAccount);
var music_obj = wtvbgm.getMusicObj(true);
var settings_obj = userAccount.getSessionData("wtv-setup");
if (settings_obj === null) settings_obj = {};
settings_obj['setup-play-bgm'] = 0;
userAccount.setSessionData("wtv-setup", Object.assign({}, settings_obj));
userAccount.saveSessionData();
}
}
}
headers = `200 OK
Content-Type: text/html
wtv-expire-all: wtv-admin:/polyzoot
wtv-noback-all: wtv-admin:/polyzoot`;
data = `<html>
<body>
<display nosave nosend>
<title>${minisrv_config.config.service_name} Admin Tricks</title>
<sidebar width=20%>
<img src="wtv-admin:/images/polyzoot.jpg">
</sidebar>
<body bgcolor="#0a0a0a" text="#CC1111" link="#ff55ff" vlink="#ff55ff" vspace=0>
<br>
<br>
<h1>${minisrv_config.config.service_name} Admin Tricks</h1>
<br>
<table>
<tr>
<td colspan=3 height=6>
<h3>Polyzoot a User</h3>`;
if (!request_headers.query.username) {
data += `"Polyzooting" a user will replace their Background Music with only Polyzoot,
and turn on BGM if they have it disabled. This will not work on Old Classic clients.
Also, the only way to undo a "Polyzooting" is to reset the user's music selection to default.<br><br>`
}
data += `
<form action="wtv-admin:/polyzoot" method="POST">
<input type="text" name="username" value="${(request_headers.query.username) ? request_headers.query.username : ""}"> &nbsp; <input type="submit" value="Look Up User">
</form><br><br>`
if (request_headers.query.username) {
if (user_info && !request_headers.query.confirm && !request_headers.query.reset) {
if (user_info.username == ssid_sessions[socket.ssid].getSessionData("subscriber_username")) {
data += `Are you sure you want to Polyzoot <b>yourself</b>?<br>Are you a masochist?`;
} else {
data += `Are you sure you want to Polyzoot <b>${user_info.username}</b>?<br>Are you a sadist?`;
}
data += `
<br><br>
<tr>
<td>
<form action="wtv-admin:/polyzoot" method="POST">
<input type="hidden" name="username" value="${user_info.username}">
<input type="hidden" name="reset" value="true">
<input type="submit" value="Release This Soul (Reset)">
</td>
<td>
<form action="wtv-admin:/polyzoot" method="POST">
<input type="hidden" name="username" value="${user_info.username}">
<input type="hidden" name="confirm" value="true">
<input type="submit" value="Torture This Soul">
</form>
</td>
</tr>
`
data += `</table>`;
} else if (request_headers.query.confirm) {
data += `You have condemned <strong>${user_info.username}</strong><br> to endless loops of Polyzoot.<br><br>It will take effect upon their next login.<br><br>`;
} else if (request_headers.query.reset) {
data += `You have freed <strong>${user_info.username}'s</strong> soul<br> from the bounds of Polyzoot.<br><br>It will take effect upon their next login.<br><br>`;
}
}
data += `
<br>
<br>
<tr>
</table>
<p align="right">
<a href="client:goback">Go Back</a>
</p>
</body>
</html>
`;
} else {
var errpage = wtvshared.doErrorPage(401, "Please enter the administration password, you can leave the username blank.");
headers = errpage[0];
data = errpage[1];
}
} else {
var errpage = wtvshared.doErrorPage(403, auth);
headers = errpage[0];
data = errpage[1];
}

View File

@@ -0,0 +1,109 @@
var minisrv_service_file = true;
var WTVAdmin = require("./WTVAdmin.js");
var wtva = new WTVAdmin(minisrv_config, ssid_sessions[socket.ssid], service_name);
var auth = wtva.isAuthorized();
if (auth === true) {
var password = null;
if (request_headers.Authorization) {
var authheader = request_headers.Authorization.split(' ');
if (authheader[0] == "Basic") {
password = Buffer.from(authheader[1], 'base64').toString();
if (password) password = password.split(':')[1];
}
}
if (wtva.checkPassword(password)) {
if (request_headers.query.username) {
var show_cannot_modify_self = false;
var show_user_has_no_password = false;
var user_info = wtva.getAccountInfo(request_headers.query.username.toLowerCase()); // username search
if (user_info) {
if (user_info.ssid == socket.ssid) {
show_cannot_modify_self = true;
}
var userAccount = wtva.getAccountBySSID(user_info.ssid);
userAccount.switchUserID(user_info.user_id, false, false);
if (!userAccount.getUserPasswordEnabled()) {
show_user_has_no_password = true;
}
if (request_headers.query.confirm_remove) {
if (!show_cannot_modify_self && !show_user_has_no_password) {
userAccount.disableUserPassword();
}
}
}
}
headers = `200 OK
Content-Type: text/html
wtv-expire-all: wtv-admin:/removeuserpasswd
wtv-noback-all: wtv-admin:/removeuserpasswd`;
data = `<html>
<body>
<display nosave nosend>
<title>${minisrv_config.config.service_name} Admin Tricks</title>
<sidebar width=20%>
<img src="wtv-admin:/images/nuke.gif">
</sidebar>
<body bgcolor="#0a0a0a" text="#CC1111" link="#ff55ff" vlink="#ff55ff" vspace=0>
<br>
<br>
<h1>${minisrv_config.config.service_name} Admin Tricks</h1>
<br>
<table>
<tr>
<td colspan=3 height=6>
<h3>Remove Password from a User Account</h3>
<form action="wtv-admin:/removeuserpasswd" method="POST">
<input type="text" name="username" value="${(request_headers.query.username) ? request_headers.query.username : ""}"> &nbsp; <input type="submit" value="Look Up User">
</form><br><br>`
if (request_headers.query.username) {
if (user_info && !request_headers.query.confirm_remove && !show_user_has_no_password && !show_cannot_modify_self) {
data += `
<strong>User Information:</strong>
<table border=1 cellpadding=3 width=400>
<tr><td>Username:</td><td>${user_info.username} (User ID: ${user_info.user_id})</td></tr>
<tr><td>SSID:</td><td>${user_info.ssid}</td></tr>`;
if (user_info.account_users) {
data += `<tr><td>Primary User:</td><td>${user_info.account_users['subscriber'].subscriber_username}</td></tr>`;
}
data += `
<tr>
<td border=0 colspan=2 align=right>
<form action="wtv-admin:/removeuserpasswd" method="POST">
<input type="hidden" name="username" value="${user_info.username}">
<input type="hidden" name="confirm_remove" value="true">
<input type="submit" value="Confirm Password Removal">
</form>
</td>
</tr>
`
data += `</table>`;
} else if (show_cannot_modify_self) {
data += `<strong>Cannot modify your account in this manner.<br>Try <a href="wtv-setup:/accounts">wtv-setup</a>.</strong><br><br>`;
} else if (show_user_has_no_password) {
data += `<strong>${user_info.username} has no password,<br>so there nothing to do.<br><br>`;
} else {
data += `<strong>Password removed from account "${user_info.username}"</strong><br><br>`;
}
}
data += `
<br>
<br>
<tr>
</table>
<p align="right">
<a href="client:goback">Go Back</a>
</p>
</body>
</html>
`;
} else {
var errpage = wtvshared.doErrorPage(401, "Please enter the administration password, you can leave the username blank.");
headers = errpage[0];
data = errpage[1];
}
} else {
var errpage = wtvshared.doErrorPage(403, auth);
headers = errpage[0];
data = errpage[1];
}

View File

@@ -148,6 +148,17 @@ class WTVAdmin {
userSession.user_id = 0; userSession.user_id = 0;
return userSession; return userSession;
} }
isBanned(ssid) {
var self = this;
var isBanned = false;
Object.keys(this.minisrv_config.config.ssid_block_list).forEach(function (k) {
if (self.minisrv_config.config.ssid_block_list[k] == ssid) {
isBanned = true;
}
});
return isBanned;
}
} }
module.exports = WTVAdmin; module.exports = WTVAdmin;

View File

@@ -1252,12 +1252,12 @@ class WTVBGMusic {
this.wtvshared = new WTVShared(minisrv_config); this.wtvshared = new WTVShared(minisrv_config);
} }
getMusicObj() { getMusicObj(force_default = false) {
var music_obj = this.session_data.getSessionData("wtv-bgmusic"); var music_obj = this.session_data.getSessionData("wtv-bgmusic");
if (music_obj === null) music_obj = {}; if (music_obj === null) music_obj = {};
// check if we need to set defaults // check if we need to set defaults
var setDefaults = false; var setDefaults = force_default;
if (!music_obj.enableCategories) setDefaults = true; if (!music_obj.enableCategories) setDefaults = true;
else if (music_obj.enableCategories.length == 0) setDefaults = true; else if (music_obj.enableCategories.length == 0) setDefaults = true;
if (!music_obj.enableSongs) setDefaults = true; if (!music_obj.enableSongs) setDefaults = true;

View File

@@ -451,7 +451,7 @@ class WTVClientSessionData {
getUserPasswordEnabled() { getUserPasswordEnabled() {
if (!this.minisrv_config.config.passwords.enabled) return false; // master config override if (!this.minisrv_config.config.passwords.enabled) return false; // master config override
var enabled = this.getSessionData("subscriber_password"); var enabled = this.getSessionData("subscriber_password");
return (enabled); // true if set, false if null/disabled return (enabled != null && typeof enabled != undefined); // true if set, false if null/disabled
} }
validateUserPassword(passwd) { validateUserPassword(passwd) {

View File

@@ -113,6 +113,7 @@
}, },
"wtv-admin": { "wtv-admin": {
"port": 1698, "port": 1698,
"enable_multi_query": true,
"password": "viRak-7" "password": "viRak-7"
}, },
"http": { "http": {