{"id":18993852,"url":"https://github.com/televiska/viska","last_synced_at":"2025-04-22T12:46:34.164Z","repository":{"id":42521413,"uuid":"278127185","full_name":"Televiska/viska","owner":"Televiska","description":"SIP framework built in Rust","archived":false,"fork":false,"pushed_at":"2022-04-04T18:33:37.000Z","size":638,"stargazers_count":91,"open_issues_count":6,"forks_count":10,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-04-15T10:57:59.692Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Televiska.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-07-08T15:30:54.000Z","updated_at":"2025-04-10T10:22:14.000Z","dependencies_parsed_at":"2022-09-24T14:01:39.436Z","dependency_job_id":null,"html_url":"https://github.com/Televiska/viska","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Televiska%2Fviska","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Televiska%2Fviska/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Televiska%2Fviska/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Televiska%2Fviska/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Televiska","download_url":"https://codeload.github.com/Televiska/viska/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250243248,"owners_count":21398308,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-08T17:23:15.570Z","updated_at":"2025-04-22T12:46:34.062Z","avatar_url":"https://github.com/Televiska.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Viska\nA SIP server/framework built in Rust.\n\n**This is a wip, many things will change until it takes the final shape**\n\n## Why\n* because building a customized modern SIP service on top of kamailio/asterisk/opensips\nas a developer is not intuitive.\n* because although there are some other servers like [routr](https://github.com/fonoster/routr), but these are not\nmade with development in mind, rather they have configuration that you can change.\nFor instance you can't manipulate incoming or outgoing requests/responses.\n* because although there is [nksip](https://github.com/NetComposer/nksip)\nit requires you to not only understand how [nkserver](https://github.com/NetComposer/nkserver)\nworks but also Erlang and OTP in general\n* because the only real alternative is [pjsip](https://www.pjsip.org/)\nand if you are looking to build a SIP service you should probably look into that.\n\nHaving worked many years on HTTP frameworks, I really think that we can do\nsomething better in SIP.\n\n## How\nIt is built in Rust because that's a low lever, thread safe, performant language\nthat I know well. It's built based on traits+generics, so that anything can be\noverriden at your will.\n\nThe idea is to create a small framework around the basic SIP layers, and then\ncreate libraries and implementations based on public traits for each SIP\nextension or service that is needed (like Registrar, Auth, Push notifications\n(RFC 8599) etc)\n\n## Progress\n- [x] SIP general purpose library/parser with types\n- [ ] SDP general purpose library/parser with type\n- [x] Transport layer\n  - [x] Udp transport\n  - [ ] Tcp transport\n  - [ ] WS transport\n- [x] Transaction layer\n  - [x] Invite transaction + impl\n  - [ ] Non Invite transaction + impl\n- [x] TU layer trait\n  - [x] Registrar\n  - [x] Capabilities\n  - [x] Authentication\n  - [ ] Dialogs\n  - [ ] Sessions\n    - [ ] Initiate a session\n    - [ ] Modify a session\n    - [ ] Terminating a session\n  - [ ] Proxy behavior\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fteleviska%2Fviska","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fteleviska%2Fviska","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fteleviska%2Fviska/lists"}