60.sh 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. #!/bin/sh
  2. # checks sdpops module function remove_line_by_prefix()
  3. #
  4. # Copyright (C) 2016 [email protected]
  5. #
  6. # This file is part of Kamailio, a free SIP server.
  7. #
  8. # Permission to use, copy, modify, and distribute this software for any
  9. # purpose with or without fee is hereby granted, provided that the above
  10. # copyright notice and this permission notice appear in all copies.
  11. #
  12. # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  13. # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  14. # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  15. # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  16. # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  17. # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  18. # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  19. . include/common
  20. . include/require.sh
  21. CFGFILE=60.cfg
  22. TMPFILE=$(mktemp -t kamailio-test.XXXXXXXXXX)
  23. SIPSAKOPTS="-H localhost -s sip:127.0.0.1 -v"
  24. if ! (check_sipsak && check_kamailio && check_module "sdpops"); then
  25. exit 0
  26. fi
  27. ${BIN} -L $MOD_DIR -Y $RUN_DIR -P $PIDFILE -w . -f ${CFGFILE} > /dev/null
  28. ret=$?
  29. sleep 1
  30. if [ "${ret}" -ne 0 ] ; then
  31. echo "start fail"
  32. kill_kamailio
  33. exit ${ret}
  34. fi
  35. # Borken SDP should give 500 response
  36. FILE="60-message-sdp0.sip"
  37. sipsak ${SIPSAKOPTS} -f ${FILE} > ${TMPFILE}
  38. ret=$?
  39. if [ "${ret}" -eq 1 ] ; then
  40. ret=0
  41. else
  42. echo "invalid SDP not rejected"
  43. ret=1
  44. exit ${ret}
  45. fi
  46. # Kamailio replies back with modified SDP
  47. for i in 1 2 3 4 5 6 7; do
  48. FILE="60-message-sdp${i}.sip"
  49. TOTALBEFORE=$(awk '/^v=0/,/^$/ {total++; if ($0 ~ /^a=X-cap/ ) { prefix++;} else { other++} } END {if (prefix) {print other " + " prefix} else { print other " + 0"} }' ${FILE})
  50. OTHERBEFORE=$(echo ${TOTALBEFORE}|cut -d+ -f1)
  51. sipsak ${SIPSAKOPTS} -f ${FILE} > ${TMPFILE}
  52. ret=$?
  53. if [ "${ret}" -eq 0 ] ; then
  54. TOTALAFTER=$(awk '/^v=0/,/^$/ {total++; if ($0 ~ /^a=X-cap/ ) { prefix++;} else { other++} } END {if (prefix) {print other " + " prefix} else { print other " + 0"} }' ${TMPFILE})
  55. OTHERAFTER=$(echo ${TOTALBEFORE}|cut -d+ -f1)
  56. PREFIXAFTER=$(echo ${TOTALAFTER}|cut -d+ -f2)
  57. if [ ${PREFIXAFTER} -eq 0 ] && [ ${OTHERBEFORE} -eq ${OTHERAFTER} ]; then
  58. ret=0
  59. else
  60. ret=1
  61. echo "found ${PREFIXAFTER} lines that should be deleted (${FILE})"
  62. fi
  63. else
  64. echo "invalid sipsak return: ${ret}"
  65. fi
  66. done
  67. # Empty body should get 500 response
  68. FILE="60-message-sdp8.sip"
  69. sipsak ${SIPSAKOPTS} -f ${FILE} > ${TMPFILE}
  70. ret=$?
  71. if [ "${ret}" -eq 1 ] ; then
  72. ret=0
  73. else
  74. echo "empty body not rejected"
  75. ret=1
  76. exit ${ret}
  77. fi
  78. # Filter only video stream attributes
  79. FILE="60-message-sdp9.sip"
  80. TOTALBEFORE=$(awk '/^v=0/,/^$/ {total++; if ($0 ~ /^a=rtcp/ ) { prefix++;} else { other++} } END {if (prefix) {print other " + " prefix} else { print other " + 0"} }' ${FILE})
  81. OTHERBEFORE=$(echo ${TOTALBEFORE}|cut -d+ -f1)
  82. PREFIXBEFORE=$(echo ${TOTALBEFORE}|cut -d+ -f2)
  83. sipsak ${SIPSAKOPTS} -f ${FILE} > ${TMPFILE}
  84. ret=$?
  85. if [ "${ret}" -eq 0 ] ; then
  86. TOTALAFTER=$(awk '/^v=0/,/^$/ {total++; if ($0 ~ /^a=rtcp:/ ) { prefix++;} else { other++} } END {if (prefix) {print other " + " prefix} else { print other " + 0"} }' ${TMPFILE})
  87. OTHERAFTER=$(echo ${TOTALBEFORE}|cut -d+ -f1)
  88. PREFIXAFTER=$(echo ${TOTALAFTER}|cut -d+ -f2)
  89. if [ ${PREFIXAFTER} -eq 1 ] && [ ${OTHERBEFORE} -eq ${OTHERAFTER} ]; then
  90. ret=0
  91. else
  92. ret=1
  93. echo "found ${PREFIXAFTER} lines with prefix \"a=rtcp\", was expecting 1 (in m=audio)(${FILE})"
  94. fi
  95. else
  96. echo "invalid sipsak return: ${ret}"
  97. fi
  98. kill_kamailio
  99. rm ${TMPFILE}
  100. exit ${ret}