mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-08-26 10:10:24 +01:00
Merge pull request #2221 from wipedlifepotato/httpTheme
Some checks are pending
Build Debian packages / bookworm (push) Waiting to run
Build Debian packages / bullseye (push) Waiting to run
Build Debian packages / trixie (push) Waiting to run
Build on FreeBSD / with UPnP (push) Waiting to run
Build on OSX / With USE_UPNP=no (push) Waiting to run
Build on OSX / With USE_UPNP=yes (push) Waiting to run
Build on Windows / clang-x86_64 (push) Waiting to run
Build on Windows / i686 (push) Waiting to run
Build on Windows / ucrt-x86_64 (push) Waiting to run
Build on Windows / x86_64 (push) Waiting to run
Build on Windows / CMake clang-x86_64 (push) Waiting to run
Build on Windows / CMake i686 (push) Waiting to run
Build on Windows / CMake ucrt-x86_64 (push) Waiting to run
Build on Windows / CMake x86_64 (push) Waiting to run
Build on Windows / XP (push) Waiting to run
Build on Ubuntu / Make with USE_UPNP=no (push) Waiting to run
Build on Ubuntu / Make with USE_UPNP=yes (push) Waiting to run
Build on Ubuntu / CMake with -DWITH_UPNP=OFF (push) Waiting to run
Build on Ubuntu / CMake with -DWITH_UPNP=ON (push) Waiting to run
Build containers / Building container for linux/amd64 (push) Waiting to run
Build containers / Building container for linux/arm64 (push) Waiting to run
Build containers / Building container for linux/arm/v7 (push) Waiting to run
Build containers / Building container for linux/386 (push) Waiting to run
Build containers / Pushing merged manifest (push) Blocked by required conditions
Some checks are pending
Build Debian packages / bookworm (push) Waiting to run
Build Debian packages / bullseye (push) Waiting to run
Build Debian packages / trixie (push) Waiting to run
Build on FreeBSD / with UPnP (push) Waiting to run
Build on OSX / With USE_UPNP=no (push) Waiting to run
Build on OSX / With USE_UPNP=yes (push) Waiting to run
Build on Windows / clang-x86_64 (push) Waiting to run
Build on Windows / i686 (push) Waiting to run
Build on Windows / ucrt-x86_64 (push) Waiting to run
Build on Windows / x86_64 (push) Waiting to run
Build on Windows / CMake clang-x86_64 (push) Waiting to run
Build on Windows / CMake i686 (push) Waiting to run
Build on Windows / CMake ucrt-x86_64 (push) Waiting to run
Build on Windows / CMake x86_64 (push) Waiting to run
Build on Windows / XP (push) Waiting to run
Build on Ubuntu / Make with USE_UPNP=no (push) Waiting to run
Build on Ubuntu / Make with USE_UPNP=yes (push) Waiting to run
Build on Ubuntu / CMake with -DWITH_UPNP=OFF (push) Waiting to run
Build on Ubuntu / CMake with -DWITH_UPNP=ON (push) Waiting to run
Build containers / Building container for linux/amd64 (push) Waiting to run
Build containers / Building container for linux/arm64 (push) Waiting to run
Build containers / Building container for linux/arm/v7 (push) Waiting to run
Build containers / Building container for linux/386 (push) Waiting to run
Build containers / Pushing merged manifest (push) Blocked by required conditions
feat: custom http themes for webconsole
This commit is contained in:
commit
2a4a162941
3 changed files with 172 additions and 4 deletions
160
contrib/webconsole/hacker.css
Normal file
160
contrib/webconsole/hacker.css
Normal file
|
@ -0,0 +1,160 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2021-2025, The PurpleI2P Project
|
||||||
|
*
|
||||||
|
* This file is part of Purple i2pd project and licensed under BSD3
|
||||||
|
*
|
||||||
|
* See full license text in LICENSE file at top of project tree
|
||||||
|
*
|
||||||
|
******************************************************************
|
||||||
|
*
|
||||||
|
* This is style sheet for webconsole, with @media selectors for adaptive
|
||||||
|
* view on desktop and mobile devices, respecting preferred user's color
|
||||||
|
* scheme used in system/browser.
|
||||||
|
*
|
||||||
|
* Minified copy of that style sheet is bundled inside i2pd sources.
|
||||||
|
*/
|
||||||
|
:root {
|
||||||
|
--main-bg-color: #0a0a0a;
|
||||||
|
--main-text-color: #00ff99;
|
||||||
|
--main-link-color: #ff00ff;
|
||||||
|
--main-link-hover-color: #00ffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font: 100%/1.5em "Courier New", Courier, monospace;
|
||||||
|
margin: 0;
|
||||||
|
padding: 1.5em;
|
||||||
|
background: var(--main-bg-color);
|
||||||
|
color: var(--main-text-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
a, .slide label {
|
||||||
|
text-decoration: none;
|
||||||
|
color: var(--main-link-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover, a.button.selected, .slide label:hover, button[type=submit]:hover {
|
||||||
|
color: var(--main-link-hover-color);
|
||||||
|
background: var(--main-link-color);
|
||||||
|
}
|
||||||
|
.slidecontent {
|
||||||
|
display:none;
|
||||||
|
}
|
||||||
|
#slide-info {
|
||||||
|
display:none;
|
||||||
|
}
|
||||||
|
.enabled {
|
||||||
|
color: green;
|
||||||
|
text-shadow: 2px green;
|
||||||
|
}
|
||||||
|
.disabled {
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
#slide-info:checked ~ .slidecontent {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.header {
|
||||||
|
font-size: 2.5em;
|
||||||
|
text-align: center;
|
||||||
|
margin: 1em 0;
|
||||||
|
color: var(--main-link-color);
|
||||||
|
text-shadow: 0 0 5px #ff00ff, 0 0 10px #ff00ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wrapper {
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 1em;
|
||||||
|
max-width: 64em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu {
|
||||||
|
display: block;
|
||||||
|
float: left;
|
||||||
|
overflow: hidden;
|
||||||
|
padding: 4px;
|
||||||
|
max-width: 12em;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
|
||||||
|
.listitem, .tableitem {
|
||||||
|
display: block;
|
||||||
|
font-family: monospace;
|
||||||
|
font-size: 1.2em;
|
||||||
|
white-space: nowrap;
|
||||||
|
color: #00ff99;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
float: left;
|
||||||
|
font-size: 1em;
|
||||||
|
margin-left: 2em;
|
||||||
|
padding: 4px;
|
||||||
|
max-width: 50em;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tunnel.established {
|
||||||
|
color: #0ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tunnel.expiring {
|
||||||
|
color: #ff0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tunnel.failed {
|
||||||
|
color: #f00;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tunnel.building {
|
||||||
|
color: #888;
|
||||||
|
}
|
||||||
|
|
||||||
|
caption {
|
||||||
|
font-size: 1.5em;
|
||||||
|
text-align: center;
|
||||||
|
color: var(--main-link-color);
|
||||||
|
text-shadow: 0 0 3px #ff00ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
display: table;
|
||||||
|
border-collapse: collapse;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
textarea, input, select {
|
||||||
|
background-color: #111;
|
||||||
|
color: var(--main-text-color);
|
||||||
|
border: 1px solid var(--main-link-color);
|
||||||
|
font-family: monospace;
|
||||||
|
font-size: 14px;
|
||||||
|
padding: 5px;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
button[type=submit], a.button {
|
||||||
|
background-color: transparent;
|
||||||
|
color: var(--main-link-color);
|
||||||
|
border: 1px solid var(--main-link-color);
|
||||||
|
padding: 5px 10px;
|
||||||
|
font-family: monospace;
|
||||||
|
border-radius: 4px;
|
||||||
|
cursor: pointer;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
button[type=submit]:hover, a.button:hover {
|
||||||
|
color: var(--main-link-hover-color);
|
||||||
|
background-color: #222;
|
||||||
|
box-shadow: 0 0 5px var(--main-link-hover-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 980px) {
|
||||||
|
.menu, .content, input, select, textarea, button[type=submit], a.button {
|
||||||
|
width: 90%;
|
||||||
|
margin: 0 auto 10px auto;
|
||||||
|
display: block;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2021-2023, The PurpleI2P Project
|
* Copyright (c) 2021-2025, The PurpleI2P Project
|
||||||
*
|
*
|
||||||
* This file is part of Purple i2pd project and licensed under BSD3
|
* This file is part of Purple i2pd project and licensed under BSD3
|
||||||
*
|
*
|
||||||
|
|
|
@ -42,10 +42,10 @@
|
||||||
|
|
||||||
namespace i2p {
|
namespace i2p {
|
||||||
namespace http {
|
namespace http {
|
||||||
static void LoadExtCSS ()
|
static void LoadExtCSS (std::string fileName = "style.css")
|
||||||
{
|
{
|
||||||
std::stringstream s;
|
std::stringstream s;
|
||||||
std::string styleFile = i2p::fs::DataDirPath ("webconsole/style.css");
|
std::string styleFile = i2p::fs::DataDirPath ("webconsole/"+fileName+".css");
|
||||||
if (i2p::fs::Exists(styleFile)) {
|
if (i2p::fs::Exists(styleFile)) {
|
||||||
std::ifstream f(styleFile, std::ifstream::binary);
|
std::ifstream f(styleFile, std::ifstream::binary);
|
||||||
s << f.rdbuf();
|
s << f.rdbuf();
|
||||||
|
@ -168,7 +168,15 @@ namespace http {
|
||||||
std::string webroot; i2p::config::GetOption("http.webroot", webroot);
|
std::string webroot; i2p::config::GetOption("http.webroot", webroot);
|
||||||
|
|
||||||
std::string theme; i2p::config::GetOption("http.theme", theme);
|
std::string theme; i2p::config::GetOption("http.theme", theme);
|
||||||
if(theme != "light" && theme != "black" ) theme = "light";
|
if(theme != "light" && theme != "black" )
|
||||||
|
{
|
||||||
|
if (theme =="white") {
|
||||||
|
theme = "light";
|
||||||
|
} else {
|
||||||
|
LoadExtCSS(theme);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue