Unverified Commit cdab43d4 authored by Matthias Wimmer's avatar Matthias Wimmer
Browse files

kamailio: init at 5.7.1

Created new package 'kamailio' which is a SIP server, that is able to
handle thousands of call setups per second. It can be used to build
large platforms for VoIP and realtime communictions - presence, WebRTC,
Instant messaging and other applications.

Closes #169350
parent b14d1e3c
Loading
Loading
Loading
Loading
+76 −0
Original line number Diff line number Diff line
{ callPackage
, fetchurl
, lib
, pkgs
, stdenv
}:

stdenv.mkDerivation (finalAttrs: {
  pname = "kamailio";
  version = "5.7.1";

  meta = {
    description = "Fast and flexible SIP server, proxy, SBC, and load balancer";
    homepage = "https://www.kamailio.org/";
    license = lib.licenses.gpl2Only;
    maintainers = with lib.maintainers; [ mawis ];
    platforms = lib.platforms.linux;
  };

  src = fetchurl {
    url = "https://www.kamailio.org/pub/kamailio/5.7.1/src/kamailio-${finalAttrs.version}_src.tar.gz";
    hash = "sha256-TkrAj5ohwzJ959UvXNwaMmcIwTRowUitP9/UNQ8D1zw=";
  };

  buildInputs = with pkgs; [
    bison
    flex
    gnugrep
    json_c.dev
    libevent.dev
    libxml2.dev
    mariadb-connector-c.dev
    pcre.dev
  ];

  nativeBuildInputs = with pkgs; [
    pkg-config
    which
  ];

  configurePhase = ''
    runHook preConfigure

    make PREFIX="$out" include_modules="db_mysql dialplan jsonrpcc json lcr presence presence_conference presence_dialoginfo presence_mwi presence_profile presence_reginfo presence_xml pua pua_bla pua_dialoginfo pua_json pua_reginfo pua_rpc pua_usrloc pua_xmpp regex rls xcap_client xcap_server" cfg

    runHook postConfigure
  '';

  buildPhase = ''
    runHook preBuild

    make MYSQLCFG=${pkgs.mariadb-connector-c.dev}/bin/mariadb_config all

    runHook postBuild
  '';

  installPhase = ''
    runHook preInstall

    make MYSQLCFG=${pkgs.mariadb-connector-c.dev}/bin/mariadb_config install
    echo 'MD5="${pkgs.coreutils}/bin/md5sum"' >> $out/etc/kamailio/kamctlrc
    echo 'AWK="${pkgs.gawk}/bin/awk"' >> $out/etc/kamailio/kamctlrc
    echo 'GDB="${pkgs.gdb}/bin/gdb"' >> $out/etc/kamailio/kamctlrc
    echo 'GREP="${pkgs.gnugrep}/bin/grep "' >> $out/etc/kamailio/kamctlrc
    echo 'EGREP="${pkgs.gnugrep}/bin/grep -E"' >> $out/etc/kamailio/kamctlrc
    echo 'SED="${pkgs.gnused}/bin/sed"' >> $out/etc/kamailio/kamctlrc
    echo 'LAST_LINE="${pkgs.coreutils}/bin/tail -n 1"' >> $out/etc/kamailio/kamctlrc
    echo 'EXPR="${pkgs.gnugrep}/bin/expr"' >> $out/etc/kamailio/kamctlrc

    runHook postInstall
  '';

  passthru.tests = {
    kamailio-bin = callPackage ./test-kamailio-bin {};
  };
})
+24 −0
Original line number Diff line number Diff line
{ stdenv, kamailio }:

stdenv.mkDerivation {
  name = "kamailio-bin-test";
  meta.timeout = 60;
  src = ./.;

  dontInstall = true;

  buildPhase = ''
    mkdir $out

    ${kamailio}/bin/kamailio -v > $out/kamailio-stdout
    ${kamailio}/bin/kamcmd -h > $out/kamcmd-stdout
    (${kamailio}/bin/kamctl help || exit 0) > $out/kamctl-stdout
  '';

  doCheck = true;
  checkPhase = ''
    grep -q "version: kamailio" $out/kamailio-stdout || (echo "ERROR: kamailio cannot be run"; exit 1)
    grep -q "version: kamcmd" $out/kamcmd-stdout || (echo "ERROR: kamcmd cannot be run"; exit 1)
    grep -q "add a new subscriber" $out/kamctl-stdout || (echo "ERROR: kamctl cannot be run"; exit 1)
  '';
}
+2 −0
Original line number Diff line number Diff line
@@ -25926,6 +25926,8 @@ with pkgs;
  jitsi-videobridge = callPackage ../servers/jitsi-videobridge { };
  kamailio = callPackage ../servers/sip/kamailio { };
  kanidm = callPackage ../servers/kanidm { };
  kapowbang = callPackage ../servers/kapowbang { };