mirror of
https://github.com/gethomepage/homepage.git
synced 2026-01-08 17:22:11 +08:00
Compare commits
19 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6046f7911e | ||
|
|
a9d3873579 | ||
|
|
d402be2b78 | ||
|
|
2ca46b595b | ||
|
|
db2481cf0e | ||
|
|
865206802c | ||
|
|
668779ede1 | ||
|
|
1ca2407256 | ||
|
|
3240b7a169 | ||
|
|
4aeb3882af | ||
|
|
54ccd7ffb0 | ||
|
|
411e24ef94 | ||
|
|
5fecf9baa7 | ||
|
|
bdcd7835ac | ||
|
|
c023b414c1 | ||
|
|
d3f85bf628 | ||
|
|
ba21ae60d7 | ||
|
|
328875d0f5 | ||
|
|
4f3396cf32 |
@@ -30,12 +30,12 @@
|
|||||||
"placeholder": "Hledat…"
|
"placeholder": "Hledat…"
|
||||||
},
|
},
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": "PROC",
|
"cpu": "CPU",
|
||||||
"total": "Celkem",
|
"total": "Celkem",
|
||||||
"free": "Volné",
|
"free": "Volné",
|
||||||
"used": "Využité",
|
"used": "Využité",
|
||||||
"load": "Zatížení",
|
"load": "Zatížení",
|
||||||
"mem": "PAM",
|
"mem": "RAM",
|
||||||
"max": "Max.",
|
"max": "Max.",
|
||||||
"uptime": "BĚŽÍ",
|
"uptime": "BĚŽÍ",
|
||||||
"months": "měs.",
|
"months": "měs.",
|
||||||
@@ -64,8 +64,8 @@
|
|||||||
"docker": {
|
"docker": {
|
||||||
"rx": "RX",
|
"rx": "RX",
|
||||||
"tx": "TX",
|
"tx": "TX",
|
||||||
"mem": "PAM",
|
"mem": "RAM",
|
||||||
"cpu": "PROC",
|
"cpu": "CPU",
|
||||||
"offline": "Offline",
|
"offline": "Offline",
|
||||||
"error": "Chyba",
|
"error": "Chyba",
|
||||||
"unknown": "Neznámý",
|
"unknown": "Neznámý",
|
||||||
@@ -175,7 +175,7 @@
|
|||||||
"queries": "Dotazy",
|
"queries": "Dotazy",
|
||||||
"blocked": "Blokováno",
|
"blocked": "Blokováno",
|
||||||
"gravity": "Gravity",
|
"gravity": "Gravity",
|
||||||
"blocked_percent": "Blokováno %"
|
"blocked_percent": "Blokováno"
|
||||||
},
|
},
|
||||||
"adguard": {
|
"adguard": {
|
||||||
"queries": "Dotazy",
|
"queries": "Dotazy",
|
||||||
@@ -301,14 +301,14 @@
|
|||||||
"failedLoginsLast24H": "Neúspěšná přihlášení (24h)"
|
"failedLoginsLast24H": "Neúspěšná přihlášení (24h)"
|
||||||
},
|
},
|
||||||
"proxmox": {
|
"proxmox": {
|
||||||
"mem": "PAM",
|
"mem": "RAM",
|
||||||
"cpu": "PROC",
|
"cpu": "CPU",
|
||||||
"lxc": "LXC",
|
"lxc": "LXC",
|
||||||
"vms": "Virtuální Stroje"
|
"vms": "Virtuální Stroje"
|
||||||
},
|
},
|
||||||
"glances": {
|
"glances": {
|
||||||
"cpu": "PROC",
|
"cpu": "CPU",
|
||||||
"mem": "PAM",
|
"mem": "RAM",
|
||||||
"wait": "Prosím počkejte",
|
"wait": "Prosím počkejte",
|
||||||
"temp": "TEPLOTA",
|
"temp": "TEPLOTA",
|
||||||
"uptime": "BĚŽÍ",
|
"uptime": "BĚŽÍ",
|
||||||
@@ -324,8 +324,8 @@
|
|||||||
"url": "URL"
|
"url": "URL"
|
||||||
},
|
},
|
||||||
"homebridge": {
|
"homebridge": {
|
||||||
"update_available": "Dostupná aktualizace",
|
"update_available": "Dostupná",
|
||||||
"up_to_date": "Aktuální",
|
"up_to_date": "Všechno aktuální",
|
||||||
"available_update": "Systém",
|
"available_update": "Systém",
|
||||||
"updates": "Aktualizace",
|
"updates": "Aktualizace",
|
||||||
"child_bridges": "Podřízené můstky",
|
"child_bridges": "Podřízené můstky",
|
||||||
@@ -369,7 +369,7 @@
|
|||||||
"ping": "Odezva"
|
"ping": "Odezva"
|
||||||
},
|
},
|
||||||
"scrutiny": {
|
"scrutiny": {
|
||||||
"passed": "Přijato",
|
"passed": "Úspěšné",
|
||||||
"failed": "Neúspěšné",
|
"failed": "Neúspěšné",
|
||||||
"unknown": "Neznámé"
|
"unknown": "Neznámé"
|
||||||
},
|
},
|
||||||
@@ -461,7 +461,7 @@
|
|||||||
"proxmoxbackupserver": {
|
"proxmoxbackupserver": {
|
||||||
"datastore_usage": "Datové úložiště",
|
"datastore_usage": "Datové úložiště",
|
||||||
"failed_tasks_24h": "Neúspěšné úlohy 24h",
|
"failed_tasks_24h": "Neúspěšné úlohy 24h",
|
||||||
"cpu_usage": "PROC",
|
"cpu_usage": "CPU",
|
||||||
"memory_usage": "Paměť"
|
"memory_usage": "Paměť"
|
||||||
},
|
},
|
||||||
"immich": {
|
"immich": {
|
||||||
@@ -494,7 +494,7 @@
|
|||||||
"people": "Lidé"
|
"people": "Lidé"
|
||||||
},
|
},
|
||||||
"diskstation": {
|
"diskstation": {
|
||||||
"days": "Dni",
|
"days": "dní",
|
||||||
"uptime": "Doba provozu",
|
"uptime": "Doba provozu",
|
||||||
"volumeAvailable": "K dispozici"
|
"volumeAvailable": "K dispozici"
|
||||||
},
|
},
|
||||||
@@ -623,7 +623,7 @@
|
|||||||
},
|
},
|
||||||
"evcc": {
|
"evcc": {
|
||||||
"watt_hour": "Wh",
|
"watt_hour": "Wh",
|
||||||
"pv_power": "Production",
|
"pv_power": "Produkce",
|
||||||
"battery_soc": "Battery",
|
"battery_soc": "Battery",
|
||||||
"grid_power": "Grid",
|
"grid_power": "Grid",
|
||||||
"home_power": "Consumption",
|
"home_power": "Consumption",
|
||||||
|
|||||||
@@ -623,10 +623,10 @@
|
|||||||
},
|
},
|
||||||
"evcc": {
|
"evcc": {
|
||||||
"watt_hour": "Wh",
|
"watt_hour": "Wh",
|
||||||
"pv_power": "Production",
|
"pv_power": "Παραγωγή",
|
||||||
"battery_soc": "Battery",
|
"battery_soc": "Μπαταρία",
|
||||||
"grid_power": "Grid",
|
"grid_power": "Πλέγμα",
|
||||||
"home_power": "Consumption",
|
"home_power": "Κατανάλωση",
|
||||||
"charge_power": "Charger"
|
"charge_power": "Charger"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -623,10 +623,10 @@
|
|||||||
},
|
},
|
||||||
"evcc": {
|
"evcc": {
|
||||||
"pv_power": "Production",
|
"pv_power": "Production",
|
||||||
"battery_soc": "Battery",
|
"battery_soc": "Batterie",
|
||||||
"grid_power": "Grid",
|
"grid_power": "Grille",
|
||||||
"home_power": "Consumption",
|
"home_power": "Consommation",
|
||||||
"charge_power": "Charger",
|
"charge_power": "Chargeur",
|
||||||
"watt_hour": "Wh"
|
"watt_hour": "Wh"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -622,11 +622,11 @@
|
|||||||
"requests_failed": "Neuspešnih zahtev"
|
"requests_failed": "Neuspešnih zahtev"
|
||||||
},
|
},
|
||||||
"evcc": {
|
"evcc": {
|
||||||
"pv_power": "Production",
|
"pv_power": "Proizvodnja",
|
||||||
"battery_soc": "Battery",
|
"battery_soc": "Baterija",
|
||||||
"grid_power": "Grid",
|
"grid_power": "Omrežje",
|
||||||
"home_power": "Consumption",
|
"home_power": "Poraba",
|
||||||
"charge_power": "Charger",
|
"charge_power": "Polnilec",
|
||||||
"watt_hour": "Wh"
|
"watt_hour": "Wh"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -617,16 +617,16 @@
|
|||||||
"wanIP": "WAN IP"
|
"wanIP": "WAN IP"
|
||||||
},
|
},
|
||||||
"caddy": {
|
"caddy": {
|
||||||
"upstreams": "Upstreams",
|
"upstreams": "Потоки",
|
||||||
"requests": "Current requests",
|
"requests": "Поточні запити",
|
||||||
"requests_failed": "Failed requests"
|
"requests_failed": "Невдалі запити"
|
||||||
},
|
},
|
||||||
"evcc": {
|
"evcc": {
|
||||||
"pv_power": "Production",
|
"pv_power": "Виробництво",
|
||||||
"battery_soc": "Battery",
|
"battery_soc": "Батарея",
|
||||||
"grid_power": "Grid",
|
"grid_power": "Сітка",
|
||||||
"home_power": "Consumption",
|
"home_power": "Споживання",
|
||||||
"charge_power": "Charger",
|
"charge_power": "Зарядний пристрій",
|
||||||
"watt_hour": "Wh"
|
"watt_hour": "Вт/год"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,7 +57,14 @@ export default async function genericProxyHandler(req, res, map) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (status >= 400) {
|
if (status >= 400) {
|
||||||
logger.debug("HTTP Error %d calling %s//%s%s%s...", status, url.protocol, url.hostname, url.port, url.pathname);
|
logger.debug(
|
||||||
|
"HTTP Error %d calling %s//%s:%s%s...",
|
||||||
|
status,
|
||||||
|
url.protocol,
|
||||||
|
url.hostname,
|
||||||
|
url.port,
|
||||||
|
url.pathname
|
||||||
|
);
|
||||||
return res.status(status).json({error: {message: "HTTP Error", url: sanitizeErrorURL(url), resultData}});
|
return res.status(status).json({error: {message: "HTTP Error", url: sanitizeErrorURL(url), resultData}});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -81,7 +81,13 @@ export async function httpProxy(url, params = {}) {
|
|||||||
return [status, contentType, data, responseHeaders];
|
return [status, contentType, data, responseHeaders];
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
logger.error("Error calling %s//%s%s%s...", constructedUrl.protocol, constructedUrl.hostname, constructedUrl.port, constructedUrl.pathname);
|
logger.error(
|
||||||
|
"Error calling %s//%s:%s%s...",
|
||||||
|
constructedUrl.protocol,
|
||||||
|
constructedUrl.hostname,
|
||||||
|
constructedUrl.port,
|
||||||
|
constructedUrl.pathname
|
||||||
|
);
|
||||||
logger.error(err);
|
logger.error(err);
|
||||||
return [500, "application/json", { error: {message: err?.message ?? "Unknown error", url, rawError: err} }, null];
|
return [500, "application/json", { error: {message: err?.message ?? "Unknown error", url, rawError: err} }, null];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,8 +57,23 @@ async function apiCall(widget, endpoint, service) {
|
|||||||
return { status, contentType, data: null, responseHeaders };
|
return { status, contentType, data: null, responseHeaders };
|
||||||
}
|
}
|
||||||
|
|
||||||
const dataDecoded = xml2json(data.toString(), { compact: true });
|
let dataDecoded = JSON.parse(xml2json(data.toString(), { compact: true }).toString());
|
||||||
return { status, contentType, data: JSON.parse(dataDecoded.toString()), responseHeaders };
|
|
||||||
|
if (dataDecoded.QDocRoot.authPassed._cdata === '0') {
|
||||||
|
logger.error("QNAP API rejected the request, attempting to obtain new session token");
|
||||||
|
key = await login(widget, service);
|
||||||
|
apiUrl = new URL(formatApiCall(`${endpoint}&sid=${key}`, widget));
|
||||||
|
[status, contentType, data, responseHeaders] = await httpProxy(apiUrl);
|
||||||
|
|
||||||
|
if (status !== 200) {
|
||||||
|
logger.error("Error getting data from QNAP: %s status %d. Data: %s", apiUrl, status, data);
|
||||||
|
return { status, contentType, data: null, responseHeaders };
|
||||||
|
}
|
||||||
|
|
||||||
|
dataDecoded = JSON.parse(xml2json(data.toString(), { compact: true }).toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
return { status, contentType, data: dataDecoded, responseHeaders };
|
||||||
}
|
}
|
||||||
|
|
||||||
export default async function qnapProxyHandler(req, res) {
|
export default async function qnapProxyHandler(req, res) {
|
||||||
|
|||||||
@@ -32,4 +32,27 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
plugins: [tailwindForms, tailwindScrollbars],
|
plugins: [tailwindForms, tailwindScrollbars],
|
||||||
};
|
// always include these in build as classes are dynamically constructed
|
||||||
|
safelist: [
|
||||||
|
'backdrop-blur',
|
||||||
|
'backdrop-blur-sm',
|
||||||
|
'backdrop-blur-md',
|
||||||
|
'backdrop-blur-xl',
|
||||||
|
'backdrop-saturate-0',
|
||||||
|
'backdrop-saturate-50',
|
||||||
|
'backdrop-saturate-100',
|
||||||
|
'backdrop-saturate-150',
|
||||||
|
'backdrop-saturate-200',
|
||||||
|
'backdrop-brightness-0',
|
||||||
|
'backdrop-brightness-50',
|
||||||
|
'backdrop-brightness-75',
|
||||||
|
'backdrop-brightness-90',
|
||||||
|
'backdrop-brightness-95',
|
||||||
|
'backdrop-brightness-100',
|
||||||
|
'backdrop-brightness-105',
|
||||||
|
'backdrop-brightness-110',
|
||||||
|
'backdrop-brightness-125',
|
||||||
|
'backdrop-brightness-150',
|
||||||
|
'backdrop-brightness-200',
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user