;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 John Darrington ;;; Copyright © 2015 Andreas Enge ;;; Copyright © 2015 David Hashe ;;; Copyright © 2015 Efraim Flashner ;;; Copyright © 2016 Lukas Gradl ;;; ;;; This file is part of GNU Guix. ;;; ;;; GNU Guix is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 3 of the License, or (at ;;; your option) any later version. ;;; ;;; GNU Guix is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with GNU Guix. If not, see . (define-module (gnu packages telephony) #:use-module (gnu packages) #:use-module (gnu packages autotools) #:use-module (gnu packages gnupg) #:use-module (gnu packages linux) #:use-module (gnu packages pkg-config) #:use-module (gnu packages tls) #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu)) (define-public commoncpp (package (name "commoncpp") (version "1.8.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/" name "/commoncpp2-" version ".tar.gz")) (sha256 (base32 "0kmgr5w3b1qwzxnsnw94q6rqs0hr8nbv9clf07ca2a2fyypx9kjk")))) (arguments `(#:phases (alist-cons-before 'configure 'pre-configure (lambda _ (substitute* "src/applog.cpp" (("^// TODO sc.*") "#include \n#include \n"))) %standard-phases))) (build-system gnu-build-system) (synopsis "(u)Common C++ framework for threaded applications") (description "GNU Common C++ is an portable, optimized class framework for threaded applications, supporting concurrent synchronization, inter-process communications via sockets, and various methods for data handling, such as serialization and XML parsing. It includes the uCommon C++ library, a smaller reimplementation.") (license gpl2+) ; plus runtime exception (home-page "http://www.gnu.org/software/commoncpp"))) (define-public ucommon (package (name "ucommon") (version "7.0.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/commoncpp/" name "-" version ".tar.gz")) (sha256 (base32 "1mv080rvrhyxyhgqiqr8r9jdqhg3xhfawjvfj5zgj47h59nggjba")))) (build-system gnu-build-system) (inputs `(("gnutls" ,gnutls))) (synopsis "Common C++ framework for threaded applications") (description "GNU uCommon C++ is meant as a very light-weight C++ library to facilitate using C++ design patterns even for very deeply embedded applications, such as for systems using uclibc along with posix threading support.") (license gpl3+) (home-page "http://www.gnu.org/software/commoncpp") (properties '((ftp-directory . "/gnu/commoncpp"))))) (define-public ccrtp (package (name "ccrtp") (version "2.1.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/ccrtp/ccrtp-" version ".tar.gz")) (sha256 (base32 "17ili8l7zqbbkzr1rcy4hlnazkf50mds41wg6n7bfdsx3c7cldgh")))) (build-system gnu-build-system) (inputs `(("ucommon" ,ucommon) ("libgcrypt" ,libgcrypt))) (native-inputs `(("pkg-config" ,pkg-config))) (synopsis "Implementation of RTP (real-time transport protocol)") (description "GNU ccRTP is an implementation of RTP, the real-time transport protocol from the IETF. It is suitable both for high capacity servers and personal client applications. It is flexible in its design, allowing it to function as a framework for the framework, rather than just being a packet-manipulation library.") (license gpl2+) ; plus runtime exception (home-page "http://www.gnu.org/software/ccrtp"))) (define-public osip (package (name "osip") (version "4.1.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/osip/libosip2-" version ".tar.gz")) (sha256 (base32 "014503kqv7z63az6lgxr5fbajlrqylm5c4kgbf8p3a0n6cva0slr")))) (build-system gnu-build-system) (synopsis "Library implementing SIP (RFC-3261)") (description "GNU oSIP is an implementation of the SIP protocol. It is used to provide multimedia and telecom software developers with an interface to initiate and control SIP sessions.") (license lgpl2.1+) (home-page "http://www.gnu.org/software/osip"))) (define-public exosip (package (name "exosip") (version "4.1.0") (source (origin (method url-fetch) (uri (string-append "http://download.savannah.gnu.org/releases/exosip/libeXosip2-" version ".tar.gz")) (sha256 (base32 "17cna8kpc8nk1si419vgr6r42k2lda0rdk50vlxrw8rzg0xp2xrw")))) (build-system gnu-build-system) (inputs `(("osip" ,osip))) (synopsis "Sip abstraction library") (description "EXosip is a library that hides the complexity of using the SIP protocol for multimedia session establishment. This protocol is mainly to be used by VoIP telephony applications (endpoints or conference server) but might be also useful for any application that wish to establish sessions like multiplayer games.") (license gpl2+) ;; (plus OpenSSL linking exception) ;; http://git.savannah.gnu.org/cgit/exosip.git/plain/LICENSE.OpenSSL (home-page "http://savannah.nongnu.org/projects/exosip"))) (define-public sipwitch (package (name "sipwitch") (version "1.9.15") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/sipwitch/sipwitch-" version ".tar.gz")) (sha256 (base32 "10lli9c703d7qbarzc0lgmz963ppncvnrklwrnri0s1zcmmahyia")))) (build-system gnu-build-system) ;; The configure.ac uses pkg-config but in a kludgy way which breaks when ;; cross-compiling. Among other issues there the program name "pkg-config" ;; is hard coded instead of respecting the PKG_CONFIG environment variable. ;; Fortunately we can avoid the use of pkg-config and set the dependency ;; flags ourselves. (arguments `(#:configure-flags `("--without-pkg-config" ,(string-append "UCOMMON_CFLAGS=-I" (assoc-ref %build-inputs "ucommon") "/include") "UCOMMON_LIBS=-lusecure -lucommon -lrt -ldl -lpthread" ,(string-append "LIBOSIP2_CFLAGS=-I" (assoc-ref %build-inputs "osip") "/include") "LIBOSIP2_LIBS=-losipparser2 -losip2" ,(string-append "--sysconfdir=" (assoc-ref %outputs "out") "/etc") "EXOSIP2_LIBS=-leXosip2" ,(string-append "EXOSIP2_CFLAGS=-I" (assoc-ref %build-inputs "exosip") "/include")))) (inputs `(("ucommon" ,ucommon) ("exosip" ,exosip) ("osip" ,osip))) (synopsis "Secure peer-to-peer VoIP server for the SIP protocol") (description "GNU SIP Witch is a peer-to-peer Voice-over-IP server that uses the SIP protocol. Calls can be made from behind NAT firewalls and without the need for a service provider. Its peer-to-peer design ensures that there is no central point for media intercept or capture and thus it can be used to construct a secure telephone system that operates over the public internet.") (license gpl3+) (home-page "http://www.gnu.org/software/sipwitch"))) (define-public libsrtp (package (name "libsrtp") (version "1.5.4") (source (origin (method url-fetch) (uri (string-append "https://github.com/cisco/libsrtp/archive/v" version ".tar.gz")) (sha256 (base32 "1w2g623qkd7gdyydglx2hr4s2y237lg0nszjmy7z8d2iq8hvb9sn")))) (native-inputs `(("procps" ,procps))) (build-system gnu-build-system) (arguments `(#:test-target "runtest")) (synopsis "Secure RTP (SRTP) Reference Implementation") (description "This package provides an implementation of the Secure Real-time Transport Protocol (SRTP), the Universal Security Transform (UST), and a supporting cryptographic kernel.") (home-page "https://github.com/cisco/libsrtp") (license bsd-3))) (define-public libiax (let ((commit "0e5980f1d78ce462e2d1ed6bc39ff35c8341f201")) ;; This is the commit used by the Ring Project. (package (name "libiax") (version (string-append "0.0.0-1." (string-take commit 7))) (source (origin (method url-fetch) (uri (string-append "https://gitlab.savoirfairelinux.com/sflphone/libiax2/" "repository/archive.tar.gz?ref=" commit)) (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 "0cj5293bixp3k5x3hjwyd0iq7z8w5p7yavxvvkqk5817hjq386y2")))) (build-system gnu-build-system) (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake) ("libtool" ,libtool))) (arguments `(#:phases (modify-phases %standard-phases (add-before 'configure 'autoconf (lambda _ (zero? (system* "autoreconf" "-vfi"))))))) (home-page "https://gitlab.savoirfairelinux.com/sflphone/libiax2") (synopsis "Inter-Asterisk-Protocol library") (description "LibIAX implements the Inter-Asterisk-Protocol for relaying Voice-over-IP (VoIP) communications.") (license lgpl2.0))))