Загрузка и исполнение внешнего скрипта javascript на своем сайте

Прилетела давече задача: подключить платежную систему на сайте. «Дело простое» подумал я сначала. Обычно платежные системы сами предоставляют виджет, который остается только вставить на сайт. Но! дьявол как всегда оказался в деталях — а именно сайт сделан на «тильде» — значит никакого PHP. Только javascript+html. Плюс крайне желательно обойтись без «переходов» со страницу на страницу. А именно: пользователь ввел договор, сумму, ФИО, прошла проверка и только после на этой-же странице показалась форма платежной системы.

В принципе всё реализуемо и не сложно. Но! после вставки:

браузер стал выдавать ошибку:

Вызов document.write() из асинхронно-загруженного внешнего сценария был проигнорирован.

, и выполнять скрипт откзывался. Как оказалось, создатели виджета вставили в тело скрипта команды вида document.write, что категорически запрещается без перезагрузки страницы. Если бы этот скрипт я просто статически разместил на странице, то всё бы было хорошо. Но нам это не нужно..

Долго думал… Долго Гуглил…

Решение: перед загрузкой скрипта подменить функцию вызова document.write своей «безобидной». В итоге скрипт получился такой:

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

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

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

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. Особенностью «временного» файла является то что задана единая точка хранения файлов которые требуется создать для обновления сертификатов.

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

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

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

 

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

Как загнать весь сайт в кэш на сервере

Для того чтобы все страницы сайта попали в «кэш», нужно сэмулировать их открытие. Например командой wget:

1 22 23 24 25 26 54