Django ошибка django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb при синхронизации БД.

Вы настроили параметры соединения с БД MySQL в settings.py, но при выполнении синхронизауии

python ./manage.py syncd

Вылетает простыня ошибок, а в конце:

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

Проблема в отсутствии моделя mysql для питона.
Решение:

apt-get install python-mysqldb

Для других конфигураций работают команды:

pip install MySQL-python
easy_install MySQL-python

http://geckich.blogspot.com/

Установка RoundCube Webmail

Сразу определюсь: ОС – Debian, MTA – Postfix, использую только защищенные подключения, веб-сервер Apache + modphp5.
В Debian, как всегда, есть два пути – ставить из сорцов или из пакетов. Я выбрал 2й путь.

apt-get install roundcube roundcube-mysql libapache2-mod-evasive
nano /etc/apache2/conf.d/roundcube

Добавляем строчки:

Alias /roundcube/program/js/tiny_mce/ /usr/share/tinymce/www/

Alias /roundcube /var/lib/roundcube

chown -R www-data /var/lib/roundcube/
nano /var/lib/roundcube/config/main.inc.php

Здесь прописываем конфиги для своего почтового сервера. Пример:

$rcmail_config[‘force_https’] = TRUE;
$rcmail_config[‘default_host’] = ‘ssl://localhost:993’;
$rcmail_config[‘imap_auth_type’] = ‘check’;
$rcmail_config[‘smtp_server’] = ‘127.0.0.1’;
$rcmail_config[‘smtp_port’] = 465;

$rcmail_config[‘smtp_user’] = ‘%u’;

$rcmail_config[‘smtp_pass’] = ‘%p’;

$rcmail_config[‘smtp_auth_type’] = ‘LOGIN’;

nano /etc/apache2/sites-available/roundcube

<VirtualHost *:443>

    ServerAdmin admin@domain.com
    DocumentRoot /var/lib/roundcube/
    DirectoryIndex index.php

    ServerName webmail.domain.com
    ServerAlias www.webmail.domain.com


    SSLEngine On
    SSLCertificateFile /etc/ssl/server.cert
    SSLCertificateKeyFile /etc/ssl/server.key

</VirtualHost>

a2enmod ssl
a2ensite default-ssl


Чтобы увеличить максимальный размер вложенных в письмо файлов, нужно поменять следующее. Итак, приступим.

nano /etc/php5/apache2/php.ini

memory_limit = 256M
post_max_size = 128M
upload_max_filesize = 64M

Размеры ставьте как вам надо, но должно быть так: memory_limit > post_max_size > upload_max_filesize
Далее:

nano /etc/postfix/main.cf

message_size_limit = 64000000

Это значение в байтах.
И теперь самое западлянское, которое я не сразу нашел:

nano /var/lib/roundcube/.htaccess

php_value       upload_max_filesize     64M

php_value       post_max_size           128M
php_value       memory_limit            256M

Перезагружаем сервисы и смело топаем на https://webmail-address.int/roundcube

/etc/init.d/postfix restart

/etc/init.d/apache2 restart

http://geckich.blogspot.com/

Разрешение обычным пользователям использовать tcpdump

Возникла потребность разрешить программерам юзать tcpdump. Давать им рутовую консоль как-то не кошерно, потому нашел решение:

which tcpdump
chmod 4755 /sbin/tcpdump

Для зпрещения – chmod 700 или 755

http://geckich.blogspot.com/

Отключение USB Flash Drive но не клав/мышек в Linux

Задача: запретить юзверам юзать съемные USB-накопители.
Можно конечно втупую отрубить в BIOS, но тогда USB-клавы, мыши и другие нужные девайсы работать не будут.

Моё решение: Находим модуль usb-storage.ko и перемещаем в другое место. Ну или злостно удаляем 🙂

ls /lib/modules/$(uname -r)/kernel/drivers/usb/storage/usb-storage.ko
mv /lib/modules/$(uname -r)/kernel/drivers/usb/storage/usb-storage.ko /root

Включаются флешки обратным действием. На других системах, кроме Debian, для этого может потребоваться еще команда:

modprobe usb-storage

http://geckich.blogspot.com/

Настройка модемов Huawei для работы с АТС Asterisk PBX

После некоторых мучений и поисков, что чего и куда, решил написать статью для потомков о настройке модемов Huawei для работы с АТС Asterisk.

Для начала установим необходимые пакеты. Всё нижесказанное для системы Debian. Для других дистрибутивов нужно будет подправить команды и возможно пути.

aptitude install asterisk-dev libusb libusb-dev subversion build-essential

Теперь идём на реальную вин-машину. Втыкаем туда нашего зверька, винда должна пошуршать дровами, затем надо установить из памяти устройства программульку U’manager. Она установит дрова именно на сам модем. Для верности, заходим в свойства в прожке и проверяем, виден ли наш модем.

Теперь скачиваем прожку для крякания модемчиков Хуявей тут Huawei_Modem_Unlocker.zip


Вначале слева делаем Check Status и жмякаем SERVICE, если в логе внизу покажет, что модем залочен, то делаем ему UNLOCK и независимо от этого обязательно делаем ENABLE VOICE – ну собсно чтобы он звонил 🙂

Далее втыкаем донгл в сервер и, если у вас Asterisk на виртуалке, то заходим в свойства виртуальной машины и пробрасываем ей девайс:

Если у вас такой картинки нету, то ковыряем настройки. Может быть, надо зайти в свойства хоста и сделать как на картинке (Advanced settings – Edit – отмечаем юсб хабы):

Когда вы так или иначе прикрутили модем к серверу Asterisk, проверим:

lsmod | grep usb
usb_wwan                8068  1 option
usbserial              27676  6 option,usb_wwan
usb_storage            40217  0
usbhid                 33292  0
hid                    63257  1 usbhid
usbcore               123122  8 option,usb_wwan,usbserial,usb_storage,usbhid,uhci_hcd,ehci_hcd
nls_base                6377  1 usbcore
scsi_mod              126725  9 usb_storage,vmw_pvscsi,sd_mod,sg,sr_mod,mptspi,mptscsih,scsi_transport_spi,libata

ls /dev/ | grep USB
ttyUSB0
ttyUSB1
ttyUSB2

Если у вас примерно похожее, то всё окей.

В некоторых случаях модем линуксом сразу не определяется. А определяется как cr-rom или какой-нибудь флеш… в общем, ttyUSB нема. В этой ситуации может помочь утилитка USB Mode Switch, которая с помощью манипуляций правилами udev делает то, что нам нужно 🙂 Качаем ее с офф сайта (на Debian/Ubuntu она есть в репозиториях) http://www.draisberghof.de/usb_modeswitch/ затем распаковываем и компилируем. Не забываем установить утилиту tcl – без нее ругаться не будет, но и работать тоже… При следующем подключении модема, утилитка должна сработать и дать нам наши ttyUSB.

Теперь надо скачать для Asterisk-a модуль для работы с хуйвей модемами. Есть два варианта – модуль chan_datacard и chan_dongle. Мне вначале попался 1й и я заюзал его. Как оказалось, зря. Т. к. работало всё, кроме отправки USSD-запросов. А не знать свой баланс – пичалька. Потому ставить лучше 2й. Скачиваем последнюю версию с сайта http://code.google.com/p/asterisk-chan-dongle/downloads/list и компилим (предварительно сделав noload в modules.conf 1-му модулю, если он у вас уже есть):

wget http://asterisk-chan-dongle.googlecode.com/files/chan_dongle-1.1.r10.tgz

tar -xzvf chan_dongle-1.1.r10.tgz 
cd chan_dongle-1.1.r10/
./configure 
make
make install
ls /usr/lib/asterisk/modules
cp etc/dongle.conf /etc/asterisk/
nano /etc/asterisk/dongle.conf

В конфиге прописываем параметры для нашего модемчика. Для моего Huawei E173 это выглядело так:

[defaults]

rxgain=4
txgain=4

[dongle0]
audio=/dev/ttyUSB1              ; tty port for audio connection;        no default value
data=/dev/ttyUSB2               ; tty port for AT commands;             no default value

Причем, номера ttyUSBх могут отличаться для разных модемов – находям, если что, методом “тыка”. А строки с усилением звука – потому что слишком низкий уровень звука по-умолчанию был у меня.

Далее, в папке etc, которая находится там, куда вы распаковали исходники модуля есть файл extensions.conf, в котором примеры чего и как прописывать в диалплан.

Если мы в /etc/asterisk/dongle.conf ничего явно не указали, то входящий вызов по-умолч. приходит в секцию [dongle-incoming].

Там я прописал :

include => dongle-incoming-sms
include => dongle-incoming-ussd

exten => s,n,Goto(incoming,s,1)

1е 2 строчки нужны для приема SMS и USSD-запросов. А 3я перекидывает вызов в стандартную секцию для входящих звонков моего диалплана. Содержимое инклюдов взял из гугла:

[dongle-incoming-ussd]
exten => ussd,1,Verbose(Incoming USSD: ${USSD})
exten => ussd,n,System(echo ‘${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} – ${DATACARD}: ${USSD}’ >> /var/log/asterisk/ussd.txt)
exten => ussd,n,Hangup()

[dongle-incoming-sms]
exten => sms,1,Verbose(Incoming SMS from ${CALLERID(num)} ${SMS})
exten => sms,n,System(echo ‘${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} – ${DATACARD} – ${CALLERID(num)}: ${SMS}’ >> /var/log/asterisk/sms.txt)
exten => sms,n,Hangup()

Далее, чтобы звонить через модем, нужно в секцию, где обрабатываются исходящие вызовы поместить такое:

exten => _7.,1,Dial(Dongle/dongle0/+${EXTEN})
exten => _0.,1,Dial(Dongle/dongle0/${EXTEN})

1-я строчка – для звонков в Россию. 2-я – для звонков на мобильные номера по Украине (я нахожусь в Украине – соотв., для других стран может быть по-другому здесь).

Дальше. Я так и не понял, как посылать USSD-запросы через диалплан (т. е. тупо набирая в SIP-телефоне). Но, через CLI Asterisk’a это делается просто:

asterisk -rx dongle ussd dongle0 *111#

Где dongle0 – как вы обозвали своё устройство в конфиге, а за ним сам запрос. Если в диаплане у вас прописана обработка USSD так же, как и у меня, то результаты запросов будут дописываться в файл /var/log/asterisk/ussd.txt.

Я написал скрипт на Python, который проверяет балланс через эту команду и отсылает результат на меил. Но о нем я напишу в другой статье.

входящие SMS сохраняются автоматом в файле /var/log/asterisk/sms.txt, если вы прописали как я.

З. Ы. Для тех, кто по каким-либо причинам решит юзать модуль chan_datacard, приведу кратко настройку его.

svn checkout http://chan-datacard.googlecode.com/svn/trunk/ chan-datacard-read-only

cd chan-datacard-read-only/
./configure
make install
cp etc/datacard.conf /etc/asterisk/datacard.conf
nano /etc/asterisk/datacard.conf
[E1550_t](!)
context=incoming-datacard       ; context for incoming calls
rxgain=3                        ; increase the incoming volume
txgain=-3                       ; increase the outgoint volume
autodeletesms=yes               ; auto delete incoming sms
resetdatacard=yes               ; reset datacard during initialization
u2diag=0                        ; set U2DIAG parameter (0 = disable everything except modem function)
[datacard0](E1550_t)
context=incoming-datacard
audio=/dev/ttyUSB1              ; tty for audio connection
data=/dev/ttyUSB2               ; tty for AT commands
group=1                         ; calling group
Диалплан:

[incoming-datacard]
exten => sms,1,Verbose(Incoming SMS from ${CALLERID(num)} ${SMS})
exten => sms,n,System(echo ‘${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} – ${DATACARD} – ${CALLERID(num)}: ${SMS}’ >> /var/log/asterisk/sms.txt)
exten => sms,n,Hangup()

exten => ussd,1,Verbose(Incoming USSD: ${USSD})
exten => ussd,n,System(echo ‘${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} – ${DATACARD}: ${USSD}’ >> /var/log/asterisk/ussd.txt)
exten => ussd,n,Hangup()

exten => s,1,Goto(succ-incoming,s,1)
exten => s,n,Hangup()

[outgoing]
exten => _0.,1,Dial(Datacard/datacard0/${EXTEN})

UPD:

Last chan_dongle url – https://asterisk-chan-dongle.googlecode.com/files/chan_dongle-1.1.r14.tgz

Полезные команды в Asterisk CLI:

dongle show device settings dongle0 – показывает все настройки для модема

UPD2:

Как выяснилось чуть позже, операторы не разрешают использовать свои обычные симки в GSM-гейтвеях или вот таких вот модемах (который по сути – дешевый GSM-гейт). Для того, чтобы оператор не заблокировал SIM-карточкУ, необходимо перейти на корпоративный тариф, разрешающий использование гейта (обычно тариф дороже обычных). О переходе и тарифе можете узнать у свогео ОПсоСа.

UPD3:

Обычный chan_dongle переехал на github: https://github.com/bg111/asterisk-chan-dongle (работает только с Asterisk 1.6, 1.8).

Форк для работы с Asterisk 11: https://github.com/jstasiak/asterisk-chan-dongle/

Форк для работы с Asterisk 13: https://github.com/oleg-krv/asterisk-chan-dongle

Установка полноценного Firefox в Linux Debian вместо Iceweasel

Лично я предпочитаю в качеств ебраузера использовать Google Chrome… по многим причинам. Но иногда он нужен – полноценный фаерфокс, с некоторыми его полезными плагинами. А в Debian по-умолчанию установлен кривой Iceweasel. Вот как исправить это недоразумение.

1) удаляем Iceweasel

sudo apt-get remove iceweasel

2) идем на сайт мозиллы http://www.mozilla.org/en-US/firefox/new/ и скачиваем текущую версию фаерфокса.
3) распаковываем архив
bzip2 -d firefox-14.0.1.tar.bz2
tar -xvf firefox-14.0.1.tar
cd firefox
4) запускаем!
./firefox
Для удобвства можно сделать линки себе куда нужно.
http://geckich.blogspot.com/

Debian, ошибка в логах mpt-statusd: detected non-optimal RAID status

Было замечено, и не только мной, что у Debian 6 Squeeze, установленном на виртуальную машину, часто в лог /var/log/messages сыплет сообщения типа:

mpt-statusd: detected non-optimal RAID status

Устраняется это отключением демона, следящего за RAID (которого в этой ситуации нету):

/etc/init.d/mpt-statusd stop

echo RUNDAEMON=no > /etc/default/mpt-statusd

Всё.

http://geckich.blogspot.com/

Ошибка при входящеми звонке в Asterisk

Вот только что долбался с тем, что почему-то Asterisk перестал обрабатывать входящие звонки, а в логе ( tail -n 400 /var/log/asterisk/messages ) при этом писал ошибку типа:

WARNING[31425] pbx.c: Channel ‘ваш канал’ sent into invalid extension ‘s’ in context ‘ваш контекст’, but no invalid handler

Продолбался, пронервничался, а оказалось всё просто – mistype в названии контекста! 🙂
В общем, такая ошибка вылазит в двух случаях:
1) нет такого экстеншна в контексте, либо нет в принципе такого контекста (или он закомментирован или т.п .)
2) ошибка в названии контекста/экстеншна, соответственно, Asterisk его не видит.
Вот так всё просто… иногда 🙂
http://geckich.blogspot.com/

Debian 7 тормоза при переключении вкладок в Chrome

После установка Debian 7 Wheezy мною было замечено, что Google Chrome начинает немприятно тормозить при переключении вкладок, если их больше 4-5. Это меня через минут 10-15 начало жутко кумарить и я полез искать решение.

Нашел 2 варианта. Остановился на 1м, но приведу оба – вдруг кому подойдет больше 2й.
1) заставиь хром юзать старую библиотеку libcairo2 v1.10.2-7. Необходимо скачать пакет с библиотекой, извлечь ее и скормить хрому. Для 64-битной системы команды:
wget http://backports.debian.org/debian-backports/pool/main/c/cairo/libcairo2_1.10.2-7~bpo60+1_amd64.deb

dpkg -x libcairo2_1.10.2-7~bpo60+1_amd64.deb /opt/libcairo2


ln -s /opt/libcairo2/usr/lib/libcairo.so.* /opt/google/chrome/

2) Для видеокарт nVidia еще работает команда:

nvidia-settings -a InitialPixmapPlacement=0
Но, при этом заметно возрастает нагрузка на CPU, потому я сделал как в 1-м методе, хотя у меня и nVidia.
Надеюсь, вам это поможет также.
http://geckich.blogspot.com/

Настройка почты в Redmine

Здесь я опишу настройку Redmine для отправки почты через свой почтовый сервер.

Redmine настроен на сервере Linux Debian 6 через mod_passenger веб-сервера apache2

В зависимости от вашей инсталляции редактируем файл /etc/redmine/default/email.yml (Debian, из пакетов) или /usr/share/redmine/config/email.yml (смотрите, не перепутайте, типа как я – и парился, почему ж оно не вхавывает новые настройки… 🙂 ) и прописываем настройки, заменив адреса и т. д. на свои:

production:
  delivery_method: :smtp
  smtp_settings:
    address: 192.168.1.2
    port: 25
    domain: mydomain.com
    authentication: :plain
    user_name: “redmine@mydomain.com”
    password: “Password”


development:

  delivery_method: :smtp
  smtp_settings:
    address: 192.168.1.2
    port: 25
    domain: mydomain.com
    authentication: :plain
    user_name: “redmine@mydomain.com”
    password: “Password”

http://geckich.blogspot.com/