F2018-05-20.tgz.part1
F2018-05-20.tgz.part2
...
F2018-05-20.tgz.part100500
Рубрика: WEB
php код чата для виджета вордпресс
<h5>Чат</h5> <html> <head> </head> <body> <iframe src="wp-content/utils/chatframe.php" style="border: none;" loading = "lazy"></iframe> <div id="zatemnenie"> <div id="okno"> <iframe src="wp-content/utils/chat.php" width="520px" height="810" frameborder="0"></iframe> <a href="#" class="close">Закрыть чат</a> </div> </div> <button class="c-button" onclick="window.location.href = '#zatemnenie';">Наследить</button> </body> </html>
ffmpeg трансляция текстовой строки из RSS ленты с камеры rtsp поток
двигаемся дальше, добавим в нашу предыдущую трансляцию для телеграмм бегущую строку из новостной rss-ленты. Итоговый скрипт получился следующим:
#!/bin/sh rm /home/vvv/stream/index.xml wget -q https://volga.news/rss1/google/7/culture/index.xml sed 's/"/"/g; s/ /_/g' index.xml > culture.xml cat culture.xml | sed -n 15,250p | grep '<description>' | awk -F\> '{ print $2 }' | awk -F\< '{ printf $1 }' | tee news.txt pkill ffmpeg sleep 5 FFREPORT=file=/home/vvv/stream/ffmpeg.log:level=8 ffmpeg -v quiet -stats -re -i http://online.radio-megapolis.ru:8000/megapolis_mp3 -i rtsp://user:pass@192.168.37.30/onvif1 -filter:v "drawtext=enable='between(t,3,604800)':fontfile=/home/vvv/fonts/Lucon.ttf:textfile=/home/vvv/stream/news.txt:fontcolor=white@1.0:fontsize=16:y=h-line_h-10:x='if(gt(x,-tw),w-mod(8*n,w+tw),w)'" -c:v libx264 -s 640x480 -c:a aac -ar 22050 -b:a 32k -f flv rtmps://dc4-1.rtmp.t.me/s/token
Читать далее «ffmpeg трансляция текстовой строки из RSS ленты с камеры rtsp поток»
.htaccess wordpress закрываем дыры
PHP обработчик —> Apache
Для одиночной установки:
# BEGIN WordPress RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # END WordPress
1. Защита важных файлов
Запретите доступ к файлам wp-config.php, htaccess, php.ini и логам ошибок. Добавьте это правило, чтобы запретить доступ к этим файлам:
<FilesMatch "^.*(error_log|wp-config\.php|php.ini|\.[hH][tT][aApP].*)$"> Order deny,allow Deny from all </FilesMatch>
Виджеты код
Резервная копия кода виджетов сайта от 07.06.2023
1.Отображение IP адреса посетителя
<?php echo $_SERVER['REMOTE_ADDR'] ?>
2. Воспроизведение случайных файлов из папки, на сайте Читать далее «Виджеты код»
Цели конверсий и ретаргетинга Яндекс.Метрики и Contact Form 7
Считаем лиды(потенциальных клиентов) пришедших по рекламе и просто так — напрямую. Для этого подключаем события успешной отправки сообщений(запрос обратной связи, и консультаций) из формы ContactForm7 WordPress к цели в Яндекс.Метрике. Читать далее «Цели конверсий и ретаргетинга Яндекс.Метрики и Contact Form 7»
Дублировать страницы WordPress
С помощью кода добавленного в function.php можно добавить возможность копирования уже существующих страниц или записей: Читать далее «Дублировать страницы WordPress»
XMPP на сайт
Модификация JWChat для обеспечения сервиса онлайн-консультации
Для многих организаций всё более актуальным становится вопрос упрощения и ускорения двустороннего взаимодействия с клиентами посредством ИТ. На корпоративных сайтах, как правило, можно встретить номера телефонов, адреса электронной почты, контакты менеджеров в различных системах сообщений, какую-либо разновидность гостевой книги (что то вроде «задать вопрос») и, в лучшем случае, форум.
Перед нами вопрос: каким образом можно обеспечить клиенту, зашедшему на сайт, удобную форму отправки вопроса и получение ответа «не отходя от кассы».
Предоставление контактов в популярных системах мгновенных сообщений не является для нас решением задачи, так как для ответа может потребоваться несколько людей (менеджеров, технических специалистов, экономистов). Да и внешний вид странички с «аськами» менеджеров идёт не на пользу представительскому имиджу организации. Большинство обычных пользователей не захотят ничего слышать о регистрации на форуме или в корпоративной системе сообщений, так как не рассчитывают на долгосрочное партнёрство или просто им легче набрать номер телефона.
Существует замечательная система онлайн-поддержки LiveZilla, которая однако предполагает наличие специального софта у операторов исключительно под ОС Windows. Внутренняя система сообщений в нашем предприятии организована с помощью XMPP, и не хотелось что то менять или нагружать менеджеров дополнительным программным средством. Внешние пользователи тоже могут подключаться и задавать вопросы в отдельной конференции, но это не пользуется популярностью (что не удивительно).
Таким образом, было принято решение разместить на сайте XMPP-клиент на Javascript. После прочтения нескольких обзоров (в том числе на Хабре) и практического изучения таких клиентов, я решил использовть для этой цели JWChat.
Реализация
Вновь установленный JWChat на начальной странице предлагает авторизоваться, либо зарегистрироваться.

Как я уже писал выше, обязательная регистрация отобьёт желание к общению у большинства посетителей сайта. В JWChat на этот случай предусмотрена возможность гостевого входа. Прописываем в файле config.js
нужные нам параметры:
var GUEST_ACC = "client";
var GUEST_PWD = "pass";
Так как учётная запись гостевая, то ничего страшного, что пароль будет в открытом виде. Возможность подключения нескольких клиентов сохраняется, так как к ресурсу добавляется случайное число в диапазоне от 0 до 999.
После авторизации открывается отдельное окно браузера, содержащее ростер. Понятно, что в нашем случае оно совершенно ни к чему. После присоединения к конференции открывается ещё одно окно для отображения чата, в свою очередь состоящее из четырёх фреймов. Это, собственно, и будет полезной областью, которая нужна пользователю.

Очевидно, что удобство и эстетичность интерфейса в данном случае никуда не годны. Кроме того, если настроить для гостевой записи автовход в нужную конференцию, второе всплывающее окно будет заблокировано большинством браузеров с настройками по умолчанию.
В результате, нужно было представить только полезную часть (конференцию) без необходимости авторизации и сразу же при переходе пользователя на соответствующую страничку.
Таким образом, на странице онлайн-консультации я расположил все необходимые элементы с помощью фреймов и объединил скрипты, выполняемые в трёх отдельных окнах в один код, устранив конфликты некоторых переменных и функций. Ссылки на отдельные окна были заменены ссылками на фреймы нового окна.
Процедура авторизации под гостевой записью выполнялась сразу при событии onload
в уже существующей функции init()
. Я решил не переделывать кардинально HTML-код (так как это повлекло бы значительные изменения и кода Javascript), а лишь настроить CSS и убрать все ненужные элементы с помощью свойства display:none
и нулевой ширины одного из фреймов.
После авторизации происходит автоматическое подключение к нужной конференции (можно настроить на сервере или в закладках гостевого пользователя с помощью полноценного XMPP-клиента). С помощью диалога prompt
у пользователя запрашивается имя. Если имя по какой-либо причине не было введено, то вместо него присваивается номер от 0 до 999. Дополнительно к имени я добавляю префикс и постфикс, одинаковые для всех пользователей.
Использование
Учитывая невысокую посещаемость и специфику нашего сайта, было удивительно наблюдать достаточно большое количество вопросов, заданных с помощью нового сервиса (в том числе даже от иностранцев). Пока все клиенты остались довольны нововведением, что не стеснялись с помощью него же и сообщать. Кроме того, пользователи теперь не только задают вопросы, а сразу договариваются с сотрудниками обо всём и даже знакомятся с коллегами по профессии.
Стоит отметить, что в конференции для клиентов в рабочие часы постоянно находятся несколько наших сотрудников (подключенных через полноценный XMPP-клиент): менеджеры и специалисты для быстрого ответа, начальство — для контроля, а некоторые — просто из интереса. Таким образом, пользователь получает удобный и быстрый способ взаимодействия с нами прямо через свой браузер, менеджеры — новый источник потенциальных покупателей, а начальство и служба безопасности — прозрачность диалога с клиентом.

Проксирование запросов Apache во внутренюю сеть
Часть 1. Настройка домашнего хостинга на FreeBSD
Для трансляции изображения с камеры из внутренней сети на сайт потребуется прокси модуль апача. Само вещание ведёт ContaCam 7.0(для Windows XP). Понравилось, что сразу и онлайн-вещание и возможность посмотреть записи обнаруженных движений. Вставил трансляцию на страницу с помощью фрейма: <iframe allowtransparency=»true» scrolling=»no» style=»border:1px solid #ededed» src=»http://webcam.site:8800″ frameborder=»0″ height=»750″ width=»750″>
Чтобы маршрут до DVR сервера апач выбрал через внутреннюю сеть, включаем mod_proxy. Это модуль Apache для перенаправления соединений (то есть, шлюз, пропускающий их). Он доступен для использования так же, как любой другой стандартный модуль или базовая конфигурация. В целом, mod_proxy – это не один модуль, а набор модулей, каждый из которых обладает особенными функциональными возможностями.
Некоторые из этих модулей:
- mod_proxy: основной прокси-модуль Apache, который управляет соединениями и перенаправляет их.
- mod_proxy_http: функции прокси-сервера для протоколов HTTP и HTTPS.
- mod_proxy_ftp: функции прокси-сервера для протокола FTP.
- mod_proxy_connect: тунеллирование SSL.
- mod_proxy_ajp: взаимодействие с протоколом AJP.
- mod_proxy_wstunnel: работа с веб-сокетами (например, WS и WSS).
- mod_proxy_balancer: кластеризация и балансировка нагрузки.
- mod_cache: кэширование.
- mod_headers: управление заголовками HTTP.
- mod_deflate: сжатие.
Примечание: чтобы получить дополнительную информацию о mod_proxy и Apache, читайте официальную документацию Apache.
Активация модулей
В httpd.conf раскомментировать нужные proxy модули Возможно апач попросит раскомментировать дополнительно модуль xml2enc
Также можно выполнить следующие команды, чтобы активировать модули по одному:
a2enmod proxy
a2enmod proxy_http
a2enmod proxy_ajp
a2enmod rewrite
a2enmod deflate
a2enmod headers
a2enmod proxy_balancer
a2enmod proxy_connect
a2enmod proxy_html
В файле конфигурации виртуальных хостов вставить блок кода:
<VirtualHost *:*>
ProxyPreserveHost On
# Servers to proxy the connection, or;
# List of application servers:
# Usage:
# ProxyPass / http://[IP Addr.]:[port]/
# ProxyPassReverse / http://[IP Addr.]:[port]/
# Example:
ProxyPass / http://0.0.0.0:8080/
ProxyPassReverse / http://0.0.0.0:8080/
ServerName localhost
</VirtualHost>
Активация балансировки нагрузки
При наличии нескольких внутренних серверов можно использовании функцию балансировки нагрузки Apache, чтобы распределить соединения при проксировании.
Отредактируйте настройки виртуального хоста (как в предыдущем разделе), используя следующие конфигурации:
<Proxy balancer://mycluster>
# Define back-end servers:
# Server 1
BalancerMember http://0.0.0.0:8080/
# Server 2
BalancerMember http://0.0.0.0:8081/
</Proxy>
<VirtualHost *:*>
# Apply VH settings as desired
# However, configure ProxyPass argument to
# use "mycluster" to balance the load
ProxyPass / balancer://mycluster
</VirtualHost>
Активация SSL для поддержки обратного прокси
При использовании сертификатов и соединений SSL нужно также активировать промежуточный виртуальный хост. Для этого используйте нижеприведенный блок кода.
Listen 443
NameVirtualHost *:443
<VirtualHost *:443>
SSLEngine On
# Set the path to SSL certificate
# Usage: SSLCertificateFile /path/to/cert.pem
SSLCertificateFile /etc/apache2/ssl/file.pem
# Servers to proxy the connection, or;
# List of application servers:
# Usage:
# ProxyPass / http://[IP Addr.]:[port]/
# ProxyPassReverse / http://[IP Addr.]:[port]/
# Example:
ProxyPass / http://0.0.0.0:8080/
ProxyPassReverse / http://0.0.0.0:8080/
# Or, balance the load:
# ProxyPass / balancer://balancer_cluster_name
</VirtualHost>
Перезапустить службу апача.
Теперь Apache будет проксировать соединения на внутренние серверы приложений.
Источник: https://www.8host.com/blog/ustanovka-http-servera-apache-kak-obratnogo-proksi-s-pomoshhyu-mod_proxy/
Используем свободные телефоны для пользы дела
MediaDeb: Debian для китафонов чипах MediaTek
В этой заметке я расскажу о том, как превратить старый убитый китафон на чипе MediaTek, пылящийся на полке, уже даже без обновлений от производителя в… сервер под управлением Debian Stretch! Оную операцию я проделал для UMI-X2 и iOcean X8, и прошивки для оных и можно скачать по ссылке у меня в блоге. Учитывая, что типичный китайский телефон уже давно имеет по четыре, а то и десять процессорных ядер и 2GB оперативной памяти, а то и больше, результат получается намного более производительным, чем тот же Raspbberry PI, при схожем окружении.
Дайте догадаюсь, на полке пылится старый телефон? В котором скорее всего 4 или даже 8 ядер, в котором есть 2 GB RAM а то и больше, и уж точно хватает флеша? И не смотря на это производитель забил на апдейты. Или, быть может разбит экран, пластик поцарапан, антенна отвалилась и т.п. Аппарат за замену мы давно купили, старый уже не продашь, ибо никому даром не нужен, а выкидывать жалко.
Именно такие старые аппараты у меня и пылились на чердаке, вот и решил я из них сделать небольшие такие сервачки с debian на борту.
Так что я готов представить общественности первую версию моего небольшого проектика ‘MediaDeb’, который позволяет запустить на mediatek’овских трубках debian. И нет, это не chroot, где отдельные программы из debian запускаются параллельно с android. Это полноценная установка debian с кастомным ядром, в котором включено все, что нужно чтобы развернуть systemd, iotop и прочие нужности, отключен некоторые android-специфичные вещи, которые ломают debian-окружение. Сам же android выпилен из системы во имя экономии оперативной памяти и флеша.
Иными словами, если можно просто взять телефон, прошить его через SP Flash Tool debian прошивкой, воткнуть usb провод и вуоля: устройство определиться как композитное усб устройство с сетевым адаптером, виртуальным ком-портом и флешкой. Последовательный порт можно использовать, чтобы получить доступ к консоли, если вдруг неправильно настроена сеть. По умолчанию прошивка попытается получить IP адрес через dhcp на rndis интерфейсе. Теперь этого зомби можно положить на полку и представить, что мы арендовали небольшой выделенный сервер.
На что годится такой зомби?
В моем случае основное применение для этих зомби-телефонов – кросс-сборка программного обеспечения для arm используя платформу непрерывной интеграции jenkins. Так же в таком варианте этот аппарат можно использовать как небольшой дешевый сервер, например для персонального блога (долгое время этот самый блог крутился на сервере со схожими характеристиками).
А батарея не разбухнет постоянно держать аппарат на зарядке?
Если батарею телефона постоянно держать на зарядке, т.е. заряженной до 4.2 вольт, то через некоторое время она раздуется и будет ни на что не пригодна. Вдумчивая раскурка исходных кодов с применением зеленого чая показала, что это значение захардкожено в драйвере PMIC. А значит его можно отредактировать и выставить, например, в значение 3.7-3.8 вольт, что позволит батарее месяцами находиться на зарядке, и при этом в случае сбоя питания этого хватит чтобы успеть корректно завершить работу. Пока этот batteryhack сделан только для UMI-X2, Iocean-X8 на очереди.
В каком все состоянии?
Пока проект находится в зачаточной стадии (т.е. собирается на моей машине, результат вполне сносно работает). Я добавил базовую поддержку трубок UMI-X2 (MT6589, 4 ядра) и iOcean X8 (MT6592, 8 ядер). Базовая поддержка телефонов на этих чипсетах должна быть сравнительно простой. Если хотите помочь и портировать это безобразие на свою трубку – милости просим на github
В следующих заметках я постараюсь рассказать про то, как портировать MediaDeb на другие устройства на базе чипов mtk.
Источник:
https://ncrmnt.org/2017/08/04/mediadeb-debian-%D0%B4%D0%BB%D1%8F-%D0%BA%D0%B8%D1%82%D0%B0%D1%84%D0%BE%D0%BD%D0%BE%D0%B2-%D1%87%D0%B8%D0%BF%D0%B0%D1%85-mediatek/?lang=ru
Фото: Дарья Григоревская