import { User, ServerSettings } from '../db/config.js'; import { readFileSync } from 'fs'; // Navbar export async function Navbar (req) { let userID = req.session.userID; let username = req.session.username; let role = req.session.role; let host = req.session.host; let language = await getLanguage(userID); // Check if the user wants to hide their profile name. if (userID != '00000000-0000-0000-0000-000000000000') { let user = await User.findOne({ where: { userID: userID }}); let preferences = JSON.parse(user.preferences); if (preferences.hide_profile == true) { username = 'Anon'; } } let sponsored = await ServerSettings.findOne({ where: { key: 'sponsored' }}); if (sponsored) { username = ``; } let [host0_active, host0_toggle, host0_tag, host0_ip, host0_port] = ['', '', '', '', '']; let [host1_active, host1_toggle, host1_tag, host1_ip, host1_port] = ['', '', '', '', '']; let [host2_active, host2_toggle, host2_tag, host2_ip, host2_port] = ['', '', '', '', '']; let [host3_active, host3_toggle, host3_tag, host3_ip, host3_port] = ['', '', '', '', '']; let [host4_active, host4_toggle, host4_tag, host4_ip, host4_port] = ['', '', '', '', '']; const [host2, created2] = await ServerSettings.findOrCreate({ where: { key: 'host2' }, defaults: { key: 'host2', value: '' }}); const [host3, created3] = await ServerSettings.findOrCreate({ where: { key: 'host3' }, defaults: { key: 'host3', value: '' }}); const [host4, created4] = await ServerSettings.findOrCreate({ where: { key: 'host4' }, defaults: { key: 'host4', value: '' }}); if (host2.value) { host2_toggle = 'checked'; [host2_tag, host2_ip, host2_port] = host2.value.split(','); } if (host3.value) { host3_toggle = 'checked'; [host3_tag, host3_ip, host3_port] = host3.value.split(','); } if (host4.value) { host4_toggle = 'checked'; [host4_tag, host4_ip, host4_port] = host4.value.split(','); } let host_buttons = '
'; let navbar = readFileSync('./views/partials/navbar.html', 'utf8'); if (language == 'english') { navbar = navbar.replace(/Username/g, username); navbar = navbar.replace(/Userrole/g, role); navbar = navbar.replace(/HostButtons/g, host_buttons); navbar = navbar.replace(/HOSTID/g, nav_link); return navbar; } else { let lang = readFileSync(`./languages/${language}.json`, 'utf8'); lang = JSON.parse(lang); navbar = navbar.replace(/Dashboard/g, lang.Dashboard); navbar = navbar.replace(/Images/g, lang.Images); navbar = navbar.replace(/Volumes/g, lang.Volumes); navbar = navbar.replace(/Networks/g, lang.Networks); navbar = navbar.replace(/Apps/g, lang.Apps); navbar = navbar.replace(/Users/g, lang.Users); navbar = navbar.replace(/Syslogs/g, lang.Syslogs); navbar = navbar.replace(/HOSTID/g, nav_link); navbar = navbar.replace(/Search/g, lang.Search); navbar = navbar.replace(/Account/g, lang.Account); navbar = navbar.replace(/Notifications/g, lang.Notifications); navbar = navbar.replace(/Preferences/g, lang.Preferences); navbar = navbar.replace(/Settings/g, lang.Settings); navbar = navbar.replace(/Logout/g, lang.Logout); navbar = navbar.replace(/Username/g, username); navbar = navbar.replace(/Userrole/g, role); navbar = navbar.replace(/HostButtons/g, host_buttons); return navbar; } } // Sidebar export async function Sidebar (req) { let language = await getLanguage(req.session.userID); let sidebar = readFileSync('./views/partials/sidebar.html', 'utf8'); if (language == 'english') { return sidebar; } else { let lang = readFileSync(`./languages/${language}.json`, 'utf8'); lang = JSON.parse(lang); sidebar = sidebar.replace(/Account/g, lang.Account); sidebar = sidebar.replace(/Notifications/g, lang.Notifications); sidebar = sidebar.replace(/Preferences/g, lang.Preferences); sidebar = sidebar.replace(/Settings/g, lang.Settings); sidebar = sidebar.replace(/Sponsors/g, lang.Sponsors); sidebar = sidebar.replace(/Credits/g, lang.Credits); return sidebar; } } // Footer export async function Footer (req) { let language = await getLanguage(req.session.userID); let footer = readFileSync('./views/partials/footer.html', 'utf8'); let package_info = readFileSync(`package.json`, 'utf8'); package_info = JSON.parse(package_info); let build_version = package_info.version.split('.').pop(); footer = footer.replace(/BuildVersion/g, build_version); if (language == 'english') { return footer; } else { let lang = readFileSync(`./languages/${language}.json`, 'utf8'); lang = JSON.parse(lang); footer = footer.replace(/Documentation/g, lang.Documentation); return footer; } } // Header Alert export function Alert (type, message) { return ` `; } export async function getLanguage (userID) { // Use the admin's language if authentication is disabled. if (userID == '00000000-0000-0000-0000-000000000000') { let user = await User.findOne({ where: { role: 'admin' }}); return user.language; } else { let user = await User.findOne({ where: { userID: userID }}); return user.language; } } export function Capitalize (string) { return string.charAt(0).toUpperCase() + string.slice(1); }