{"id":51379660,"url":"https://github.com/ixotoxin/kkm_https_accessor","last_synced_at":"2026-07-03T15:38:33.060Z","repository":{"id":319273885,"uuid":"988013014","full_name":"ixotoxin/kkm_https_accessor","owner":"ixotoxin","description":"Remote access service for Cash Register Equipment (KKT/KKM) (or just another C++ based HTTPS server built with Asio, OpenSSL and coroutines)","archived":false,"fork":false,"pushed_at":"2026-05-22T00:14:47.000Z","size":47691,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-05-22T07:49:06.164Z","etag":null,"topics":["asio","atol","cashregisterapp","coroutines","cpp","cpp20","http","https","https-server","kassa","lock-free","openssl","windows-service"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ixotoxin.png","metadata":{"files":{"readme":"README.ENG.md","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":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-05-21T23:37:48.000Z","updated_at":"2026-05-22T00:14:51.000Z","dependencies_parsed_at":"2025-10-18T17:13:06.642Z","dependency_job_id":"dc5b9010-8483-4331-980e-943f8ccb1233","html_url":"https://github.com/ixotoxin/kkm_https_accessor","commit_stats":null,"previous_names":["ixotoxin/kkm_https_adapter","ixotoxin/kkm_https_accessor"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ixotoxin/kkm_https_accessor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ixotoxin%2Fkkm_https_accessor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ixotoxin%2Fkkm_https_accessor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ixotoxin%2Fkkm_https_accessor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ixotoxin%2Fkkm_https_accessor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ixotoxin","download_url":"https://codeload.github.com/ixotoxin/kkm_https_accessor/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ixotoxin%2Fkkm_https_accessor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35092210,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-03T02:00:05.635Z","response_time":110,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["asio","atol","cashregisterapp","coroutines","cpp","cpp20","http","https","https-server","kassa","lock-free","openssl","windows-service"],"created_at":"2026-07-03T15:38:30.826Z","updated_at":"2026-07-03T15:38:33.045Z","avatar_url":"https://github.com/ixotoxin.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# KKM HTTPS Accessor\n\n## Description\n\nThis is yet another HTTPS server in C++, but with ~~blackjack and hoo...~~ Asio, OpenSSL and coroutines.\n\nAn implementation of a service for Windows OS that provides access to a cash register (hereinafter CR) connected to\na computer and supported by the ATOL driver. The REST JSON API over HTTPS is used to access the CR. This is not an\nindependent product, it is a component of a distributed system. It enables software running on a remote server access\na CR locally connected to the operator's thin client. This service is designed to be used in applications with a web\ninterface and business logic implemented on a remote server. In this regard, full-fledged interactive interaction with\nCR is could be challenging in some cases. Therefore, all stages of the operation (sale registration, shift closure,\netc.) are performed atomically.\n\n## Building\n\nFor assembly, first of all, you will need:\n- ATOL KKT Driver version not lower than 10.10.8 ([Official website](http://fs.atol.ru/))\n- Asio C++ Library ([Git](https://github.com/chriskohlhoff/asio), [Official website](https://think-async.com/Asio/))\n- OpenSSL ([Git](https://github.com/openssl/openssl), [Official website](https://www.openssl.org/))\n- JSON for Modern C++ ([Git](https://github.com/nlohmann/json), [Official website](https://json.nlohmann.me/))\n- Catch2 ([Git](https://github.com/catchorg/Catch2))\n- Microsoft Visual Studio 2022 Community Edition ([Official website](https://visualstudio.microsoft.com/))\n- *or* Clang ([Git](https://github.com/llvm/llvm-project), [Official website](https://clang.llvm.org/)) + CMake ([Git](https://github.com/Kitware/CMake), [Official website](https://cmake.org/)) + Ninja ([Git](https://github.com/ninja-build/ninja), [Official website](https://ninja-build.org/))\n- vcpkg ([Git](https://github.com/microsoft/vcpkg), [Official website](https://learn.microsoft.com/en-us/vcpkg/))\n\n**vcpkg** can be replaced with another dependency manager for C++ or ready-made assemblies of the above mentioned\nlibraries can be used. In this case, you may need to correct `CMakeLists.txt`.\n\nThe assembly was tested using the MSVC and Clang compilers. The scripts with the standard assembly for these compilers\nare located in the `.\\_msvc` and `.\\_clang` directories, respectively.\n\n| SCRIPT                     | DESCRIPTION                                                                                                                                             |\n|----------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `config_env.cmd`           | Sets environment variables and runs the necessary bootstrap scripts. It is called from the scripts listed below.                                        |\n| `install_dynamic_deps.cmd` | Installs dynamic build dependencies and copies the necessary header files from `%programfiles%\\ATOL\\Drivers10\\KKT\\langs\\cpp\\fptr10` to `.\\deps\\fptr10`. |\n| `install_static_deps.cmd`  | Installs static build dependencies and copies the necessary header files from `%programfiles%\\ATOL\\Drivers10\\KKT\\langs\\cpp\\fptr10` to `.\\deps\\fptr10`.  |\n| `config_build.cmd`         | Sets build options.                                                                                                                                     |\n| `test.cmd`                 | Builds the debug version and runs unit tests.                                                                                                           |\n| `test_building.cmd`        | Builds with different sets of build parameters and runs unit tests.                                                                                     |\n| `build_elres.cmd`          | Builds the resources (EventLog messages). Alternative to compiling via CMake.                                                                           |\n| `build_debug.cmd`          | Builds the debug version.                                                                                                                               |\n| `build_crtd.cmd`           | Builds the debug version with enabled CRT Debug.                                                                                                        |\n| `build_sntz.cmd`           | Builds the release version with AddressSanitizer and UndefinedBehaviorSanitizer.                                                                        |\n| `build_release.cmd`        | Builds the release version.                                                                                                                             |\n\nIt is assumed that the required software is installed in the following directories:\n\n| SOFTWARE                                       | PATH                                                    |\n|------------------------------------------------|---------------------------------------------------------|\n| ATOL Driver                                    | `%programfiles%\\ATOL`                                   |\n| Microsoft Visual Studio 2022 Community Edition | `%programfiles%\\Microsoft Visual Studio\\2022\\Community` |\n| Clang                                          | `C:\\Devel\\Platform\\Clang\\22.1.6-x64`                    |\n| CMake                                          | `C:\\Devel\\Platform\\CMake\\4.3.2-x64`                     |\n| Ninja                                          | `C:\\Devel\\Platform\\Ninja\\1.13.2`                        |\n\nThe paths can be modified in the files `config_env.cmd` and `install_*_deps.cmd`. CMake and Ninja can be used from MSVS.\n\nCMake options:\n\n| OPTION            | DESCRIPTION                                             |\n|-------------------|---------------------------------------------------------|\n| `BUILD_SEPARATED` | Build separated .exe files.                             |\n| `BUILD_STATIC`    | Static build.                                           |\n| `BUILD_TESTS`     | Build with unit-tests.                                  |\n| `BUILD_ELRES`     | Build resources (EventLog messages).                    |\n| `WITH_SHORTCUTS`  | Build with command shortcuts enabled.                   |\n| `WITH_RELSL`      | Use relative paths for source files in the application. |\n| `WITH_SBIAC`      | Allow invasive access to the std::string buffer.        |\n| `WITH_CRTD`       | Enable CRT Debug for memory profiling.                  |\n| `WITH_SNTZ`       | Enable AddressSanitizer and UndefinedBehaviorSanitizer. |\n| `WITH_LEAKS`      | Artificial memory leak generation.                      |\n| `WITH_10106`      | Restrict functionality to driver version 10.10.6.       |\n| `WITH_10107`      | Restrict functionality to driver version 10.10.7.       |\n| `WITH_10108`      | Restrict functionality to driver version 10.10.8.       |\n\nWhen building the project with the option `-D BUILD_STATIC=ON`, the dependencies must be installed using the\n`install_static_deps.cmd` script. Otherwise, you need to run `install_dynamic_deps.cmd`. After building with one of the\n`build_*.cmd` scripts, the file `kkmha.exe` will be placed into the `.\\_build` directory, and in the case of a dynamic\nbuild, the files `libcrypto-?-x64.dll` and `libssl-?-x64.dll` will also be placed there. When building with the\n`-D BUILD_SEPARATED=ON` option, three executable files will be created: `kkmha.exe`, `kkmop.exe`, and `kkmjl.exe`.\n\nThe `.\\_build` directory also already contains configuration files, etc., which form a ready-to-use environment for\nlaunch.\n\nThe `regmsg.exe` application registers the resources necessary for the correct display of messages in the `Event Log`.\n`Administrator` privileges are required to run it. The resources are contained within the file itself, so it should not\nbe deleted; if the file is moved, it must be run again to re-register the resources.\n\nIn order to run the service on a PC other than the one on which the build was made, you may need to install the latest\npackage [Microsoft Visual C++ Redistributable](https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fixotoxin%2Fkkm_https_accessor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fixotoxin%2Fkkm_https_accessor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fixotoxin%2Fkkm_https_accessor/lists"}