LINUX.ORG.RU

Сообщения volant

 

Доступ к ресурсам на уровне конфигов nginx

Форум — Admin

Добрый!

конигами вирт хоста nginx возможно реализовать следующее?

Если обращение к ресурсу из локалки или с указанного внешнего ip - пускать, все остальные - просить пароль

 

volant
()

[решено] Нужен программист (yii2) поправить кривой веб

Форум — Job

Добрый!

Веб написан на yii2, работает с api стороннего ресурса, что то там поломалось- часть функционала недоступна, нужно починить.

 ,

volant
()

Вырезать аудио дорожку с помощью ffmpeg

Форум — Multimedia

Приветствую!

Имеем: сервер видео/аудио регистрации на Deb9, файлы пишутся как видео+аудио, так и просто видео.

Встала необходимость сохранять файлы записи без аудио. Скриптом отлавливается событие по факту сохранения файла записи. Вот секция:

on_video_saved() {
   local cam_nr evt_id last_frame_sec first_frame_sec
   local motion_session file_sizeKB frames_in_file resolution relpath
   local _storage_dir = "${STORAGE_DIR:-/var/spool/avreg}"
   local filename=

   cam_nr=$1
   evt_id=$2
   last_frame_time="$3"
   first_frame_time="$4"
   motion_session=$5
   file_sizeKB=$6
   frames_in_file=$7
   resolution="$8x$9"
   relpath="${10}"
   filename="${relpath##*/}"

   if [ "$evt_id" == '12' ]; then
      ffmpeg -loglevel error -i "${_storage_dir}/${relpath}" -vcodec copy -an "/var/tmp/${filename}"
      mv "/var/tmp/${filename}" "${_storage_dir}/${relpath}"
   fi
}

С помощью конструкции пытаюсь отловить файлы содержащие V/A, выпилить аудио дорожку и перезаписать файлик в тоже место но уже без аудио

   if [ "$evt_id" == '12' ]; then
      ffmpeg -loglevel error -i "${_storage_dir}/${relpath}" -vcodec copy -an "/var/tmp/${filename}"
      mv "/var/tmp/${filename}" "${_storage_dir}/${relpath}"
   fi
не получается...

пробовал вот такую конструкцию:

 if [ $evt_id == 12 ]; then
      ffmpeg -i ${_storage_dir}${relpath} -vcodec copy -an /var/tmp${filename}
      mv /var/tmp${filename} ${_storage_dir}${relpath}
   fi
результат тот же.

Думал, может ffmpeg не работает.. запускал команду из терминала с явным указанием путей - все работает.

Подскажите, пожалуйста, как правильно написать, что бы работало в скрипте?

 

volant
()

запуск snmp на ppp0 интерфейсе?

Форум — Admin

Приветствую!

Deb9, в системе демон snmpd работает на интерфейсе ppp0, если тупо добавить snmpd в автозагрузку, то получим не запущенный демон при старте системы, тк, ppp0 еще не поднялся, а snmpd уже пытается стартовать.

вопрос - как гарантированно запускать snmpd при старте системы? те, после того как поднимется ppp0

 ,

volant
()

Как разрешить в firewall трафик gstreamer?

Форум — Admin

Приветствую!

Имеем -Debian9 c сервером видеорегистрации с трансляцией реалтайм в вебморде. Firewall закрыт на input разрешено все с локал ip

Chain LOCAL_FORWARD (1 references)
 pkts bytes target     prot opt in     out     source               destination

Chain LOCAL_INPUT (1 references)
 pkts bytes target     prot opt in     out     source               destination
  11M 8389M RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
  360 28893 RETURN     all  --  *      *       192.168.0.0/16       0.0.0.0/0
    2   104 RETURN     tcp  --  *      *       XXX.XXX.XXX.XXX      0.0.0.0/0            tcp dpt:2231
   16   784 RETURN     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443 state NEW,ESTABLISHED
    0     0 RETURN     all  --  *      *       XXX.XXX.XXX.XXX      0.0.0.0/0
 5672  324K REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

Chain LOCAL_OUTPUT (1 references)
 pkts bytes target     prot opt in     out     source               destination

Если ip камера работает rtsp over tcp - все хорошо. Если камере сказать работать через proxy gstreamer(rtsp over udp) локальный клиент перестает получать картинку в реалтайме, роняю правила iptables - получаю картинку.

Что нужно разрешить в firewall для работы gstreamer?

 ,

volant
()

Доступ в web - туда ходи, сюда не ходи! Как реализовать?

Форум — Admin

Приветствую!

Имеем: виртуалку(kvm, Deb9) с сервером видеорегистрации. Сервер имеет веб морду. Функционал веба: просмотр в реалтайме, просмотр статистики, просмотр архива записей, настройки сервера. Скриптом на сервере отлавливаются события по факту сохранения видеофрагментов(mp4), формируется линк и отсылается на мыло.

Политика firewall - запрещено все, что явно не разрешено. Доступ с улицы был полностью закрыт кроме ssh c определенного ip. Встала необходимость дать доступ с улицы к просмотру видеофайлов. Открыл в firewall 443 порт - обеспечил доступ, ну и, соответственно, открыл доступ ко всему вебу, что есть не хорошо.

К примеру, доступ к просмотру в реалтайме имеет адрес my.domain.ru/online/index.php, доступ в админку my.domain.ru/admin/tune.php, ссылка для просмотра сохраненного файла, сформированная скриптом, my.domain.ru/media/индивидуальные/данные/файла.mp4

Вопрос: возможно ли на основе подчеркнутого в адресах выстроить доступ, например - дать доступ к my.domain.ru/online и my.domain.ru/media, а к остальному закрыть?

 ,

volant
()

[решено] Нужен человек пишущий на bash

Форум — Job

Приветствую!

Нужно переписать скрипт работающий с https/ssl сертификатами на устройствах микротик. Скрипт работает в среде linux, выполняет задачу - получить(обновить) сертификаты (в частности у letsencript), авторизоваться на микротике по ssh ключу, добавить сертификаты в микротик(удалить старые, добавить новые), дальше удаляет сертификаты у себя. Скрипт работает с отдельным файлом конфигурации. Сейчас скрипт работает с одним устройством микротик(одним файлом конфигурации). Скрипт: letsencrypt-routeros.sh

#!/bin/bash
CONFIG_FILE=letsencrypt-routeros.settings

if [[ -z $1 ]] || [[ -z $2 ]] || [[ -z $3 ]] || [[ -z $4 ]] || [[ -z $5 ]]; then
echo -e "Usage: $0 or $0 [RouterOS User] [RouterOS Host] [SSH Port] [SSH Private Key] [Domain]\n"
source $CONFIG_FILE
else
ROUTEROS_USER=$1
ROUTEROS_HOST=$2
ROUTEROS_SSH_PORT=$3
ROUTEROS_PRIVATE_KEY=$4
DOMAIN=$5
fi

if [[ -z $ROUTEROS_USER ]] || [[ -z $ROUTEROS_HOST ]] || [[ -z $ROUTEROS_SSH_PORT ]] || [[ -z $ROUTEROS_PRIVATE_KEY ]] || [[ -z $DOMAIN ]]; then
echo "Check the config file $CONFIG_FILE or start with params: $0 [RouterOS User] [RouterOS Host] [SSH Port] [SSH Private Key] [Domain]"
echo "Please avoid spaces"
exit 1
fi

CERTIFICATE=/etc/letsencrypt/live/$DOMAIN/cert.pem
KEY=/etc/letsencrypt/live/$DOMAIN/privkey.pem
CHAIN=/etc/letsencrypt/live/$DOMAIN/chain.pem


#Create alias for RouterOS command
routeros="ssh -i $ROUTEROS_PRIVATE_KEY $ROUTEROS_USER@$ROUTEROS_HOST -p $ROUTEROS_SSH_PORT"

#Check connection to RouterOS
$routeros /system resource print
RESULT=$?

if [[ ! $RESULT == 0 ]]; then
echo -e "\nError in: $routeros"
echo "More info: https://wiki.mikrotik.com/wiki/Use_SSH_ ... key_login)"
exit 1
else
echo -e "\nConnection to RouterOS Successful!\n"
fi

if [ ! -f $CERTIFICATE ] && [ ! -f $KEY ]; then
echo -e "\nFile(s) not found:\n$CERTIFICATE\n$KEY\n"
echo -e "Please use CertBot Let'sEncrypt:"
echo "============================"
echo "certbot certonly --preferred-challenges=dns --manual -d $DOMAIN --manual-public-ip-logging-ok"
echo "or (for wildcard certificate):"
echo "certbot certonly --preferred-challenges=dns --manual -d *.$DOMAIN --manual-public-ip-logging-ok --server https://acme-v02.api.letsencrypt.org/directory"
echo "==========================="
echo -e "and follow instructions from CertBot\n"
exit 1
fi

# Remove previous certificate
$routeros /certificate remove [find name=$DOMAIN.pem_0]

# Create Certificate
# Delete Certificate file if the file exist on RouterOS
$routeros /file remove $DOMAIN.pem > /dev/null
# Upload Certificate to RouterOS
scp -q -P $ROUTEROS_SSH_PORT -i "$ROUTEROS_PRIVATE_KEY" "$CERTIFICATE" "$ROUTEROS_USER"@"$ROUTEROS_HOST":"$DOMAIN.pem"
sleep 2
# Import Certificate file
$routeros /certificate import file-name=$DOMAIN.pem passphrase=\"\"
# Delete Certificate file after import
$routeros /file remove $DOMAIN.pem

# Create Key
# Delete Certificate file if the file exist on RouterOS
$routeros /file remove $KEY.key > /dev/null
# Upload Key to RouterOS
scp -q -P $ROUTEROS_SSH_PORT -i "$ROUTEROS_PRIVATE_KEY" "$KEY" "$ROUTEROS_USER"@"$ROUTEROS_HOST":"$DOMAIN.key"
sleep 2
# Import Key file
$routeros /certificate import file-name=$DOMAIN.key passphrase=\"\"
# Delete Certificate file after import
$routeros /file remove $DOMAIN.key

# Create Chain
# Delete Chain file if the file exist on RouterOS
$routeros /file remove $DOMAIN-chain.pem> /dev/null
# Upload Chain to RouterOS
scp -q -P $ROUTEROS_SSH_PORT -i "$ROUTEROS_PRIVATE_KEY" "$CHAIN" "$ROUTEROS_USER"@"$ROUTEROS_HOST":"$DOMAIN-chain.pem"
sleep 2
# Import Chain file
$routeros /certificate import file-name=$DOMAIN-chain.pem passphrase=\"\"
# Delete Chain file after import
$routeros /file remove $DOMAIN-chain.pem

# Setup Certificate to SSTP Server
#$routeros /interface sstp-server server set certificate=$DOMAIN.pem_0
$routeros /ip service set www-ssl certificate=$DOMAIN.pem_0
$routeros /ip hotspot profile set hsprof1 login-by=https ssl-certificate=$DOMAIN.pem_0

exit 0
Файл конфигурации: letsencrypt-routeros.settings
ROUTEROS_USER=admin
ROUTEROS_HOST=10.0.254.254
ROUTEROS_SSH_PORT=22
ROUTEROS_PRIVATE_KEY=/opt/letsencrypt-routeros/id_dsa
DOMAIN=vpnserver.yourdomain.com
Пример выполнения скрипта:
uptime: 6w6d22h11m15s
version: 6.44 (stable)
build-time: Feb/25/2019 14:11:04
factory-software: 6.36.1
free-memory: 202.0MiB
total-memory: 256.0MiB
cpu: MIPS 1004Kc V2.15
cpu-count: 4
cpu-frequency: 880MHz
cpu-load: 6%
free-hdd-space: 4848.0KiB
total-hdd-space: 16.3MiB
write-sect-since-reboot: 19348
write-sect-total: 41673
bad-blocks: 0%
architecture-name: mmips
board-name: hEX
platform: MikroTik


Connection to RouterOS Successful!

certificates-imported: 1
private-keys-imported: 0
files-imported: 1
decryption-failures: 0
keys-with-no-certificate: 0

certificates-imported: 0
private-keys-imported: 1
files-imported: 1
decryption-failures: 0
keys-with-no-certificate: 0

certificates-imported: 0
private-keys-imported: 0
files-imported: 0
decryption-failures: 0
keys-with-no-certificate: 0 
Нужно научить работать скрипт с несколькими файлами конфигурации вида letsencrypt-routeros_ХХ.settings(несколькими устройствами микротик) При этом скрипт должен !!!Только Один раз обращаться к серверу letsencript за обновлением серификатов(иначе ip инициатора забанят). Дальше поэтапно(именно поэтапно - с одним закончил перешел к следующему) обновляет все устройства в соответствии с файлами конфигурации, в файл лога пишет отчет о выполнении по каждому конфиг файлу, дальше удаляет серты у себя. Источник кода

 ,

volant
()

RSS подписка на новые темы