Skip to main content

High power secure server with blockchain backend.

Project description

PyvServer

Python fully encrypted TCP/IP server

    PyvServ is a fully fledged encrypting TCP/IP server written in Python. The encryption algorithm is AES. The server can be fully administered from the protocol side.

    PyvServ contains protocol level encryption, which can be switched on by instructing the server to use an encryption (session) key.

    PyvServ contains a key exchange protocol, so the new session keys can be transmitted securely. The key exchange is based on ECC.

PyvServ has utilities to generate encryption keys. At least one key needs to be generated before use. (now automatic) The server picks from a pool of keys, so communication data is always distinctive. Make sure you generate them with the 'pyvgenkeys' utility.

PyvServ has blockchain enpowered back end. The new data is linked to the previous record. Utilities to verify the data are also provided. (dbaseadm and chainadm)

PyvServ has file upload / download capabilities with encrypted transport.

PyvServ has replication facilities via a client based 'I have You have' mechanism featuring encrypted transport. It is also capable of replication on a replicate when received mechanism. The replicted records are marked, so replication does not enter looping.

Project is still in motion, but a lot of it is usable.

Installation:

pip install pyvserv

Dependencies:

Most linux system have all the dependencies by default. Some dependencies are added automatically on installation.

 pydbase, pyvpacker, pyvecc

The firewall needs to be opened for incoming connections on port xxxx

For example (assuming port 6666):

sudo iptables -A INPUT -p tcp --dport 6666
sudo iptables -A INPUT -p tcp --sport 6666

Working parts:

Server.     subdir: pyvserver       -- Server has 90% of the commands done
Client.     subdir: pyvclient       -- 90% the commands
Tool Suite. subdir: pyvtools        -- Key generation etc ...
Test Suite. subdir: pyvclient/tests -- Test pass
Studies.    subdir: study           -- testing/learning subsystems (ignore it)

Quick start:

One can mimic global connectivity on a single machine. This would allow the study of the client / server interaction before live deployment. This chapter assumes installation from github, replicating directory structure on the local drive.

open terminal window
navigate to the server's pyvserver subdir
type ./pyvserv.py

open another terminal window
navigate to the pyvclient subdir
type ./pycli_hello.py

The following (and more) should be printed on command line:

./pycli_hello.py
Server initial: ['OK', 'pyvserv 1.0 ready']
resp ['OK', 'Hello', '6ccdaaf1-a22d-4140-9608-8fb93a8845af', '11812']
Server quit response: ['OK', 'Bye', '11812']

Quick rundown of the above test: 1.) Server responds to connection 2.) Delivers OK status, hello message, server serial number, unique id 3.) Server signs off. This interaction is typical of all the commands.

The best way to learn about the operation of the server is to look at the sample client examples in the client source tree. (Files named pycli_*)

Testing:

All pytest cases pass. Note that the for the pytest client tests one needs to start the 'pyvserv.py' server. The server --port and --dataroot option can ba used to start the server in an alternate universe. Please make sure it does not interfere with production.

More test coming soon ....

============================= test session starts ==============================
platform linux -- Python 3.10.12, pytest-7.4.3, pluggy-1.0.0
rootdir: /home/peterglen/pgpygtk/pyvserv
collected 9 items

test_afirst.py .                                                         [ 11%]
test_file.py .                                                           [ 22%]
test_help.py .                                                           [ 33%]
test_id.py .                                                             [ 44%]
test_key.py .                                                            [ 55%]
test_login.py .                                                          [ 66%]
test_sess.py ..                                                          [ 88%]
test_ver.py .                                                            [100%]

============================== 9 passed in 1.35s ===============================

Additional tests can ve found in the test directory.

History:

1.0.0.  4/12/22		       No py2 support (no release yet)
1.0.0   Sun 03.Mar.2024    Beta ready
1.0.0   Mon 11.Mar.2024    PIP installation with utils

Written by Peter Glen

// EOF

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyvserv-1.0.0.tar.gz (71.2 kB view details)

Uploaded Source

Built Distribution

pyvserv-1.0.0-py3-none-any.whl (131.8 kB view details)

Uploaded Python 3

File details

Details for the file pyvserv-1.0.0.tar.gz.

File metadata

  • Download URL: pyvserv-1.0.0.tar.gz
  • Upload date:
  • Size: 71.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 colorama/0.4.4 importlib-metadata/4.6.4 keyring/23.5.0 pkginfo/1.8.2 readme-renderer/34.0 requests-toolbelt/0.9.1 requests/2.28.2 rfc3986/1.5.0 tqdm/4.64.1 urllib3/1.26.5 CPython/3.10.12

File hashes

Hashes for pyvserv-1.0.0.tar.gz
Algorithm Hash digest
SHA256 4c5692be3f6e51f740d1b85c8e93869b55f83fed17294c3fa21279b40d2f45c1
MD5 aa972f9171e0eb5b1c63ac1cd5fd6956
BLAKE2b-256 fe57ccbd5ec95ff9c21ae0a25c23f15352255a776909f7300b19ba83e98e9a3a

See more details on using hashes here.

File details

Details for the file pyvserv-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: pyvserv-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 131.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 colorama/0.4.4 importlib-metadata/4.6.4 keyring/23.5.0 pkginfo/1.8.2 readme-renderer/34.0 requests-toolbelt/0.9.1 requests/2.28.2 rfc3986/1.5.0 tqdm/4.64.1 urllib3/1.26.5 CPython/3.10.12

File hashes

Hashes for pyvserv-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2297b1615b8d993666281f5a2a9c7e98d8f4daecc2e67852ab3d3c02ab96fdcf
MD5 3a00bc011acebaad699940363d7a6ecc
BLAKE2b-256 92c295d618155d627773e103d8feaa694af15ffd99579d55bb8c814cf2da0802

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page