SlideShare uma empresa Scribd logo
1 de 20
The better PHP API
(По-доброто PHP API)
От Васил Рангелов a.k.a. boen_robot
Какво е това „API“?
 В програмирането:
 “Application Programming Interface” – Набор от операции и
техните входове и изходи, с едно общо предназначение и
достъпни за програмиста.
 В MikroTik RouterOS:
 Клиент/сървър протокол от слой 7(ала HTTP, FTP, SSH и т.н.)
 Предназначен за машини, не за хора
 Строг, структуриран с липсващи „човешки“ удобства
 За да се избегнат обърквания, протокола ще се води като
“RouterOS API”.
06.11.2014"The better PHP API" от Васил Рангелов
2
За какво може да се използва?
 Създаване на собствени интерфейси за управление
 Интеграция на RouterOS с външни приложения, пр.
 Billing системи
 Приложения за самообслужване
 Мониторинг инструменти
 С една дума: Автоматизация.
06.11.2014"The better PHP API" от Васил Рангелов
3
SSH vs. RouterOS API
 И двете биха могли да се използват за автоматизация
 SSH е предназначен за човешко ползване
 „Козметични“ промени от една версия на RouterOS до друга могат
да предизвикат проблеми с инструменти за автоматизация
 Преименуване/премахване на команди/аргументи/свойства може
да причини не само трудни за засичане грешки, но евентуално и
щети
 RouterOS API е предназначен за машинно ползване
 Единствено промени по самият протокол биха могли да причинят
затруднения
 Лесни за засичане грешки и евентуално възстановяване без щети.
06.11.2014"The better PHP API" от Васил Рангелов
4
Езици с RouterOS API клиенти за общо
предназначение
 PHP (3)
 Java (2)
 .NET (C# (3), VB.NET (1))
 Python (2)
 Node.js (1)
 Perl (2)
 Ruby (1)
 Delphi (2)
 C/C++ (4)
 Erlang (1)
 ActionScript (1)
06.11.2014"The better PHP API" от Васил Рангелов
5
Сравнение на PHP RouterOS API клиенти
06.11.2014
6
Клиент API PHP class
(Denis Basta)
RouterOS PHP class
(ayufan)
API PHP package
(boen_robot)
Изисква PHP версия 5.2+ 5.2+ 5.3+
Суров протоколен В/И Да Не Да
Улеснения с общо
предназначение
Един метод
(comm())
Не Набор от
класове
CRUD и др. улеснения Не Да Да (1 клас)
Асинхронни заявки Не Само с функции Да
Скриптове Не Псевдо Да
Постоянни връзки Не Не Да
Емулация на команден ред Не Не Псевдо
"The better PHP API" от Васил Рангелов
Подготвяне на рутера за RouterOS API
 За RouterOS по-стари от v6.0, протокола трябва да се
включи с
 /ip service enable api
 Протокола е включен по подразбиране от RouterOS v6.0
 RouterOS потребителят трябва да има “api” позволение
 Началните потребителски групи го имат; внимавайте ако
използвате собствени потребителски групи
 Ако се използват „input“ и „output“ веригите на защитната
стена, трябва да се позволят входящи връзки до TCP порт
8728, както и изходящи от TCP порт 8728.
06.11.2014"The better PHP API" от Васил Рангелов
7
Подготвяне на клиентското устройство за
RouterOS API
 Инсталирайте всичко необходимо за създаване и
изпълнение на програми на избраният език
 За PHP, това значи да инсталирате самият PHP интерпретатор и
евентуално да го закачите към web сървър
Най-лесно с цялостни пакети като XAMPP: http://apachefriends.org/
За приложения с команден интерфейс, самият PHP от
http://php.net/ е достатъчен
 Позволете на съответните изпълними файлове (“php” и
може би “httpd”) да правят изходящи връзки към TCP
порт 8728
 За Windows, отивате в защитната стена с Win+R, и изпълнявате
“wf.msc”.
06.11.2014"The better PHP API" от Васил Рангелов
8
Първо използване на PHP RouterOS пакетът
(бърз начин)
 Изтегляте PHAR файла от https://pear2.github.io/Net_RouterOS/
 Създавате файл в “htdocs” в директорията на Apache,
наречен пр. “rostest.php”, със следното съдържание:
06.11.2014"The better PHP API" от Васил Рангелов
9
<?php
use PEAR2NetRouterOS;
require_once 'PEAR2_Net_RouterOS-1.0.0b5.phar';
try {
$client = new RouterOSClient('192.168.0.1', 'admin', 'password');
echo 'OK';
} catch (Exception $e) {
die($e);
}
 До-настройте пътеката до “.phar” файла, IP-то и идентификационните данни на RouterOS
 Отворете в web браузер http://localhost/rostest.php.
Алтернативни методи на инсталация
 Разархивиране на TGZ или ZIP файла от https://pear2.github.io/Net_RouterOS/
 Включвате „src/PEAR2/Autoload.php”
 Чрез Composer:
 composer require pear2/net_routeros
 Включвате „vendor/autoload.php”
 Чрез PEAR:
 pear channel-discover pear2.php.net
 pear install -a pear2/PEAR2_Net_RouterOS-alpha
 Включвате „PEAR2/Autoload.php”
 Чрез Pyrus:
 pyrus install PEAR2_Net_RouterOS-alpha
 Включвате „PEAR2/Autoload.php“.
06.11.2014"The better PHP API" от Васил Рангелов
10
Диагностика на проблеми (етап 1: среда)
 Отваряте команден ред
 В Windows, Win+R, и пишете “cmd”
 Стартирате PHAR файла с PHP
 Windows:
 "D:пътдоphp.exe" "D:пътдоPEAR2_Net_RouterOS.phar“
 UNIX:
 "/път/до/php" "/път/до/PEAR2_Net_RouterOS.phar“
 Оглеждате изхода за предупреждения и грешки
 Забележка: За краткост, горното ще се съкрати на
“php PEAR2_Net_RouterOS.phar” в следващите слайдове.
06.11.2014"The better PHP API" от Васил Рангелов
11
Диагностика на проблеми (етап 2: връзка)
 Стартирате PHAR файла с IP-то на рутера като аргумент
 php PEAR2_Net_RouterOS.phar 192.168.0.1
 Ако използвате различен порт за RouterOS API (пр. 443):
 php PEAR2_Net_RouterOS.phar -p 443 192.168.0.1
 Оглеждате изхода за грешки и възможни решения
 Всичко е наред ако не виждате нищо и можете да пишете
Въвеждате “/quit” (без кавичките), и натискате Enter два пъти за изход.
06.11.2014"The better PHP API" от Васил Рангелов
12
Диагностика на проблеми (етап 3: логин)
 Стартирате PHAR файла с потребителското име и парола
за RouterOS в края, пр.
 php PEAR2_Net_RouterOS.phar 192.168.0.1 "admin" "password"
 Оглеждате изхода за грешки и възможни решения
 Всичко е наред ако не виждате нищо и можете да пишете
Въвеждате “/quit” (без кавичките), и натискате Enter два пъти за изход.
06.11.2014"The better PHP API" от Васил Рангелов
13
Пример: Torch за 4 секунди
06.11.2014"The better PHP API" от Васил Рангелов
14
<?php
use PEAR2NetRouterOS;
require_once 'PEAR2_Net_RouterOS-1.0.0b5.phar';
$client = new RouterOSClient('192.168.0.1', 'admin', 'password');
header('Content-Type: text/plain');
$torchRequest = new RouterOSRequest('/tool torch duration=4');
$torchRequest->setArgument('interface', $_GET['nic']);
foreach ($client->sendSync($torchRequest) as $response) {
foreach ($response as $name => $value) {
echo "{$name}: {$value}n";
}
echo "====n";
}
Пример: Извеждане на логът на RouterOS
06.11.2014"The better PHP API" от Васил Рангелов
15
<?php
use PEAR2NetRouterOS;
require_once 'PEAR2_Net_RouterOS-1.0.0b5.phar';
$client = new RouterOSClient('192.168.0.1', 'admin', 'password');
header('Content-Type: text/plain');
$util = new RouterOSUtil($client);
foreach ($util->setMenu('/log')->getAll() as $item) {
echo $item('time') . ' ' . $item('topics') . ' ' . $item('message') . "n";
}
Пример: Изпълнение на скрипт с параметри
06.11.2014"The better PHP API" от Васил Рангелов
16
<?php
use PEAR2NetRouterOS;
require_once 'PEAR2_Net_RouterOS-1.0.0b5.phar';
$client = new RouterOSClient('192.168.0.1', 'admin', 'password');
header('Content-Type: text/plain');
$util = new RouterOSUtil($client);
$util->exec('
/ip dhcp-client lease
make-static [find address=$address]
comment [find address=$address] $name
/log info "User $name now has the static IP $address"
',
array(
'name' => $_GET['user'],
'address' => $_GET['ip']
)
);
Поддръжка
 Документация и още примери
 GitHub wiki: https://github.com/pear2/Net_RouterOS/wiki
 MikroTik wiki: http://wiki.mikrotik.com/wiki/API_PHP_package
 За въпроси
 MikroTik форум (на английски): http://forum.mikrotik.com/
 Бъгове и предложения за клиента
 GitHub: https://github.com/pear2/Net_RouterOS/issues
 Бъгове и предложения за протокола
 MikroTik поддръжка (на английски): support@mikrotik.com.
06.11.2014"The better PHP API" от Васил Рангелов
17
Често задавани въпроси (технически)
 Може ли API приложение да работи директно от рутера?
 Не.
 Мога ли да логвам hotspot потребители с API протокола?
 Не. Не с API протокола, не с SSH, не дори чрез Winbox.
 Hotspot потребители могат да се логват ЕДИНСТВЕНО когато ТЕХНИТЕ
устройства направят HTTP(S) заявка до рутера с техните потребителско име и
парола
 Ако рутера ми е скрит зад NAT?
 Решенията са като за при всеки друг TCP протокол.
 VPN?
 Ами криптиране?
 API протоколът има TLS криптиран вариант на порт 8729
 PEAR_Net_RouterOS го поддържа, но заради проблеми в PHP, за сега такива
връзки са много нестабилни.
06.11.2014"The better PHP API" от Васил Рангелов
18
Често задавани въпроси (социални)
 Защо още един PHP клиент?
 Другите PHP клиенти не ми харесват
 Както и доста не-PHP клиенти, но по-добре нещо от колкото нищо, та…
 Протоколът е лесен за реализация от бакалаври по Информатика
като мен, та в крайна сметка „защо не?“
 Защо PEAR(2)?
 PEAR не е framework, ами колекция пакети, следващи общ кодов
стандарт
 Нещо като „печат за качество“, макар вече не толкова широко приет
 Защо текущата версия е beta?
 За PEAR2, „beta“ НЕ значи „възможни внезапни грешки“
 Означава „възможни несъвместими промени в следващата версия;
Прегледайте внимателно списъкът с промените при актуализации“
 Подобно на това как Gmail дълго време беше beta.
06.11.2014"The better PHP API" от Васил Рангелов
19
Благодаря за вниманието
06.11.2014"The better PHP API" от Васил Рангелов
20
Въпроси

Mais conteúdo relacionado

Destaque

How do you get free followers on keek
How do you get free followers on keekHow do you get free followers on keek
How do you get free followers on keektom639
 
Citations genantes-pour-qui
Citations genantes-pour-quiCitations genantes-pour-qui
Citations genantes-pour-quiangrequen
 
Ultrasound technician schools in michigan
Ultrasound technician schools in michiganUltrasound technician schools in michigan
Ultrasound technician schools in michiganraymondult
 
Requirements For Epcs When Marketing Homes For Sale Or Let
Requirements For Epcs When Marketing Homes For Sale Or LetRequirements For Epcs When Marketing Homes For Sale Or Let
Requirements For Epcs When Marketing Homes For Sale Or Letcrenergy
 
Det danske CMS marked ultimo 2012 på 20 korte dias
Det danske CMS marked ultimo 2012 på 20 korte diasDet danske CMS marked ultimo 2012 på 20 korte dias
Det danske CMS marked ultimo 2012 på 20 korte diasJanus Boye
 
Concorde 4500 Software Version 6.50.02 Release Bulletin
Concorde 4500 Software Version 6.50.02 Release BulletinConcorde 4500 Software Version 6.50.02 Release Bulletin
Concorde 4500 Software Version 6.50.02 Release BulletinVideoguy
 
Magestore’s mega menu magento extension
Magestore’s mega menu magento extensionMagestore’s mega menu magento extension
Magestore’s mega menu magento extensionHillary0330
 
TIME Magazine Cover Portrait (Paintings)
TIME Magazine Cover Portrait (Paintings)TIME Magazine Cover Portrait (Paintings)
TIME Magazine Cover Portrait (Paintings)maditabalnco
 
Ten tips for job search and interviewing
Ten tips for job search and interviewingTen tips for job search and interviewing
Ten tips for job search and interviewingghenkel
 
Twr 1 Q 2009 Outlook
Twr 1 Q 2009 OutlookTwr 1 Q 2009 Outlook
Twr 1 Q 2009 Outlookpjcohen
 

Destaque (14)

My Profile
My ProfileMy Profile
My Profile
 
How do you get free followers on keek
How do you get free followers on keekHow do you get free followers on keek
How do you get free followers on keek
 
Citations genantes-pour-qui
Citations genantes-pour-quiCitations genantes-pour-qui
Citations genantes-pour-qui
 
Ultrasound technician schools in michigan
Ultrasound technician schools in michiganUltrasound technician schools in michigan
Ultrasound technician schools in michigan
 
Requirements For Epcs When Marketing Homes For Sale Or Let
Requirements For Epcs When Marketing Homes For Sale Or LetRequirements For Epcs When Marketing Homes For Sale Or Let
Requirements For Epcs When Marketing Homes For Sale Or Let
 
Det danske CMS marked ultimo 2012 på 20 korte dias
Det danske CMS marked ultimo 2012 på 20 korte diasDet danske CMS marked ultimo 2012 på 20 korte dias
Det danske CMS marked ultimo 2012 på 20 korte dias
 
Concorde 4500 Software Version 6.50.02 Release Bulletin
Concorde 4500 Software Version 6.50.02 Release BulletinConcorde 4500 Software Version 6.50.02 Release Bulletin
Concorde 4500 Software Version 6.50.02 Release Bulletin
 
Samsung salaxy s5 preview.ppt
Samsung salaxy s5 preview.pptSamsung salaxy s5 preview.ppt
Samsung salaxy s5 preview.ppt
 
Magestore’s mega menu magento extension
Magestore’s mega menu magento extensionMagestore’s mega menu magento extension
Magestore’s mega menu magento extension
 
TIME Magazine Cover Portrait (Paintings)
TIME Magazine Cover Portrait (Paintings)TIME Magazine Cover Portrait (Paintings)
TIME Magazine Cover Portrait (Paintings)
 
Ten tips for job search and interviewing
Ten tips for job search and interviewingTen tips for job search and interviewing
Ten tips for job search and interviewing
 
Proposal from agency
Proposal from agencyProposal from agency
Proposal from agency
 
Twr 1 Q 2009 Outlook
Twr 1 Q 2009 OutlookTwr 1 Q 2009 Outlook
Twr 1 Q 2009 Outlook
 
Office politics
Office politicsOffice politics
Office politics
 

Semelhante a The better PHP API (BG)

Php security
Php securityPhp security
Php securityphristov
 
Защита при създаването на PHP-приложения
Защита при създаването на PHP-приложенияЗащита при създаването на PHP-приложения
Защита при създаването на PHP-приложенияNikolay Milkov
 
езици за програмиране. Php
езици за програмиране. Phpезици за програмиране. Php
езици за програмиране. Phpclub23
 
Защита при създаване на PHP-приложения в интернет
Защита при създаване на PHP-приложения в интернетЗащита при създаване на PHP-приложения в интернет
Защита при създаване на PHP-приложения в интернетnelisid
 
500085 presentation
500085 presentation500085 presentation
500085 presentationnelisid
 
ИнтеRESTни уеб услуги
ИнтеRESTни уеб услугиИнтеRESTни уеб услуги
ИнтеRESTни уеб услугиsvilen.ivanov
 
Web and WS based Embedded Systems
Web and WS based Embedded SystemsWeb and WS based Embedded Systems
Web and WS based Embedded SystemsNikolay Kakanakov
 
Защита при създаване на PHP-приложения в Интернет
Защита при създаване на PHP-приложения в ИнтернетЗащита при създаване на PHP-приложения в Интернет
Защита при създаване на PHP-приложения в Интернетeismail
 
Drupal security lecture
Drupal security lectureDrupal security lecture
Drupal security lectureslide9991
 
Ускоряване на World Wide Wait
Ускоряване на World Wide WaitУскоряване на World Wide Wait
Ускоряване на World Wide WaitSEOM
 

Semelhante a The better PHP API (BG) (20)

B1 t1 php_basics
B1 t1 php_basicsB1 t1 php_basics
B1 t1 php_basics
 
B1 t1 php_basics
B1 t1 php_basicsB1 t1 php_basics
B1 t1 php_basics
 
PHP Introduction
PHP IntroductionPHP Introduction
PHP Introduction
 
Php security
Php securityPhp security
Php security
 
Webloz2011
Webloz2011Webloz2011
Webloz2011
 
Защита при създаването на PHP-приложения
Защита при създаването на PHP-приложенияЗащита при създаването на PHP-приложения
Защита при създаването на PHP-приложения
 
B4 t4 include_files
B4 t4 include_filesB4 t4 include_files
B4 t4 include_files
 
B4 t4 include_files
B4 t4 include_filesB4 t4 include_files
B4 t4 include_files
 
B4 t4 include_files
B4 t4 include_filesB4 t4 include_files
B4 t4 include_files
 
езици за програмиране. Php
езици за програмиране. Phpезици за програмиране. Php
езици за програмиране. Php
 
Защита при създаване на PHP-приложения в интернет
Защита при създаване на PHP-приложения в интернетЗащита при създаване на PHP-приложения в интернет
Защита при създаване на PHP-приложения в интернет
 
500085 presentation
500085 presentation500085 presentation
500085 presentation
 
ИнтеRESTни уеб услуги
ИнтеRESTни уеб услугиИнтеRESTни уеб услуги
ИнтеRESTни уеб услуги
 
Web and WS based Embedded Systems
Web and WS based Embedded SystemsWeb and WS based Embedded Systems
Web and WS based Embedded Systems
 
6Plus4u Web Pro Edu DVD
6Plus4u Web Pro Edu DVD6Plus4u Web Pro Edu DVD
6Plus4u Web Pro Edu DVD
 
Защита при създаване на PHP-приложения в Интернет
Защита при създаване на PHP-приложения в ИнтернетЗащита при създаване на PHP-приложения в Интернет
Защита при създаване на PHP-приложения в Интернет
 
Drupal security lecture
Drupal security lectureDrupal security lecture
Drupal security lecture
 
Ускоряване на World Wide Wait
Ускоряване на World Wide WaitУскоряване на World Wide Wait
Ускоряване на World Wide Wait
 
Module1
Module1Module1
Module1
 
B6 t6 errors
B6 t6 errorsB6 t6 errors
B6 t6 errors
 

The better PHP API (BG)

  • 1. The better PHP API (По-доброто PHP API) От Васил Рангелов a.k.a. boen_robot
  • 2. Какво е това „API“?  В програмирането:  “Application Programming Interface” – Набор от операции и техните входове и изходи, с едно общо предназначение и достъпни за програмиста.  В MikroTik RouterOS:  Клиент/сървър протокол от слой 7(ала HTTP, FTP, SSH и т.н.)  Предназначен за машини, не за хора  Строг, структуриран с липсващи „човешки“ удобства  За да се избегнат обърквания, протокола ще се води като “RouterOS API”. 06.11.2014"The better PHP API" от Васил Рангелов 2
  • 3. За какво може да се използва?  Създаване на собствени интерфейси за управление  Интеграция на RouterOS с външни приложения, пр.  Billing системи  Приложения за самообслужване  Мониторинг инструменти  С една дума: Автоматизация. 06.11.2014"The better PHP API" от Васил Рангелов 3
  • 4. SSH vs. RouterOS API  И двете биха могли да се използват за автоматизация  SSH е предназначен за човешко ползване  „Козметични“ промени от една версия на RouterOS до друга могат да предизвикат проблеми с инструменти за автоматизация  Преименуване/премахване на команди/аргументи/свойства може да причини не само трудни за засичане грешки, но евентуално и щети  RouterOS API е предназначен за машинно ползване  Единствено промени по самият протокол биха могли да причинят затруднения  Лесни за засичане грешки и евентуално възстановяване без щети. 06.11.2014"The better PHP API" от Васил Рангелов 4
  • 5. Езици с RouterOS API клиенти за общо предназначение  PHP (3)  Java (2)  .NET (C# (3), VB.NET (1))  Python (2)  Node.js (1)  Perl (2)  Ruby (1)  Delphi (2)  C/C++ (4)  Erlang (1)  ActionScript (1) 06.11.2014"The better PHP API" от Васил Рангелов 5
  • 6. Сравнение на PHP RouterOS API клиенти 06.11.2014 6 Клиент API PHP class (Denis Basta) RouterOS PHP class (ayufan) API PHP package (boen_robot) Изисква PHP версия 5.2+ 5.2+ 5.3+ Суров протоколен В/И Да Не Да Улеснения с общо предназначение Един метод (comm()) Не Набор от класове CRUD и др. улеснения Не Да Да (1 клас) Асинхронни заявки Не Само с функции Да Скриптове Не Псевдо Да Постоянни връзки Не Не Да Емулация на команден ред Не Не Псевдо "The better PHP API" от Васил Рангелов
  • 7. Подготвяне на рутера за RouterOS API  За RouterOS по-стари от v6.0, протокола трябва да се включи с  /ip service enable api  Протокола е включен по подразбиране от RouterOS v6.0  RouterOS потребителят трябва да има “api” позволение  Началните потребителски групи го имат; внимавайте ако използвате собствени потребителски групи  Ако се използват „input“ и „output“ веригите на защитната стена, трябва да се позволят входящи връзки до TCP порт 8728, както и изходящи от TCP порт 8728. 06.11.2014"The better PHP API" от Васил Рангелов 7
  • 8. Подготвяне на клиентското устройство за RouterOS API  Инсталирайте всичко необходимо за създаване и изпълнение на програми на избраният език  За PHP, това значи да инсталирате самият PHP интерпретатор и евентуално да го закачите към web сървър Най-лесно с цялостни пакети като XAMPP: http://apachefriends.org/ За приложения с команден интерфейс, самият PHP от http://php.net/ е достатъчен  Позволете на съответните изпълними файлове (“php” и може би “httpd”) да правят изходящи връзки към TCP порт 8728  За Windows, отивате в защитната стена с Win+R, и изпълнявате “wf.msc”. 06.11.2014"The better PHP API" от Васил Рангелов 8
  • 9. Първо използване на PHP RouterOS пакетът (бърз начин)  Изтегляте PHAR файла от https://pear2.github.io/Net_RouterOS/  Създавате файл в “htdocs” в директорията на Apache, наречен пр. “rostest.php”, със следното съдържание: 06.11.2014"The better PHP API" от Васил Рангелов 9 <?php use PEAR2NetRouterOS; require_once 'PEAR2_Net_RouterOS-1.0.0b5.phar'; try { $client = new RouterOSClient('192.168.0.1', 'admin', 'password'); echo 'OK'; } catch (Exception $e) { die($e); }  До-настройте пътеката до “.phar” файла, IP-то и идентификационните данни на RouterOS  Отворете в web браузер http://localhost/rostest.php.
  • 10. Алтернативни методи на инсталация  Разархивиране на TGZ или ZIP файла от https://pear2.github.io/Net_RouterOS/  Включвате „src/PEAR2/Autoload.php”  Чрез Composer:  composer require pear2/net_routeros  Включвате „vendor/autoload.php”  Чрез PEAR:  pear channel-discover pear2.php.net  pear install -a pear2/PEAR2_Net_RouterOS-alpha  Включвате „PEAR2/Autoload.php”  Чрез Pyrus:  pyrus install PEAR2_Net_RouterOS-alpha  Включвате „PEAR2/Autoload.php“. 06.11.2014"The better PHP API" от Васил Рангелов 10
  • 11. Диагностика на проблеми (етап 1: среда)  Отваряте команден ред  В Windows, Win+R, и пишете “cmd”  Стартирате PHAR файла с PHP  Windows:  "D:пътдоphp.exe" "D:пътдоPEAR2_Net_RouterOS.phar“  UNIX:  "/път/до/php" "/път/до/PEAR2_Net_RouterOS.phar“  Оглеждате изхода за предупреждения и грешки  Забележка: За краткост, горното ще се съкрати на “php PEAR2_Net_RouterOS.phar” в следващите слайдове. 06.11.2014"The better PHP API" от Васил Рангелов 11
  • 12. Диагностика на проблеми (етап 2: връзка)  Стартирате PHAR файла с IP-то на рутера като аргумент  php PEAR2_Net_RouterOS.phar 192.168.0.1  Ако използвате различен порт за RouterOS API (пр. 443):  php PEAR2_Net_RouterOS.phar -p 443 192.168.0.1  Оглеждате изхода за грешки и възможни решения  Всичко е наред ако не виждате нищо и можете да пишете Въвеждате “/quit” (без кавичките), и натискате Enter два пъти за изход. 06.11.2014"The better PHP API" от Васил Рангелов 12
  • 13. Диагностика на проблеми (етап 3: логин)  Стартирате PHAR файла с потребителското име и парола за RouterOS в края, пр.  php PEAR2_Net_RouterOS.phar 192.168.0.1 "admin" "password"  Оглеждате изхода за грешки и възможни решения  Всичко е наред ако не виждате нищо и можете да пишете Въвеждате “/quit” (без кавичките), и натискате Enter два пъти за изход. 06.11.2014"The better PHP API" от Васил Рангелов 13
  • 14. Пример: Torch за 4 секунди 06.11.2014"The better PHP API" от Васил Рангелов 14 <?php use PEAR2NetRouterOS; require_once 'PEAR2_Net_RouterOS-1.0.0b5.phar'; $client = new RouterOSClient('192.168.0.1', 'admin', 'password'); header('Content-Type: text/plain'); $torchRequest = new RouterOSRequest('/tool torch duration=4'); $torchRequest->setArgument('interface', $_GET['nic']); foreach ($client->sendSync($torchRequest) as $response) { foreach ($response as $name => $value) { echo "{$name}: {$value}n"; } echo "====n"; }
  • 15. Пример: Извеждане на логът на RouterOS 06.11.2014"The better PHP API" от Васил Рангелов 15 <?php use PEAR2NetRouterOS; require_once 'PEAR2_Net_RouterOS-1.0.0b5.phar'; $client = new RouterOSClient('192.168.0.1', 'admin', 'password'); header('Content-Type: text/plain'); $util = new RouterOSUtil($client); foreach ($util->setMenu('/log')->getAll() as $item) { echo $item('time') . ' ' . $item('topics') . ' ' . $item('message') . "n"; }
  • 16. Пример: Изпълнение на скрипт с параметри 06.11.2014"The better PHP API" от Васил Рангелов 16 <?php use PEAR2NetRouterOS; require_once 'PEAR2_Net_RouterOS-1.0.0b5.phar'; $client = new RouterOSClient('192.168.0.1', 'admin', 'password'); header('Content-Type: text/plain'); $util = new RouterOSUtil($client); $util->exec(' /ip dhcp-client lease make-static [find address=$address] comment [find address=$address] $name /log info "User $name now has the static IP $address" ', array( 'name' => $_GET['user'], 'address' => $_GET['ip'] ) );
  • 17. Поддръжка  Документация и още примери  GitHub wiki: https://github.com/pear2/Net_RouterOS/wiki  MikroTik wiki: http://wiki.mikrotik.com/wiki/API_PHP_package  За въпроси  MikroTik форум (на английски): http://forum.mikrotik.com/  Бъгове и предложения за клиента  GitHub: https://github.com/pear2/Net_RouterOS/issues  Бъгове и предложения за протокола  MikroTik поддръжка (на английски): support@mikrotik.com. 06.11.2014"The better PHP API" от Васил Рангелов 17
  • 18. Често задавани въпроси (технически)  Може ли API приложение да работи директно от рутера?  Не.  Мога ли да логвам hotspot потребители с API протокола?  Не. Не с API протокола, не с SSH, не дори чрез Winbox.  Hotspot потребители могат да се логват ЕДИНСТВЕНО когато ТЕХНИТЕ устройства направят HTTP(S) заявка до рутера с техните потребителско име и парола  Ако рутера ми е скрит зад NAT?  Решенията са като за при всеки друг TCP протокол.  VPN?  Ами криптиране?  API протоколът има TLS криптиран вариант на порт 8729  PEAR_Net_RouterOS го поддържа, но заради проблеми в PHP, за сега такива връзки са много нестабилни. 06.11.2014"The better PHP API" от Васил Рангелов 18
  • 19. Често задавани въпроси (социални)  Защо още един PHP клиент?  Другите PHP клиенти не ми харесват  Както и доста не-PHP клиенти, но по-добре нещо от колкото нищо, та…  Протоколът е лесен за реализация от бакалаври по Информатика като мен, та в крайна сметка „защо не?“  Защо PEAR(2)?  PEAR не е framework, ами колекция пакети, следващи общ кодов стандарт  Нещо като „печат за качество“, макар вече не толкова широко приет  Защо текущата версия е beta?  За PEAR2, „beta“ НЕ значи „възможни внезапни грешки“  Означава „възможни несъвместими промени в следващата версия; Прегледайте внимателно списъкът с промените при актуализации“  Подобно на това как Gmail дълго време беше beta. 06.11.2014"The better PHP API" от Васил Рангелов 19
  • 20. Благодаря за вниманието 06.11.2014"The better PHP API" от Васил Рангелов 20 Въпроси