понедельник, 31 августа 2020 г.

Удаление пустных очередей rabbitmq

Чтобы удалить все пустые очереди rabbitmq достаточно выполнить команду

rabbitmqctl --quiet --no-table-headers list_queues | awk '{if (!$2) print $1}' | xargs -L1 rabbitmqctl delete_queue

вторник, 21 июля 2020 г.

Соединение с MySQL через SSH



Если перед вами встала задача соединиться с удаленной базой данной, которая, по очевидным причинам, не доступна извне, то я могу предложить вам cделать проброс соединения через SSH

ssh -L 0.0.0.0:3333:127.0.0.1:3306 -p 2202 user@ssh-host.com
подключаемся к базе

mysql -h 127.0.0.1 -P 3333 -uroot -pqwertyu db

понедельник, 7 октября 2019 г.

Установка mysql 8 на Centos 7

mysqld --initialize-insecure --user=mysql --console --defaults-file=/etc/my.cnf --verbose
sudo -u mysql mysqld --upgrade=FORCE
sudo -u mysql mysqld --init-file=/tmp/1 --console --verbose
cat /tmp/1


DROP USER 'root'@'localhost';
FLUSH PRIVILEGES;
CREATE USER 'root'@'localhost' IDENTIFIED BY '1234567890';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

суббота, 12 января 2019 г.

Захват изображения с web камеры и отображение на веб странице


Нам потребуется nginx, модуль для nginx https://github.com/arut/nginx-rtmp-module, ffmpeg и сама web камера. В качестве плейера будем использовать https://videojs.com/ Я перепробовал довольно много вариантов, но только этот захотел работать одновременно в firefox, chrome, safari ipad/iphone/macbook.

Я опишу сам процесс, как понял его я. 
rtmp модуль запускает ffmpeg, который берет поток из /dev/video0 используя плагин video4linux и записывает в rtmp канал hls/movie. Модуль nginx rtmp принимает данные и раскладывает данные по файликам, параллельно обновляя файл movie.m3u8 в папке /mnt/hls. Потом nginx отдает содержимое папки /mnt/hls по протоколу http, что он умеет делать очень хорошо.

Надо отметить, что этот метод не лишен недостатков. С текущими настройками, есть временной лаг и довольно приличный. Данные пишутся на диск (от этого диск будет деградировать), создатель плагина рекомендует располагать данные в tmpfs или в оперативной памяти.

Конфиг для nginx
http {
    ....
    server {
        listen 8080;
        root /mnt;
        index index.html;

        location / {
        }

        location /stat {
            rtmp_stat all;

            # Use this stylesheet to view XML as web page
            # in browser
            # https://github.com/arut/nginx-rtmp-module/blob/master/stat.xsl
            rtmp_stat_stylesheet stat.xsl;
        }

        location /hls {
            # Serve HLS fragments
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            add_header Cache-Control no-cache;
        }
    }
}

rtmp {
    server {
        listen 1935;

        chunk_size 4000;

        application hls {
            live on;
            hls on;
            hls_path /mnt/hls;
            exec_static ffmpeg -re -f video4linux2 -i /dev/video0 -vcodec libx264 -pix_fmt yuv420p -vprofile baseline -f flv rtmp://localhost:1935/hls/movie;
        }
    }
}

Создаем /mnt/index.html со следующим содержанием
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Live Streaming</title>
    <link href="//vjs.zencdn.net/7.3.0/video-js.min.css" rel="stylesheet">
    <script src="//vjs.zencdn.net/7.3.0/video.min.js"></script>
    <script src="https://unpkg.com/@videojs/http-streaming@1.8.0/dist/videojs-http-streaming.min.js"></script>
</head>
<body>
    <video-js id="vid1" width=600 height=300 class="vjs-default-skin" controls>
        <source src="http://127.0.0.1:8080/hls/movie.m3u8" type="application/x-mpegURL">
    </video-js>
    <script>
        var player = videojs('vid1');
        player.play();
    </script>
</body>
</html>


суббота, 9 июня 2018 г.

Macbook prod wifi: не аппаратного обеспечения

Решение:

1) Отключить Wi-Fi.
2) Перейти в папку /Library/Preferences/SystemConfiguration/.
3) Удалить файлы:
com.apple.airport.preferences.plist
com.apple.network.eapolclient.configuration.plist
com.apple.wifi.message-tracer.plist
NetworkInterfaces.plist
preferences.plist
4) Выключить Macbook
5) Включить Macbook

Именно выключить, а потом включить. Перезагрузка не поможет.

понедельник, 16 апреля 2018 г.

Установка Dante в Centos

## Добавляем репозиторий:
yum install http://mirror.ghettoforge.org/distributions/gf/gf-release-latest.gf.el7.noarch.rpm

## Включаем репу и устанавливаем dante-server
yum --enablerepo=gf-plus install dante-server

## Разрешаем автозагрузку сервиса
systemctl enable sockd.service

## Создаем рабочую папку
mkdir /var/run/sockd

## Забэкапим оригинальный конфиг
mv /etc/sockd.conf /etc/sockd.conf.orig

## Создаем конфиг, прокси будет слушать на порту 443
cat >> /etc/sockd.conf << 'EOF'
user.privileged: root
user.unprivileged: nobody

internal: eth0 port = 443
external: eth0

logoutput: syslog stdout /var/log/sockd.log
errorlog: /var/log/sockd_err.log

socksmethod: username

client pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    log: error
}

socks pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    command: connect udpassociate
    log: error
}
EOF


## Стартуем сервис
systemctl start sockd.service

## Правило для фаервола
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="ваш_внешний_ip/32" port protocol="tcp" port="443" accept"


## Добавляем пользователя
useradd -s /sbin/nologin -d /dev/null sock

## Указываем пароль
passwd sock