Октябрь 8

php 7 пропали строки обработанные htmlspecialchars Windows-1251

есть разные избранные которые требуют чтоб им фиды пересылались кодировке виндовс, а php 7 ввел вообще санкции против кириллицы
и просто выдавал пустые строки и так теперь нужно указать ему что функцию htmlspecialchars нужно выполнить именно для винды
echo htmlspecialchars(«?????????»);
меняем на
echo htmlspecialchars(«?????????»,ENT_COMPAT, «Windows-1251»);

Октябрь 4

fail2ban

пробуем банить сканеров и разных XSS любителей
для начала просто бан тех кто много смотрит осторожно админы улитают в бан за секунду
потому важное в этой записи прочитать ее всю и научится разбанивать перед первым забанненым админом

и так
создаем правило кого банить

sudo nano /etc/fail2ban/filter.d/apache-ddos.conf

# Fail2Ban configuration file
# Author: AmiGator

[Definition]

failregex = ^ -.*"(GET|POST).*HTTP.*"

# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
#
ignoreregex =

!!!!!! следите чтоб не было перед началом строк пробелов

sudo nano /etc/fail2ban/jail.conf

добавляем в конце

[apache-ddos]

enabled = true
filter = apache-ddos
action = iptables-multiport[name=ddos, port="http,https"]
sendmail-buffered[name=ddos, lines=5, dest=root]
logpath = /var/www/*/log/access.log
bantime = 1800
findtime = 60
maxretry = 10

ignoreregex = \.(jpg|jpeg|png|gif|js|css)

ГДЕ:

logpath — Путь до нашего лога;
findtime — Время после которого будет бан;
maxretry — число повторений за findtime.

sendmail-buffered[name=ddos, lines=5, dest=root]

Куда присылать отчёт root замените на свой почтовый ящик !

Вроде всё и не забудте перезапустить fail2ban !

service fail2ban restart

и так в пока вы выполнили все инструкции

tail -f /var/log/fail2ban.log
выдаст уже в забанненых админов и пару покупателей 🙂
теперь учимся разбанивать под крики и истерику

вывод забаненых (точнее правила iptables)
iptables -L -n --line-numbers

fail2ban-client get apache-ddos actionunban IP
кого нужно разбанить

и после этого таблица почистилась только после перезагрузки fail2ban
service fail2ban restart

спасибо за бан и unban

Август 13

xiaomi gatewey api

Добавить станцию
add_channels
{«chs»:[{«id»:9999667,»url»:»http://url/live1.m3u8″,»type»:0}]}

удалить станцию
remove_channels
{«chs»:[{«id»: 9999666,»url»:»http://url/hls/live1.m3u8″,»type»:0}]}

проиграть станцию с громкостью
play_specify_fm
[9999667,100]

play_fm
[«on»] // on, off, toggle, next, prev

volume_ctrl_fm
[«100»]

Август 13

Настройка сети wi-fi network через ssh console ubuntu 18 и не только

Помнится раньше прописывал как-то ребенку в настройках сети ИД сети и пароль,
но что-то изменилось (догадываюсь что) но это не важно
итак как настроить сеть удаленно за много километров от клиента (да ясно что связь есть) но после каждой перезагрузки машина клиента пытается подключится к принтеру или wi-fi резетке и уходит в off-line

sudo nano /etc/network/interfaces
дописываем

iface wlan0 inet dhcp
wpa-driver wext
wpa-ssid <имя_точки_доступа>
wpa-ap-scan 1
wpa-proto RSN
wpa-pairwise CCMP
wpa-group CCMP
wpa-key-mgmt WPA-PSK
wpa-psk <hex_ключ> [ВАЖНО - см. Генерация ключей]
auto wlan0

 

iface wlan0 inet dhcp конфигурация для DHCP (для статического IP см. пример ниже)
«iface wlan0» — Имя нашего интерфейса (wlan0, eth1, rausb0, ra0, итд.)
wpa-driver Это wpa-driver для нашей карты
(‘wext’ — общий драйвер для linux, работающий с «ndiswrapper»). Рекомендуется оставить как есть.
Другие варианты:
hostap = Host AP driver (Intersil Prism2/2.5/3)
atmel = ATMEL AT76C5XXx (USB, PCMCIA)
wext = Linux wireless extensions (generic)
madwifi = Atheros
wired = wpa_supplicant wired Ethernet driver
wpa-ssid Имя нашей точки доступа (ESSID). Без кавычек.
wpa-ap-scan Параметр вещания точкой доступа ее имени.
«1» = ESSID вещается всем.
«2» = ESSID скрыт.
wpa-proto Протокол
«RSN» = WPA(2)
«WPA» = WPA(1)
wpa-pairwise & wpa-group «CCMP» = AES-шифрователь (как часть стандарта WPA(2))
«TKIP» = TKIP-шифрователь (как часть стандарта WPA(1))
wpa-key-mgmt «WPA-PSK» = Аутентификация через ключевую фразу (см. ‘Cоздание ключей’)
«WPA-EAP» = Аутентификация при помощи сервера аутентификаций.
auto wlan0 Автоматическое включение wlan0 при загрузке/перезагрузке сети.

 

 

Генерация ключей

Теперь нам нужно сконвертировать нашу ключевую фразу (WPA ASCII) в hex-ключ:
$ wpa_passphrase <имя_точки_доступа> <ascii_ключ>
Результат будет примерно таким:

network={
ssid="test"
#psk="12345678"
psk=fe727aa8b64ac9b3f54c72432da14faed933ea511ecab1 5bbc6c52e7522f709a
}

hex-ключ это все символы после «psk=».

Нужно его скопировать в буфер обмена и вставить в файл /etc/network/interfaces в поле wpa-psk

Август 12

VNC UBUNTU 18.04 Grey

Серый экран — система не поддерживается и много другое, глупости, — установи vino удали, установи 1000 новых vnc server и у всех серый экран или какой-то минимум с терминалом и вечными криками что программы нельзя запускать в 16 битах или 256 цветах
вот рабочая команда запуска сервера с входом в систему unity

/usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /home/{USER_NAME}/.vnc/passwd -rfbport 5900 -shared

можно эту же строку записать
сюда

/lib/systemd/system/x11vnc.service


[Unit]
Description=Start x11vnc at startup.
After=multi-user.target

[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /home/{USER_NAME}/.vnc/passwd -rfbport 5900 -shared

[Install]
WantedBy=multi-user.target

и
sudo service x11vnc restart

Июль 31

ssh отправляем в сеть звук

#!/bin/bash

ffmpeg -f alsa -i hw:Loopback,1,0 -c:a aac -b:a 64k -f ssegment -segment_list /var/www/hls/live1.m3u8 -segment_list_flags +live -segment_time 1 -segment_list_size 1 -segment_wrap 10 -segment_list_entry_prefix http://server.com/hls/ /var/www/hls/64%03d.aac

к сожалению пока сработало на выбор или плохой плейлист но реально хорогие файлы в нем

до этого был хороший лист но записанная тишина

Июнь 7

1С & Bitrix и прочая ересь

Конечно нужно отдать должное, никто не виноват, что некто пошел своим путем эволюции.
но нужно запомнить, что в результаты поиска сортируются так 😉
в "bitrix:catalog.section"
вывода массива
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
"ELEMENT_SORT_FIELD" => 'catalog_QUANTITY',
"ELEMENT_SORT_ORDER" => 'desc,nulls',

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

нет вы конечно можете пойти путем поиска в интернете
и найдете
забавные поля
CUSTOM_RANK
и
RANK
и даже сделаете обработчик BeforeIndex
который проставит вам CUSTOM_RANK для чего взломаете индексирования (потому что она это поле не сохраняет)

потом забросить этот путь потому что вам же нужен поиск по каталогу bitrix:catalog.search, а не по страницам bitrix:search.page но рано или поздно к вам прийдет понимание, что в конечном итоге поиск по каталогу использует поиск по страницам

и после индексации вы получите правильный запрос к БД который выдаст отсортированный массив ID

но страница вывода результатов не изменится, вы улыбнетесь и пойдете спать.
потому что весь этот мусор который вы отладили и отремонтировали оказывается игнорируется "bitrix:catalog.section"
goto !

Май 30

итак прожиточный минимум по SVN

так часто случается что нам в руки попадает проект а точнее два или уже три которые по своему хороши
а у нас макдук с мини диском 🙂
нам предстоит сравнить 3 сайта перенести все правки с боевого на тестовый, а потом обновить то что получится и не затереть все, что мы на переносили.
и так копия

1 тест = на нее легло обновление нормально
2 рабочая за год много изменений
3 тест до обнавлений

создаем на сервере svn
sudo mkdir /var/svn/
создаем наш проект
sudo svnadmin create /var/svn/name_project
загружаем в него копию 3
svn import /var/www/otkuda/ file:///var/svn/name_project -m «Comment: »

в файле
/var/svn/name_project/conf/svnserve.conf
раскоментируем строки
auth-access = write
и
password-db = passwd
!!! удаляем как # так и пробел после него

в файле
/var/svn/name_project/conf/passwd
в конце добавляем строку логин=пароль
login=password

запускаем сервер

svnserve -d -r /var/svn/name_project
в случае добавления или если нужно выключить сервер (а так стоит делать для безопастности и для того чтоб не грузить сервер)

killall -9 svnserve
svnserve -d -r /var/svn/name_project

создаем новую рабочую копию созданного проекта прямо на сервере

svn checkout svn://host.example.com/ /var/www/kuda/
или локально
можно без запуска сервера svn
svn checkout file:///var/svn/name_project /var/www/kuda/

после чего в рабочую копию заливаем версию №2
выполняем команду в рабочем каталоге
svn status
и видим разницу
у нас она очень велика
записываем разницу в файл
svn status > test2original.txt
добавляем ново созданые файлы
svn add --force ./*

записываем ревизию
svn commit -m "site original"
обновляем рабочую версию до последней ревизии
svn up

и заливаем по верх новой рабочей версии версию рабочую после обновления
это уже можно делать на компьютере чтоб посмотреть разницу в файлах