понедельник, 19 сентября 2016 г.

WordPress 4.6: cURL error 23: Failed writing body

После недавнего обновления WordPress до 4.6 возникли проблемы с cURL (например при обновлении плагинов, которые используют cURL):
cURL error 23: Failed writing body (373 != 449)

Судя по форуму, в 4.6 cURL поломали, а в 4.6.1 до сих пор этот фикс не выкатили.
Решение исправить строку:
if (!function_exists(‘curl_init’) || !function_exists(‘curl_exec’)) {
на
if (true || !function_exists('curl_init') || !function_exists('curl_exec')) {
в файле ./wp-includes/Requests/Transport/cURL.php

понедельник, 12 сентября 2016 г.

Решение проблемы с редиректом страницы на порт 80

У некоторых клиентов на шареде, в котором использутся связка Nginx+Apache, может возникать проблема с редиректом (часто встречается на CMS битрикс):
$ curl -I http://site.ru/bitrix/admin
HTTP/1.1 301 Moved Permanently
Server: nginx
Location: http://site.ru:80/bitrix/admin/

Т.е. видим, что идет некорректный редирект на https://site.ru:80/bitrix/admin/
Если же напрямую со слешем отправляем запрос, то все ок:
$ curl -I http://site.ru/bitrix/admin/ --silent | head -1
HTTP/1.1 200 OK

Решение состоит в том, чтобы в локейшны для @fallback и / добавить директиву:
proxy_set_header X-Forwarded-Host $http_host;

Примерно так:
location @fallback {
...
   proxy_set_header X-Forwarded-Host $http_host;
}
location / {
...
   proxy_set_header X-Forwarded-Host $http_host;
}

После рестарта конфига nginx, все ок:
$ curl -IL http://site.ru/bitrix/admin
HTTP/1.1 301 Moved Permanently
Server: nginx
Location: http://site.ru/bitrix/admin/

HTTP/1.1 200 OK
Server: nginx

суббота, 10 сентября 2016 г.

Странный баг в Thunderbird+Lightning

Использую расширение Lightning в Thunderbird для календаря и уведомлений и случайно заметил баг.

Если создать новое событие в календаре, с названием "ДР":

То после нажатия на кнопку сохранения оно каким-то образом трансформируется в белеберду:

Если же написть не "ДР", а например "ДРа" или "ДД", то все отображается нормально:

Что это за баг я так и не понял, получилось воспроизвести только на "ДР", на других сочетаниях букв все в порядке.
Интересно у меня одного такой баг?

Thunderbird 45, Lightning 4.7b3

пятница, 2 сентября 2016 г.

Некоторые полезные ссылки из закладок

http://www.layoutit.com/ -- построить интерфейс без единой строчки кода с помощью Bootstrap
http://www.opennet.ru/docs/RUS/bash_scripting_guide/ -- ABSG (руководство по Bash)
http://www.opennet.ru/docs/RUS/iptables/ -- хоть и старое, но хорошее руководство по IPTables
https://regex101.com/ -- проверка различных регулярок
https://events.yandex.ru/lib/talks/?audience=administratoryi -- библиотека видео от Яндекс по теме администрирования
http://theasder.github.io/learning/2014/12/06/google-recommendations-for-learning.html -- рекомендации Google по изучению программирования
http://paste.ubuntu.com/ -- симпатичный аналог pastebin
http://ruhighload.com/ -- много интересных вещей по построению сайтов, масштабированию и оптимизации
http://xgu.ru/xen/manual/ -- руководство по Xen
https://12factor.net/ru/ -- перевод методологии 12 факторов для создания приложений
https://park.mail.ru/materials/video/ -- различные видеолекции от Mail.ru
https://galaxy.ansible.com/ -- много интересных и полезных ролей для Ansible
http://ocw.mit.edu/courses/audio-video-courses/#electrical-engineering-and-computer-science -- открытые лекции от MIT по CS&E
http://firstwiki.ru/index.php/Поиск_и_профилактика_защиты_от_вредоносного_ПО -- тут все ясно
http://www.gurkin33.ru/ -- небольшой курс по Cisco basic, switches, routers
http://ruhighload.com/post/Отказоустойчивость+и+Failover -- заметка по failover на разных уровнях
http://www.crimeflare.com/cfs.html -- сервис позволяет для некоторых случаев раскрыть настоящий адрес за Cloudflare
https://vulners.com/#audit -- база уязвимостей
http://www.texample.net/tikz/examples/ -- примеры для работы с TikZ и PGF в LaTeX
http://docs.w3cub.com/ -- документация по некоторым проектам, связанных с Web
http://mxtoolbox.com/SuperTool.aspx -- удобный инструмент для проверки и мониторинга блеклистов и вещей связанных с почтой

среда, 31 августа 2016 г.

Вывод расширенной информации о домене в зоне name

Стандартный вывод whois:
$ whois amet13.name
...
 Domain Name ID: 12267187_DOMAIN_NAME-VRSN
 Domain Name: AMET13.NAME
 Sponsoring Registrar: REGISTRAR OF DOMAIN NAMES REG.RU LLC
 Sponsoring Registrar IANA ID: 1606
 Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited

Расширенный вывод:
$ whois -h whois.nic.name 'domain = amet13.name'
или
$ whois domain=amet13.name
...
   Domain Name ID: 12267187_DOMAIN_NAME-VRSN
   Domain Name: AMET13.NAME
   Sponsoring Registrar: REGISTRAR OF DOMAIN NAMES REG.RU LLC
   Sponsoring Registrar IANA ID: 1606
   Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
   Registrant ID: 12052366_CONTACT_NAME-VRSN
   Admin ID: 12052366_CONTACT_NAME-VRSN
   Tech ID: 12052366_CONTACT_NAME-VRSN
   Billing ID: 12052366_CONTACT_NAME-VRSN
   Name Server: CHAN.NS.CLOUDFLARE.COM
   Name Server ID: 2629506_HOST_NAME-VRSN
   Name Server: PLATO.NS.CLOUDFLARE.COM
   Name Server ID: 2603988_HOST_NAME-VRSN
   Created On: 2013-09-29T15:53:31Z
   Expires On: 2017-09-29T15:53:31Z
   Updated On: 2016-07-21T17:08:44Z

вторник, 16 августа 2016 г.

Проблемы с eaccelerator (Invalid opcode, Unable to change cache directory)

Кривой eaccelerator, который нужно патчить при каждом чихе.
Например могут встретиться такие ошибки:
[error] [client 1.1.1.1] eAccelerator: Unable to change cache directory /var/cache/php-eaccelerator permissions
или
Fatal error: Invalid opcode 153/1/8. in /var/www/.../pdofetch.class.php on line 494

Для устранения первой ошибки мне помог этот патч:
# diff -U 0 eaccelerator.c_old eaccelerator.c
--- eaccelerator.c_old 2016-08-16 14:17:15.331786184 +0300
+++ eaccelerator.c 2016-08-16 13:34:36.592906639 +0300
@@ -1770 +1770 @@
-        if (buffer.st_mode != 777) {
+        if (buffer.st_mode != 040777) {

Для второй:
# diff -U 0 optimize.c_old optimize.c
--- optimize.c_old 2016-08-08 12:00:02.000000000 +0300
+++ optimize.c 2016-08-08 12:00:43.000000000 +0300
@@ -3503,0 +3504,11 @@
+    /* do not optimize if opcodes have "closures" */
+    zend_op* op = op_array->opcodes;
+    int len = op_array->last;
+    int line_num;
+
+    for (line_num = 0; line_num < len; op++,line_num++) {
+        if (op->opcode == ZEND_DECLARE_LAMBDA_FUNCTION) {
+            return;
+        }
+    }
+

Также можно еще в /etc/php.d/eaccelerator.ini попробовать сменить значение переменной eaccelerator.cache_dir:
eaccelerator.cache_dir = "/tmp"
;eaccelerator.cache_dir = "/var/cache/php-eaccelerator"

пятница, 12 августа 2016 г.

Блокировка по User-Agent с помощью IPTables

Блокируем все соединения на 80 и 81 порты, в которых есть совпадения с нужным UA:
# iptables -A INPUT -p tcp --dport 80 -m string --algo bm --string "compatible; MSIE 6.0; Windows NT 5.1; SV1" -j DROP
# iptables -A INPUT -p tcp --dport 81 -m string --algo bm --string "compatible; MSIE 6.0; Windows NT 5.1; SV1" -j DROP

пятница, 22 июля 2016 г.

HTTPS для кастомного домена в blogger

Вдохновившись идеей автора блога https://www.stableit.ru/2016/06/cloudflare.html решил для своего блога наконец-таки включить HTTPS, потому что от Google я наверное уже не дождусь нативной поддержки.

Все что нужно было сделать, сменить DNS'ы на cloudflare'овские и включить SSL, больше мне ничего не нужно было.
А еще добавил правила редиректа с HTTP на HTTPS.

воскресенье, 26 июня 2016 г.

Использование TryStack для ознакомления с OpenStack

Это выдержка из методички, которую я писал для студентов-магистров.
Поэтому тут будет немного очевидных пояснений для студентов.

Сервис TryStack позволяет использовать уже готовое окружение OpenStack без развертывания сложной инфраструктуры на локальных серверах.

Для регистрации на сервисе необходимо иметь аккаунт в Facebook и вступить в группу TryStack.
Ведется разработка OpenStackID для авторизации на сервисе с помощью OAuth2, однако регистрация возможна только через Facebook.

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

Сброс пароля IPMI Supermicro

Устанавливаем ipmitool:
# apt-get install ipmitool

Если во время установки в конце появляются ошибки:
ipmievd: using pidfile /var/run/ipmievd.pid0
Could not open device at /dev/ipmi0 or /dev/ipmi/0 or /dev/ipmidev/0: No such file or directory
Unable to open interface
invoke-rc.d: initscript ipmievd, action "start" failed.
Unable to start ipmievd during installation.  Trying to disable.
значит надо подключить модули ядра для работы IPMI:
# lsmod | grep ipmi
# modprobe ipmi_devintf
# modprobe ipmi_si
# lsmod | grep ipmi
ipmi_si                26764  0 
ipmi_devintf            4029  0 
ipmi_msghandler        22871  2 ipmi_si,ipmi_devintf
# vim /etc/modules
ipmi_devintf
ipmi_si

Рестартим сервис и меняем пароль:
# service ipmievd restart
# ipmitool -I open user set password 2 P@$$w0rd
в данном случае цифра 2 означает ID пользователя ADMIN.