kontor package
Project description
kontor
kontor is a client-server bundle that is designed to execute pre-defined procedures on server by request of authorized client.
Currently kontor is in pre-alpha stage, providing no secure way of transferring the files.
Installation
kontor can be installed or upgraded by simply calling pip command:
pip install kontor --upgrade
Requirements & dependencies
Minimum Python version supported is 3.7.
kontor relies on one external package called dacite.
Configuration
Enabling SSL connection
Linux (Ubuntu)
- Install ca-certificates application, if needed:
sudo apt-get install -y ca-certificates
- Generate a Certificate Authority (CA):
openssl genrsa -out kontor.key 2048
- Self-sign the newly created Certificate Authority (CA):
openssl req -x509 -new -nodes -key kontor.key -sha256 -days 365 -out kontor.crt
- Copy newly generated certificate to local certificate folder:
sudo cp kontor.crt /usr/local/share/ca-certificates
- Update current list of used certificates:
sudo update-ca-certificates
- Add
kontor.crtandkontor.keyto server configuration withforced_ssl_usageset totrue:
...
"forced_ssl_usage": true,
"certificate_path" : "kontor.crt",
"certificate_key_path" : "kontor.key",
...
Examples
Bureau
Windows
It is possible to run Bureau as service on Windows by using WinSW v3 as bundled tool.
- Create a new folder, e.g.
C:\kontor - Download WinSW executable of suitable version
- Put it to
C:\kontorfolder - Rename it to
kontor.exe - Create a
kontor.xmlconfiguration file and add following text there:
<service>
<id>kontor</id>
<name>kontor</name>
<description>This service runs kontor as Windows service.</description>
<executable>python</executable>
<arguments>start_server.py</arguments>
<log mode="none" />
<onfailure action="restart" />
</service>
- Create a
start_server.pyfile and add following text there (this file is also present inexamples/serverrepo folder):
#!/usr/bin/env python
import logging
import os
import signal
import sys
from kontor.bureau import Bureau
def shutdown_signal_handler(sig, frame):
logging.critical("Caught SIGINT signal, bureau will be shut down.")
sys.exit(0)
if __name__ == "__main__":
#
# Catch Ctrl+C signal for notifying about bureau shutdown.
#
signal.signal(signal.SIGINT, shutdown_signal_handler)
bureau = Bureau(os.path.dirname(os.path.realpath(__file__)))
bureau.start()
- Install kontor as a service by calling following command in CMD:
kontor install
- Create
server_configuration.jsonfile next tostart_server.py. Example configuration may look like following:
{
"ip_address": "localhost",
"port": 5690,
"chunk_size_kilobytes": 256,
"client_idle_timeout_seconds": 30,
"max_storage_period_hours": 0,
"max_parallel_connections": 100,
"max_consequent_client_procedures": 1,
"max_grace_shutdown_timeout_seconds": 30,
"forced_ssl_usage": false,
"certificate_path" : "~/test_certificate.cer",
"certificate_key_path" : "~/test_certificate.key",
"procedures": {
"test_procedure": {
"name": "test_procedure",
"operation": "echo \"this is a test procedure\"",
"error_codes": [
1
],
"max_repeats_if_failed": 3,
"time_seconds_between_repeats": 10
}
}
}
- Start service by calling the command:
kontor start
- WinSW CLI instruction has a lot more of useful commands that can be applied. Most useful though would be following:
kontor stop
kontor restart
kontor uninstall
Bureau-applicant interaction flowchart
Click to show the flowchart (it is pretty long)
sequenceDiagram
participant Client
participant Server
loop
Server->>Server: waiting for incoming requests
end
Client->>Server: requesting auth
activate Server
loop
Client->>Client: waiting for the response
end
break when the auth fails
Server-->>Client: show failure
end
Server-->>Client: auth success
deactivate Server
Client->>Server: requesting procedure for file
activate Server
loop
Client->>Client: waiting for the response
end
break when the procedure check fails
Server-->>Client: declining procedure
end
Server-->>Client: accepting procedure
deactivate Server
Client->>Server: sending file
activate Server
break when the file transmission fails
Server-->>Client: show failure
end
Server-->>Client: file receiving receipt
loop
Server->>Server: processing file
end
Server->>Client: requesting result file receiving
activate Client
Client->>Server: accepting result file receiving
deactivate Client
Server->>Client: sending result file
deactivate Server
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 kontor-1.0.0.tar.gz.
File metadata
- Download URL: kontor-1.0.0.tar.gz
- Upload date:
- Size: 19.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3370574764a8cbc24237f1d8065aaedb0f7556f309b388726a57e2c253e77f77
|
|
| MD5 |
d5fdefb9d39c59f118f396669bac5950
|
|
| BLAKE2b-256 |
78b6a4ef515794cfbfd2e445aa8591861090f8c65d2f4fa63b908ecc70acfc39
|
File details
Details for the file kontor-1.0.0-py2.py3-none-any.whl.
File metadata
- Download URL: kontor-1.0.0-py2.py3-none-any.whl
- Upload date:
- Size: 19.3 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
91572889b2005a82ca8490dce539bbddf391ea76b63cf085054cca397214be40
|
|
| MD5 |
9b1fb672cd9b627ad1ee326ce3108d56
|
|
| BLAKE2b-256 |
0c4bfca48d2ab343aabb129cea9b8da8fb44cd25485d2ccf3d36d16c5b36a87c
|