Results 1 to 15 of 153

Thread: router2sms [python]

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #1

    Post router2sms [python]

    Вынес с отдельную ветку, чтобы не потерялось.
    Добавлено:
    - отсылка больших смс путем дробления на части и посылки каждой отдельно. Большие смс с русским текстом тоже обрабатываются;
    - убран мусор, добавляемый mail.ru в конец сообщения;
    - список адресов электронной почты перебирается по кругу. Ищутся те, с которых можно послать;
    - создана веб-страница для отправки смс с помощью веб-интерфейса (тестировал с в связке lighttpd);
    - для ускорения работы скрипта время возможной отправки смс сохраняется в файл;
    - присутствует отложенная отправка;

    Установка
    1) Скопируйте содержимое архива sms в какую-нибудь директорию.
    2) Установите Python. Для этого в шелле выполните:
    Code:
    ipkg update
    ipkg install python3
    3) Сделайте скрипты send.py, sendtime.py, smscron.py, smscron.sh исполняемыми.
    Code:
    chmod +x send.py
    chmod +x sendtime.py
    chmod +x smscron.py
    chmod +x smscron.sh
    4) [Если нужна отложенная отправка]
    Отредактируйте smscron.sh (задайте в переменной BASEPATH путь до smscron.py без слеша в конце).
    Добавьте в cron (у меня в файл /opt/etc/crontabs/admin) вызов smscron.sh:
    Code:
    0 * * * *       /opt/share/scripts/sms/smscron.sh
    Если вы распаковали архив в /opt/share/scripts/sms/

    В начало crontab-файла добавьте
    Code:
    SHELL=/bin/sh
    Так проверка на отправку будет производится с каждым началом часа.

    Настройка
    1) Список email-ов и паролей задается в файле store.py.
    Для отправки больших смс, если задано мало email-ов, но с них еще можно отправить, скрипт висит в памяти и отправляет каждую минуту. Поэтому лучше задать штук 5-10 чтобы не было ожидания.
    2) Там же в значение переменной log_filename задайте файл для лога и проверьте права на доступ к нему.

    Использование
    Отправка смс:
    Code:
    ./send.py 7916xxxxxxx message
    Отложенная отправка смс:
    Code:
    ./sendtime.py 8 23 7916xxxxxxx message
    Первый параметр - час, когда смс может приходить; второй - когда уже смс приходить не может.

    Установка веб-интерфейса (сервер lighttpd):
    1) Распакуйте содержимое архива webInterface в корень веб сервера (у меня /opt/share/www).
    2) В файле sendFromWeb.py задайте переменной sender_path свой путь до директории с файлом send.py.
    3) В файле конфига lighttpd (/opt/etc/lighttpd/lighttpd-ssl.conf - у меня используется ssl. Или /opt/etc/lighttpd/lighttpd.conf - если без ssl) необходимо секцию cgi модифицировать следующим образом:
    Code:
    #### CGI module
    cgi.assign                 = ( ".pl"  => "/opt/bin/perl",
                                   ".py"  => "/opt/bin/python3",
                                   ".cgi" => "/bin/sh" )
    По желанию можно настроить аутентификацию в том же конфиге. Вот пример моей
    Code:
    auth.require = ( "/" =>
                    (
                      "method"  => "digest",
                      "realm"   => "realm_can_access_to_root",
                      "require" => "user=user_can_access_to_root"
                    )
                  )
                  
    $HTTP["url"] =~ "^/rtorrent"{
      auth.require = ( "/rtorrent" =>
                      (
                        "method"  => "digest",
                        "realm"   => "rtorrent",
                        "require" => "valid-user"
                      )
                    )
                  }
    
    $HTTP["url"] =~ "^/sms"{
      auth.require = ( "/sms" =>
                      (
                        "method"  => "digest",
                        "realm"   => "sms",
                        "require" => "valid-user"
                      )
                    )
                  }
    Про аутентификацию подробнее.

    В веб-интерфейсе можно не задавать время отправки, тогда смс придет сразу же.

    Не забудьте установить локаль, если не установлена (лучше в /etc/profile).
    Code:
    export LANG='ru_RU.UTF-8'
    Внимание! Если вы только что зарегали ящик на mail.ru, то чтобы залогиниться через Mail.Ru Agent или этот скрипт, нужно отправить письмо кому-нибудь.

    UPD (от 30.05.2010): Теперь не придется каждый раз править sender.py. E-mail'ы и пароли к ним вынесены в отдельный файл.
    UPD (от 14.05.2011): В питоне 3.2 сломали logging со строкой формата '%(asctime)-18s'. Поэтому тем, что поставил python-3.2 и кому в консоль сыпятся ошибки вида: KeyError: 'asctime' на 34 строке файла sender.py замените
    Code:
    format = '%(asctime)-18s %(levelname)-13s %(message)s',
    на
    Code:
    format = '%(asctime)s %(levelname)-13s %(message)s',
    НЕ ТРОГАЯ отступы.
    UPD (от 23.07.2011): В питоне 3.2.1-1 logging починили, не нужно править руками sender.py.
    Attached Files Attached Files
    Last edited by xz_kostyan; 24-03-2012 at 23:13. Reason: Обновление архива
    wl-500gP v1 (128 MB) + 1.9.2.7-rtn-3300

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •