A SIP(Session Initiation Protocol) Application Framework
Project description
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
]
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
Katari-0.0.9.tar.gz
(10.5 kB
view details)
Built Distribution
Katari-0.0.9-py3-none-any.whl
(16.5 kB
view details)
File details
Details for the file Katari-0.0.9.tar.gz
.
File metadata
- Download URL: Katari-0.0.9.tar.gz
- Upload date:
- Size: 10.5 kB
- Tags: Source
- Uploaded using 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
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b483ae8affbae43c2b168231238b3d1736bbe16a873a255102d9e0824c6cebcf |
|
MD5 | 26f1c36a66d9365d40c5714128e96a49 |
|
BLAKE2b-256 | ae6d52c222aab32317e8e6ed054120f9f98d161c21946e67c74593fb767b654a |
File details
Details for the file Katari-0.0.9-py3-none-any.whl
.
File metadata
- Download URL: Katari-0.0.9-py3-none-any.whl
- Upload date:
- Size: 16.5 kB
- Tags: Python 3
- Uploaded using 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
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a3fd1ad4cf4731ad6d65331e46ed0a870e7130118a19b1229c8788a75ec688d0 |
|
MD5 | 2b545ff463a4c617237b29d8c7f7a277 |
|
BLAKE2b-256 | 7c28b9b8b079c610ed502156a5a85f7603ac792a84feeda189c02aa5e72b7051 |