Katari - SIP (Session Initiated Protocol) Application Framework
Documentation
https://katari.readthedocs.io/en/latest/
Installing
pip install Katari
Installing from Git
pip install git+https://github.com/hyperioxx/Katari.git
Getting Started
to create a katari project run the following command in your terminal
katari --build-app <project name>
app.py
import settings
from Katari import KatariApplication
from Katari.sip.response import ResponseFactory
app = KatariApplication(settings=settings)
@app.invite()
def do_invite(request, client):
# add INVITE logic here
response = ResponseFactory.build(200) # 200 OK
app.send(request.create_response(response), client)
@app.register()
def do_register(request, client):
# add REGISTER logic here
response = ResponseFactory.build(401) # 401 unauthorized
app.send(request.create_response(OK200()), client)
@app.options()
def do_options(request, client):
# add OPTIONS logic here
response = ResponseFactory.build(200) # 200 OK
app.send(request.create_response(response), client)
@app.info()
def do_info(request, client):
# add INFO logic here
response = ResponseFactory.build(200) # 200 OK
app.send(request.create_response(response), client)
if __name__ == "__main__":
app.run()
Writing your own middleware
create a directory called middleware within your project
myproject -
- app.py
- settings.py
- middleware << LIKE THIS
- __init__.py
- test.py
your middleware can modify the sip message before it reaches your main logic using the process_request method and also modify the response before it gets sent back to the client using process response method.
Example
test.py
from Katari.interfaces import MiddlewareInterface
class Test(MiddlewareInterface):
def process_request(self, message):
print(str(message))
return message
def process_response(self, message):
print(str(message))
return message
settings.py
"""
## ## ### ######## ### ######## ####
## ## ## ## ## ## ## ## ## ##
## ## ## ## ## ## ## ## ## ##
##### ## ## ## ## ## ######## ##
## ## ######### ## ######### ## ## ##
## ## ## ## ## ## ## ## ## ##
## ## ## ## ## ## ## ## ## ####
SIP (Session Initiated Protocol) Application Framework
"""
HOST = "127.0.0.1" #Specify interface to listen on
PORT = 5060 # Specify port to listen on
ALLOWED_HOSTS = ["127.0.0.1"] # Katari whitelist
USER_AGENT = "Katari Server 0.0.6" # User Agent sent in response
# Logging settings
KATARI_LOGGING = {
"LOGFILE" :"Katari.log",
"LEVEL": "INFO",
"OUTPUTMODE": "file"
}
# Katari middleware
KATARI_MIDDLEWARE = [
'middleware.test', # Add import path here
]
Metadata
Release files for Katari 0.0.9
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| Katari-0.0.9.tar.gz | 10.5 kB | Without provenance | Details for Katari-0.0.9.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| Katari-0.0.9-py3-none-any.whl | Python 3 | none | any | Details for Katari-0.0.9-py3-none-any.whl |
Total release size: 27.0 kB
Release files / Katari-0.0.9.tar.gz
| Download URL | Katari-0.0.9.tar.gz |
|---|---|
| Size | 10.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b483ae8affbae43c2b168231238b3d1736bbe16a873a255102d9e0824c6cebcf
|
|
BLAKE2b-256 checksum How to use checksums |
ae6d52c222aab32317e8e6ed054120f9f98d161c21946e67c74593fb767b654a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.39.0 CPython/3.8.0
|
Release files / Katari-0.0.9-py3-none-any.whl
| Download URL | Katari-0.0.9-py3-none-any.whl |
|---|---|
| Size | 16.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a3fd1ad4cf4731ad6d65331e46ed0a870e7130118a19b1229c8788a75ec688d0
|
|
BLAKE2b-256 checksum How to use checksums |
7c28b9b8b079c610ed502156a5a85f7603ac792a84feeda189c02aa5e72b7051
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.39.0 CPython/3.8.0
|
Security for Katari 0.0.9
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.