Commit c4d2e807 authored by Andrey Shatokhin's avatar Andrey Shatokhin

Changed radio.sh and template.service

parent f9d691f2
#!/bin/bash
# Запуск скрипта:
# ./radio <mountpoint>
# - cоздается конфиг файл (название - <mountpoint>.mpd.conf).
# - папка с конфиг-файлами (папка называется так же , как и <mountpoint>).
# - порт автоматически указывается в конфиге.
# - процесс автоматически добавляется в systemd
# - управление потоком ./radio.sh <название>
# Со стороны пользователя остается лишь добавить пути к плейлистам и изменить конфиг по усмотрению(название трансляции,описание и т.д)
source ./.port
ICECAST_DIR=./
if [[ $# -lt 1 ]]; then
echo "Формат ./radio.sh <поток>"
exit 1
fi
if [[ ! -f ./$1.mpd.conf ]];then
cp -p $ICECAST_DIR/template.mpd.conf $ICECAST_DIR/$1.mpd.conf
mkdir $ICECAST_DIR/$1
mkdir $ICECAST_DIR/$1/Music
touch $ICECAST_DIR/$1/mpd.log
touch $ICECAST_DIR/$1/mpdstate
touch $ICECAST_DIR/$1/mpd.db
touch $ICECAST_DIR/$1/mpd.pid
mkdir $ICECAST_DIR/$1/playlists
sed -i 's?#1?'`pwd`/$1'?' $ICECAST_DIR/$1.mpd.conf
sed -i "s/#2/$PORT/g" $ICECAST_DIR/$1.mpd.conf
sed -i "s/#3/$1/g" $ICECAST_DIR/$1.mpd.conf
chown -R icecastradio $ICECAST_DIR/$1
chgrp -R icecastradio $ICECAST_DIR/$1
chmod -R 777 $ICECAST_DIR/$1
chmod +x $ICECAST_DIR/$1/playlists
echo "Файлы конфигураций cозданы успешно !"
cp template.service /etc/systemd/system/$1.service
PATH_TO_CFG=`pwd`/$1.mpd.conf
sed -i 's?#1?'$PATH_TO_CFG'?' /etc/systemd/system/$1.service
echo PORT=$((PORT+1)) > $ICECAST_DIR/.port
systemctl daemon-reload
systemctl start $1
systemctl enable $1
echo "Запущен mpd-поток под названием : $1 по адресу : radio.azbyka.ru:8000/$PORT"
echo "Для начала работы требуется обновить базу данных mpd"
echo "Для работа с потоком : ./radio <название потока>"
else
ncmpc -p `cat .'/'$1.mpd.conf | grep port | awk '{ print $2 ; exit; }' | tr -d \"`
fi
ROOT_DIRECTORY=./$2
function usage() {
echo "Использование : ./radio.sh <параметр> <имя>
c - создание нового потока
m - управление потоком
d - удаление потока
l - список запущенных потоков
p - порт потока"
}
function get_port() {
local CONFIG_FILE=./$1.mpd.conf
local PORT=`cat $CONFIG_FILE | grep port | awk '{ print $2 ; exit; }' | tr -d \"`
echo $PORT
}
function create_stream() {
local CONFIG_FILE=./$1.mpd.conf
local ROOT_DIRECTORY=$2
local ABS_PATH_TO_CFG=`pwd`/$1.mpd.conf
if [[ ! -f ./$1.mpd.conf ]];then
cp -p ./template.mpd.conf $CONFIG_FILE
mkdir -p $ROOT_DIRECTORY/playlists
mkdir $ROOT_DIRECTORY/Music
touch $ROOT_DIRECTORY/mpd.log
touch $ROOT_DIRECTORY/mpdstate
touch $ROOT_DIRECTORY/mpd.db
touch $ROOT_DIRECTORY/mpd.pid
sed -i 's?#1?'`pwd`/$1'?' ./$1.mpd.conf
sed -i "s/#2/$PORT/g" ./$1.mpd.conf
sed -i "s/#3/$1/g" ./$1.mpd.conf
chown -R icecastradio $ROOT_DIRECTORY
chgrp -R icecastradio $ROOT_DIRECTORY
chmod -R 777 $ROOT_DIRECTORY
chmod +x $ROOT_DIRECTORY/playlists
# Systemd configuration
cp template.service /etc/systemd/system/$1.service
sed -i 's?#1?'$ABS_PATH_TO_CFG'?' /etc/systemd/system/$1.service
echo PORT=$((PORT+1)) > ./.port
serv daemon-reload
serv start $1
serv enable /etc/systemd/system/$1.service
# Enable playlist repeat
mpc -q -p `cat $CONFIG_FILE | grep port | awk '{ print $2 ; exit; }' | tr -d \"` repeat on
echo "Файлы конфигураций cозданы успешно !"
echo "Запущен mpd-поток под названием : $1 по адресу : radio.azbyka.ru:8000/$1"
echo "Для начала работы требуется обновить базу данных mpd"
echo "Для работа с потоком : ./radio -m $1"
else
echo -e "Поток \"$1\" уже создан.\nДля работы с ним : ./radio -m $1"
fi
}
function manage_stream() {
local STREAM_NAME=$2
ncmpc -p `$1 $STREAM_NAME`
}
function delete_stream(){
systemctl stop $1
rm -drf ./$1*
rm -f /etc/systemd/system/$1.service
serv daemon-reload
}
function get_streams() {
URL=http://radio.azbyka.ru/json.xsl
CONTENT=$(curl $URL 2>&1 /dev/null)
ACTIVE_STREAMS=`grep -oP '(?<=/).*?(?=")' <<< $CONTENT`
echo "Список запущенных потоков:"
for ELEM in $ACTIVE_STREAMS;
do
echo $ELEM
done
echo
}
while getopts "c:m:d:lhp:" opt
do
case "${opt}"
in
c) create_stream $2 $ROOT_DIRECTORY;;
m) manage_stream get_port $2;;
d) delete_stream $2;;
l) get_streams;;
h) usage $ROOT_DIRECTORY;;
p) get_port $2;;
*) usage $ROOT_DIRECTORY;;
esac
done
......@@ -6,7 +6,7 @@ ConditionFileIsExecutable=/usr/bin/mpd
Type=simple
StartLimitInterval=5
StartLimitBurst=10
ExecStart=/usr/bin/mpd --no-daemon #1
ExecStart=/usr/bin/mpd --no-daemon #1
User=icecastradio
Group=icecastradio
......@@ -14,4 +14,4 @@ Restart=always
RestartSec=20
[Install]
WantedBy=multi-user.target
WantedBy=multi-user.target
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment