Commit Graph

218 Commits

Author SHA1 Message Date
88f3c1f964 refactor: extract inline CSS/JS from views into separate asset files (20+ files)
Phase A — HTML removed from PHP files:
- RateLimitMiddleware.php: heredoc moved to views/errors/429.php
- public/index.php: inline HTML replaced with View::error()
- AuthMiddleware.php: <script> redirect replaced with <meta refresh>

Phase B — Inline CSS/JS extracted from views:
- CSS: landing.css (459 lines), legal.css (shared by terms+privacy)
- JS: 17 new files extracted from ~20 view files
  - main.js (layout sidebar + notifications)
  - dashboard-chart.js, server-show.js, server-services.js
  - nginx-manager.js, database-manager.js
  - terminal.js, team-show.js, team-index.js
  - server-list.js, server-permissions.js (shared by edit+create)
  - server-ssl.js, server-processes.js, system-users.js
  - admin-users.js, audit-log.js, admin-notifications.js, admin-security.js
  - notifications.js

Total: -3264 lines from views, +288 lines in new assets
2026-06-14 08:04:01 -04:00
142fe304c9 feat: redesign 429 Too Many Requests page with live countdown timer 2026-06-14 07:44:08 -04:00
a5eb101d98 security: fix auth bypass, XSS, IDOR, command injection, session hardening, rate limiting
- Phase 1: Require authentication for API register endpoint; restrict role creation
- Phase 2: Add $fillable whitelist to Server model to prevent mass assignment
- Phase 3: Fix XSS via escapeHtml in sidebar, JSON_HEX_TAG in script embeds
- Phase 4: Add canView() checks to TerminalController history/clearHistory
- Phase 5: escapeshellarg() on certbot params, sanitize service names, regex-based command blocklist, suppress exception messages
- Phase 6: SESSION_SECURE=true, SameSite=Strict, logout via POST+CSRF, chmod 640 .env
- Phase 7: DB-based rate limiting replacing session-based, applied to API login/register
2026-06-14 07:32:18 -04:00
c16236314e fix: hide scroll-indicator on mobile to prevent overlap with hero terminal 2026-06-14 07:16:04 -04:00
fee7f3b24a fix: widen policy page containers to 85% width 2026-06-13 21:42:16 -04:00
9ef4eb2856 Merge pull request 'Privacy Policy, Terms & animated landing page' (#83) from feat/privacy-terms-landing into master
Reviewed-on: #83
Reviewed-by: rafaga21 <rafaelminaya20@hotmail.com>
2026-06-13 21:34:46 -04:00
b05c1120f0 feat: add privacy policy, terms, and animated landing page 2026-06-13 21:33:42 -04:00
6f0c750703 Merge pull request 'fix: remove redundant NotificationPoller to prevent duplicate notifications' (#82) from feat/version-update-notification into master
Reviewed-on: #82
2026-06-13 17:51:27 -04:00
3639f16757 bump to 1.8.5 (versionCode 17) 2026-06-13 17:51:03 -04:00
52947f7b21 fix: filter FCM sends by notifications_enabled preference 2026-06-13 17:48:53 -04:00
19fc37c1f3 fix: remove redundant NotificationPoller to prevent duplicate notifications 2026-06-13 17:44:37 -04:00
ba3582c77f Merge pull request 'fix: allow toggling notifications without password' (#81) from feat/version-update-notification into master
Reviewed-on: #81
2026-06-13 17:38:55 -04:00
60e0719eda fix: allow toggling notifications without password 2026-06-13 17:37:27 -04:00
2864b33dcb Merge pull request 'feat: user notification preference toggle (web + Android)' (#80) from feat/version-update-notification into master
Reviewed-on: #80
2026-06-13 17:33:53 -04:00
411c16a77d remove plan file 2026-06-13 17:31:46 -04:00
a499a1ed8b bump to 1.8.4 (versionCode 16) and rebuild APK 2026-06-13 17:31:32 -04:00
ec38afe3e9 feat: add notifications_enabled toggle for users (web + Android) 2026-06-13 17:31:07 -04:00
81f61ff96e Merge pull request 'feat: notify all users on app version update' (#79) from feat/version-update-notification into master
Reviewed-on: #79
Reviewed-by: rafaga21 <rafaelminaya20@hotmail.com>
2026-06-13 17:13:36 -04:00
4fa57e8688 feat: send notification to all users when app version is updated 2026-06-13 17:12:54 -04:00
5691d8b862 Merge pull request 'feat/server-thresholds' (#78) from feat/server-thresholds into master
Reviewed-on: #78
2026-06-13 17:05:25 -04:00
a2cbb28851 chore: ignore all dotfiles/dotdirs via .gitignore 2026-06-13 17:05:00 -04:00
585d3e2e76 fix: use created_at_timestamp for Android notification dates; bump to 1.8.3 2026-06-13 17:02:22 -04:00
06d31122b8 Merge pull request 'fix: use server-side time_ago for notification timestamps' (#77) from feat/server-thresholds into master
Reviewed-on: #77
2026-06-13 16:57:20 -04:00
045f33bbc1 fix: use server-side time_ago for notification timestamps 2026-06-13 16:56:43 -04:00
020990c603 Merge pull request 'feat: notification bell with modal in top bar' (#76) from feat/server-thresholds into master
Reviewed-on: #76
Reviewed-by: rafaga21 <rafaelminaya20@hotmail.com>
2026-06-13 16:52:44 -04:00
edd9933430 fix: move script block outside foreach to prevent const redeclaration error 2026-06-13 16:51:44 -04:00
19bae94f4c remove plan file from tracking 2026-06-13 16:48:11 -04:00
e1b6650454 feat: notification dropdown panel and /notifications page 2026-06-13 16:48:05 -04:00
25dfb517ee feat: notification bell with modal showing 10 latest notifications 2026-06-13 16:41:56 -04:00
7ed584d5d2 Merge pull request 'feat: threshold modal with range sliders and card-based layout' (#75) from feat/server-thresholds into master
Reviewed-on: #75
Reviewed-by: rafaga21 <rafaelminaya20@hotmail.com>
2026-06-13 16:33:41 -04:00
e92f51e36b replace number inputs with range sliders in threshold modal 2026-06-13 16:32:53 -04:00
dc34f29169 improve threshold modal design with card-based layout and color-coded inputs 2026-06-13 16:32:53 -04:00
eda923dc44 Merge pull request 'send FCM push for threshold breach notifications' (#74) from feat/fcm-apk-v1.8.2 into master
Reviewed-on: #74
2026-06-13 16:24:20 -04:00
ebb7cba53d send FCM push for threshold breach notifications 2026-06-13 16:23:20 -04:00
22a6eb8d29 Merge pull request 'feat: per-server notification thresholds with alert on agent metrics push' (#73) from feat/fcm-apk-v1.8.2 into master
Reviewed-on: #73
2026-06-13 16:15:54 -04:00
c63c5ffcfd feat: per-server notification thresholds with alert on agent metrics push 2026-06-13 16:12:36 -04:00
a932def7c4 Merge pull request 'chore: drop unused tables (scheduled_tasks, api_tokens, rate_limits, sessions)' (#72) from feat/fcm-apk-v1.8.2 into master
Reviewed-on: #72
2026-06-13 15:59:28 -04:00
b6c7275437 docs: add PR creation workflow to AGENTS.md 2026-06-13 15:59:05 -04:00
0a3ae63621 chore: add config/firebase-service-account.json to .gitignore 2026-06-13 15:56:52 -04:00
cf9a8402cf remove firebase service account from tracking (local only) 2026-06-13 15:56:01 -04:00
d386df637d remove firebase-setup.sh and servermanager-agent.service from install/ 2026-06-13 15:55:56 -04:00
756a6d8d14 move install scripts to bin/, remove unused install directory 2026-06-13 15:55:49 -04:00
b19c3c7a3a remove standalone agent.sh — replaced by installer-generated inline agent 2026-06-13 15:52:20 -04:00
6c6ad957bc remove monitor.php — SSH pull monitoring replaced by push-based agent 2026-06-13 15:49:35 -04:00
a9f21810b1 chore: drop unused tables (scheduled_tasks, api_tokens, rate_limits, sessions) 2026-06-13 15:42:59 -04:00
77af8dd6b0 Merge pull request 'fix: remove invalid priority field from AndroidNotification in FCM v1 payload' (#71) from feat/fcm-apk-v1.8.2 into master
Reviewed-on: #71
2026-06-13 14:42:47 -04:00
d231af1c91 fix: remove invalid priority field from AndroidNotification in FCM v1 payload 2026-06-13 14:41:56 -04:00
3a677ea334 Merge pull request 'bump to 1.8.2 with FCM registration fix and APK rebuild' (#70) from feat/fcm-apk-v1.8.2 into master
Reviewed-on: #70
Reviewed-by: rafaga21 <rafaelminaya20@hotmail.com>
2026-06-13 14:32:25 -04:00
d37edd7d54 bump to 1.8.2 (versionCode 14) and rebuild APK with FCM registration fix 2026-06-13 14:31:35 -04:00
d977ec9a47 Merge pull request 'remove Firebase service account file from repo (keep local only)' (#69) from feat/fcm-config into master
Reviewed-on: #69
2026-06-13 14:27:14 -04:00