{"id":50598448,"url":"https://github.com/exasol-labs/exaplus-lua","last_synced_at":"2026-06-05T16:01:42.324Z","repository":{"id":337467003,"uuid":"1153426377","full_name":"exasol-labs/exaplus-lua","owner":"exasol-labs","description":"Minimal Lua console client for the Exasol WebSocket API (v5)","archived":false,"fork":false,"pushed_at":"2026-05-27T12:08:31.000Z","size":176,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-27T14:10:42.482Z","etag":null,"topics":["cli","client","database","exaplus","exasol","lua","sql","websocket"],"latest_commit_sha":null,"homepage":"","language":"Lua","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/exasol-labs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","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":"2026-02-09T09:35:52.000Z","updated_at":"2026-02-13T09:54:10.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/exasol-labs/exaplus-lua","commit_stats":null,"previous_names":["exasol/exaplus-lua","exasol-labs/exaplus-lua"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/exasol-labs/exaplus-lua","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exasol-labs%2Fexaplus-lua","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exasol-labs%2Fexaplus-lua/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exasol-labs%2Fexaplus-lua/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exasol-labs%2Fexaplus-lua/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/exasol-labs","download_url":"https://codeload.github.com/exasol-labs/exaplus-lua/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exasol-labs%2Fexaplus-lua/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33949039,"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-06-05T02:00:06.157Z","response_time":120,"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":["cli","client","database","exaplus","exasol","lua","sql","websocket"],"created_at":"2026-06-05T16:01:41.427Z","updated_at":"2026-06-05T16:01:42.318Z","avatar_url":"https://github.com/exasol-labs.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EXAplusLua (minimal)\n\n![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)\n\nA minimal Lua-based console client for Exasol WebSocket API v5. This is a simplified replacement for `Console/exaplus` with a reduced CLI.\n\n\u003cimg width=\"1006\" height=\"820\" alt=\"image\" src=\"https://github.com/user-attachments/assets/48e32c2d-56b8-44e3-b990-abc93bcf6704\" /\u003e\n\n## Requirements\n\n- Lua 5.1 (invoked as `lua` or `lua5.1`)\n- OpenSSL (required by LuaSec)\n\n## Installation\n\nThis repo ships a single script (`exaplus`) plus Lua modules under `lib/`.\nNative modules (LuaSocket/LuaSec) must be installed on the host.\n\nStatic builds:\n\n- Linux: `tools/build_static_alpine.sh` -\u003e `build/static/linux-\u003carch\u003e/exaplus`\n- macOS (mostly static): `tools/build_static_darwin.sh` -\u003e `build/static/darwin-\u003carch\u003e/exaplus`\n- Optional source fetcher (offline builds): `tools/fetch_sources.sh` -\u003e `build/sources/`\n\n## Supported Platforms\n\n- Any platform with Lua 5.1, LuaSocket, and LuaSec installed.\n- Static binaries can be built for Linux and macOS via the build scripts.\n\n## Usage\n\n```\n./exaplus -c localhost/\u003cfingerprint\u003e:8563 -u sys -p exasol\n./exaplus -c localhost/nocertcheck:8563 -u sys -p exasol\n./exaplus -c localhost:8563/nocertcheck -u sys -p exasol\n./exaplus -c localhost/\u003cfingerprint\u003e:8563 -u sys -sql \"SELECT 1;\"\n./exaplus -c n11,n12,n13/nocertcheck:8563 -u sys -p exasol\n```\n\nExamples use the default `sys`/`exasol` credentials for a local instance; adjust\nfor your environment.\n\n### Connection string\n\nEncryption is mandatory. The `-c` option must include a certificate policy:\n\n- `host/\u003csha256_fingerprint\u003e[:port]`\n- `host/nocertcheck[:port]`\n- `host[:port]` (will use saved fingerprint if present)\n- `host[:port]/nocertcheck`\n- `host1,host2,host3[:port]` (tries hosts in random order until one connects)\n\nIf `:port` is omitted, `8563` is used.\n\nExample:\n\n```\n-c localhost/9aefaa1987a5a191d6e23c714a480b461c5e3462e0a98ffb6683edb10fa99400:8563\n```\n\nOn first connect, the client saves the server certificate fingerprint to\n`~/.exaplus_known_hosts` (override with `EXAPLUS_KNOWN_HOSTS`). If the\ncertificate changes, the client errors and instructs you to run once with\n`/nocertcheck` to update, or remove the entry manually.\n\nHistory is saved to `~/.exaplus_history` (override with `EXAPLUS_HISTORY`).\n\n## Supported CLI options\n\n- `-c \u003cconnection\u003e`\n- `-u \u003cuser\u003e`\n- `-p \u003cpassword\u003e` (or prompt if omitted)\n- `-s \u003cschema\u003e`\n- `-sql \u003cstatement\u003e`\n- `-f \u003cfile\u003e` (semicolon splitter; CREATE SCRIPT/UDF uses `/;` or `/` line terminator)\n- `-B \u003cfile\u003e` (execute as a single statement)\n- `-init \u003cfile\u003e`\n- `-autocommit {ON|OFF}`\n- `-F \u003ckB\u003e` (fetch size, default 1000)\n- `-Q \u003cseconds\u003e` (query timeout, default -1)\n- `-q` (quiet)\n- `-x` (exit on error)\n\n## Notes\n\n- Password encryption uses a pure-Lua PKCS#1 v1.5 RSA implementation.\n- WebSocket transport uses LuaSocket/LuaSec.\n- JSON messages are uncompressed.\n- Interactive mode includes in-memory history with Up/Down and Ctrl+R reverse search.\n- CREATE SCRIPT / UDF statements ignore semicolons inside the body until a line with only `/;` (or `/`) is seen.\n\n## Tests\n\nTests require access to an Exasol instance:\n\n```\n./tests/run_all.sh [--static /path/to/exaplus] [--host host] [--port port]\n```\n\n## Binary Distribution\n\nStatic builds are produced by `tools/build_all.sh` and packaged as tarballs in\n`build/out/` (e.g., `exaplus-\u003cversion\u003e-linux-\u003carch\u003e.tar.gz`,\n`exaplus-\u003cversion\u003e-darwin-\u003carch\u003e.tar.gz`).\n\nIf you distribute these binaries, include third‑party notices and license texts\n(see `THIRD_PARTY_NOTICES.md`). The static build links OpenSSL, so include the\nApache-2.0 license text and any NOTICE file from the exact OpenSSL version used.\n\n## Limitations\n\n- Not a full replacement for the full `exaplus` CLI; only the options listed above are supported.\n- Requires Exasol WebSocket API v5.\n- JSON messages are uncompressed.\n- Requires host-installed native modules (or use the static binaries).\n\n## License\n\nMIT. See [LICENSE](LICENSE).\n\n## Trademark\n\nExasol is a trademark of Exasol AG. This project is not affiliated with or endorsed by Exasol.\n\n## Shortcuts\n\n- `Ctrl+A` / `Ctrl+E`: start/end of line\n- `Left` / `Right`: move by character\n- `Ctrl+Left` / `Ctrl+Right`: move by word\n- `Ctrl+W`: delete previous word\n- `Up` / `Down`: history navigation\n- `Ctrl+R`: reverse history search\n- `Ctrl+D`: exit if line is empty\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexasol-labs%2Fexaplus-lua","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexasol-labs%2Fexaplus-lua","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexasol-labs%2Fexaplus-lua/lists"}