Commit Graph

204 Commits

Author SHA1 Message Date
Louis King 307f3935e0 Add access denied page for unauthenticated admin access
When users try to access /a/ without valid OAuth2Proxy headers (e.g.,
GitHub account not in org), they now see a friendly 403 page instead
of a 500 error. Added authentication checks to all admin routes.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 13:34:03 +00:00
Louis King 6901bafb02 Tidying Tag Editor layout 2026-01-11 13:13:22 +00:00
JingleManSweep e595dc2b27 Merge pull request #63 from ipnet-mesh/claude/admin-node-tags-interface-pHbKm
Add admin interface for managing node tags
2026-01-11 12:51:56 +00:00
Louis King ed2cf09ff3 Improve admin UI and remove unused coordinate tag type
- Replace node type badge with icon in admin tag editor
- Add Edit/Add Tags button on node detail page (when admin enabled and authenticated)
- Remove automatic seed container startup to prevent overwriting user changes
- Remove unused 'coordinate' value type from node tags (only string, number, boolean remain)
2026-01-11 12:49:34 +00:00
Claude bec736a894 Sort node dropdown alphabetically in admin interface
Nodes in the dropdown are now sorted alphabetically by name,
with unnamed nodes appearing at the end.
2026-01-11 12:01:11 +00:00
Claude 1457360703 Use API_ADMIN_KEY for web service to enable admin operations
The web admin interface needs write permissions to create, update,
move, and delete node tags. Changed to use API_ADMIN_KEY with
fallback to API_READ_KEY if admin key is not configured.
2026-01-11 11:55:15 +00:00
Claude d8a0f2abb8 Fix security vulnerabilities and add validation
- Fix XSS vulnerability by using data attributes instead of inline
  onclick handlers in node_tags.html template
- Fix URL injection by using urlencode for all redirect URL parameters
- Add validation to reject moves where source and destination nodes
  are the same (returns 400 Bad Request)
- Add error handling for response.json() calls that may fail
- Add missing test coverage for update endpoint error scenarios
2026-01-11 11:51:57 +00:00
Claude 367f838371 Add admin interface for managing node tags
Implement CRUD operations for NodeTags in the admin interface:

- Add NodeTagMove schema for moving tags between nodes
- Add PUT /nodes/{public_key}/tags/{key}/move API endpoint
- Add web routes at /a/node-tags for tag management
- Create admin templates with node selector and tag management UI
- Support editing, adding, moving, and deleting tags via API calls
- Add comprehensive tests for new functionality

The interface allows selecting a node from a dropdown, viewing its
tags, and performing all CRUD operations including moving a tag
to a different node without having to delete and recreate it.
2026-01-11 01:34:07 +00:00
Louis King 741dd3ce84 Initial admin commit v0.4.1 2026-01-11 00:42:57 +00:00
JingleManSweep 0a12f389df Merge pull request #62 from ipnet-mesh/feature/contact-gps
Store Node GPS Coordinates
v0.4.0
2026-01-09 20:17:40 +00:00
Louis King 8240c2fd57 Initial commit 2026-01-09 20:07:36 +00:00
Louis King 38f7fe291e Add member filtering to map page using member_id tag
Change the map filter from matching nodes by public_key to using the
member_id tag system. Now populates the member dropdown with all members
from the database and filters nodes based on their member_id tag value.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
v0.3.9
2026-01-09 19:16:15 +00:00
JingleManSweep e4087efbf0 Merge pull request #61 from ipnet-mesh/feature/ui-improvements
Remove SNR column from messages and add last seen to members
v0.3.8
2026-01-08 21:25:03 +00:00
Louis King 3051984fb9 Remove SNR column from messages and add last seen to members
- Remove SNR column from messages list (no longer provided by meshcore library)
- Add relative "last seen" time to nodes on members page with tooltip
- Add populateRelativeTimeElements() utility for time elements
2026-01-08 21:23:14 +00:00
JingleManSweep eea2c90ea4 Merge pull request #58 from ipnet-mesh/feature/ui-improvements
Add member/node filters, mobile card views, and pagination macro
2026-01-08 20:15:54 +00:00
Louis King d52c23fc29 Add member/node filters, mobile card views, and pagination macro
- Add member_id filter to nodes and advertisements API endpoints
- Add member and node dropdowns to web list pages
- Implement responsive mobile card view for nodes and advertisements
- Extract pagination into reusable Jinja2 macro (_macros.html)
- Fix Python version in README (3.11+ -> 3.13+)
2026-01-08 20:13:49 +00:00
Louis King a1fb71ce65 Add responsive mobile card view for messages page v0.3.7 2026-01-08 16:50:29 +00:00
JingleManSweep 6a5549081f Merge pull request #56 from ipnet-mesh/fix/receiver-contact-cleanup
Add contact cleanup to interface RECEIVER mode
v0.3.6
2026-01-08 10:28:26 +00:00
Louis King 68e24ee886 Fix 2026-01-08 10:26:31 +00:00
Louis King 61d6b6287e Add contact cleanup to interface RECEIVER mode
- Add CONTACT_CLEANUP_ENABLED and CONTACT_CLEANUP_DAYS settings
- Implement remove_contact and schedule_remove_contact on device classes
- During contact sync, remove stale contacts from companion node
- Stale contacts (not advertised for > N days) not published to MQTT
- Update Python version to 3.13 across project config
- Remove brittle config tests that assumed default env values
2026-01-08 10:22:27 +00:00
Louis King 7007c84577 Updated screenshot 2025-12-08 23:45:22 +00:00
Louis King fd928d9fea Updated diagrams 2025-12-08 23:40:52 +00:00
Louis King 68b6aa85cd Updated diagrams 2025-12-08 23:39:25 +00:00
Louis King abbc07edb3 Updated diagrams 2025-12-08 23:37:13 +00:00
Louis King b42add310e Updated diagrams 2025-12-08 23:36:13 +00:00
Louis King 98a5526e80 Updated diagrams 2025-12-08 23:34:28 +00:00
Louis King db86b3198e Some minor UI improvements, updated env.example, and docs v0.3.5 2025-12-08 23:06:04 +00:00
Louis King cd4f0b91dc Various UI improvements v0.3.4 2025-12-08 22:07:46 +00:00
Louis King a290db0491 Updated chart stats v0.3.3 2025-12-08 19:37:45 +00:00
Louis King 92b0b883e6 More website improvements v0.3.2 2025-12-08 17:07:39 +00:00
Louis King 9e621c0029 Fixed test 2025-12-08 16:42:13 +00:00
Louis King a251f3a09f Added map to node detail page, made title consistent with emoji 2025-12-08 16:37:53 +00:00
Louis King 0fdedfe5ba Tidied Advert/Node search 2025-12-08 16:22:08 +00:00
Louis King 243a3e8521 Added truncate CLI command v0.3.1 2025-12-08 15:54:32 +00:00
JingleManSweep b24a6f0894 Merge pull request #54 from ipnet-mesh/feature/more-filters
Fixed Member model
2025-12-08 15:15:04 +00:00
Louis King 57f51c741c Fixed Member model 2025-12-08 15:13:24 +00:00
Louis King 65b8418af4 Fixed last seen issue 2025-12-08 00:15:25 +00:00
JingleManSweep 89ceee8741 Merge pull request #51 from ipnet-mesh/feat/sync-receiver-contacts-on-advert
Receiver nodes now sync contacts to MQTT on every advert received
v0.3.0
2025-12-07 23:36:11 +00:00
Louis King 64ec1a7135 Receiver nodes now sync contacts to MQTT on every advert received 2025-12-07 23:34:33 +00:00
JingleManSweep 3d632a94b1 Merge pull request #50 from ipnet-mesh/feat/remove-friendly-name
Removed friendly name support and tidied tags
2025-12-07 23:03:39 +00:00
Louis King fbd29ff78e Removed friendly name support and tidied tags 2025-12-07 23:02:19 +00:00
Louis King 86bff07f7d Removed contrib v0.2.1 2025-12-07 22:22:32 +00:00
Louis King 3abd5ce3ea Updates 2025-12-07 22:18:16 +00:00
Louis King 0bf2086f16 Added screenshot 2025-12-07 22:05:34 +00:00
Louis King 40dc6647e9 Updates 2025-12-07 22:02:42 +00:00
Louis King f4e95a254e Fixes 2025-12-07 22:00:46 +00:00
Louis King ba43be9e62 Fixes 2025-12-07 21:58:42 +00:00
JingleManSweep 5b22ab29cf Merge pull request #49 from ipnet-mesh/fix/version-display
Fixed version display
2025-12-07 21:56:26 +00:00
Louis King 278d102064 Fixed version display 2025-12-07 21:55:10 +00:00
JingleManSweep f0cee14bd8 Merge pull request #48 from ipnet-mesh/feature/mqtt-tls
Added support for MQTT TLS
v0.2.0
2025-12-07 21:16:13 +00:00