mirror of https://github.com/sipwise/rtpengine.git
Merge c2d9456ef7 into afb9f5bcee
commit
43fc19abc4
@ -0,0 +1,17 @@
|
||||
Dockerfile
|
||||
config.mk
|
||||
daemon/rtpengine
|
||||
docs/
|
||||
lib/dtmf_rx_fillin.h
|
||||
lib/fix_frame_channel_layout.h
|
||||
lib/spandsp_logging.h
|
||||
perf-tester/
|
||||
recording-daemon/rtpengine-recording
|
||||
t/
|
||||
tests/
|
||||
**/*.strhash.c
|
||||
**/.*
|
||||
**/*.8
|
||||
**/*.o
|
||||
**/core
|
||||
**/core.*
|
||||
@ -0,0 +1,95 @@
|
||||
FROM debian:trixie-slim AS build
|
||||
|
||||
RUN apt-get update \
|
||||
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
|
||||
build-essential \
|
||||
ca-certificates \
|
||||
curl \
|
||||
default-libmysqlclient-dev \
|
||||
g++ \
|
||||
gcc \
|
||||
git \
|
||||
gperf \
|
||||
iproute2 \
|
||||
iptables \
|
||||
libavcodec-extra \
|
||||
libavfilter-dev \
|
||||
libcurl4-openssl-dev \
|
||||
libevent-dev \
|
||||
libhiredis-dev \
|
||||
libiptc-dev \
|
||||
libjson-glib-dev \
|
||||
libjwt-dev \
|
||||
libmnl-dev \
|
||||
libncursesw5-dev \
|
||||
libnftnl-dev \
|
||||
libopus-dev \
|
||||
libpcap-dev \
|
||||
libpcre2-dev \
|
||||
libspandsp-dev \
|
||||
libssl-dev \
|
||||
libwebsockets-dev \
|
||||
make \
|
||||
markdown \
|
||||
patch
|
||||
|
||||
WORKDIR /usr/src/rtpengine
|
||||
COPY . .
|
||||
|
||||
FROM build AS rtpengine
|
||||
WORKDIR /usr/src/rtpengine/daemon
|
||||
RUN make -j$(nproc) rtpengine && \
|
||||
strip -o /usr/local/bin/rtpengine rtpengine
|
||||
|
||||
FROM build AS rtpengine-recording
|
||||
WORKDIR /usr/src/rtpengine/recording-daemon
|
||||
RUN make -j$(nproc) rtpengine-recording && \
|
||||
strip -o /usr/local/bin/rtpengine-recording rtpengine-recording
|
||||
|
||||
FROM debian:trixie-slim
|
||||
|
||||
VOLUME ["/rec"]
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
CMD ["rtpengine"]
|
||||
|
||||
EXPOSE 23000-65535/udp 22222/udp
|
||||
|
||||
RUN apt-get update \
|
||||
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
|
||||
curl \
|
||||
iproute2 \
|
||||
iptables \
|
||||
libglib2.0-0 \
|
||||
libavcodec-extra \
|
||||
libavfilter10 \
|
||||
libcurl4 \
|
||||
libevent-2.1-7 \
|
||||
libevent-pthreads-2.1-7 \
|
||||
libhiredis1.1.0 \
|
||||
libip6tc2 \
|
||||
libjson-glib-1.0-0 \
|
||||
libjwt2 \
|
||||
libmariadb3 \
|
||||
libmnl0 \
|
||||
libncursesw6 \
|
||||
libnftnl11 \
|
||||
libopus0 \
|
||||
libpcap0.8 \
|
||||
libpcre2-8-0 \
|
||||
libspandsp2 \
|
||||
libssl3 \
|
||||
libwebsockets19 \
|
||||
net-tools \
|
||||
procps \
|
||||
sudo \
|
||||
&& apt-get clean && rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY --from=rtpengine /usr/local/bin/rtpengine /usr/local/bin/
|
||||
COPY --from=rtpengine-recording /usr/local/bin/rtpengine-recording /usr/local/bin/
|
||||
COPY docker/entrypoint.sh /entrypoint.sh
|
||||
RUN echo '%sudo ALL=(ALL:ALL) NOPASSWD: ALL' > /etc/sudoers.d/nopasswd && \
|
||||
groupadd --gid 1000 rtpengine && \
|
||||
useradd --uid 1000 --gid rtpengine -G sudo --shell /bin/bash --create-home rtpengine
|
||||
USER rtpengine
|
||||
WORKDIR /home/rtpengine
|
||||
COPY docker/rtpengine.conf .
|
||||
@ -0,0 +1,48 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
PATH=/usr/local/bin:$PATH
|
||||
|
||||
case $CLOUD in
|
||||
gcp)
|
||||
LOCAL_IP=$(curl -s -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/ip)
|
||||
PUBLIC_IP=$(curl -s -H "Metadata-Flavor: Google" http://metadata/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/external-ip)
|
||||
;;
|
||||
aws)
|
||||
LOCAL_IP=$(curl -s http://169.254.169.254/latest/meta-data/local-ipv4)
|
||||
PUBLIC_IP=$(curl -s http://169.254.169.254/latest/meta-data/public-ipv4)
|
||||
;;
|
||||
scaleway)
|
||||
LOCAL_IP=$(curl -s --local-port 1-1024 http://169.254.42.42/conf | grep PRIVATE_IP | cut -d = -f 2)
|
||||
PUBLIC_IP=$(curl -s --local-port 1-1024 http://169.254.42.42/conf | grep PUBLIC_IP_ADDRESS | cut -d = -f 2)
|
||||
;;
|
||||
digitalocean)
|
||||
LOCAL_IP=$(curl -s http://169.254.169.254/metadata/v1/interfaces/private/0/ipv4/address)
|
||||
PUBLIC_IP=$(curl -s http://169.254.169.254/metadata/v1/interfaces/public/0/ipv4/address)
|
||||
;;
|
||||
azure)
|
||||
LOCAL_IP=$(curl -H Metadata:true "http://169.254.169.254/metadata/instance/network/interface/0/ipv4/ipAddress/0/privateIpAddress?api-version=2017-08-01&format=text")
|
||||
PUBLIC_IP=$(curl -H Metadata:true "http://169.254.169.254/metadata/instance/network/interface/0/ipv4/ipAddress/0/publicIpAddress?api-version=2017-08-01&format=text")
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -n "$PUBLIC_IP" ]; then
|
||||
MY_IP="$LOCAL_IP"!"$PUBLIC_IP"
|
||||
elif [ -n "$LOCAL_IP" ]; then
|
||||
MY_IP="$LOCAL_IP"
|
||||
else
|
||||
MY_IP=$(hostname -I | cut -f1 -d' ')
|
||||
LOCAL_IP="$MY_IP"
|
||||
fi
|
||||
|
||||
sed -i -e "s:\(interface=.*\)MY_IP:\1$MY_IP:g" rtpengine.conf
|
||||
sed -i -e "s/MY_IP/$LOCAL_IP/g" rtpengine.conf
|
||||
|
||||
if [ "$1" = 'rtpengine' ]; then
|
||||
shift
|
||||
exec rtpengine --config-file rtpengine.conf "$@"
|
||||
fi
|
||||
|
||||
exec "$@"
|
||||
@ -0,0 +1,13 @@
|
||||
[rtpengine]
|
||||
interface=public/MY_IP
|
||||
foreground=true
|
||||
log-stderr=true
|
||||
listen-ng=MY_IP:22222
|
||||
port-min=23000
|
||||
port-max=32768
|
||||
recording-dir=/rec
|
||||
recording-method=pcap
|
||||
recording-format=eth
|
||||
log-level=6
|
||||
delete-delay=0
|
||||
listen-http=MY_IP:8080
|
||||
Loading…
Reference in new issue