tr069 что это в роутере

Управление роутерами: маленькие радости техподдержки

В Европе, США и многих других странах провайдерами очень часто используются управляемые абонентские устройства, на которые по специальному интерфейсу может быть отправлена новая прошивка, либо на которых можно посмотреть настройки удалённо.

Расскажу про наш опыт и то, какое облегчение испытали сотрудники второй линии поддержки. Начнём с того, что у нас закончились диалоги в духе: «А горит ли у вас верхняя зелёная лампочка?».

Будни поддержки

Раньше звонок в поддержку начинался с вопросов о том, горят ли на устройстве лампочки, потом – с попыток понять, что за операционная система (уровня «какого цвета у вас интернет») и не менее интересных попыток объяснить пользователю, где и как посмотреть статусы устройства, а потом продиктовать их.

Затем по этим мучительно «выжатым» данным ставился дифференциальный диагноз (как правило, не самый точный), проблема начинала решаться голосом. Сеанс «секса по телефону» продолжался: теперь нужно было чтобы пользователь сделал правильные действия в нужном порядке. Если повезёт – диагноз был верным, и всё заработает. Если нет, например, в случае физического повреждения роутера – мы зря промучили пользователя 20 минут, потратили и его время, и своё – и на выходе ничего толкового. «Возможно, вам стоит обратиться в сервис-центр».

Теперь всё немного иначе. Если устройство поддерживает TR-069 (протокол управления абонентским оборудованием) и имеет прошивку, готовую отвечать нашему авторизованному серверу, абоненту достаточно просто сказать, что у него проблема. Дальше, как правило, сотрудник поддержки просто вызывает роутер и смотрит его статусы и конфигурацию.

Например, очень частый случай – когда у пользователя «тормоза» из-за зашумлённости диапазона 2,4 ГГц. В Москве запросто на том же канале может оказаться от 3 до 5 соседей – во дворе в каждом окне будет по роутеру. Часто достаточно просто сменить канал – и абонент снова счастлив. Представьте теперь, как это выглядело бы без возможности управлять устройством: зайти в настройки, раздел wi-fi, потом выбрать канал, потом ожидать чуда.

Второй практический случай – удалённая диагностика устройства. Если железка убилась или экзотически глючит, то можно сделать быстрое заключение об этом, посмотреть логи для более детального анализа и уже точно сказать, что мучить её дальше бесполезно.

Часто звонят по поводу того, что no-name девайсы на Android не коннектятся. Проблема известная, но, опять же, пользователя что и как волнует в последнюю очередь. Ему хочется лечь на диван и посмотреть фильм.

Поскольку наш сервер – это, фактически, дополнительный канал авторизации под админом, решаются и традиционные бытовые проблемы. Вы не поверите, но очень многие пользователи банально не могут нажать кнопку reset на роутере. Случается и такое, что абонент поменял пароль админа на 1234567, а сосед его угадал – поддержка поставит новый. Забыл пароль своей домашней сети – меняем. Сейчас, по ряду причин, мы открываем Wi-Fi и говорим, как поставить новый пароль. Естественно, у части юзеров уже всё решено к этому моменту, и о безопасности они задумываются мало. Учитывая возрастающее количество обращений за забытыми паролями, будем в будущем вместо открытия ставить новый криптостойкий, высылая его по SMS так, чтобы видел только конечный абонент.

Обновление прошивки

Раньше надо было воткнуться в устройство физически, чтобы обновить его прошивку. Либо скачать апдейт и отдать его через домашнюю сеть (руками или же с помощью вспомогательного ПО на компьютере абонента). Централизованное обновление прошивок превращалось в историю, длящуюся не меньше пары лет… не всегда оканчивающуюся успехом.

Сегодня ACS – сервера автоматического конфигурирования — имеют возможность «забросить» прошивку на конечное устройство и обновить его в нужный момент без участия абонента. PROFIT!

Как только производитель выпускает новую версию или мы дорабатываем какие-то настройки, софт автоматически проходит по всей базе роутеров и ставит их в очередь на обновление. В период наименьшей статистической активности (для города в целом, как правило – около 4:00 утра) прошивка заливается на конечное устройство. Даже если абонент в этот момент находится в сети, он получает только разрыв на несколько секунд, когда устройство перезагружается. Весь функционал, настроенный клиентом, не затрагивается.

Раньше изменение MTU была достаточно нетривиальной задачей. Сейчас всё это решается одним администратором – и вся сеть через несколько дней использует новые параметры. Такой подход очень полезен, потому что, например, скоро мы собираемся переводить часть сети на IPoE – и возможность не обходить каждый дом очень даже радует. Большая часть клиентов вообще ничего не заметит (ну, разве что те, кто играют в сетевые игры, порадуются немного уменьшившемуся пингу).

Это функционал доступен для брендированных роутеров SmartBox. Все последующие брендированные роутеры, также будут поддерживать удаленное управление.

В России такой функционал собирается использовать Ростелеком, по моим данным, МГТС давно использует часть функционала в виду исторического ADSL-наследия.

Архитектура решения

Мы выбрали решение от компании Friendly Technologies. Ядро платформы – сервер автоматического конфигурирования. Он связывается с абонентским оборудованием и конфигурирует его, используя ACS API (в частности, выставляет интерфейс для внешних приложений — Портал инициализации, Программное обеспечение оперативной поддержки, Управление взаимоотношениями с клиентами и так далее). Консоль управления дает администратору возможность управлять деятельностью сервера автоматического конфигурирования, добавлять новые типы абонентского оборудования, осуществлять контроль и диагностику абонентского оборудования по протоколу TR-069, высылать предупреждения о возможной ошибке и иные сигналы, отчеты и т.д. Рядом – вспомогательные сервисы авторизации, управления, трансфера данных, база данных, сервисы авторизации и так далее.

Всё это (устройства и центральные сервера) находятся в отдельной виртуальной сети, основное оборудование которой установлено на ГВЦ (главном вычислительном центре) в Москве.

Производитель устройства первый раз накатывает на заводе прошивку, которая позволяет устройству войти в эту сеть и подсоединиться к управляющему серверу. Затем устройство каждый раз получает новую прошивку, в том числе, модифицирующую параметры соединения.

Это означает, что, теоретически, вы можете перешить наше устройство опенсорсной прошивкой без связки с нашим сервером (и не позволяет конфигуировать его удалённо), либо же, наоборот, перешить свой устройство совместимой с нашей подсетью прошивкой. Но пока опенсорсных вариантов ни того, ни другого нет.

Читайте также:  какие улицы в адлере находятся на первой береговой линии

Ещё одно важное преимущество такой виртуализации и размещения в ГВЦ – это плотная связь с сервисами сотовой телефонии. В частности, личным кабинетом абонента. Скоро можно будет зайти в свой личный кабинет с сотового телефона, настроить оттуда роутер (точнее, передать настройки серверу конфигурирования, которые он, в свою очередь, передаст роутеру), обновить пароль прямо там или закрыть доступ ребёнку. Для многих абонентов это в разы удобнее и понятнее, чем стандартные вшитые веб-интерфейсы администрирования роутеров или управление устройством с помощью специального ПО на компьютере.

Источник

TR-069 был впервые опубликован в мае 2004 года с поправками в 2006, 2007, 2010, июле 2011 (версия 1.3) и ноябре 2013 (версия 1.4 am5).

Другие технические инициативы, такие как Инициатива домашних шлюзов (HGI), Цифровое видеовещание (DVB) и Форум WiMAX, одобрили CWMP в качестве протокола для удаленного управления домашними сетевыми устройствами и терминалами.

СОДЕРЖАНИЕ

Коммуникация

Транспорт

Параметры конфигурации

Чтобы устройство могло подключиться к серверу, сначала необходимо настроить определенные параметры. К ним относятся URL-адрес сервера, к которому устройство хочет подключиться, и интервал, с которым устройство будет инициировать сеанс инициализации ( PeriodicInformInterval ). Кроме того, если аутентификация требуется по соображениям безопасности, необходимо предоставить такие данные, как имя пользователя и пароль.

Сеанс подготовки

На третьем этапе роли меняются на уровне CWMP. HTTP-ответ на пустой HTTP-запрос устройства будет содержать CWMP-запрос от СКУД. Впоследствии за этим последует HTTP-запрос, содержащий CWMP-ответ на предыдущий CWMP-запрос. Несколько заказов могут быть переданы один за другим. Этот этап (и весь сеанс инициализации) завершается пустым HTTP-ответом от ACS, указывающим, что заказов больше нет.

Триггеры сеанса

Есть определенные события, которые запускают сеанс подготовки. Это включает:

Безопасность и аутентификация

Поскольку важные данные (например, имена пользователей и пароли) могут передаваться на CPE через CWMP, важно обеспечить безопасный транспортный канал и всегда аутентифицировать CPE по ACS. Безопасный транспорт и аутентификация удостоверения ACS могут быть легко обеспечены с помощью HTTPS и проверки сертификата ACS. Аутентификация CPE более проблематична. Идентификация устройства проверяется на основе общего секрета (пароля) на уровне HTTP. Пароли могут согласовываться между сторонами (CPE-ACS) на каждом сеансе инициализации. Когда устройство обращается к ACS в первый раз (или после восстановления заводских настроек), используются пароли по умолчанию. В больших сетях ответственность за обеспечение того, чтобы каждое устройство использовало уникальные учетные данные, их список доставлялась вместе с самими устройствами и была защищена.

Запрос на подключение

Инициализация и управление потоком сеанса инициализации являются исключительной ответственностью устройства, но ACS может запросить запуск сеанса с устройства. Механизм запроса соединения также основан на HTTP. В этом случае устройство (CPE) выступает в роли HTTP-сервера. ACS запрашивает соединение с устройством, посещая согласованный URL-адрес и выполняя HTTP-аутентификацию. Общий секрет также согласовывается с устройством заранее (например, предыдущий сеанс инициализации), чтобы предотвратить использование CPE для DDoS-атак на сервер инициализации (ACS). После отправки подтверждения устройством сеанс инициализации должен быть начат как можно скорее, но не позднее, чем через 30 секунд после передачи подтверждения.

Запрос на подключение через NAT

Протокол CWMP также определяет механизм доступа к устройствам, подключенным за NAT (например, IP-телефонам, телевизионным приставкам ). Этот механизм, основанный на обходе STUN и UDP NAT, определен в документе TR-069, приложение G (ранее в TR-111).

Поправка 5 к протоколу вводит альтернативный метод выполнения запроса на соединение через NAT на основе XMPP (подробности см. В Приложении K к поправке 5 к TR-069 ).

Модель данных

Значения, применимые к параметру, их тип и значение также точно определены стандартом.

Объекты с несколькими экземплярами

Некоторые части модели данных требуют существования нескольких копий поддерева. Лучшими примерами являются таблицы с описанием, например Таблица переадресации портов. Объект, представляющий массив, будет иметь в качестве дочерних только номера экземпляров или псевдонимы.

Объект с несколькими экземплярами может быть доступен для записи или только для чтения, в зависимости от того, что он представляет. Записываемые объекты позволяют динамически создавать и удалять своих дочерних элементов. Например, если объект представляет четыре физических порта на коммутаторе Ethernet, то не должно быть возможности добавить или удалить их из модели данных. Если к объекту добавляется экземпляр, ему присваивается идентификатор. После назначения идентификаторы не могут измениться в течение жизненного цикла устройства, за исключением заводских настроек.

Общие проблемы

Общие операции

Сообщение Описание
GetParameterNames Получить список поддерживаемых параметров с устройства.
GetParameterValues Получить текущее значение параметра (ов), идентифицированного ключами. Вариант этого вызова принимает объект в качестве ключа. Он извлекает все параметры объекта
SetParameterValues Установите значение одного или нескольких параметров
GetParameterAttributes Получить атрибуты одного или нескольких параметров
SetParameterAttributes Установить атрибуты одного или нескольких параметров
Скачать Прикажите CPE скачать и использовать файл, указанный в URL. Типы файлов включают образ прошивки, файл конфигурации, файл звонка и т. Д.
Загрузить Прикажите CPE загрузить файл в указанное место назначения. Типы файлов включают текущий файл конфигурации, файлы журнала и т. Д.
AddObject Добавить новый экземпляр к объекту
DeleteObject Удалить экземпляр из объекта

Возможны высокоуровневые операции через TR-069

Безопасность

Источник

TR-069 в Mikrotik. Испытываем Freeacs в качестве сервера автоконфигурации для RouterOS

Категории

Свежие записи

Наши услуги

В данной статье, я попробую пошагово описать процесс установки тестового сервера прекрасного проекта Freeacs до полностью работоспособного состояния, и показать практические приемы для работы с mikrotik: конфигурацию через параметры, выполнение скриптов, обновление, установку доп.модулей и т.д.

Цель статьи — подтолкнуть коллег к отказу от управления сетевыми устройствами с помощью ужасных граблей и костылей, в виде самописных скриптов, Dude, Ansible и пр. И, по этому поводу, вызвать салюты и массовое ликование на площадях.

Читайте также:  какие спиннинговые приманки на мелководье стоячей воде

0. Выбор

1. Установка freeacs

Ставить будем в Centos7, а так как устройства передают достаточно много данных, и ACS активно работает с базой данных — жадничать с ресурсами не будем. Для комфортной работы выделим 2 ядра CPU, 4GB RAM и 16GB быстрого хранилища ssd raid10. Я буду ставить freeacs в lxc-контейнере Proxmox VE, а вы можете работать в любом, удобном вам инструменте.
Не забудьте настроить правильное время на машине с ACS.

Система будет тестовая, поэтому не будем мудрить, и просто воспользуемся любезно предоставленным скриптом установки, как есть.

Как только работа скрипта завершится — вы тут же сможете попасть в веб-интерфейс по ip машины, с учетными данными admin/freeacs


Вот такой приятный минималистичный интерфейс, и как здорово и быстро все получилось

2. Первичная настройка freeacs

Базовая единица управления для ACS — это юнит или CPE(Customer Premises Equipment). А самое главное, что нам нужно для управления юнитами — это их Unit Type, т.е. модель оборудования, определяющая совокупность настраиваемых параметров юнита и его ПО. Но пока мы не знаем как правильно завести новый Unit Type, лучше всего будет спросить об этом у самого юнита, включив Discovery Mode.

В продакшн такой режим использовать категорически нельзя, но нам надо скорее завести мотор и посмотреть возможности системы. Все основные настройки хранятся в /opt/freeacs-*. Поэтому, открываем

Кроме того, нам желательно увеличить максимальные размеры файлов, с которыми будут работать nginx и mysql. Для mysql добавляем в /etc/my.cnf строчку

, а для nginx, в /etc/nginx/nginx.conf добавляем

в секцию http. Иначе мы сможем работать с прошивками не более 1М.

Перезагружаем, и мы готовы работать с устройствами.

А в роли устройства(CPE) у нас будет малыш-трудяга hAP AC lite .

Перед тестовым подключением, желательно вручную настроить CPE до минимальной рабочей конфигурации, чтобы параметры, которые вы в будущем захотите конфигурировать, были непустыми. Для роутера минимально можно включить dhcp-клиент на ether1, установить пакет tr-069client и поставить пароли.

3. Подключаем Mikrotik

Все юниты желательно подключать, используя в качестве логина валидный серийный номер. Тогда вам в логах все будет понятно. Кто-то советует использовать WAN MAC — не верьте. Кто-то использует общую для всех пару логин/пасс — обходите их стороной.

Открываем лог tr-069 для мониторинга «переговоров»

Открываем winbox, пукт меню TR-069.
ACS URL: http://10.110.0.109/tr069/prov (заменить на ваш IP)
Username: 9249094C26CB (копируем серийник из system>routerboard)
Password: 123456 (для discovery не нужен, но чтобы был)
Periodic inform interval мы не меняем. Эту настройку мы выдадим через наш ACS

Ниже идут настройки для удаленной инициализации соединения, но с наскока заставить mikrotik с этим работать я не смог. Хотя с телефонами remote request работает «из коробки». Надо будет разбираться.

После нажатия кнопки Apply — в терминале пойдет обмен данными, а в веб-интерфейсе Freeacs можно будет увидеть наш роутер с автоматически созданным Unit Type «hAPaclite».

4. Конфигурируем Mikrotik

Пришла пора скачать руководство по веб-интерфейсу Это руководство 2011 года — как бутыль хорошего, выдержанного вина. Давайте его откроем и оставим подышать.

А сами, в веб-интерфейсе кликнем на карандашик рядом с нашим юнитом и перейдем в режим конфигурации юнита. Выглядит это так:

Кратенько разберем что есть интересного на этой страничке:

Блок Unit configuration

Блок Provisioning с кнопками
Подсказки намекают, что все кнопки в блоке Provisioning могут моментально применять конфигурацию через ConnectionRequestURL. Но, как я говорил выше, это не работает, поэтому после нажатия кнопок надо будет перезапустить tr-069 клиент на mikrotik для ручного старта provision.

Блок Provisioning history (last 48 hours)

Самый большой и важный блок, где, собственно, задаются и читаются параметры для данного юнита. Сейчас мы видим только самые важные системные параметры, без которых работа ACS с юнитом невозможна. Но мы-то помним, что у нас в Unit Type их — 928. Давайте посмотрим все значения, и решим с чем это все едят у микротика.

4.1 Читаем параметры

В блоке Provisioning нажимаем кнопку Read all. В блоке — красная надпись. Справа появится столбец CPE (current) value. В системных параметрах ProvisioningMode сменился на READALL.

Перезапустите TR-069 client или перезагрузите роутер, и продолжайте обновляйте страничку браузера, пока не получите справа параметры в жизнерадостных серых прямоугольниках
Если кто захотел глотнуть старого выдержанного — этот режим в мануале описан, как 10.2 Inspection mode. Включается и работает немного не так, но суть описана вполне

Режим READALL сам выключится через 15 минут, а мы попробуем разобраться что же тут есть полезного, и что можно подправить «на лету», пока мы в этом режиме.

Можно изменить IP-адреса, включать/отключать интерфейсы, правила фаервола, которые с комментариями (иначе полный бардак), вай-фай и так по мелочи.

То есть, вменяемо конфигурировать mikrotik только средствами TR-069 пока нельзя. Но можно весьма неплохо мониторить. Доступна статистика по интерфейсам и их статус, свободная память и т.д.

4.2 Доставляем параметры

Давайте теперь попробуем доставить параметры в роутер, через tr-069, «естественным» путем. Первой жертвой станет Device.DeviceInfo.X_MIKROTIK_SystemIdentity. Находим его в параметрах юнита All. Как видно — он не задан. Это значит, что любой юнит может сам по себе иметь любой Identity. Хватит это терпеть!
Тыкаем галку в столбце create, задаем имя Mr.White и тыкаем кнопку Update parameters. Что будет дальше вы уже догадались. При очередном сеансе связи со штабом, роутер должен поменять свой Identity.

Но нам этого мало. Такой параметр, как Identity, хорошо всегда иметь под рукой при поиске нужного юнита. Тыкаем в имя параметра и ставим там галки Display(D) и Searchable (S). Ключ параметра меняется на RWSD (Помните, имена и ключи задаются на самом высоком уровне Unit Type)

Значение теперь не только отображается в общем списке поиска, но и доступно для поиска в Support > Search > Advanced form

Читайте также:  Что такое нация каково соотношение понятий нация и этнос

Инициируем provision и смотрим на Identity. Здравствуйте, Mr.White! Теперь вы не сможете сами сменить личину, пока работает tr-069client

4.3 Исполняем скрипты

Раз уж мы выяснили, что без них никак, — давайте их исполнять.

Но прежде, чем приступать к работе с файлами — нам надо поправить директиву public.url в файле /opt/freeacs-tr069/config/application-config.conf
У нас ведь до сих пор тестовая конфигурация, установленная одним скриптом. Не забыли?

Но то, что открывается у нас сейчас — принадлежит Unit Type, т.е. глобально ко всем роутерам hAP ac lite, будь то роутер филиала, хотспот или капсман. Нам такой высокий уровень пока не нужен, поэтому, прежде, чем работать со скриптами и файлами — следует создать профиль. Можно это себе назвать, как «должность» устройства.

Давайте сделаем нашего малыша сервером времени. Достойная должность c отдельным пакетом ПО и небольшим количеством параметров. Идем в Easy Provisioning > Profile > Create Profile и создаем в Unit Type:hAPaclite профиль timeserver. Параметров у нас в дефолтном профиле не было, поэтому и копировать нечего Copy parameters from: «don’t copy…»

Тут параметров пока нет совсем, но можно будет задать те, что мы позже захотим видеть на наших серверах времени, слепленных из hAPaclite. Например, общие адреса NTP-серверов.
Перехотим в конфигурацию юнита, и перемещаем его в профиль timeserver

А чтобы сразу было видно результат — добавим роутеру vlan на ether1

Вбиваем, нажимаем Upload и готово. Наш скрипт vlan1.alter ждет своего часа.

Ну что, погнали? Нет. Надо еще добавить для нашего профиля группу. Группы не входят в иерархию оборудования, но нужны для поиска юнитов в UnitType или Profile и обязательны для исполнения скриптов через Advanced Provisioning. Обычно, группы связаны с локациями, и имеют вложенную структуру. Давайте сделаем группу Russia.

Представляете мы только что смогли сузить поиск с «Все серверы времени мира на hAPaclite» до «Все серверы времени России на hAPaclite». Там еще огромный пласт всего интересного с группами, но нам некогда же. Погнали уже в скрипты.

Поскольку мы как-никак в Advanced режиме, то тут можно указать кучу разных условий начала задания, поведения при ошибках, повторов и таймаутов. Рекомендую это все прочитать в руководствах или позже обсудим при внедрении в продакшн. Пока лишь поставим n1 в Stop rules, чтобы задание остановилось, как только выполнится на нашем 1 юните.

Заполняем необходимое, и осталось только запустить!

Нажимаем START и ждем. Сейчас резво побежит счетчик убитых недоотлаженным скриптом устройств! Нет, конечно. Такие задания даются надолго, и в этом их отличие от скриптов, Ansible и проч. Юниты сами обращаются за заданиями по расписанию или по мере появления в сети, ACS ведет учет какие юниты уже получили задания, и как они завершились, и записывает это в параметры юнита. В нашей группе 1 юнит, а будь их 1001 — админ запустил бы это задание и уехал на рыбалку

Ну же. Перезагрузите уже роутер или перезапустите TR-069 клиент. Все должно пройти гладко и Mr.White получит новый vlan. А наше задание по Stop rule перейдет в статус PAUSED. То есть, его еще можно будет перезапустить или изменить. Если нажать FINISH — задание спишется в архив

4.4 Обновляем ПО

Это очень важный пункт, так как прошивка микротика модульная, но добавление модулей не меняет общую версию прошивки устройства. Наш ACS нормальный, и к такому не привык.
Сейчас мы сделаем в стиле quick&dirty, и запихнем модуль NTP в общую прошивку сразу, но как только на устройстве обновится версия — мы не сможем добавить еще модуль таким же путем.
В продакшн такой трюк лучше не применять, и устанавливать необязательные для Unit Type модули только скриптами.

Итак, первое, что нам нужно сделать — это подготовить пакеты ПО нужных версий и архитектуры, и положить на какой-то доступный веб-сервер. Для теста пойдет любой, до которого сможет дотянуться наш Mr.White, а для продакшн лучше собрать автообновляемое зеркало нужного ПО, которое не страшно выставить в web
Важно! Не забывайте всегда включать в обновления пакет с tr-069client!

Итак, у нас должно быть три npk-файла, доступных по http. У меня вышло так

Теперь это нужно оформить в xml-файл с FileType=«1 Firmware Upgrade Image», который мы скормим микротику. Имя пусть будет ros.xml

Делаем по инструкции из mikrotik-wiki :

Бросается в глаза нехватка Username/Password для доступа к серверу загрузки. Можно либо попробовать вписать это как в пункте A.3.2.8 протокола tr-069:

Или спросить напрямую у официалов микротика, как и о максимальной длине пути до *.npk

Выбираем для загрузки наш xm-файл и готово.

Теперь у нас есть масса способов обновить устройство. Через Wizard в главном меню, через Advanced Provisioning и задания с типом SOFTWARE, или просто зайти в конфигурацию юнита и нажать Upgrade. Выберем самый простой путь, а то и так статья распухла.

Нажимаем кнопку, инициируем provision и готово. Тестовая программа завершена. Теперь мы умеем делать с mikrotik больше.

5. Заключение

Когда начинал писать, хотел сначала описать подключение ip-телефона, и на его примере объяснить как классно может быть, когда tr-069 работает легко и без усилий. Но потом, по мере продвижения и копания в материалах, подумал, что тому, кто подключил микротик — уже никакой телефон не будет страшен для самостоятельного изучения.

В принципе Freeacs, который мы тестировали — уже можно применять в продашн, но для этого надо настроить безопасность, SSL, надо настроить микротики для автоконфигурации после reset, надо отладить корректное добавление Unit Type, разобрать работу webservices и fusion shell, и еще много чего. Пробуйте, изобретайте, и пишите продолжение!

Всем, спасибо за внимание! Буду рад поправкам и комментариям!

Список использованных материалов и полезные ссылки:

Источник

Информ портал о технике и не только