Skip to content

Commit 0fef86f

Browse files
authored
Merge pull request #46 from ZeroHost-Code/beta
v1.2.6
2 parents f890273 + a757a53 commit 0fef86f

6 files changed

Lines changed: 30 additions & 203 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "zerohost-dashboard",
3-
"version": "1.2.5",
3+
"version": "1.2.6",
44
"private": true,
55
"type": "module",
66
"scripts": {

public/index.html

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,14 @@
1515
</head>
1616
<body>
1717

18-
<div id="app"></div>
18+
<div id="app">
19+
<div class="auth-page" style="display:flex;align-items:center;justify-content:center;min-height:100vh;padding:24px;">
20+
<div class="auth-card" style="text-align:center;padding:48px;">
21+
<span class="spinner" style="width:32px;height:32px;border-width:3px;margin:0 auto 16px;display:block;"></span>
22+
<p style="color:var(--text-secondary);">Loading...</p>
23+
</div>
24+
</div>
25+
</div>
1926

2027
<script src="/js/app.js?v=6"></script>
2128
<script src="/js/admin.js?v=6"></script>

public/js/admin.js

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -306,29 +306,33 @@ async function handleAdminLogin(e) {
306306
btn.innerHTML = '<span class="spinner"></span> Signing in...';
307307

308308
try {
309-
const capWidget = $a('#admin-login-form cap-widget');
310-
const capToken = capWidget?.token || '';
311-
const data = await adminApi('/login', {
312-
method: 'POST',
313-
body: JSON.stringify({
314-
email: $a('#admin-email').value,
315-
password: $a('#admin-password').value,
316-
capToken,
317-
}),
318-
});
309+
const capWidget = $a('#admin-login-form cap-widget');
310+
const capToken = capWidget?.token || '';
311+
const data = await adminApi('/login', {
312+
method: 'POST',
313+
body: JSON.stringify({
314+
email: $a('#admin-email').value,
315+
password: $a('#admin-password').value,
316+
capToken,
317+
}),
318+
});
319319
adminState.token = data.token;
320320
adminState.user = data.user;
321321
localStorage.setItem(ADMIN_STORAGE_KEY, data.token);
322322
history.replaceState({ adminPage: 'dashboard' }, '', '/admin/dashboard');
323323
renderAdminLayout();
324324
} catch (err) {
325-
if (errorEl) {
326-
errorEl.textContent = err.message;
327-
errorEl.classList.add('show');
325+
const currentErrorEl = $a('#admin-login-form .auth-error');
326+
if (currentErrorEl) {
327+
currentErrorEl.textContent = err.message;
328+
currentErrorEl.classList.add('show');
328329
}
329330
} finally {
330-
btn.disabled = false;
331-
btn.innerHTML = 'Sign In';
331+
const currentBtn = $a('#admin-login-btn');
332+
if (currentBtn) {
333+
currentBtn.disabled = false;
334+
currentBtn.innerHTML = 'Sign In';
335+
}
332336
}
333337
}
334338

public/js/app.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1654,7 +1654,7 @@ async function renderDashboard() {
16541654
<div style="padding:8px 12px 0;display:flex;gap:16px;justify-content:center;flex-wrap:wrap">
16551655
16561656
</div>
1657-
<div style="padding:4px 0 8px;text-align:center;font-size:0.7rem;color:var(--text-muted);letter-spacing:0.05em">v1.2.5</div>
1657+
<div style="padding:4px 0 8px;text-align:center;font-size:0.7rem;color:var(--text-muted);letter-spacing:0.05em">v1.2.6</div>
16581658
</div>
16591659
<div class="sidebar-resizer" id="sidebar-resizer"></div>
16601660
</aside>

server.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ app.use((err, req, res, next) => {
178178
});
179179
app.use(cookieParser(process.env.COOKIE_SECRET));
180180

181-
const csrfExemptPaths = ['/api/auth/login', '/api/auth/register', '/api/auth/passkey/options', '/api/auth/passkey/verify', '/api/auth/passkeys/login/begin', '/api/auth/passkeys/login/complete', '/api/auth/passkeys/register/begin', '/api/auth/passkeys/register/complete', '/api/auth/totp/verify', '/api/auth/totp/recovery'];
181+
const csrfExemptPaths = ['/api/auth/login', '/api/auth/register', '/api/auth/passkey/options', '/api/auth/passkey/verify', '/api/auth/passkeys/login/begin', '/api/auth/passkeys/login/complete', '/api/auth/passkeys/register/begin', '/api/auth/passkeys/register/complete', '/api/auth/totp/verify', '/api/auth/totp/recovery', '/api/admin/login'];
182182
app.use((req, res, next) => {
183183
if (!req.path.startsWith('/api/')) return next();
184184
if (csrfExemptPaths.includes(req.path)) return next();

services/security.js

Lines changed: 0 additions & 184 deletions
Original file line numberDiff line numberDiff line change
@@ -379,12 +379,6 @@ export function isKnownBotIp(ip) {
379379
if (!clean || !isIP(clean)) return false;
380380
const parts = clean.split('.').map(Number);
381381
if (parts.length !== 4) return false;
382-
if (parts[0] === 3) return true;
383-
if (parts[0] === 15) return true;
384-
if (parts[0] === 23) return true;
385-
if (parts[0] === 34) return true;
386-
if (parts[0] === 35) return true;
387-
if (parts[0] === 44) return true;
388382
if (parts[0] === 45 && parts[1] === 8) return true;
389383
if (parts[0] === 45 && parts[1] === 14) return true;
390384
if (parts[0] === 45 && parts[1] === 15) return true;
@@ -406,184 +400,6 @@ export function isKnownBotIp(ip) {
406400
if (parts[0] === 45 && parts[1] === 152) return true;
407401
if (parts[0] === 45 && parts[1] === 153) return true;
408402
if (parts[0] === 45 && parts[1] === 155) return true;
409-
if (parts[0] === 47) return true;
410-
if (parts[0] === 51) return true;
411-
if (parts[0] === 54) return true;
412-
if (parts[0] === 63 && parts[1] === 32) return true;
413-
if (parts[0] === 63 && parts[1] === 35) return true;
414-
if (parts[0] === 64 && parts[1] === 62) return true;
415-
if (parts[0] === 64 && parts[1] === 90) return true;
416-
if (parts[0] === 65) return true;
417-
if (parts[0] === 66) return true;
418-
if (parts[0] === 67) return true;
419-
if (parts[0] === 68) return true;
420-
if (parts[0] === 69) return true;
421-
if (parts[0] === 70) return true;
422-
if (parts[0] === 71) return true;
423-
if (parts[0] === 72) return true;
424-
if (parts[0] === 73) return true;
425-
if (parts[0] === 74) return true;
426-
if (parts[0] === 75) return true;
427-
if (parts[0] === 76) return true;
428-
if (parts[0] === 77) return true;
429-
if (parts[0] === 78) return true;
430-
if (parts[0] === 79) return true;
431-
if (parts[0] === 80) return true;
432-
if (parts[0] === 81) return true;
433-
if (parts[0] === 82) return true;
434-
if (parts[0] === 83) return true;
435-
if (parts[0] === 84) return true;
436-
if (parts[0] === 85) return true;
437-
if (parts[0] === 86) return true;
438-
if (parts[0] === 87) return true;
439-
if (parts[0] === 88) return true;
440-
if (parts[0] === 89) return true;
441-
if (parts[0] === 90) return true;
442-
if (parts[0] === 91) return true;
443-
if (parts[0] === 92) return true;
444-
if (parts[0] === 93) return true;
445-
if (parts[0] === 94) return true;
446-
if (parts[0] === 95) return true;
447-
if (parts[0] === 96) return true;
448-
if (parts[0] === 97) return true;
449-
if (parts[0] === 98) return true;
450-
if (parts[0] === 99) return true;
451-
if (parts[0] === 100) return true;
452-
if (parts[0] === 101) return true;
453-
if (parts[0] === 102) return true;
454-
if (parts[0] === 103) return true;
455-
if (parts[0] === 104) return true;
456-
if (parts[0] === 104 && parts[1] === 16) return true;
457-
if (parts[0] === 104 && parts[1] === 17) return true;
458-
if (parts[0] === 104 && parts[1] === 18) return true;
459-
if (parts[0] === 104 && parts[1] === 19) return true;
460-
if (parts[0] === 104 && parts[1] === 20) return true;
461-
if (parts[0] === 104 && parts[1] === 21) return true;
462-
if (parts[0] === 104 && parts[1] === 22) return true;
463-
if (parts[0] === 104 && parts[1] === 23) return true;
464-
if (parts[0] === 104 && parts[1] === 24) return true;
465-
if (parts[0] === 104 && parts[1] === 25) return true;
466-
if (parts[0] === 104 && parts[1] === 26) return true;
467-
if (parts[0] === 104 && parts[1] === 27) return true;
468-
if (parts[0] === 104 && parts[1] === 28) return true;
469-
if (parts[0] === 105) return true;
470-
if (parts[0] === 106) return true;
471-
if (parts[0] === 107) return true;
472-
if (parts[0] === 108) return true;
473-
if (parts[0] === 109) return true;
474-
if (parts[0] === 110) return true;
475-
if (parts[0] === 111) return true;
476-
if (parts[0] === 112) return true;
477-
if (parts[0] === 113) return true;
478-
if (parts[0] === 114) return true;
479-
if (parts[0] === 115) return true;
480-
if (parts[0] === 116) return true;
481-
if (parts[0] === 117) return true;
482-
if (parts[0] === 118) return true;
483-
if (parts[0] === 119) return true;
484-
if (parts[0] === 120) return true;
485-
if (parts[0] === 121) return true;
486-
if (parts[0] === 122) return true;
487-
if (parts[0] === 123) return true;
488-
if (parts[0] === 124) return true;
489-
if (parts[0] === 125) return true;
490-
if (parts[0] === 126) return true;
491-
if (parts[0] === 128) return true;
492-
if (parts[0] === 129) return true;
493-
if (parts[0] === 130) return true;
494-
if (parts[0] === 131) return true;
495-
if (parts[0] === 132) return true;
496-
if (parts[0] === 133) return true;
497-
if (parts[0] === 134) return true;
498-
if (parts[0] === 135) return true;
499-
if (parts[0] === 136) return true;
500-
if (parts[0] === 137) return true;
501-
if (parts[0] === 138) return true;
502-
if (parts[0] === 139) return true;
503-
if (parts[0] === 140) return true;
504-
if (parts[0] === 141) return true;
505-
if (parts[0] === 142) return true;
506-
if (parts[0] === 143) return true;
507-
if (parts[0] === 144) return true;
508-
if (parts[0] === 145) return true;
509-
if (parts[0] === 146) return true;
510-
if (parts[0] === 147) return true;
511-
if (parts[0] === 148) return true;
512-
if (parts[0] === 149) return true;
513-
if (parts[0] === 150) return true;
514-
if (parts[0] === 151) return true;
515-
if (parts[0] === 152) return true;
516-
if (parts[0] === 153) return true;
517-
if (parts[0] === 154) return true;
518-
if (parts[0] === 155) return true;
519-
if (parts[0] === 156) return true;
520-
if (parts[0] === 157) return true;
521-
if (parts[0] === 158) return true;
522-
if (parts[0] === 159) return true;
523-
if (parts[0] === 160) return true;
524-
if (parts[0] === 161) return true;
525-
if (parts[0] === 162) return true;
526-
if (parts[0] === 163) return true;
527-
if (parts[0] === 164) return true;
528-
if (parts[0] === 165) return true;
529-
if (parts[0] === 166) return true;
530-
if (parts[0] === 167) return true;
531-
if (parts[0] === 168) return true;
532-
if (parts[0] === 169) return true;
533-
if (parts[0] === 170) return true;
534-
if (parts[0] === 171) return true;
535-
if (parts[0] === 172) return true;
536-
if (parts[0] === 173) return true;
537-
if (parts[0] === 174) return true;
538-
if (parts[0] === 175) return true;
539-
if (parts[0] === 176) return true;
540-
if (parts[0] === 177) return true;
541-
if (parts[0] === 178) return true;
542-
if (parts[0] === 179) return true;
543-
if (parts[0] === 180) return true;
544-
if (parts[0] === 181) return true;
545-
if (parts[0] === 182) return true;
546-
if (parts[0] === 183) return true;
547-
if (parts[0] === 184) return true;
548-
if (parts[0] === 185) return true;
549-
if (parts[0] === 186) return true;
550-
if (parts[0] === 187) return true;
551-
if (parts[0] === 188) return true;
552-
if (parts[0] === 189) return true;
553-
if (parts[0] === 190) return true;
554-
if (parts[0] === 191) return true;
555-
if (parts[0] === 192 && parts[1] === 0) return true;
556-
if (parts[0] === 192 && parts[1] === 3) return true;
557-
if (parts[0] === 193) return true;
558-
if (parts[0] === 194) return true;
559-
if (parts[0] === 195) return true;
560-
if (parts[0] === 196) return true;
561-
if (parts[0] === 197) return true;
562-
if (parts[0] === 198) return true;
563-
if (parts[0] === 199) return true;
564-
if (parts[0] === 200) return true;
565-
if (parts[0] === 201) return true;
566-
if (parts[0] === 202) return true;
567-
if (parts[0] === 203) return true;
568-
if (parts[0] === 204) return true;
569-
if (parts[0] === 205) return true;
570-
if (parts[0] === 206) return true;
571-
if (parts[0] === 207) return true;
572-
if (parts[0] === 208) return true;
573-
if (parts[0] === 209) return true;
574-
if (parts[0] === 210) return true;
575-
if (parts[0] === 211) return true;
576-
if (parts[0] === 212) return true;
577-
if (parts[0] === 213) return true;
578-
if (parts[0] === 214) return true;
579-
if (parts[0] === 215) return true;
580-
if (parts[0] === 216) return true;
581-
if (parts[0] === 217) return true;
582-
if (parts[0] === 218) return true;
583-
if (parts[0] === 219) return true;
584-
if (parts[0] === 220) return true;
585-
if (parts[0] === 221) return true;
586-
if (parts[0] === 222) return true;
587403
return false;
588404
}
589405

0 commit comments

Comments
 (0)