A secure QUIC-based RPC server for NanaSQLite
Project description
NanaSQLite-Server
English
A secure, high-performance, QUIC-based RPC server for NanaSQLite.
⚠️ Security Warning
The security of this server depends on the method structure of the NanaSQLite class. While we use a dynamic protection mechanism, updates to NanaSQLite may introduce new methods that could potentially bypass current security restrictions. Always review the FORBIDDEN_METHODS in server.py when updating the underlying nanasqlite library.
Current Supported NanaSQLite Version: v1.3.2
Features
- QUIC Protocol: Built on top of HTTP/3 technology for low latency and high reliability.
- Ed25519 Passkey Authentication: Secure challenge-response authentication.
- Dynamic Protection: Automatically adapts to updates while strictly controlling method access.
- Cross-Platform: Optimized for Windows, Linux, and macOS.
- Non-Blocking IO: Database operations run in a thread pool.
Quick Start
pip install nanasqlite-server
nanasqlite-cert-gen
nanasqlite-key-gen
nanasqlite-server
Customizing Allowed Methods
You can customize the allowed/forbidden methods when starting the server programmatically:
import asyncio
from nanasqlite_server.server import main
async def start_server():
# Explicitly allow 'close' and forbid '__setitem__'
await main(
allowed_methods={"close"},
forbidden_methods={"__setitem__"}
)
if __name__ == "__main__":
asyncio.run(start_server())
日本語
NanaSQLite のためのセキュアで高速な QUIC ベースの RPC サーバーです。
⚠️ セキュリティに関する重要な警告
このサーバーのセキュリティは NanaSQLite クラスのメソッド構造に依存しています。動的な保護メカニズムを採用していますが、NanaSQLite のアップデートにより、現在の制限を回避できる新しいメソッドが導入される可能性があります。 nanasqlite ライブラリを更新する際は、必ず server.py 内の FORBIDDEN_METHODS を確認し、必要に応じて更新してください。
現在対応している NanaSQLite バージョン: v1.3.2
特徴
- QUIC プロトコル: HTTP/3 テクノロジーをベースにした低遅延で信頼性の高い通信。
- Ed25519 パスキー認証: チャレンジ/レスポンス方式によるセキュアな認証。
- 動的保護: ライブラリの更新に自動対応しつつ、許可されたメソッドのみを実行可能。
- マルチプラットフォーム: Windows, Linux, macOS に最適化。
- 非ブロッキング I/O: すべての DB 操作をスレッドプールで実行し、イベントループを停止させません。
クイックスタート
pip install nanasqlite-server
# 証明書と鍵の生成
nanasqlite-cert-gen
nanasqlite-key-gen
# サーバーの起動
nanasqlite-server
許可メソッドのカスタマイズ
プログラムからサーバーを起動する場合、許可または禁止するメソッドをカスタマイズできます。
import asyncio
from nanasqlite_server.server import main
async def start_server():
# 'close' を明示的に許可し、'__setitem__' を禁止する例
await main(
allowed_methods={"close"},
forbidden_methods={"__setitem__"}
)
if __name__ == "__main__":
asyncio.run(start_server())
クライアントの使用例
import asyncio
from nanasqlite_server.client import RemoteNanaSQLite
async def main():
db = RemoteNanaSQLite(host="127.0.0.1", port=4433)
await db.connect()
await db.set_item_async("key", "value")
print(await db.get_item_async("key"))
await db.close()
asyncio.run(main())
License
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nanasqlite_server-1.0.0.tar.gz.
File metadata
- Download URL: nanasqlite_server-1.0.0.tar.gz
- Upload date:
- Size: 18.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1bdd5e748cf1862b2b650b348ed97a77fda76db2c6ddf4c3accd43975d14a6ff
|
|
| MD5 |
21834702fae914edb188782f0de84c83
|
|
| BLAKE2b-256 |
ab6cc8b03d980cf39878758d909e6d8b2ecc1997e94e03c39f4427cc096281fb
|
Provenance
The following attestation bundles were made for nanasqlite_server-1.0.0.tar.gz:
Publisher:
ci.yml on disnana/NanaSQLite-Server
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nanasqlite_server-1.0.0.tar.gz -
Subject digest:
1bdd5e748cf1862b2b650b348ed97a77fda76db2c6ddf4c3accd43975d14a6ff - Sigstore transparency entry: 833748202
- Sigstore integration time:
-
Permalink:
disnana/NanaSQLite-Server@f216144e72e0add9355eca859cddfcf90add2f41 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/disnana
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@f216144e72e0add9355eca859cddfcf90add2f41 -
Trigger Event:
push
-
Statement type:
File details
Details for the file nanasqlite_server-1.0.0-py3-none-any.whl.
File metadata
- Download URL: nanasqlite_server-1.0.0-py3-none-any.whl
- Upload date:
- Size: 15.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9b0d5b595dae21de03a79316d8449e9415f59f5c27d94038b03bb5d4834350f2
|
|
| MD5 |
ca2712f0bfcc8beec2966825c0186ddb
|
|
| BLAKE2b-256 |
2d3a64df1929b58009e28e0931284e4d332f59ef081c6418197357f4e6c7a4a5
|
Provenance
The following attestation bundles were made for nanasqlite_server-1.0.0-py3-none-any.whl:
Publisher:
ci.yml on disnana/NanaSQLite-Server
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nanasqlite_server-1.0.0-py3-none-any.whl -
Subject digest:
9b0d5b595dae21de03a79316d8449e9415f59f5c27d94038b03bb5d4834350f2 - Sigstore transparency entry: 833748203
- Sigstore integration time:
-
Permalink:
disnana/NanaSQLite-Server@f216144e72e0add9355eca859cddfcf90add2f41 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/disnana
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@f216144e72e0add9355eca859cddfcf90add2f41 -
Trigger Event:
push
-
Statement type: