Описание
SMPP протокол, который используется мобильными операторами для организации службы коротких сообщений (SMS).
Согласно своему имени протокол SMPP определяет клиента (ESME) и сервер (часто называемого SMSC).
Клиент инициализирует TCP соединение и выполняет команду bind для организации соединения со специфичными параметрами.
Схемы соединения клиента:
1. receiver — клиент может только получать сообщения от SMSC.
2. transmitter — клиент может только отправлять сообещения на SMSC
3. transceiver — клиент осуществляет двухстороннюю передачу сообщений.
Таким образом для организации двухстороней передачи сообщений можно либо установить соединение тип transceiver, либо устанавливать 2 соединения типов transmitter и receiver.
Для завершения SMPP сессии используется команда unbind.
После установки SMPP соединения происходит обмен сообщениями, называемыми PDU (protocol data unit). Общение между клиентом и сервером происходит по принципу запрос-ответ (request-response). Запросы содержат в себе определенное уникальное в данной сессии число, и в свою очередь ответные PDU, содержат в себе то же самое число — благодаря этому механизму возможна асинхронная передача сообщений.
Протоколом определены несколько команд для отправки разных типов сообщений, замены и отмены ранее отправленных сообщений и т. д. Наиболее часто используемой из них командой является submit_sm — отправка простого текстового сообщения. Ответом на эту команду является PDU submit_sm_resp. Отчет о доставке сообщения посылается в виде PDU deliver_sm.
Также стоит сказать про ограничение длины SMPP сообщений. В протоколе SMPP, длина поля short_message ограничена 254 байтами, однако нижележащие протоколы накладывают другие требования. Например GSM ограничивает длину коротких сообщений в 140 байт.
Пример организации соединения и отправки текстового сообщения на языке Perl с использованием модуля Net::SMPP
#!/usr/bin/perl -w
use strict;
use Net::SMPP;
#Номер от которого отправляется СМС
my $SMPP_SOURCE_ADDR='FROM';
#Номер кому отправляется СМС
my $SMPP_DEST_ADDR='79000000000';
#Инициируем соединение типа transceiver
#В параметрах указываем system_id и password - аналог имени пользователя и пароля для аутентификации на SMSC
#адрес и порт, с которым соединяемся и версию протокола SMPP
my $smpp = Net::SMPP->new_transceiver('192.168.1.1',
system_id => 'username',
password => 'password',
port => '2775',
smpp_version=> 0x34
)
or die "Can't connect to SMSC: $!";
&send_message($SMPP_SOURCE_ADDR, $SMPP_DEST_ADDR, 'Hello SMS!!!');
#Процедура отправки сообщения submit_sm
#В параметрах send_message передаем адрес отправителя, адрес получателя, то есть его номер телефона и текст
#сообщения
#Параметры source_addr_ton, source_addr_npi, dest_addr_ton, dest_addr_npi определяют дополнительные параметры
#адресов отправителя и получателя. Подробнее о них в спецификации протокола SMPP.
sub send_message {
my ($sm_source_addr, $sm_dest_addr, $sm_message) = @_;
my $result = eval {
my $pru = $smpp->submit_sm(
source_addr_ton => 0x05,
source_addr_npi => 0x01,
source_addr => $sm_source_addr,
dest_addr_ton => 0x01,
dest_addr_npi => 0x01,
destination_addr => $sm_dest_addr,
data_coding => 0x01,
short_message =>$sm_message
) or return 1;
return 0;
};
if ($result == 1){
"Can't send message: $!";
}
}
#Разрываем соединение с SMSC
$smpp->unbind();
Где-то уже не помню где нашел неофициальный перевод спецификации протокола SMPP на русский, вот он.
Если найдется его автор, скажу большое спасибо ))).
четверг, 9 декабря 2010 г.
вторник, 7 декабря 2010 г.
Простейшая конфигурация mod_proxy
Представим ситуацию:
У нас стоит веб-сервер, смотрящий в интернет, и внутренний ресурс внутри корпоративной сети. Появляется задача предоставления доступа к некоторым ресурсам внутреннего веб-сервера в интернет.
Если в качестве внешнего веб-сервера используется apache, то для этих целей можно и нужно использовать модуль mod_proxy. Насколько мне помниться во всей 2 линейке (apache2) модуль является встроенным и активируется при компиляции
./configure --enable-proxy
Простейшая настройка:
В httpd.conf добавляем следующие директивы:
ProxyRequests On
Order deny,allow
Allow from all
ProxyPass /external_site/ http://internal_site/
Здесь Мы указываем - что веб-сервер пропускал запросы вида /external/ и перенаправлял на url http://internal_site/
Вот в принципе для начала и все.
Полное описание директив здесь
У нас стоит веб-сервер, смотрящий в интернет, и внутренний ресурс внутри корпоративной сети. Появляется задача предоставления доступа к некоторым ресурсам внутреннего веб-сервера в интернет.
Если в качестве внешнего веб-сервера используется apache, то для этих целей можно и нужно использовать модуль mod_proxy. Насколько мне помниться во всей 2 линейке (apache2) модуль является встроенным и активируется при компиляции
./configure --enable-proxy
Простейшая настройка:
В httpd.conf добавляем следующие директивы:
ProxyRequests On
Order deny,allow
Allow from all
ProxyPass /external_site/ http://internal_site/
Здесь Мы указываем - что веб-сервер пропускал запросы вида /external/ и перенаправлял на url http://internal_site/
Вот в принципе для начала и все.
Полное описание директив здесь
понедельник, 6 декабря 2010 г.
Таблица HTML escape символов
| Symbol | Code | Entity Name |
|---|---|---|
| ™ | ™ | |
| € | € | |
| Space |   | |
| ! | ! | |
| " | " | " |
| # | # | |
| $ | $ | |
| % | % | |
| & | & | & |
| ' | ' | |
| ( | ( | |
| ) | ) | |
| * | * | |
| + | + | |
| , | , | |
| - | - | |
| . | . | |
| / | / | |
| 0 | 0 | |
| 1 | 1 | |
| 2 | 2 | |
| 3 | 3 | |
| 4 | 4 | |
| 5 | 5 | |
| 6 | 6 | |
| 7 | 7 | |
| 8 | 8 | |
| 9 | 9 | |
| : | : | |
| ; | ; | |
| < | < | < |
| = | = | |
| > | > | > |
| ? | ? | |
| @ | @ | |
| A | A | |
| B | B | |
| C | C | |
| D | D | |
| E | E | |
| F | F | |
| G | G | |
| H | H | |
| I | I | |
| J | J | |
| K | K | |
| L | L | |
| M | M | |
| N | N | |
| O | O | |
| P | P | |
| Q | Q | |
| R | R | |
| S | S | |
| T | T | |
| U | U | |
| V | V | |
| W | W | |
| X | X | |
| Y | Y | |
| Z | Z | |
| [ | [ | |
| \ | \ | |
| ] | ] | |
| ^ | ^ | |
| _ | _ | |
| ` | ` | |
| a | a | |
| b | b | |
| c | c | |
| d | d | |
| e | e | |
| f | f | |
| g | g | |
| h | h | |
| i | i | |
| j | j | |
| k | k | |
| l | l | |
| m | m | |
| n | n | |
| o | o | |
| p | p | |
| q | q | |
| r | r | |
| s | s | |
| t | t | |
| u | u | |
| v | v | |
| w | w | |
| x | x | |
| y | y | |
| z | z | |
| { | { | |
| | | | | |
| } | } | |
| ~ | ~ | |
| Non-breaking space |   | |
| ¡ | ¡ | ¡ |
| ¢ | ¢ | ¢ |
| £ | £ | £ |
| ¤ | ¤ | ¤ |
| ¥ | ¥ | ¥ |
| ¦ | ¦ | ¦ |
| § | § | § |
| ¨ | ¨ | ¨ |
| © | © | © |
| ª | ª | ª |
| « | « | |
| ¬ | ¬ | ¬ |
| | ­ | ­ |
| ® | ® | ® |
| ¯ | ¯ | ¯ |
| ° | ° | ° |
| ± | ± | ± |
| ² | ² | ² |
| ³ | ³ | ³ |
| ´ | ´ | ´ |
| µ | µ | µ |
| ¶ | ¶ | ¶ |
| · | · | · |
| ¸ | ¸ | ¸ |
| ¹ | ¹ | ¹ |
| º | º | º |
| » | » | » |
| ¼ | ¼ | ¼ |
| ½ | ½ | ½ |
| ¾ | ¾ | ¾ |
| ¿ | ¿ | ¿ |
| À | À | À |
| Á | Á | Á |
| Â | Â | Â |
| Ã | Ã | Ã |
| Ä | Ä | Ä |
| Å | Å | Å |
| Æ | Æ | Æ |
| Ç | Ç | Ç |
| È | È | È |
| É | É | É |
| Ê | Ê | Ê |
| Ë | Ë | Ë |
| Ì | Ì | Ì |
| Í | Í | Í |
| Î | Î | Î |
| Ï | Ï | Ï |
| Ð | Ð | Ð |
| Ñ | Ñ | Ñ |
| Ò | Ò | Ò |
| Ó | Ó | Ó |
| Ô | Ô | Ô |
| Õ | Õ | Õ |
| Ö | Ö | Ö |
| × | × | × |
| Ø | Ø | Ø |
| Ù | Ù | Ù |
| Ú | Ú | Ú |
| Û | Û | Û |
| Ü | Ü | Ü |
| Ý | Ý | Ý |
| Þ | Þ | Þ |
| ß | ß | ß |
| à | à | à |
| á | á | á |
| â | â | â |
| ã | ã | ã |
| ä | ä | ä |
| å | å | å |
| æ | æ | æ |
| ç | ç | ç |
| è | è | è |
| é | é | é |
| ê | ê | ê |
| ë | ë | ë |
| ì | ì | ì |
| í | í | í |
| î | î | î |
| ï | ï | ï |
| ð | ð | ð |
| ñ | ñ | ñ |
| ò | ò | ò |
| ó | ó | ó |
| ô | ô | ô |
| õ | õ | õ |
| ö | ö | ö |
| ÷ | ÷ | ÷ |
| ø | ø | ø |
| ù | ù | ù |
| ú | ú | ú |
| û | û | û |
| ü | ü | ü |
| ý | ý | ý |
| þ | þ | þ |
| ÿ | ÿ | |
| Ā | Ā | |
| ā | ā | |
| Ă | Ă | |
| ă | ă | |
| Ą | Ą | |
| ą | ą | |
| Ć | Ć | |
| ć | ć | |
| Ĉ | Ĉ | |
| ĉ | ĉ | |
| Ċ | Ċ | |
| ċ | ċ | |
| Č | Č | |
| č | č | |
| Ď | Ď | |
| ď | ď | |
| Đ | Đ | |
| đ | đ | |
| Ē | Ē | |
| ē | ē | |
| Ĕ | Ĕ | |
| ĕ | ĕ | |
| Ė | Ė | |
| ė | ė | |
| Ę | Ę | |
| ę | ę | |
| Ě | Ě | |
| ě | ě | |
| Ĝ | Ĝ | |
| ĝ | ĝ | |
| Ğ | Ğ | |
| ğ | ğ | |
| Ġ | Ġ | |
| ġ | ġ | |
| Ģ | Ģ | |
| ģ | ģ | |
| Ĥ | Ĥ | |
| ĥ | ĥ | |
| Ħ | Ħ | |
| ħ | ħ | |
| Ĩ | Ĩ | |
| ĩ | ĩ | |
| Ī | Ī | |
| ī | ī | |
| Ĭ | Ĭ | |
| ĭ | ĭ | |
| Į | Į | |
| į | į | |
| İ | İ | |
| ı | ı | |
| IJ | IJ | |
| ij | ij | |
| Ĵ | Ĵ | |
| ĵ | ĵ | |
| Ķ | Ķ | |
| ķ | ķ | |
| ĸ | ĸ | |
| Ĺ | Ĺ | |
| ĺ | ĺ | |
| Ļ | Ļ | |
| ļ | ļ | |
| Ľ | Ľ | |
| ľ | ľ | |
| Ŀ | Ŀ | |
| ŀ | ŀ | |
| Ł | Ł | |
| ł | ł | |
| Ń | Ń | |
| ń | ń | |
| Ņ | Ņ | |
| ņ | ņ | |
| Ň | Ň | |
| ň | ň | |
| ʼn | ʼn | |
| Ŋ | Ŋ | |
| ŋ | ŋ | |
| Ō | Ō | |
| ō | ō | |
| Ŏ | Ŏ | |
| ŏ | ŏ | |
| Ő | Ő | |
| ő | ő | |
| Œ | Œ | |
| œ | œ | |
| Ŕ | Ŕ | |
| ŕ | ŕ | |
| Ŗ | Ŗ | |
| ŗ | ŗ | |
| Ř | Ř | |
| ř | ř | |
| Ś | Ś | |
| ś | ś | |
| Ŝ | Ŝ | |
| ŝ | ŝ | |
| Ş | Ş | |
| ş | ş | |
| Š | Š | |
| š | š | |
| Ţ | Ţ | |
| ţ | ţ | |
| Ť | Ť | |
| ť | ť | |
| Ŧ | Ŧ | |
| ŧ | ŧ | |
| Ũ | Ũ | |
| ũ | ũ | |
| Ū | Ū | |
| ū | ū | |
| Ŭ | Ŭ | |
| ŭ | ŭ | |
| Ů | Ů | |
| ů | ů | |
| Ű | Ű | |
| ű | ű | |
| Ų | Ų | |
| ų | ų | |
| Ŵ | Ŵ | |
| ŵ | ŵ | |
| Ŷ | Ŷ | |
| ŷ | ŷ | |
| Ÿ | Ÿ | |
| Ź | Ź | |
| ź | ź | |
| Ż | Ż | |
| ż | ż | |
| Ž | Ž | |
| ž | ž | |
| ſ | ſ | |
| Ŕ | Ŕ | |
| ŕ | ŕ | |
| Ŗ | Ŗ | |
| ŗ | ŗ | |
| Ř | Ř | |
| ř | ř | |
| Ś | Ś | |
| ś | ś | |
| Ŝ | Ŝ | |
| ŝ | ŝ | |
| Ş | Ş | |
| ş | ş | |
| Š | Š | |
| š | š | |
| Ţ | Ţ | |
| ţ | ţ | |
| Ť | Ť | |
| ť | Ɂ | |
| Ŧ | Ŧ | |
| ŧ | ŧ | |
| Ũ | Ũ | |
| ũ | ũ | |
| Ū | Ū | |
| ū | ū | |
| Ŭ | Ŭ | |
| ŭ | ŭ | |
| Ů | Ů | |
| ů | ů | |
| Ű | Ű | |
| ű | ű | |
| Ų | Ų | |
| ų | ų | |
| Ŵ | Ŵ | |
| ŵ | ŵ | |
| Ŷ | Ŷ | |
| ŷ | ŷ | |
| Ÿ | Ÿ | |
| Ź | Ź | |
| ź | ź | |
| Ż | Ż | |
| ż | ż | |
| Ž | Ž | |
| ž | ž | |
| ſ | ſ |
Подписаться на:
Комментарии (Atom)
