пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ
Слишком длинный поисковый запрос.
По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Всем известно, что кроме GSM-шлюзов FS (FreeSWITCH) умеет работать и с dongle. Как заставить с донгла получить СМСку, расскажем в этой статье. Предполагается, что у вас уже установлен и настроен mod_gsmopen и Lua. Если нет, то предлагаю обратиться к официальному источнику https://freeswitch.com/confluence/display/FREESWITCH/mod_gsmopen Для работы с СМСками на нужно настроить chatplan ../freeswitch/conf/chatplan/default.xml В котором нам нужно написать примерно следующее: .. <extension name="demo"> <condition field="to" expression="^gsm(.*)$" break="on-true"> <action application="lua" data="mail.lua"/> </condition> </extension> .. То есть, мы указываем имена донглов, которые нужно слушать и отправляем в Lua-скрипт, который и будет пересылать СМСку в нужное нам место - Grounwire. Пример Lua-скрипта: mail.lua -- -- Устанавливаем переменные выдергивая из заголовков сообщений local from = message:getHeader("from"); local to = message:getHeader("to"); local body = message:getBody(); local time = message:getHeader("Event-Date-Local"); local ext = "1001"; -- Указываем extension куда нужно отправлять СМСку -- Переправляем полученные СМС в софтфон freeswitch.consoleLog("info", "chat console*********************************************************************** ") -- Выводим в CLI local event = freeswitch.Event("CUSTOM", "SMS::SEND_MESSAGE"); event:addHeader("proto", "sip"); event:addHeader("dest_proto", "sip"); event:addHeader("from", "sip:".. from .."@voip.ru"); event:addHeader("from_full", "sip:".. from .."@voip.ru:5063"); -- Я думаю это понятно что означает :) event:addHeader("to", "".. ext .."@voip.ru"); event:addHeader("subject", "sip:".. to .."@voip.ru:5063"); event:addHeader("type", "text/html"); event:addHeader("hint", "the hint"); event:addHeader("replying", "true"); event:addBody('Сообщение для '.. to ..' в '.. time ..', '.. body ..''); event:fire(); Вот и всё. Теперь все сообщения, которые будут приходить на dongle будут перенаправляться в софтфон: Так же можно писать и в базу MySQL и отправлять на почту. У меня это именно так сделано. Кроме этого можно и отправлять СМСки из веб-морды, а так же, и через смартфон, но для этого нужно дописать Lua-скрипт. А ещё можно управлять, например, своим компьютером на основе текста в СМС, то есть, перезагрузить/выключить, или ещё чем-то. Так у меня отправляется СМСка из WEB – интерфейса:
img
Межплатформенное программное обеспечение – термин, который довольно часто используется в веб-разработке. У него есть много значений в зависимости от контекста, чем он немного сбивает с толку. Эту статью мы начнем с того, что определим этот термин, и продолжим обсуждением некоторых сценариев использования.  Изучив данную статью, вы сможете лучше вникать в обсуждения со своими коллегами, которые касаются технических и структурных аспектов. Вы также сможете разрабатывать более безопасные и надежные API и потоки данных. Определение межплатформенного ПО Межплатформенное ПО – это программное обеспечение, которое служит посредником между двумя приложениями или службами. Оно устраняет различные трудности их взаимодействия. Вы можете представить, что это некий прокси-сервер, который выступает в роли накопителя данных, преобразователя или просто прокси-сервера, который перенаправляет запросы.  Распространенные сценарии использования межплатформенного ПО Преобразователь Существует большое количество форматов обмена данными, например, JSON, XML и Protobuf. Даже с учетом того, что сейчас мы в основном используем JSON, каждый из них имеет свои сценарии использования.  Например, считается, что Proto Buffers более производительны, нежели JSON, но при этом они не удобны для восприятия человеком. Получается, что вы можете использовать Proto Buffers для внутренних служб и JSON для случаев, когда пользователем API является браузер. А теперь давайте предположим, что нам нужны обе эти службы, которые используют разные протоколы для взаимодействия друг с другом.  Мы можем создать межплатформенное программное обеспечение, которое использует библиотеку преобразования формата данных и преобразует запросы в формат, который будет понятен принимающей службе. Накопление и дублирование данных Архитектура на основе микрослужб – это популярный архитектурный шаблон, который в основном применяет в современных приложениях.  Если вы не знакомы с такой архитектурой, то это лишь значит, что ваше приложение состоит из множества независимых друг от друга маленьких приложений и служб, которые взаимодействуют через Интернет. Например, в проекте, связанном с продажами через Интернет, у вас может быть микрослужба для добавления и извлечения товаров (Product), еще одна микрослужба для поиска (Search) и еще одна для аутентификации и хранения информации о пользователях (User). И при этом у каждой из них своя собственная база данных. Давайте теперь представим, что мы хотим реализовать наш поиск так, чтобы мы могли найти и пользователей, и товары.  Если бы это было монолитное приложение, то можно было бы просто написать запрос для поиска в каждой таблице и объединить результаты. Но в данном случае наши базы данных работают на разных серверах.  Эту проблему можно решить несколькими способами. Мы рассмотрим два из них. Накопление данных Мы можем использовать межплатформенное ПО для того, чтобы отправить запросы на оба сервера и запросить выполнить поиск в их базах данных в соответствии с искомым словом. В таком случае мы можем накапливать результаты, которые мы получаем c обоих серверов, и возвращать их клиенту. Отметим, что количество запросов увеличивается линейно по мере того, как мы увеличивает количество серверов (и при этом мы также должны объединять эти данные).   Дублирование данных Мы можем хранить дубликаты данных на нашем поисковом сервере, чтобы он мог выполнять поиск самостоятельно без запросов к серверам, хранящим информацию о товарах и пользователях. Возможно, это менее эффективный способ с точки зрения занимаемой памяти, но он является более быстрым, а для поисковых служб решающее значение имеет именно скорость.  Если нам нужны таблицы Product (Товары) и User (Пользователи), то мы также можем создать эти таблицы на нашем поисковом сервере. В дальнейшем, когда мы будем сохранять информацию о новом пользователе в нашей базе данных пользователей, мы также будем сохранять ее копию и на поисковом сервере.  У нас есть два варианта. Первый заключается в том, что мы можем вызвать методы сохранения сервера Search с серверов User и Product, чтобы продублировать данные. Второй состоит в том, что мы можем создать межплатформенное ПО для того, чтобы хранит там данные. И оно будет делать следующее: При каждом запросе на сохранение, оно будет вызывать методы сохранения сервера Search и сервера User/Product. Если первое сохранение выполнилось неудачно, оно не будет вызывать методы сохранения на другом сервере (таким образом обеспечивается согласованность баз данных). Давайте взглянем на две структурные диаграммы. На одной из них есть межплатформенное ПО, а на второй - нет. Вот так выглядит диаграмма без межплатформенного ПО: Выглядит не очень, да? Что правда, то правда, это действительно выглядит ужасно, и такой подход сделает ваш код более сложным и сильно связанным.  А вот так выглядит аналогичное решение только с межплатформенным ПО: В этом случае клиент просто вызывает межплатформенное программное обеспечение, чтобы сохранить информацию о товаре или пользователе, а оно уже делает все остальное. Код, который выполняет дублирование данных, отсутствует как на серверах User и Product, так и на клиентской стороне. Это теперь забота межплатформенного ПО.  Безопасность API Мы можем просматривать исходящие запросы для любого кода клиентской стороны. Сделать это можно либо в консоли браузера, либо через прокси-сервер.  Мы уже как-то говорили о пользовательском сервере, который обеспечивает вход в систему и регистрацию. Если наш клиентский код напрямую отправляет запросы на этот сервер, то он тем самым раскрывает адрес нашего сервера аутентификации. А если IP-адрес нашего сервера узнают злоумышленники, то они могут воспользоваться специальными инструментами, чтобы найти наши конечные точки и просканировать наш сервер на наличие уязвимостей. Для того, чтобы скрыть URL-адрес нашего сервера аутентификации, мы можем использовать межплатформенное ПО в качестве прокси-сервера. Наш клиент будет взаимодействовать с межплатформенным ПО, а оно уже будет перенаправлять запрос на сервер аутентификации и возвращать ответ.  Такой подход также позволит нам блокировать любые запросы на наш сервер аутентификации, кроме тех, которые идут с URL-адреса нашего межплатформенного ПО. Это обезопасит наш сервер аутентификации. Раньше это было бы невозможно, так как наш внешний интерфейс взаимодействовал с сервером аутентификации, а так как внешний интерфейс – это компьютер клиента, то у нас не было бы возможности применить IP-фильтр. Предоставление общедоступных API Их предыдущего пункта мы узнали, что межплатформенное ПО можно использовать в целях ограничения доступа к нашему API.  А теперь давайте взглянем на вторую часть этого уравнения: что если мы хотим предоставить доступ к нашему API, но при этом хотим, чтобы он был ограничен? А вдруг мы являемся системным программистом в банке, а банк планирует устроить хакатон. Ему будет необходимо предоставить доступ к своему API, верно?  Но поскольку это банк, то, очевидно, что он не может предоставить доступ ко всему API и разрешить все операции. Это значит, что необходимо найти такой способ, который позволит предоставить ограниченный доступ.  Для этого можно реализовать межплатформенное ПО, которое предоставит доступ лишь к некоторым конечным точкам и будет перенаправлять запросы в фактическому API банка. Таким образом, банк сможет предоставить этот API разработчикам на хакатоне. Заключение Мы начали с определения того, что такое межплатформенное программное обеспечение, и постарались распределить по категориям сценарии использования межплатформенного ПО в веб-разработке. Имейте в виду, что это далеко не весь список сценариев использования, но я надеюсь, что, несмотря на это, он все-таки оказался для вас полезным.
img
QoS это возможность сети обеспечить специальный уровень обслуживания для конкретных пользователей или приложений без ущерба остальному трафику. Главная цель QoS это обеспечение более предсказуемого поведения сети передачи данных при работе с тем, или иным типом трафика, путем обеспечения необходимой полосы пропускания, контролем над задержкой и джиттером и улучшением характеристик при потере пакетов. Алгоритмы QoS достигают этих целей путем ограничения трафика, более эффективным использованием каналов передачи, и назначением тех или иных политик к трафику. QoS обеспечивает интеллектуальную передачу поверх корпоративной сети, и, при правильной настройке, улучшает показатели производительности. Политики QoS Тип трафика QoS Безопасность Когда? Голос Задержка меньше 150 мс в одну сторону Шифрование на уровне передаче голоса Понедельник - Пятница Система планирования ресурсов предприятия Обеспечение доступной полосы пропускания минимум 512 кб/с Зашифрован 24 часа в сутки, 7 дней в неделю, 365 дней в году Трафик, создаваемый программным обеспечением станков и оборудования Обеспечение доступной полосы пропускания минимум 256 кб/с В открытом виде Понедельник - Пятница Трафик от использования интернет ресурсов HTTP/HTTPS Негарантированная доставка по принципу Best Effort HTTP прокси сервер Понедельник – Пятница, с 8 утра до 9 вечера. Осуществление QoS в сетях унифицированных коммуникаций Условно, процесс осуществления QoS в сетях Unified Communications (унифицированных коммуникаций), можно разделить на 3 этапа: Определение типа трафика в сети и его требований. На данном этапе необходимо научить сеть определять типы трафика чтобы применять к ним те или иные QoS алгоритмы; Сгруппировать трафик в классы с одинаковыми требованиями QoS. Например, можно определить 4 типа трафика: голос, высоко – приоритетный трафик, низко – приоритетный трафик и трафик от пользования браузером для просмотра WEB страниц; Назначить политики QoS, применяемые к классам, определенным в п.2. В современных корпоративных сетях, голосовой трафик всегда требует минимальную задержку. Трафик, который генерируют критически важные для бизнеса приложения требует маленькой задержки (например, информация, относящаяся к банковскому обслуживанию). Другие типы информации могут быть не так чувствительны к задержкам, например, передача файлов или электронная почта. Обычное использование интернета в личных целях на работе может быть так же ограничено или даже запрещено. Согласно указанным принципам, можно условно выделить три QoS политики: Без задержки: Присваивается в голосовому трафику; Лучшее обслуживание: Присваивается к трафику с наивысшим приоритетом; Остальное: Присваивается к низко – приоритетному и трафику web – браузеров; Шаг 1: Определение типа трафика Первым шагом на пути к осуществлению QoS является идентификация типов трафика в сети и определение конкретных требований каждого из типов. Перед осуществлением QoS, настоятельно рекомендуется провести аудит сети, чтобы полностью понимать как и какие приложения работают в корпоративной сети. Если осуществить политики QoS не имея полного понимания корпоративного сегмента сети, то результаты могут быть плачевными. Далее, необходимо определить проблемы пользователей при работе с теми или иными сетевыми приложениями: например, приложение медленно работает из-за чего имеет плохую производительности работы. Необходимо измерить сетевой трафик в часы наибольшей нагрузки, используя специальные утилиты. Для понимания процессов в сети, необходимым шагом является измерение загрузки процессора каждого из единиц активного сетевого оборудования в период наибольшей загруженности, чтобы четко знать, где потенциально могут возникать проблемы. После этого, необходимо определить бизнес цели и модели работы и составить список бизнес – требований. По итогам этих действий, каждый из пунктов списка можно сопоставить с тем или иным классом трафика. В конце, необходимо определить уровни обслуживания которые требуются для различного вида трафика в зависимости от требуемой доступности и быстродействия. Шаг 2: Сгруппировать трафик в классы После идентификации сетевого трафика, необходимо использовать список бизнес требований, составленный на первом этапе, чтобы определить классы трафика. Голосовой трафик всегда определяется отдельным классом. Компания Cisco имеет разработанные механизмы QoS для голосового трафика, например, Low latency queuing (LLQ) , цель которого заключается в контроле за тем, чтобы голос получал преимущество в обслуживании. После того как определены наиболее критичные приложения, необходимо определить классы трафика использую список бизнес требований. Не каждое приложение имеет свой собственный класс обслуживания. Довольно много приложений с похожими требованиями к QoS группируются вместе в единый класс. Пример классификации трафика Типичный корпоративный ландшафт определяет 5 классов трафика: Голос: Наивысший приоритет для трафика VoIP; Критически важные: Небольшой набор критически важных для бизнеса приложений; Транзакции: В данном классе присутствуют сервисы баз данных, интерактивный трафик и привилегированный сетевой трафик ; Негарантированная доставка: Работает по принципу Best Effort, что дословно переводится как «лучшее усилие». В данный класс можно отнести интернет трафик и e-mail. Шаг 3: Сгруппировать трафик в классы Третьим шагом необходимо описать политики QoS для каждого из классов трафика, которые включают следующие действия: Назначить минимальный размер гарантированной полосы пропускания; Назначить максимальный размер полосы пропускания; Назначить приоритеты для каждого из классов; Использовать QoS технологии, такие как алгоритмы контроля очередей для управления перегрузками. Рассмотрим на текущем примере определение политик QoS для каждого из классов: Голос: Доступна полоса пропускания – 1мбит/с. Использовать метку Differentiated Services Code Poin (DSCP) со значением EF [7]. Метка EF (Expedited Forwarding) означает то, что пакеты с таким маркером получают приоритет в очереди согласно принципу наименьшей задержки. Дополнительно используется алгорит LLQ; Критически важные: Минимальная полоса пропускания – 1мбит/с. Использовать метку Differentiated Services Code Poin (DSCP) со значением AF31 (метка в поле DSCP 011010), что обеспечивает наименьшую вероятность отбрасывания пакета. Параллельное использование алгоритма CBWFQ гарантирует необходимую полосу пропускания для маркированного трафика; Негарантированная доставка: Максимальная полоса пропускания – 500кбит/с. Использовать метку Differentiated Services Code Poin (DSCP) со значением Default (метка в поле DSCP 000000), что обеспечивает обслуживание по умолчанию. Алгоритм CBWFQ обеспечивает «доставку по возможности», которая ниже по приоритету классов «Голос» и «Критически важные».
ЗИМНИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59