Commit c4d2e807 authored by Andrey Shatokhin's avatar Andrey Shatokhin

Changed radio.sh and template.service

parent f9d691f2
#!/bin/bash #!/bin/bash
# Запуск скрипта:
# ./radio <mountpoint>
# - cоздается конфиг файл (название - <mountpoint>.mpd.conf).
# - папка с конфиг-файлами (папка называется так же , как и <mountpoint>).
# - порт автоматически указывается в конфиге.
# - процесс автоматически добавляется в systemd
# - управление потоком ./radio.sh <название>
# Со стороны пользователя остается лишь добавить пути к плейлистам и изменить конфиг по усмотрению(название трансляции,описание и т.д)
source ./.port source ./.port
ICECAST_DIR=./ ROOT_DIRECTORY=./$2
if [[ $# -lt 1 ]]; then
echo "Формат ./radio.sh <поток>" function usage() {
exit 1 echo "Использование : ./radio.sh <параметр> <имя>
fi c - создание нового потока
m - управление потоком
if [[ ! -f ./$1.mpd.conf ]];then d - удаление потока
cp -p $ICECAST_DIR/template.mpd.conf $ICECAST_DIR/$1.mpd.conf l - список запущенных потоков
mkdir $ICECAST_DIR/$1 p - порт потока"
mkdir $ICECAST_DIR/$1/Music
touch $ICECAST_DIR/$1/mpd.log }
touch $ICECAST_DIR/$1/mpdstate
touch $ICECAST_DIR/$1/mpd.db function get_port() {
touch $ICECAST_DIR/$1/mpd.pid local CONFIG_FILE=./$1.mpd.conf
mkdir $ICECAST_DIR/$1/playlists local PORT=`cat $CONFIG_FILE | grep port | awk '{ print $2 ; exit; }' | tr -d \"`
sed -i 's?#1?'`pwd`/$1'?' $ICECAST_DIR/$1.mpd.conf echo $PORT
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 function create_stream() {
chmod -R 777 $ICECAST_DIR/$1
chmod +x $ICECAST_DIR/$1/playlists
echo "Файлы конфигураций cозданы успешно !"
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 cp template.service /etc/systemd/system/$1.service
PATH_TO_CFG=`pwd`/$1.mpd.conf sed -i 's?#1?'$ABS_PATH_TO_CFG'?' /etc/systemd/system/$1.service
sed -i 's?#1?'$PATH_TO_CFG'?' /etc/systemd/system/$1.service echo PORT=$((PORT+1)) > ./.port
echo PORT=$((PORT+1)) > $ICECAST_DIR/.port serv daemon-reload
systemctl daemon-reload serv start $1
systemctl start $1 serv enable /etc/systemd/system/$1.service
systemctl enable $1
echo "Запущен mpd-поток под названием : $1 по адресу : radio.azbyka.ru:8000/$PORT" # 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 "Для начала работы требуется обновить базу данных mpd"
echo "Для работа с потоком : ./radio <название потока>" echo "Для работа с потоком : ./radio -m $1"
else else
ncmpc -p `cat .'/'$1.mpd.conf | grep port | awk '{ print $2 ; exit; }' | tr -d \"` echo -e "Поток \"$1\" уже создан.\nДля работы с ним : ./radio -m $1"
fi 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
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