Архив рубрики: WEB

Работа с API Zabbix из PHP

Поискал, поискал, ничего толкового не нашел. Пришлось написать самому. Выложил на GitHub. Описание актуального API Zabbix тут.

Пример использования:

include_once 'zabbix.php';

$url="https://my_zabbix.ru/api_jsonrpc1.php";
$login="weoriufeowiuf";
$password="owerierfoiewroi";

@include_once 'config.php';

// инициализация класса true/false - вывод в режиме debug
$zab=new Tzabbix(false);
$zab->SetCurlOpt(CURLOPT_URL,$url);
echo "-получаем api-key\n";
$res=$zab->Auth($login, $password);
if (isset($res->result)==true){
    if ($res->result!==false){        
        $res=$zab->Execute("host.get", ["output"=>["hostid","host"],"selectInterfaces"=>["interfaceid","ip"]]);
        var_dump($res);
    } else {
        var_dump($res);        
        die(-1);
    };    
} else {
  echo "--не понятная ошибка. попробуйте переключить в debug=true";  
};

3 способа получения координат по адресу

1) Яндекс

https://geocode-maps.yandex.ru/1.x/?geocode=$address&format=json&results=1

Минусы: Быстро банит, при превышении какого-то количества запросов

2) Гугл

https://maps.googleapis.com/maps/api/geocode/json?address=Вологда&key=YOUR_API_KEY

Минусы: нужно получать ключ

3) Спутник

http://search.maps.sputnik.ru/search/addr?q=$address

Минусы: для части адресов, с которыми Яндекс справляется отлично, тут безбожно врёт.

Пачкой обновляем сертификаты SSL на сервере

Как известно сертификаты LetsEncrypt живут только 3 месяца, и соответственно их нужно регулярно обновлять. Самый хороший и простой способ обновления сертификатов — по записи DNS, однако это подходит не всем. Обновление же сертификата записью файла в «корне» сайта тоже не всегда работает по разным причинам. Выходом может стать следующий «финт ушами»: создаем альтернативный файл виртуальных хостов (рассматриваю вариант с apache, nginx практически не использую), который используется исключительно под получение сертификатов. Т.е. логика следующая: скрипт «подменяет» файл с виртуальными хостами на временный «облегченный», apache перестартовываем, спокойно обновляем сертификаты, затем возвращаем оригинальный файл с виртуальными хостами и снова перестартовываем apache. Особенностью «временного» файла является то что задана единая точка хранения файлов которые требуется создать для обновления сертификатов.

Итак получается скрипт обновления, что-то вроде:

«Временный» файл хостов:

<VirtualHost *:80>
    ServerAdmin pawfvwervwe@mail.ru
    DocumentRoot "/usr/local/www/apache24/sites/lets"
    ServerName ewfer.tv
    ServerAlias www.werfer.tv wer.ru werf.ru rwefwerf.ru # перечисляем все домены которые нужно обновить
    <Directory "/usr/local/www/apache24/sites/lets">
    Options Indexes FollowSymLinks MultiViews
        AllowOverride All
    allow from all
    Require all granted	
    </Directory>    
</VirtualHost>

bash скрипт обновления:

#!/bin/sh
echo "- Подменяю текущий конфиг виртуальных хостов apache"
cp /usr/local/etc/apache24/extra/httpd-vhosts.conf /usr/local/etc/apache24/extra/httpd-vhosts.conf.backup
cp /usr/local/etc/apache24/extra/httpd-vhosts.conf.lets /usr/local/etc/apache24/extra/httpd-vhosts.conf
/usr/local/etc/rc.d/apache24 restart
echo "- Получаю сертификаты"
certbot certonly --agree-tos --email rfer@mail.ru --webroot -w /usr/local/www/apache24/sites/lets/ -d refwer.tv
certbot certonly --agree-tos --email erferf@mail.ru --webroot -w /usr/local/www/apache24/sites/lets/ -d www.ewferf.tv
echo " - Возвращаю конфигурацию виртуальных хостов как было"
cp /usr/local/etc/apache24/extra/httpd-vhosts.conf.backup /usr/local/etc/apache24/extra/httpd-vhosts.conf
/usr/local/etc/rc.d/apache24 restart

 

Да, при таком способе получается некий простой в работе сайтов. Но раз в 3 месяца, ночью это для меня приемлимый вариант.