Page 1 of 11 123 ... LastLast
Results 1 to 15 of 153

Thread: router2sms [python]

  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; 25-03-2012 at 00:13. Reason: Обновление архива
    wl-500gP v1 (128 MB) + 1.9.2.7-rtn-3300

  2. #2

    Smile

    Молодец, что отдельно вынес! Авторам респект!

  3. #3
    Вот что говорит

    Code:
     File "./send.py", line 27, in <module>
        print(s.send_sms(phone, message))
      File "/opt/etc/sms_py/sender.py", line 179, in send_sms
        if self.send_sms_part(phone, temp_message[:size]):
      File "/opt/etc/sms_py/sender.py", line 111, in send_sms_part
        list = agent.is_contact_list(packet)
      File "/opt/etc/sms_py/mrim.py", line 504, in is_contact_list
        client = str(self.get_bytes_from_packet(packet, dlen), 'UTF-16LE')
      File "/opt/lib/python3.1/encodings/utf_16_le.py", line 16, in decode
        return codecs.utf_16_le_decode(input, errors, True)
    UnicodeDecodeError: 'utf16' codec can't decode byte 0x00 in position 146: truncated data
    В вебмрде пишет просто "Результат"

    Локаль установлена, вот:

    Code:
    ]$ export
    export HOME='/usr/local/root'
    export LANG='ru_RU.UTF-8'
    export LC_ALL='ru_RU.UTF-8'
    export LOGNAME='root'
    export PATH='/opt/sbin:/opt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
    export PS1='[\u@\h \W]$ '
    export PWD='/tmp/local/root'
    export SHELL='/bin/sh'
    export TERM='xterm'
    export TERMINFO='/opt/share/terminfo'
    export USER='root'
    Похоже , что только у меня такое,долго пытался разобраться, ибо нелюблю вопросы просто так задавать.

  4. #4
    Join Date
    Feb 2008
    Location
    Украина Запорожье
    Posts
    351

    Cool

    Видимо прикрыли лавочку! Сегодня не отправлял ни единого смс

    Code:
    [maxya@maxya_wi_fi root]$ /tmp/harddisk/www/sms/send.py 38068XXXXXXX проверка!
    Sms send error: sms limit exceeded at all emails.
    Хм, удалил файлы mrim.рус и sender.рус
    и начало отправлять!
    Last edited by колбаскин; 30-01-2010 at 23:09.
    устройство должно решать проблема - а не создавать их!
    WL-500W, WRT610N v2 + WD 250Gb 2.5" Отправка смс + шаринг на openbox x730
    TwonkyMedia + dbhub_0.450 + lighttpd+ssl+auth + dlengine + NOD32 update server
    Огромный респект Олегу и vectorm

  5. #5
    Quote Originally Posted by колбаскин View Post
    Видимо прикрыли лавочку! Сегодня не отправлял ни единого смс

    Code:
    [maxya@maxya_wi_fi root]$ /tmp/harddisk/www/sms/send.py 38068XXXXXXX проверка!
    Sms send error: sms limit exceeded at all emails.
    Хм, удалил файлы mrim.рус и sender.рус
    и начало отправлять!
    Возможно роутер был сильно загружен. У кого такое часто возникает, может попробовать изменить значение wait_confirm_interval в файле sender.py, на большее.
    Last edited by xz_kostyan; 31-01-2010 at 01:02.
    wl-500gP v1 (128 MB) + 1.9.2.7-rtn-3300

  6. #6
    подскажите на билайн нормально отправляется, а на Мотив не приходит, хотя лого оператора есть в плагине
    Quote Originally Posted by xz_kostyan View Post
    Возможно роутер был сильно загружен. У кого такое часто возникает, может попробовать изменить значение wait_confirm_interval в файле sender.py, на большее.

  7. #7
    johnson, вот что написано на сайте м-агента. Так что теоретически все должно быть нормально. Проверьте доставляется ли самим агентом.
    wl-500gP v1 (128 MB) + 1.9.2.7-rtn-3300

  8. #8
    а как сделать чтобы не просил логин и пароль при заходе на этот плагин?

  9. #9
    Quote Originally Posted by johnson View Post
    а как сделать чтобы не просил логин и пароль при заходе на этот плагин?
    Вы про настройку веб-сервера? Тут показано как включить аутентификацию. Соответственно выключается она комментированием строк.
    wl-500gP v1 (128 MB) + 1.9.2.7-rtn-3300

  10. #10
    тоже не доходят сообщения, написал им в поддержку
    Quote Originally Posted by xz_kostyan View Post
    johnson, Проверьте доставляется ли самим агентом.

  11. #11
    Quote Originally Posted by xz_kostyan View Post
    Code:
    export LANG='ru_RU.UTF-8'
    после перезагрузки роутера строка пропадает

    flashfs save && flashfs commit && flashfs enable && reboot
    делал

    где копать?

    сам нашел =)

    надо править
    /tmp/local/root/.profile



    и все так и русские буквы не шлет
    Code:
    [admin@wl500g root]$ /opt/etc/sms_py/send.py 7987###### test
    Sms sent
    
    [admin@wl500g root]$ /opt/etc/sms_py/send.py 7987###### test тест
    Traceback (most recent call last):
      File "/opt/etc/sms_py/send.py", line 27, in <module>
        print(s.send_sms(phone, message))
      File "/opt/etc/sms_py/sender.py", line 161, in send_sms
        is_long = len(message) != len(bytes(message, 'UTF-8'))
    UnicodeEncodeError: 'utf-8' codec can't encode character '\udcd1' in position 5: surrogates not allowed
    [admin@wl500g root]$
    Last edited by karim; 07-03-2010 at 19:28. Reason: сам нашел =)

  12. #12
    Что то у меня не выходит послать смс, номер +358466******. Или майл не шлет на забугорные операторы ?
    Asus WL500g.Premium2 + FW 1.9.2.7-d-r1222 + USB HDD IDE 3.5 180GB

  13. #13

    не работает отправка смс сящиков @bk.ru

    Для тестирования создал 3 ящика на @mail.ru - все работало (и работет) суперски!!

    Захотел сделать так, чтобы мусора при отправке смс (емейл с которого идет отправка, и который указывается в отправленной смс) был бы как можно короче. Зарегистрировал несколько ящиков на @bk.ru... Было проведено несколько экспериментов, но результат один - скрипт тупо виснет... почему - я не знаю (логов по умолчанию нету, а с питоном я знаком как с английской королевой)...
    Собственно вопрос - у кого отправляется с @bk.ru? (может это я один кривой) и еще вопросец из этой же серии - как заставить отправлять смс с @bk (пока буду сидеть на @mail.ru )?

    PS для тех кто спросит - "нахрена тебе @bk - всего 2 символа экономии?!" - отвечаю... да всего 2 символа, но еще огромный плюс, что проще найти короткие адресе - на @bk гораздо меньше ящиков зарегано, чем на @mail.ru

  14. #14
    У меня все прекрасно отправляется. Только что проверил.
    wl-500gP v1 (128 MB) + 1.9.2.7-rtn-3300

  15. #15
    Quote Originally Posted by xz_kostyan View Post
    У меня все прекрасно отправляется. Только что проверил.
    С ящиков @bk.ru ? странно... ну тогда буду дальше экспериментировать ...

    PS может я написал как то криво в предыдущем посте - с @mail.ru - работает нормально; с @bk.ru - скрипт виснет и все.
    PSS небольшое уточнение - ящики на мейл.ру - 15знаков (2 последних - цифры), на бк.ру - 4 знака (2 последних - цифры)

Page 1 of 11 123 ... LastLast

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
  •