{"id":18017757,"url":"https://github.com/assafmo/sqliteproxy","last_synced_at":"2025-10-09T22:17:26.085Z","repository":{"id":21340962,"uuid":"92426029","full_name":"assafmo/SQLiteProxy","owner":"assafmo","description":"REST API for SQLite","archived":false,"fork":false,"pushed_at":"2022-12-10T16:10:27.000Z","size":371,"stargazers_count":85,"open_issues_count":2,"forks_count":9,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-08-17T01:09:03.490Z","etag":null,"topics":["http-json-proxy","http-server","json","rest-api","sqlite","sqlite3"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/assafmo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-05-25T17:08:19.000Z","updated_at":"2025-03-31T14:08:01.000Z","dependencies_parsed_at":"2023-01-13T21:25:14.675Z","dependency_job_id":null,"html_url":"https://github.com/assafmo/SQLiteProxy","commit_stats":null,"previous_names":["assafmo/sqlite-rest-proxy"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/assafmo/SQLiteProxy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/assafmo%2FSQLiteProxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/assafmo%2FSQLiteProxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/assafmo%2FSQLiteProxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/assafmo%2FSQLiteProxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/assafmo","download_url":"https://codeload.github.com/assafmo/SQLiteProxy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/assafmo%2FSQLiteProxy/sbom","scorecard":{"id":212976,"data":{"date":"2025-08-11","repo":{"name":"github.com/assafmo/SQLiteProxy","commit":"959390ba5b5a9151c61bd220e17aae7ab04a1f7d"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.7,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Code-Review","score":1,"reason":"Found 2/18 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: Dockerfile:1: pin your Docker image by updating node:latest to node:latest@sha256:dc4ac80350904c2797058e477a30b6285e9e025f23f139ea8b277c9efe55dd9a","Info:   0 out of   1 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 14 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"20 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-qwcr-r2fm-qrc7","Warn: Project is vulnerable to: GHSA-pxg6-pf52-xh8x","Warn: Project is vulnerable to: GHSA-rv95-896h-c2vc","Warn: Project is vulnerable to: GHSA-qw6h-vgh9-j6wx","Warn: Project is vulnerable to: GHSA-892p-pqrr-hxqr","Warn: Project is vulnerable to: GHSA-76c9-3jph-rj3q","Warn: Project is vulnerable to: GHSA-9wv6-86v2-598j","Warn: Project is vulnerable to: GHSA-rhx6-c78j-4q9w","Warn: Project is vulnerable to: GHSA-hrpp-h998-j3pp","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-m6fv-jmcg-4jfg","Warn: Project is vulnerable to: GHSA-cm22-4g7w-348p","Warn: Project is vulnerable to: GHSA-3jfq-g458-7qm9","Warn: Project is vulnerable to: GHSA-r628-mhmh-qjhw","Warn: Project is vulnerable to: GHSA-9r2w-394v-53qc","Warn: Project is vulnerable to: GHSA-5955-9wpr-37jh","Warn: Project is vulnerable to: GHSA-qq89-hq3f-393p","Warn: Project is vulnerable to: GHSA-f5x3-32g6-xq36","Warn: Project is vulnerable to: GHSA-pq67-2wwv-3xjx","Warn: Project is vulnerable to: GHSA-8cj5-5rvv-wf4v"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-17T01:05:46.918Z","repository_id":21340962,"created_at":"2025-08-17T01:05:46.918Z","updated_at":"2025-08-17T01:05:46.918Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279002122,"owners_count":26083307,"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","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"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":["http-json-proxy","http-server","json","rest-api","sqlite","sqlite3"],"created_at":"2024-10-30T04:24:15.605Z","updated_at":"2025-10-09T22:17:26.070Z","avatar_url":"https://github.com/assafmo.png","language":"JavaScript","readme":"# SQLiteProxy\n\nA simple HTTP JSON proxy for SQLite.  \nThis probably should not be exposed to end users. :-)\n\n[![npm version](https://badge.fury.io/js/sqliteproxy.svg)](https://badge.fury.io/js/sqliteproxy)\n\n# Installation\n\n```bash\nnpm install -g sqliteproxy\n```\n\n# Options\n\n```\nUsage: sqliteproxy [options]\n\nOptions:\n  --db: DB File path\n    (default: \"\")\n  --[no]readonly: Open the database for readonly\n    (default: false)\n  --port: TCP Port to listen on\n    (default: 2048)\n    (a number)\n  --cors: CORS URLs to allow requests from\n    (default: [])\n  --requestlimit: request body limit for HTTP POSTs\n    (default: \"1mb\")\n```\n\n# Usage examples\n\n## Existing DB\n\n```console\n$ sqliteproxy --db ./examples/vt.db\n^Z\n[1]  + 23436 suspended sqliteproxy --db ./examples/vt.db\n$ bg\n[1]  + 23436 continued sqliteproxy --db ./examples/vt.db\n$ curl 'http://localhost:2048' \\\n-d sql=\"select * from vt where md5 = '0060cc2e24f259545558ebd8834dc345'\" -L | jq . # POST /\n[\n  {\n    \"md5\": \"0060cc2e24f259545558ebd8834dc345\",\n    \"av_score\": \"7/61\"\n  }\n]\n$ curl 'http://localhost:2048' -G \\\n--data-urlencode sql=\"select * from vt where md5 = '0060cc2e24f259545558ebd8834dc345'\" -L | jq . # GET /\n[\n  {\n    \"md5\": \"0060cc2e24f259545558ebd8834dc345\",\n    \"av_score\": \"7/61\"\n  }\n]\n$ curl 'http://localhost:2048' -d sql='create table x(a)' -L\n[]\n$ curl 'http://localhost:2048' -d sql='drop table x' -L\n[]\n$ fg\n[1]  + 23436 running    sqliteproxy --db ./examples/vt.db\n^C\n```\n\n## Read only\n\n```console\n$ sqliteproxy --db ./examples/vt.db --readonly\n^Z\n[1]  + 23447 suspended sqliteproxy --db ./examples/vt.db --readonly\n$ bg\n[1]  + 23447 continued sqliteproxy --db ./examples/vt.db --readonly\n$ curl 'http://localhost:2048' -d sql='create table x(a)' -L\nSQLITE_READONLY: attempt to write a readonly database\n$ fg\n[1]  + 23447 running    sqliteproxy --db ./examples/vt.db --readonly\n^C\n```\n\n## New DB\n\n```console\n$ sqliteproxy --db myNewDb.sqlite\n^Z\n[1]  + 23453 suspended sqliteproxy --db myNewDb.sqlite\n$ bg\n[1]  + 23453 continued sqliteproxy --db myNewDb.sqlite\n$ curl 'http://localhost:2048' -d sql='create table x(a)' -L\n[]\n$ curl 'http://localhost:2048' -d sql='insert into x values (1),(2),(3)' -L\n[]\n$ curl 'http://localhost:2048' -d sql='select * from x' -L\n[\n  {\n    \"a\": 1\n  },\n  {\n    \"a\": 2\n  },\n  {\n    \"a\": 3\n  }\n]\n$ fg\n[1]  + 23453 running    sqliteproxy --db myNewDb.sqlite\n^C\n```\n\n## Parameterized Queries\n\nMust use HTTP POST with content-type=application/json. 'params' element must be an array in request body\n\n```console\n$ sqliteproxy --db currenttime.sqlite \u0026\n$ curl -H \"Content-Type: application/json\" -d '{\"sql\":\"select DATETIME(?) AS UTC_ISO\",\"params\":[\"now\"]}' http://localhost:2048\n[{\"UTC_ISO\":\"2020-09-10 02:06:02\"}]\n```\n\n## BLOB Handling\n\nBlobs via http POST/GET can be treated as byte arrays or base64-encoded text. This is handled via the blobtype variable in the HTTP GET request, or a blobtype object member in the request body for an HTTP POST. Allowable values for blobtype are \"base64\" and \"array\". If blobtype is omitted, \"base64\" is the default.\n\nThis also affects how your parameterized SQLite statements are sent to the server. BLOB query parameters must be structured as {\"data\": value}, whereas other parameter types (e.g. text, numberic) are treated as primitives in the params array (see exables below).\n\n```\n# EXAMPLES\n###############################################################################\n\nGET http://localhost:2048?sql=select BLOB_FIELD from BLOB_TABLE\u0026blobtype=base64\n\u003e\u003e returns BLOB fields as base64 strings\n\n###############################################################################\n\nGET http://localhost:2048?sql=select BLOB_FIELD from BLOB_TABLE\u0026blobtype=array\n\u003e\u003e returns BLOB fields as Buffer objects\n\n###############################################################################\n\nPOST (application/json) http://localhost:2048\nBODY:\n{\n    \"blobtype\": \"base64\",\n    \"sql\": \"insert into BLOB_TABLE(KEY,BLOB_FIELD) values (?,?)\",\n    \"params\": [1,{\"data\": \"base64string\"}]\n}\n\u003e\u003e base64 data is automatically converted to buffers before inserting the record\n\n###############################################################################\n\nPOST (application/json) http://localhost:2048\nBODY:\n{\n    \"blobtype\": \"array\",\n    \"sql\": \"insert into BLOB_TABLE(KEY,BLOB_FIELD) values (?,?)\",\n    \"params\": [1,{\"data\": bytearray[]}]\n}\n\u003e\u003e byte data is converted to buffer before inserting the record\n\n```\n\n## CORS\n\n```console\n$ sqliteproxy --db myNewDb.sqlite --cors http://example1.com --cors http://example2.com\n```\n\n# Docker\n\n[https://hub.docker.com/r/assafmo/sqliteproxy](https://hub.docker.com/r/assafmo/sqliteproxy/)\n\n```\n\ndocker run -d -p 2048:2048 -v /path/to/my/db/dir/:/data/ assafmo/sqliteproxy --db /data/my.db\n\n```\n\n```\n\ndocker run -d -p 2048:2048 -v /path/to/my/db/dir/:/data/ assafmo/sqliteproxy --readonly --db /data/my.db\n\n```\n\n# License\n\n[MIT](/LICENSE)\n\n```\n\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fassafmo%2Fsqliteproxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fassafmo%2Fsqliteproxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fassafmo%2Fsqliteproxy/lists"}