var minisrv_service_file = true; var WTVAdmin = require(classPath + "/WTVAdmin.js"); var wtva = new WTVAdmin(minisrv_config, session_data, service_name); var auth = wtva.isAuthorized(); function generateFormField(type, confvar, options = null) { if (confvar.indexOf('.') > 0) { var confvar_split = confvar.split('.'); // not operater error resistant, be mindful if you modify this page if (user_config.config[confvar_split[0]]) var confvar_value = user_config.config[confvar_split[0]][confvar_split[1]] || minisrv_config.config[confvar_split[0]][confvar_split[1]] else var confvar_value = minisrv_config.config[confvar_split[0]][confvar_split[1]]; confvar = confvar.replace(".", "-"); } else var confvar_value = user_config.config[confvar] || minisrv_config.config[confvar]; if (type == "input") return `` if (type == "checkbox") return `\n` if (type == "select") { var out = `"; } } 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)) { var user_config = wtvshared.getUserConfig(); headers = "200 OK\r\nContent-Type: text/html"; data = ` ${minisrv_config.config.service_name} Operator Tweaks

${minisrv_config.config.service_name} Operator Tweaks

These settings can be updated without restarting minisrv
service_owner
The name of the server operator
service_owner_account
The minisrv account name of the server operator
service_owner_contact
The email address or username of the server operator where users can contact them
service_owner_
contact_method

The method by which the user can contact the server operator (eg. email, Discord, Twitter, etc...)
service_name
The name of the service (eg. WebTV)
service_logo
The logo for the service. Absolute URL, or file name in the Shared ROMCache.
service_splash_logo
The splash page logo for the service. Absolute URL, or file name in the Shared ROMCache.
show_detailed_splash
Show service information and client connection speed on the splash page.
hide_ssid_in_logs
Filter SSIDs in console logs and log files.
filter_
passwords_in_logs

Filter passwords (if the form field contains 'pass') in console logs and log files.
verbosity
Console log debug level.
show_diskmap
Useful for debugging wtv-disk downloads.
allow_guests
Allows users to use the service without having to register. Guest session data is destroyed upon logout, and some features are not available to guests.
enable_
lzpf_compression

Toggles whether LZPF compression will be considered or not
enable_
gzip_compression

Toggles whether GZIP compression will be considered or not
Max Users Per Account
Min Username Length
Max Username Length
Enable Passwords
When disabled, accounts will not be able to use passwords, if they had a password set prior, the account will be accessible without it.
Min Password Length
Max Password Length
Password Field Size The size of the field on the login password page
${generateFormField('input', 'service_owner')}
${generateFormField('input', 'service_owner_account')}
${generateFormField('input', 'service_owner_contact')}
${generateFormField('input', 'service_owner_contact_method')}
${generateFormField('input', 'service_name')}
${generateFormField('input', 'service_logo')}
${generateFormField('input', 'service_splash_logo')}
${generateFormField('checkbox', 'show_detailed_splash')}
${generateFormField('checkbox', 'hide_ssid_in_logs')}
${generateFormField('checkbox', 'filter_passwords_in_logs')}
${generateFormField('select', 'verbosity', [ { "name": "Quiet (0)", value: 0 }, { "name": "Show Headers (1)", value: 1 }, { "name": "Verbose, without Headers (2)", value: 2 }, { "name": "Verbose, with headers (3)", value: 3 }, { "name": "Debug (4)", value: 4 }, ])}
${generateFormField('checkbox', 'show_diskmap')}
${generateFormField('checkbox', 'allow_guests')}
${generateFormField('checkbox', 'enable_lzpf_compression')}
${generateFormField('checkbox', 'enable_gzip_compression')}
${generateFormField('input', 'user_accounts.max_users_per_account', "size=2 onkeypress='return forceNumeric(event)' onchange='validateNumber(this,1,50,6)' maxlength=2")}
${generateFormField('input', 'user_accounts.min_username_length', "size=2 onkeypress='return forceNumeric(event)' onchange='validateNumber(this,3,50,5)' maxlength=2")}
${generateFormField('input', 'user_accounts.max_username_length', "size=2 onkeypress='return forceNumeric(event)' onchange='validateNumber(this,3,50,18)' maxlength=2")}
${generateFormField('checkbox', 'passwords.enabled', "onchange='passwordFieldToggle(this)'")}
${generateFormField('input', 'passwords.min_length', "size=2 onkeypress='return forceNumeric(event)' onchange='validateNumber(this,3,32,5)' maxlength=2")}
${generateFormField('input', 'passwords.max_length', "size=2 onkeypress='return forceNumeric(event)' onchange='validateNumber(this,3,256,32)' maxlength=2")}
${generateFormField('input', 'passwords.form_size', "size=2 onkeypress='return forceNumeric(event)' onchange='validateNumber(this,5,99,16)' maxlength=2")}

`; } 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]; }