Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/anubhav-narayan/pkns
Public Key Name System Framework for Key Exchange in Peer-To-Peer and centralised servers.
https://github.com/anubhav-narayan/pkns
cryptography key-exchange peer-to-peer public-key-cryptography python-3 python3-framework web-service
Last synced: 7 days ago
JSON representation
Public Key Name System Framework for Key Exchange in Peer-To-Peer and centralised servers.
- Host: GitHub
- URL: https://github.com/anubhav-narayan/pkns
- Owner: anubhav-narayan
- License: agpl-3.0
- Created: 2021-04-29T04:26:42.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2023-01-13T04:52:20.000Z (almost 2 years ago)
- Last Synced: 2024-10-18T13:17:01.662Z (2 months ago)
- Topics: cryptography, key-exchange, peer-to-peer, public-key-cryptography, python-3, python3-framework, web-service
- Language: Python
- Homepage:
- Size: 99.6 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
README
# Public Key Name System Framework
[![Made with Python3](https://img.shields.io/badge/Made%20With-Python3-blue)](https://www.python.org/) [![GitHub license](https://img.shields.io/badge/license-AGPLv3-purple.svg)](https://github.com/anubhav-narayan/PKNS/blob/master/LICENSE) [![PyPI](https://img.shields.io/pypi/v/pkns?color=green&label=version)]() [![Github status](https://img.shields.io/badge/status-Public%20Beta-green)
](http://github.com/anubhav-narayan/PKNS) [![Made with](https://img.shields.io/badge/Built%20with-SQLite3%20|%20Click%20|%20Daemonocle%20|%20PyCryptodome-blue)](http://github.com/anubhav-narayan/PKNS)\
This is the Public Key Name System Framework designed as a Public Key Exchange for both centralised and peer-to-peer services. It comes pre-built with useful and powerful CLI tools.
## Installation
### From source
To install from source use the following command, make sure you have `setuptools>=50.0.0`
```bash
python3 seutp.py install
```
To install from PyPI
```bash
pip3 install pkns
```
## Using the `PKNS_Table` API
The `PKNS_Table` API is the core for the PKNS Local Services found in the `pknscore`
```python
from pkns.pknscore import PKNS_Table
new_table = PKNS_Table(PATH_TO_A_TABLE_DIR)
```
`PATH_TO_A_TABLE` can be a path to an existing table directory or a new table directory, defaults to `~/.pkns`.
The API provides all basic table operations.
## Using the `PKNS_Server` API
The `PKNS_Server` API is the core of PKNS Network Services found in the `pknscore`. It provides the correct server handling and configuration for a hosted PKNS Services. The PKNS service runs on the default port `6300` . It is capable to handle multiple clients and process multiple requests and can be safely daemonized.
```python
from pkns.pknscore import PKNS_Server
server = PKNS_Server(IP_ADDR, PORT, PATH_TO_A_TABLE_DIR)
```
`IP_ADDR` is the IP Address to use for the server, defaults to `0.0.0.0`, `PORT` is the port to be used for the server, defaults to `6300`, `PATH_TO_A_TABLE` can be a path to an existing table directory or a new table directory, defaults to `~/.pkns`.
## Query Syntax
PKNS Query is used for better integration of centralised servers. The query follows a fixed Syntax
```
pkns://HOST_SERVER[:PORT][/PEERGROUP][/USER]
```
## CLI Tools
CLI Tools help manage the PKNS Tables and Servers easily, they also include useful functions.
### Local Table Manager `tabman`
Managing Local Tables
```bash
$ pkns tabman
Usage: pkns tabman [OPTIONS] COMMAND [ARGS]...PKNS Table Manager
Options:
--help Show this message and exit.Commands:
add-peergroup Add/Create a Peergroup
add-user Add Users to a Peergroup
del-peergroup Delete/Leave a Peergroup
del-user Remove Users from a Peergroup
get-peergroup Get Info of a Peergroup
get-user Get Users Info from a Peergroup
rename-peergroup Rename a Peergroup
rename-user Rename a User from a Peergroup```
### Server Manager `server`
Server Utilities
```bash
$ pkns server
Usage: pkns server [OPTIONS] COMMAND [ARGS]...PKNS Server Manager
Options:
-i, --host TEXT IP Address to bind [default: 0.0.0.0]
-p, --port INTEGER Port to bind [default: 6300]
--help Show this message and exit.Commands:
restart Restart PKNS Server
start Start the PKNS Server
status PKNS Server Status
stop Stop the PKNS Server```
### Other utilities
#### Ping
Ping a Local or Remote Server
```bash
$ pkns ping --help
Usage: pkns ping [OPTIONS] [ADDRESS]PKNS Ping
Options:
-n, --nop INTEGER Number of Pings to send
--help Show this message and exit.```
#### Query
Query Local or Remote Server
```bash
$ pkns query --help
Usage: pkns query [OPTIONS] QUERYPKNS Query
Options:
--help Show this message and exit.
```
#### Sync
Sync to Local or Remote Server
```bash
$ pkns sync --help
Usage: pkns sync [OPTIONS] [ADDRESS]PKNS Sync
Options:
--help Show this message and exit.
```