smartctl и HP SmartArray P410

Впервые столкнулся с контроллером, который обслуживается драйвером hpsa. Пришлось помучиться с доступом к информации о состоянии дисков. В итоге оказалось, что к дискам нужно обращаться следующим образом:

smartctl -a /dev/sda -d sat+cciss,Х

redmine и плагин redmine_gitosis

Обновил недавно redmine с 1.3 до 1.4.4, что поломало загрузку ключей в плагин с ошибкой

NameError (uninitialized constant GitosisPublicKeysController::ARCondition):

Выяснилось, что из redmine убрали нужную библиотечку, чтобы ее вернуть, достаточно положить файлик ar_condition.rb в redmine/lib. Взять файлик можно, например, отсюда.

Старый знакомый

Отловил сегодня баг, который меня беспокоил, наверное, 2 или больше года назад.

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

Недавно у некоторых пользователей на Windows 7 начали проявляться странные симптомы на компьютерах, не получалось входить на сетевые шары, не подключались сетевые диски и тому подобное. Как выяснилось, шары и диски были подключены через DFS. После нескольких попыток разобраться с DFS, починить DNS и прочее, выяснилось, что виновато RAS-подключение, через которое пользователю выдается интернет. Стоит его отключить, как все магическим образом начинает работать. После этого поиск ошибки стал делом техники, выяснилось, что при подключении к впн, Windows пытается пользоваться именно этой парой логин-пароль для авторизации (не знаю зачем это было добавлено). Отключается элементарно в файле, который отвечает за подключение, нужно заменить 1 в параметре UseRasCredentials на 0. Файл находится либо в профиле пользователя в каталоге %AppData%\Microsoft\Network\Connections\Pbk, либо в каталоге %ProgramData%\Microsoft\Network\Connections\Pbk

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

Убираем /index.php в nginx

У меня есть сайтик, где главная страничка статическая, а весь динамический контент генерируется через index.php, на нем потребовалось, чтобы не дублировались страницы /index.php, /index.html и /. Вот как это сделать в nginx

location ~ ^/index.(html|php)$ {
  if ($request_uri ~ ^/index.(html|php)) {
    rewrite ^.*$ / permanent;
  }
}

Теперь запросы на /index.html и /index.php будут давать 301 редирект на корень сайта, а сам сайт целиком будет работать как и прежде.

Squid и куча адресов

Некоторое время назад потребовалось поднять прокси на нескольких адресах, для этого я использовал программу proxy из комплекта 3proxy:

proxy -iIP -eIP -l/dev/null -d -p3128

Увы, когда адресов становится чуть больше чем несколько, это начинает утомлять своей избыточностью и кучей процессов. Поэтому было решено заменить кучу этих proxy на старый добрый squid. Ставится он из репозитория дистрибутива без всяких заморочек, поэтому опишу только конфигурацию.

acl all src all
http_access allow all
http_port 3128
access_log none
cache_store_log none
maximum_object_size 0 KB
minimum_object_size 0 KB
no_cache deny all
cache_dir null /tmp
forwarded_for off

Отключаем какой-либо контроль за входящими соединениями (их я фильтрую в iptables/ipset), логи, кеширование. Затем добавляем контроль заголовков:

# Header control
header_access Allow allow all
header_access Authorization allow all
header_access Cache-Control allow all
header_access Content-Encoding allow all
header_access Content-Length allow all
header_access Content-Type allow all
header_access Date allow all
header_access Expires allow all
header_access Host allow all
header_access If-Modified-Since allow all
header_access Last-Modified allow all
header_access Location allow all
header_access Pragma allow all
header_access Accept allow all
header_access Accept-Encoding allow all
header_access Accept-Language allow all
header_access Accept-Charset allow all
header_access Content-Language allow all
header_access Mime-Version allow all
header_access Cookie allow all
header_access Set_Cookie allow all
header_access Retry-After allow all
header_access Title allow all
header_access Connection allow all
header_access Proxy-Connection allow all
header_access Proxy-Authorization allow all
header_access Proxy-Authenticate allow all
header_access WWW-Authenticate allow all
header_access User-Agent allow all
header_access All deny all

Теперь ничего кроме заголовков, у которых указано allow за прокси не уйдет. X-Forwarded-For тоже отключен. Далее добавляем «магию» для IP-адресов:

acl ip1 myip 10.0.0.1
tcp_outgoing_address 10.0.0.1 ip1
acl ip2 myip 10.0.0.2
tcp_outgoing_address 10.0.0.2 ip2
acl ip3 myip 10.0.0.3
tcp_outgoing_address 10.0.0.3 ip3

Все, теперь все запросы, пришедшие на какой-то адрес, прокси будет отправлять с этого же адреса, что и требовалось.

HW RAID в Debian

Обнаружил полезный для владельцев железных рейд-контроллеров репозиторий Debian/Ubuntu, который так и называется HWraid.

Подключается оч. просто, например, для Squeeze нужно добавить в /etc/apt/sources.list:

deb http://hwraid.le-vert.net/debian squeeze main

Ключ для подписи, увы, авторы не прилагают, т.ч. просто используем -y —force-yes при установке пакета.

query string и rewrite в nginx

На одном из сайтов потребовалось сделать 301 редирект всех URL на индекс, я прописал в конфиг вот такую конструкцию:

if ( !-e $request_filename ) {
  rewrite ^.*$ / permanent;
}

Увы, URL, к которым добавлялись какие-то параметры типа http://example.com/url1?test=1 редиректились не совсем правильно: http://example.com/?test=1. Оказалось, чтобы этого избежать, подправить нужно совсем чуть-чуть:

if ( !-e $request_filename ) {
  rewrite ^.*$ /? permanent;
}

И все, редирект теперь срабатывает на http://example.com/

Sony Ericsson j108i (cedar) как модем

Смотрю, ищут подобный вопрос достаточно активно. На самом деле, проблем с этим никаких. Вот что надо сделать.

  1. Подключаем телефон к компьютеру. (Для пользователей Windows 7 есть инструкция)
  2. Запускаем PC Companion, выбираем приложение «Подключение к интернету»
  3. Жмем в нем кнопку «Подключить» и через несколько секунд связь будет установлена