Commit graph

89 commits

Author SHA1 Message Date
Peter Goodhall
4fe8ca4093 Handle AMSAT override for OscarWatch
Add a persisted `force_amsat` OscarWatch user option, expose it on the user edit form, and keep the AMSAT upload setting in sync when OscarWatch status uploads are enabled. The controller now defaults unchecked values correctly and shows a notice when OscarWatch disables direct AMSAT uploads or when the override keeps both enabled.
2026-08-04 13:15:01 +01:00
Peter Goodhall
9e1b10169e Add OscarWatch status upload controls
Adds full user-setting support for OscarWatch SAT status uploads: new per-user `status_upload` option initialization, save/load wiring, and session hydration. The user edit page now includes an enable/disable selector plus a “Test Token” action that calls a new `validate_oscarwatch_token` controller endpoint to verify tokens against OscarWatch and return clear JSON status messages. Logbook SAT upload logic is updated so AMSAT and OscarWatch uploads are handled independently based on their respective user toggles.
2026-08-03 14:51:19 +01:00
Peter Goodhall
8e0e28cd84 Add OscarWatch SAT status upload support
This adds optional OscarWatch integration for SAT QSOs: users can store an OscarWatch API token in account settings, and Cloudlog now reports SAT status uploads to OscarWatch alongside AMSAT uploads when enabled. It includes payload building, mode remapping for common satellites/modes, timestamp/grid handling, and error logging for failed submissions. The edit flow was also updated to load/save these options for the correct edited user, and the account label was generalized from “AMSAT Status Upload” to “Satellite Status Upload.”
2026-08-03 14:45:59 +01:00
Peter Goodhall
1f7c130c46 Encrypt stored eQSL passwords at rest
Adds migration 275 to convert eQSL password columns to TEXT and encrypt existing user/mapping passwords with an `enc:` prefix. Updates eQSL controller/model flows to decrypt on read, encrypt on create/update, and keep plaintext backward compatibility for legacy rows. User profile updates now avoid reusing stored ciphertext when no new password is submitted, and mapping updates report a clear error if secure password storage fails.
2026-07-18 22:53:51 +01:00
Peter Goodhall
840f52dc4b Adds improved eqsl functionality 2026-07-18 22:01:33 +01:00
Peter Goodhall
4440582389 Sanitize IDs and migrate SQL to Query Builder
Replace ad-hoc xss_clean calls with explicit casting and stronger type checks for ID/parameter handling, and convert many raw SQL strings to CodeIgniter Query Builder usage. Added normalize_location_ids helpers (Activators_model, Oqrs_model) to safely parse location lists and used where_in/parameter binding/escaping to avoid injection and improve maintainability. Also adjusted session user_id handling, improved LIKE/DATE/TIMEDIFF usage, and tightened several model/controller methods (Labels, Activators, Bands, Contesting, Labels_model, Modes, Oqrs_model, Qsl_model, Setup_model, Sstv_model, User_model) for safer, clearer DB queries and inputs.
2026-06-24 22:15:31 +01:00
Peter Goodhall
5a44ef4b4e Per-install encryption key and session checks
Replace hardcoded encryption key in installer with a %encryption_key% placeholder and generate a unique per-install key during installation (uses random_bytes, falls back to openssl_random_pseudo_bytes or sha1(uniqid)). Inject the generated key into config.php. Also tighten User_Model::validate_session(): return early if no user_id, clear session if user_hash is missing, re-read the user from the database to verify user_type before authenticating, and refresh or clear the session accordingly. These changes improve security by using a unique encryption key per install and by validating session state against persisted user data.
2026-06-06 10:25:45 +01:00
Peter Goodhall
320370e90e Default winkey_websocket to false when unset
Check isset($u->row()->winkey_websocket) before casting to bool and default to false if the property is missing. This prevents PHP notices and ensures a consistent boolean value when the winkey_websocket field is null or not present.
2026-05-21 22:35:46 +01:00
Peter Goodhall
7c0c7515a5 Add experimental Remote Operation feature
Introduce an experimental browser-based remote audio feature: bump migration version to 270 and add a migration to add a remote_operation flag to the users table. Add server-side support to User and QSO controllers/models to read/save the remote_operation option (stored via user_options_model) and expose isRemoteOperationEnabled to views and session updates. Add UI: a Remote Operation card on the QSO page, a modal component for detailed settings, a toggle in the user edit page, and conditional loading of assets/js/remote-operation.js. Add a large client-side implementation (assets/js/remote-operation.js) implementing WebRTC signalling, device selection, level meters and diagnostics. Minor session/session-update and helper changes to keep UI state in sync.
2026-05-16 13:44:09 +01:00
Peter Goodhall
e197a5c1f2 Add toggle for QSL Cards menu item
Introduce a user-controllable option to show/hide the "View QSL Cards" link in the Logbook menu. Controller: initialize menu_show_qsl_cards, load/save the 'show_qsl_cards' menu option and sync it to the session during profile updates. Model: fetch the 'show_qsl_cards' option and expose user_show_qsl_cards in the user data. Views: add a checkbox in the user edit form to control the setting, remove the duplicate SSTV storage card UI, and update the header to robustly read the session value and conditionally render the QSL menu item. Defaults to showing the menu item when the option is unset.
2026-04-08 22:26:05 +01:00
Peter Goodhall
297ff0af42 Add SSTV menu toggle for users
Introduce a user preference to show or hide the "View SSTV Images" menu item. Controller: initialize menu_show_sstv_images, load/save the 'menu:show_sstv_images' option and set session user_show_sstv_images when profile is saved. Model: fetches the menu option and exposes user_show_sstv_images (and has_eqsl_credentials) in the returned user data. Views: add a checkbox to the user edit form to toggle the setting, and conditionally render the eQSL/SSTV menu items in the header based on session flags. This lets users control visibility of the SSTV menu entry from their profile.
2026-04-08 22:18:02 +01:00
Peter Goodhall
6e43503116 Enforce unique callsigns and protect last admin
Add callsign uniqueness checks and prevent demotion of the last admin. Introduces ECALLSIGNEXISTS and ELASTADMIN constants, new model methods (exists_by_callsign, count_admin_users, would_remove_last_admin) and integrates checks into add/update flows to return appropriate error codes. Update User controller to add validation callbacks (check_unique_callsign, check_last_admin_role) and wire errors into multiple user actions. Update signup/edit views to display callsign and usertype validation feedback using Bootstrap invalid-feedback and improve alert layout.
2026-03-26 14:22:02 +00:00
Peter Goodhall
0848a9b4c0 Add open registration and public signup feature
Introduces open registration settings in the options area, allowing administrators to enable or disable public user signup. Adds a registration options page, updates sidebar navigation, and implements a public signup form and controller logic. Also refines user model to ensure correct data types for user fields and updates language strings for registration. The login page now links to signup when open registration is enabled.
2025-12-02 18:10:37 +00:00
Peter Goodhall
88f328581b Added Awards Settings 2025-12-02 13:32:11 +00:00
Peter Goodhall
2236d4360b Ensure user callsign is stored in uppercase
Updated User_model to store user_callsign in uppercase using strtoupper when creating or updating users. Also added a style to the edit form input to visually enforce uppercase entry for callsign.
2025-11-24 14:22:34 +00:00
Peter Goodhall
b287af642b Add multi-user logbook sharing and permissions
Introduces logbook sharing with read, write, and admin permission levels via a new station_logbooks_permissions table and related migration. Updates controllers, models, and views to support managing collaborators, restricts sensitive actions to owners/admins, and adds UI for sharing management. Also adds user lookup by callsign and improves logbook/station location access logic.
2025-11-19 15:37:34 +00:00
Peter Goodhall
e6ecfa4f1b Require Clublog username to be a valid email address
Enforces that Clublog usernames are valid email addresses throughout the application, reflecting Clublog's policy change to no longer accept callsigns as usernames. Updates validation in controllers, models, and views, adds a migration to clear non-email usernames, and updates language files in multiple languages to clarify the requirement.
2025-10-13 13:40:56 +01:00
Peter Goodhall
a783f7d8a4 Security bug fixes 2025-07-15 14:31:53 +01:00
Peter Goodhall
4d10db1fc0 Fixed winkey state errors 2025-07-15 14:23:53 +01:00
Peter Goodhall
978bdbf76b Wiring for Cloudlog Aurora Winkey Websocket Support 2025-05-28 14:24:03 +01:00
Peter Goodhall
7156b185e1 add option to turn on websockets for winkey 2025-05-28 13:38:25 +01:00
Peter Goodhall
2b110b6d63 Update User_model.php 2024-10-03 14:48:44 +01:00
Peter Goodhall
b36c8a4cd1 [Callbooks] Login information stored in user account
this is a breaking change you need to update your callbook preferences in your account under third party services
2024-10-03 14:46:11 +01:00
Peter Goodhall
3fe5159489 fixes user_eqsl_qth_nickname error when creating a new user 2024-04-10 14:51:10 +01:00
phl0
9a79cbcfcd
Add option to configure private feed key and show only workable passe 2024-03-09 08:49:12 +01:00
HB9HIL
1697e9863f set last login timestamp when login 2024-01-01 02:08:12 +01:00
phl0
e4138dc22d
Also check qrz API key for empty string 2023-12-14 16:08:17 +01:00
int2001
78706bec16
Check for null 2023-12-13 12:10:20 +00:00
int2001
b2e9faf675
Return qrzApiKey-value even if empty 2023-12-13 12:02:20 +00:00
int2001
f56acc7765
Included QRZ.com to choser at maps and at default-QSL-Settings 2023-12-08 07:17:01 +00:00
int2001
f5313eca63
Added QRZ-Support to Cloudlog 2023-12-07 16:30:40 +00:00
HB9HIL
e417c222dd new function get_user_email_by_id 2023-11-21 12:12:21 +01:00
HB9HIL
a2c4a8e743 added user_quicklog_enter 2023-11-05 12:29:59 +01:00
HB9HIL
e6238dbf66 fixed typo 2023-11-04 18:36:08 +01:00
HB9HIL
802c4ab2e6 added quicklog to User Model 2023-11-04 18:31:59 +01:00
phl0
973d76eeb5
Add option to log QSO end times separately
Squashed commit of the following:

commit 595f620d9e
Author: phl0 <github@florian-wolters.de>
Date:   Wed Nov 1 13:58:05 2023 +0100

    Update languages

commit f670a06059
Author: phl0 <github@florian-wolters.de>
Date:   Wed Nov 1 13:55:04 2023 +0100

    Added user option for enabling QSO end time logging

commit 36d9a95ebb
Merge: 54d5bb53 352931b1
Author: phl0 <github@florian-wolters.de>
Date:   Wed Nov 1 12:18:39 2023 +0100

    Merge branch 'dev' into qsoTime

commit 54d5bb535b
Author: phl0 <github@florian-wolters.de>
Date:   Fri Oct 27 10:14:58 2023 +0200

    start/end times for other languages

commit c5f6bb0cab
Author: phl0 <github@florian-wolters.de>
Date:   Fri Oct 27 10:14:42 2023 +0200

    Hide end time if only differs in seconds as we only display minutes
    anyway ...

commit d519d88604
Author: phl0 <github@florian-wolters.de>
Date:   Fri Oct 27 10:14:29 2023 +0200

    use start as end time if end is not set separately

commit f2588ad132
Author: phl0 <github@florian-wolters.de>
Date:   Fri Oct 27 10:13:43 2023 +0200

    reset timers on form reset

commit 2b7ee4e48c
Author: phl0 <github@florian-wolters.de>
Date:   Fri Oct 27 10:13:27 2023 +0200

    Strip seconds from session time variable

commit e0c35aa0cf
Author: phl0 <github@florian-wolters.de>
Date:   Fri Oct 27 10:13:11 2023 +0200

    Adapt contest logging

commit 5368ef25f3
Author: phl0 <github@florian-wolters.de>
Date:   Fri Oct 27 10:12:50 2023 +0200

    Make date field a little smaller

commit ad2d7e756c
Author: phl0 <github@florian-wolters.de>
Date:   Fri Oct 27 10:12:30 2023 +0200

    Add button to reset start time

commit f56e031946
Author: phl0 <github@florian-wolters.de>
Date:   Fri Oct 27 10:11:09 2023 +0200

    Copy start to end time on focus out

commit b741d0428d
Author: phl0 <github@florian-wolters.de>
Date:   Fri Oct 27 10:10:45 2023 +0200

    Only min and sec for post QSO template

commit 77314edd31
Author: phl0 <github@florian-wolters.de>
Date:   Fri Oct 27 10:08:49 2023 +0200

    Basics for QSO end time logging
2023-11-01 14:24:13 +01:00
phl0
886829ba42
Rename default band and confirmation values in DB 2023-10-16 22:39:33 +02:00
int2001
62b30bfe3b
Let Op-Name survive page-changes 2023-08-21 08:06:07 +00:00
int2001
3b7dbffe24
Added Operatorcallsign to add QSO 2023-08-20 14:36:14 +00:00
Peter Goodhall
e6004d0c12 [Account][Winkey] Allows users to enable and disable winkey via their account settings 2023-08-03 13:59:02 +01:00
Andreas
c57c636068 Changed paper type templates to have user_id -1 2023-08-02 19:14:18 +02:00
Andreas
3593987983 Merge branch 'dev' into labels_paper_types 2023-08-02 18:23:58 +02:00
int2001
d0f919f26a
Added Default Papers when adding new user 2023-08-02 11:05:44 +00:00
int2001
c8ea174030
Implemented Userlanguages with a lot of help from @AndreasK79 2023-08-02 06:34:12 +00:00
phl0
08c7e65271
Make band and QSL type user select- and storable 2023-07-07 16:04:19 +02:00
int2001
613a89b8b4 Adds Mastodon-integration as mentioned in issue #1802 2023-07-06 08:17:20 +00:00
phl0
846dec0f61
Add POTA lookup function 2023-05-01 21:14:30 +02:00
Andreas
0142209022 [OQRS] Now added option to search in all station locations with active OQRS 2023-04-25 14:00:30 +02:00
phl0
995e89e444
Option tu upload SAT status info to amsat.org/status 2023-01-27 17:24:48 +01:00
Andreas Kristiansen
9917b14199
Merge branch 'dev' into online_qsl_request 2022-12-14 12:37:22 +01:00