Firefly QSL is a simple QSL manager designed for amateur radio clubs and individuals who don't need the complex QSL management system of major contesters and DXpeditions. The primary design consideration is a simple, effective way for hams of all computer skill levels to be able to upload ADIF logs and to provide a quick and easy way for other hams to download their QSLs. Designed originally to support the Silvercreek Amateur Radio Association's 40th Anniversary Special Event.
Smooth QSL has been rebranded as Firefly QSL to match the Firefly Field Day Logger application.
The following are the major changes in version 3:
- Full administrative login structure and session manager
- Support for multiple source callsigns to be loaded
- All libraries updated to the latest versions
- Refactoring the UI to be fully responsive
- Dark mode
- Configuration file has changed from
qslconf.phptoconfig.php
- A websever running PHP 8.2 or better with the PDO, pdo_mysql, and imagick libraries available.
- A database running MariaDB 11+
- ImageMagick 6.x or better
- Basic ability to use an xxMP stack (e.g. LAMP, WAMP, etc.)
- Download the latest stable release.
- Edit
config.phpand change the configuration parameters as necessary. - Copy or upload all of the files to your webserver directory or hosting account.
- Ensure the
cardssubdirectory is writable by the webserver. If this is being installed in a hosting provider than this is likely the default. - Create the MySQL database as needed and load the
qsl.sqlinto your MySQL server - Check the install with
check_install.php.
-
Backup your existing data and database
-
Download the latest stable release.
-
Edit the new
config.phpand merge the configuration from the oldqsoconfig.phpinto the new file. The only material change is$qsl_load_keyhas been replaced with$club_password. -
It is recommended to delete the existing website files and upload fresh ones from the latest release rather than try to hand-deleve the changes.
-
Ensure the
cardssubdirectory is writable by the webserver. If this is being installed in a hosting provider than this is likely the default. -
Source the contents of
upgrade_2_to_3.sqlinto the database. This makes changes to the qsos table and deletes other now-unused tables. -
Check the install with
check_install.php.
The application is designed to have simple, user-friendly URLs. For example,
putting the base files in a subdirectory /qsl resultes in the URL
https://example.com/qsl for the main application. All references to
includes, configs, images, etc. are all relative paths so the application
should be installable virtually anywhere.
The qslmaint.php script is run randomly on an index.php page with a 1 in 4
randomized chance by default of deleting old generated cards.
For those uploading ADIFs, all the ham needs is the
$club_callsign and $club_password that was set in
config.php. Firefly QSL operates on a semi-trust basis in that
hams are relied upon to use their legitimate call signs as is
expected throughout amateur radio. Setting a strong password is the
only protection against mischef such as loading bogus QSOs or
malicious actors attempting to DoS the database by filling it up
or overworking the system.
The load process uses the following workflow:
- Navigate to
https://example.com/qsl/load - Enter the callsign of the QSLs. This does not have to match the club callsigh. For example, a 1X1 or other call can be loaded. Select the ADIF file, set the location from which the contacts were made, and upload the ADIF file.
- Review the ADIF checkload on the next screen. Click Commit
- A "receipt" page will appear.
The QSL retrieval process is straight forward:
- A ham navigates to
https://example.com/qsl - Enters their callsign
- Selects the QSO(s) they want to print on the card or certificate
- Requests the print
- QSL card is displayed. Save or print as desired.
Firefly QSL uses ImageMagick to "draw" text on top of the QSL template
file. config.php contains a series of positioning configuration directives
that details how the QSL records are printed on the card. This allows for
maximum flexibility in designing a card in regards to layout and size. However
keep the following in mind:
- The callsign for the QSO is printed once and is independent of the other QSO information.
- The QSO record is always printed as a line of information with relative or absolute offsets moving from the left to the page.
- The fields are in the order DATE, TIME, FREQ, RST, MODE, OPERATOR, COUNTY
- Multiline fields are printed one after another ordered by DATE, TIME in ascending order
It is possible to embed Firefly QSL in another site via an <iframe>
tag. For example, one user of Firefly QSL is embedding it in their
QRZ.com page. To embed the application, it's imperative to use
the sandbox="allow-downloads" attributes on the <iframe>
object or in-browser security will not permit the download of the
file. For example:
<iframe sandbox="allow-downloads" frameborder="1" height="700px"
name="myiFrame"scrolling="no" src="https://example.com/qsl/"
style="border:0px #ffffff none;" width="1000px"></iframe>
All code contributions will be considered if you send me a pull request on GitHub. However I have certain design and simplicity goals for this system and may not accept pulls that I deem to be too complex or contravenes one of my design goals.
I'll do my best to answer questions or fix bug as you find them but this is a part-part-part time project for me. I will help as I can with installation-related questions insofar as they deal with unclear directions or bugs on particular platforms but I will not help with general installation and configuration of a webserver, PHP, MySQL, etc.