Skip to main content

A SIP(Session Initiation Protocol) Application Framework

Project description

alt text

Katari - SIP (Session Initiated Protocol) Application Framework

PyPI pyversions PyPI version shields.io PyPI license PyPI version shields.io

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)

Uploaded Source

Built Distribution

Katari-0.0.9-py3-none-any.whl (16.5 kB view details)

Uploaded Python 3

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

Hashes for Katari-0.0.9.tar.gz
Algorithm Hash digest
SHA256 b483ae8affbae43c2b168231238b3d1736bbe16a873a255102d9e0824c6cebcf
MD5 26f1c36a66d9365d40c5714128e96a49
BLAKE2b-256 ae6d52c222aab32317e8e6ed054120f9f98d161c21946e67c74593fb767b654a

See more details on using hashes here.

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

Hashes for Katari-0.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 a3fd1ad4cf4731ad6d65331e46ed0a870e7130118a19b1229c8788a75ec688d0
MD5 2b545ff463a4c617237b29d8c7f7a277
BLAKE2b-256 7c28b9b8b079c610ed502156a5a85f7603ac792a84feeda189c02aa5e72b7051

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