{"id":16147965,"url":"https://github.com/stdevpavelmc/tqsl","last_synced_at":"2025-07-10T09:34:19.082Z","repository":{"id":101670986,"uuid":"424669149","full_name":"stdevPavelmc/tqsl","owner":"stdevPavelmc","description":"Trusted QSL from the ARRL, this repo is a manual sync and only to generate a AppImage of the app","archived":false,"fork":false,"pushed_at":"2021-11-17T04:39:15.000Z","size":4351,"stargazers_count":2,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-06T21:19:47.407Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stdevPavelmc.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.txt","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-11-04T16:44:19.000Z","updated_at":"2021-11-17T04:39:18.000Z","dependencies_parsed_at":"2023-06-07T16:45:43.839Z","dependency_job_id":null,"html_url":"https://github.com/stdevPavelmc/tqsl","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/stdevPavelmc/tqsl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stdevPavelmc%2Ftqsl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stdevPavelmc%2Ftqsl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stdevPavelmc%2Ftqsl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stdevPavelmc%2Ftqsl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stdevPavelmc","download_url":"https://codeload.github.com/stdevPavelmc/tqsl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stdevPavelmc%2Ftqsl/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263091025,"owners_count":23412344,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-10T00:29:12.604Z","updated_at":"2025-07-02T07:06:50.352Z","avatar_url":"https://github.com/stdevPavelmc.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"This is the TrustedQSL project, which provides tools for digitally\nsigning Amateur Radio QSO records.\n\nsrc: Source code and documentation for tqsllib, the TrustedQSL\n     library.\n\napps: Source code for \"tqsl\" and other sample applications.\n\nhtml: Various legacy documents\n\nThis document describes the changes to TrustedQSL since version 1.13 and\nexplains how applications can use TQSL in their applications.\n\nCommand Line Changes\n--------------------\nMany applications use the 'tqsl' application in command line mode to sign\nlog files. There were several new capabilities added to command line operation\nin 1.14. The first is that tqsl can now automatically sign and upload a log to\nthe LoTW site for the user. This allows your application to simply write\nan adif file which is then processed and uploaded to LoTW without requiring\nthe application to read the output file and either upload it or tell your user\nto upload it.\n\nThe command line parser in 1.14 was rewritten and is less\nforgiving of improperly formatted command lines. \n\nCommand Line Options\n--------------------\nThe following summarizes the command line options and what they do:\nUsage: tqsl [-a \u003cstr\u003e] [-b \u003cdate\u003e ] [-e \u003cdate\u003e] [-d] [-l \u003cstr\u003e] [-s]\n            [-f \u003cstr\u003e] [-o \u003cstr\u003e] [-u] [-x] [-p \u003cstr\u003e] [-q] [-n] [-v] [-h]\n            [-t \u003cfile\u003e] [-c \u003ccall\u003e ] [Input ADIF or Cabrillo log file to sign]\n\n\nThe following command line options may be specified on the command line:\n  -a \u003cstr\u003e      Specify dialog action - abort, all, compliant or ask\n\nThis option instructs TQSL on how to handle QSOs that do not appear to be\nvalid. There are many potential causes for invalid QSOs. Examples include QSOs\nwith dates outside the valid range for the certificate being used, QSOs\nwith invalid amateur callsigns, duplicate QSOs, and attempts to sign with an\nexpired certificate.\n\nThis option specifies how tqsl should handle these exceptions. Using \"-a ask\"\ninstructs tqsl to use a dialog to ask the user how to proceed. This is the\ndefault behavior if \"-a\" is not provided on the command line. \n\nUsing \"-a abort\" instructs tqsl to issue an error message when an exception\nQSO is processed and immediately abort signing.\n\nUsing \"-a compliant\" instructs tqsl to sign the QSOs which are compliant\n(not duplicates, in date range, and with valid callsigns) and ignore any\nexception QSOs. This is the recommended behavior for command line applications\nbut is not the default action for compatibility reasons.\n\nUsing \"-a all\" instructs tqsl to process all QSOs, ignoring duplicates and\ninvalid callsigns. QSOs outside the range of valid dates for the selected\nstation certificate will not be signed, as they would not be accepted by\nLogbook.\n\n\n  -b            Set begin date for the QSO date filter.\n  -e            Set end date for the QSL date filter.\n\nThese options filter QSOs being signed to those after the begin date and\nbefore the end date. If neither of these are supplied, then no filtering\nwill be performed.  These values will override any date range entries\nprovided by the user.  This implies that \"-d\" (suppress date range dialog)\nshould be used with -b or -e.\n\n  -d            Suppress date range dialog\n\nThis option instructs tqsl to not ask the user to select a range of dates\nfor processing QSOs. If this is used, all QSOs in the input file will be\nselected for processing. Command line tools will usually include this\noption to suppress tqsl dialogs. However, this means that the logging\nprogram is responsible for filtering QSOs before delivering them to tqsl.\n\n  -f \u003cstr\u003e      Select handling option for QTH details\n\nThis option instructs tqsl on how to handle the MY_ fields in an\nADIF log file. These specify the callsign, QTH details such as zones,\ngridsquare, state/county, etc. for a QSO. If the log includes this\ndetail, TQSL can read these fields and take action to use that\ninformation to ensure that the Station Location is corrrect. By\ndefault, TQSL will report any discrepancies between QTH and the\nStation Location; TQSL can also be directed to ignore the QTH\ninformation.\n\n  -f ignore     Directs TQSL to ignore the QTH information\n  -f report     Directs TQSL to report any differences between the\n                station location and the MY_ QTH deails\n  -f update     Directs TQSL to overwrite the Station Location\n                information with data from the log.\n\nWhen using \"-f update\", the ideal practice should be to either\nspecify all QTH information (state, county, grid, zones) in the\nADIF \"MY_\" fields, or use an minimal Station Location with no\nQTH data.\n\n  -l \u003cstr\u003e      Select Station Location.\n\nThis option selects a station location. This is used for signing logs or\nin conjunction with the \"-s\" option to define a location for editing.\n\n  -s            Edit (if used with -l) or create Station Location\n\nThis option can be used to create a new Station Location (-s without -l) or\nto edit an existing Station Location (when both -s and -l are provided).\n\n  -o \u003cstr\u003e      Output file name (defaults to input name minus extension\n                plus .tq8)\n\nThis option instructs tqsl where the signed output file will be stored. If it\nis not provided, the output file will be written to the same location as the\ninput file with the extension changed to \".tq8\"\n\n  -u            Upload after signing instead of saving\n\nThis option instructs tqsl to upload the log file after it is successfully\nsigned.\n\n  -q            Operate in batch mode, not menu-driven mode.\n  -x            Operate in batch mode, not menu-driven mode.\n\nIf -x or -q are included on the command line, tqsl suppresses user dialogs\nand sends error messages to standard error. A logging application is expected\nto read this file and possibly display the contents to the user so they\ncan see the results of the command action. If these options are not included,\na calling application cannot distinguish between a successful signing and\none where a user cancels the signing.\n\n  -n            Look for updated (new) versions of key files.\n\nIf -n is given on the command line, tqsl checks for new versions of\nthe tqsl program, an updated tqsl configuration file, and verifies that any\nuser certificates are not about to expire. If any of these circumstances\nexist, the user is prompted to perform the required updates. When the check is\ncompleted, tqsl exits. This command line option can not be combined with any\nother command line options as it only performs an update check and does not\nsign any logs submitted with the command.\n\n  -p \u003cstr\u003e      Password for the signing key\n\nThis option allows an application to provide the password for the private key\nthat will be used to sign the log file.\n\n  -v            Display the version information and exit\n  -h            Display command line help\n\nThese options allow the user to display the version number of tqsl or to\nobtain help on the command line usage.\n\n  -t \u003cfile\u003e     Open a diagnostic trace file at startup\n\nWhen supplied, this option enables diagnostic tracing at startup, opening\nthe supplied file to record TQSL operations details. This is useful for\ndebugging purposes.\n\n  -c \u003ccall\u003e     Use the given callsign when signing a log\n\nThis option allows a logging program to specify what callsign to use for a \nlog signing operation. This will override the callsign associated with the\nselected station location, if any.\n\nCommand Line Usage\n------------------\nAn application that uses the command line invokes the tqsl binary, optionally\nproviding a set of options that dictate how tqsl operates. Normally, such\nan application should include the \"-x\" or \"-q\" options to indicate to tqsl\nthat application popups should be suppressed.\n\nErrors discovered during the signing process are sent to the standard error\nfile. Callers would normally indicate where those messages should be sent\nby adding \"2\u003e file.txt\" to the command line used to run tqsl. This directs\nthe shell (Windows or Unix) to write the error messages to that file.\n\nWhen operated in \"batch\" mode (i.e. -x or -q used), tqsl provides information\nthat the calling program can use to determine if the signing operation\nsucceeded. The first way is by capturing tqsl's exit status code. This\nprovides information on success or failure using the following values:\n\n        0 - Success: all QSOs submitted were signed and saved or uploaded\n        1 - Cancelled by user\n        2 - The log was rejected by the LoTW server\n        3 - The response from the LoTW server was unexpected\n        4 - An error occurred in tqsl\n        5 - An error occurred in tqsllib (invalid filename, bad file format)\n        6 - Unable to open input file\n        7 - Unable to open output file\n        8 - No QSOs were processed because some QSOs were duplicates or\n            out of date range (no QSOs written)\n        9 - Some QSOs were processed, and some QSOs were ignored because\n            they were duplicates or out of date range (some QSOs written)\n       10 - Command syntax error\n       11 - LoTW network connnection failed (no network or LoTW is unreachable)\n       12 - Unknown error\n       13 - The TQSL duplicates database is locked.\n\nThis exit status is also written to stderr in a format that can be parsed\nby the calling application. The last output from tqsl will be of the format\nhh:mm:ss AM|PM Final Status: Description (code) \n(For cases where the language is not English, this will be duplicated - first\nin the local language, then in English.)\n\nThe first two fields are a timestamp, the words \"Final Status:\" always appears.\nFollowing that is a short descriptive message giving the exit status. The\nlast thing on the line is the numeric exit code (as above) in parenthesis.\n\nExamples of output follows:\n05:57:39 PM: Warning: Signing cancelled\n05:57:39 PM: No records output\n05:57:39 PM: Final Status: cancelled by user (1)\n\n06:05:56 PM: /home/rmurphy/k1mu.adi: 414 QSO records were duplicates\n06:05:56 PM: /home/rmurphy/k1mu.adi: wrote 1 records to /home/rmurphy/k1mu.tq8\n06:05:56 PM: /home/rmurphy/k1mu.tq8 is ready to be emailed or uploaded.\nNote: TQSL assumes that this file will be uploaded to LoTW.\nResubmitting these QSOs will cause them to be reported as duplicates.\n06:05:56 PM: Final Status: Some QSOs were duplicates or out of date range (9)\n\nAn example usage for signing a log would be\n\ntqsl -q -l \"K1MU home\" -p \"Insecure\" -a compliant -u -d k1mu.adi 2\u003etemp.txt\n\nThis indicates quiet mode (-q), selects a station location and a password,\nindicates that only compliant QSOs will be written (-a), uploads to LoTW (-u),\nsuppresses date popups (-d), provides an input file (k1mu.adi), and finally\nwrites log messages to temp.txt. The logging program would read and process\nthat log once tqsl is done. An application would add \"-o\" to indicate where\ntqsl should write the signed log if \"-u\" (upload) is not provided.\n\nCommand line applications are strongly encouraged to add \"-a=compliant\" to\ntheir invocations of tqsl, and to consider storing and displaying the log\nmessages to their users.\n\nApplication Changes\n-------------------\nSome logging applications directly call tqsllib functions to sign log files.\nThe application programming interface (API) to tqsllib has not changed in\nways that introduce incompatibilities, but there are additional API calls\nwhich are necessary for applications to allow duplicate QSO processing to\nwork properly.\n\nNormally, an application will call tqsl_beginCabrilloConverter() or\ntqsl_beginADIFConverter to begin signing a log file. After the converter\nis created by those calls, the application should then call\n        tqsl_setConverterAllowDuplicates(conv, false)\nwhich tells tqsllib that duplicate processing should be enabled. If you do\nnot call tqsl_setConverterAllowDuplicates, the library will assume that\nduplicates should be permitted (for compatibility reasons), which may cause\nunnecessary QSOs to be uploaded.\n\nIf duplicate suppression is enabled, there is a new error return from \ntqsl_getConverterGABBI that indicates duplicate QSOs. In this case, \ntQSL_Error is set to TQSL_DUPLICATE_QSO. Software may need to be modified\nto handle this new result and act appropriately (ignore it, or abort the\nsigning operation.)\n\nAfter successful processing of a log, an application should call either\ntqsl_convertCommit(conv) or tqsl_convertRollBack(conv) prior to calling\ntqsl_endConverter() to signal that a log conversion has completed.\ntqsl_converterCommit() indicates to tqsllib that the log has been successfully\nprocessed and that the QSOs should be added to the duplicate detection\ndatabase. Calling tqsl_converterRollBack() indicates to tqsllib that the\nlog has not been successfully processed and that the QSO records should\nnot be added to the duplicate database. Simply adding the necessary call\nbefore the converter is closed is enough to bring the application up to date.\n\nchange\n        tqsl_endConverter(\u0026conv)\nto\n        tqsl_converterCommit(conv);\n        tqsl_endConverter(\u0026conv);\n\nUsing tqsllib\n-------------\nA minimal set of calls to permit an application to sign a log is the following.\nOf course, error checking should be performed for each call.\n\n        tqsl_getStationLocation(\u0026loc, location_name);\n\n        tqsl_getLocationCallSign(loc, callsign, sizeof callsign);\n        tqsl_getLocationDXCCEntity(loc, \u0026dxcc);\n        tqsl_selectCertificates(\u0026certlist, \u0026ncerts, callsign, dxcc);\n\n        tqsl_beginADIFConverter(\u0026conv, input_file, certlist, ncerts, loc);\n        tqsl_setConverterAllowDuplicates(conv, false);\n\n        tqsl_setConverterAppName(conv, \"myAppName\");\n            (tell tqsllib the name of your application)\n\n        while (cp = tqsl_getConverterGABBI(conv) != 0)\n            write the string pointed to by \"cp\" to your file\n\n        tqsl_converterCommit(conv);\n        tqsl_endConverter(\u0026conv);\n        tqsl_endStationLocationCapture(\u0026loc);\n\nThe tq8 files created by tqsl are compressed using zlib functions. You can\nalso submit uncompressed files using a .tq7 extension.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstdevpavelmc%2Ftqsl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstdevpavelmc%2Ftqsl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstdevpavelmc%2Ftqsl/lists"}