{"payload":{"allShortcutsEnabled":false,"fileTree":{"":{"items":[{"name":".github","path":".github","contentType":"directory"},{"name":"RouterOS","path":"RouterOS","contentType":"directory"},{"name":"images","path":"images","contentType":"directory"},{"name":"locales","path":"locales","contentType":"directory"},{"name":"templates","path":"templates","contentType":"directory"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":".travis.yml","path":".travis.yml","contentType":"file"},{"name":"CHANGELOG.md","path":"CHANGELOG.md","contentType":"file"},{"name":"INFO","path":"INFO","contentType":"file"},{"name":"LICENSE","path":"LICENSE","contentType":"file"},{"name":"MIKROTIK-MIB.txt","path":"MIKROTIK-MIB.txt","contentType":"file"},{"name":"README.md","path":"README.md","contentType":"file"},{"name":"index.php","path":"index.php","contentType":"file"},{"name":"mikrotik.php","path":"mikrotik.php","contentType":"file"},{"name":"mikrotik_users.php","path":"mikrotik_users.php","contentType":"file"},{"name":"poller_graphs.php","path":"poller_graphs.php","contentType":"file"},{"name":"poller_mikrotik.php","path":"poller_mikrotik.php","contentType":"file"},{"name":"setup.php","path":"setup.php","contentType":"file"}],"totalCount":18}},"fileTreeProcessingTime":2.357446,"foldersToFetch":[],"repo":{"id":40453926,"defaultBranch":"develop","name":"plugin_mikrotik","ownerLogin":"Cacti","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2015-08-09T23:21:04.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/5142645?v=4","public":true,"private":false,"isOrgOwned":true},"symbolsExpanded":false,"treeExpanded":true,"refInfo":{"name":"develop","listCacheKey":"v0:1675036490.394391","canEdit":false,"refType":"branch","currentOid":"3149b44dd3cc2b595e59384b22134c0acffe6c50"},"path":"mikrotik.php","currentUser":null,"blob":{"rawLines":[" __('Present', 'mikrotik'),","\t1 => __('Unknown', 'mikrotik'),","\t2 => __('Running', 'mikrotik'),","\t3 => __('Warning', 'mikrotik'),","\t4 => __('Testing', 'mikrotik'),","\t5 => __('Down', 'mikrotik')",");","","switch(get_request_var('action')) {","case 'devices':","\tmikrotik_devices();","\tbreak;","case 'trees':","\tmikrotik_trees();","\tbreak;","case 'queues':","\tmikrotik_queues();","\tbreak;","case 'interfaces':","\tmikrotik_interfaces();","\tbreak;","case 'dhcp':","\tmikrotik_dhcp();","\tbreak;","case 'dns':","\tmikrotik_dns(false);","\tbreak;","case 'dnsexport':","\tmikrotik_dns(true);","\tbreak;","case 'list':","\tmikrotik_list(false);","\tbreak;","case 'listexport':","\tmikrotik_list(true);","\tbreak;","case 'wireless_aps':","\tmikrotik_wireless_aps();","\tbreak;","case 'wireless_regs':","\tmikrotik_wireless_regs();","\tbreak;","case 'users':","\tmikrotik_users();","\tbreak;","case 'graphs':","\tmikrotik_view_graphs();","\tbreak;","}","","if (strpos(get_request_var('action'), 'export') === false) {","\tbottom_footer();","}","","function mikrotik_get_network($mask) {","\t$octets = explode('.', $mask);","\t$output = '';","\tif (cacti_sizeof($octets)) {","\t\tforeach($octets as $octet) {","\t\t\t$output .= decbin($octet);","\t\t}","","\t\treturn strlen(trim($output, '0'));","\t}","","\treturn '0';","}","","function mikrotik_users_exist() {","\treturn db_fetch_cell(\"SELECT COUNT(*) FROM plugin_mikrotik_users\");","}","","function mikrotik_queues_exist() {","\treturn db_fetch_cell(\"SELECT COUNT(*) FROM plugin_mikrotik_queues\");","}","","function mikrotik_queue_trees_exist() {","\treturn db_fetch_cell(\"SELECT COUNT(*) FROM plugin_mikrotik_trees\");","}","","function mikrotik_interfaces_exist() {","\treturn db_fetch_cell(\"SELECT COUNT(*) FROM plugin_mikrotik_interfaces\");","}","","function mikrotik_lists_exist() {","\treturn db_fetch_cell(\"SELECT COUNT(*) FROM plugin_mikrotik_lists\");","}","","function mikrotik_dns_exist() {","\treturn db_fetch_cell(\"SELECT COUNT(*) FROM plugin_mikrotik_dns\");","}","","function mikrotik_dhcp_exist() {","\treturn db_fetch_cell(\"SELECT COUNT(*) FROM plugin_mikrotik_dhcp\");","}","","function mikrotik_wireless_aps_exist() {","\treturn db_fetch_cell(\"SELECT COUNT(*) FROM plugin_mikrotik_wireless_aps\");","}","","function mikrotik_wregs_exist() {","\treturn db_fetch_cell(\"SELECT COUNT(*) FROM plugin_mikrotik_wireless_registrations\");","}","","function mikrotik_tabs() {","\tglobal $config;","","\t/* present a tabbed interface */","\t$tabs['devices'] = __('Devices', 'mikrotik');","","\tif (mikrotik_users_exist()) {","\t\t$tabs['users'] = __('Users', 'mikrotik');","\t}","","\tif (mikrotik_queues_exist()) {","\t\t$tabs['queues'] = __('Queues', 'mikrotik');","\t}","","\tif (mikrotik_queue_trees_exist()) {","\t\t$tabs['trees'] = __('Queue Trees', 'mikrotik');","\t}","","\tif (mikrotik_interfaces_exist()) {","\t\t$tabs['interfaces'] = __('Interfaces', 'mikrotik');","\t}","","\tif (mikrotik_dhcp_exist()) {","\t\t$tabs['dhcp'] = __('DHCP', 'mikrotik');","\t}","","\tif (mikrotik_dns_exist()) {","\t\t$tabs['dns'] = __('DNS Cache', 'mikrotik');","\t}","","\tif (mikrotik_lists_exist()) {","\t\t$tabs['list'] = __('Address Lists', 'mikrotik');","\t}","","\tif (mikrotik_wireless_aps_exist()) {","\t\t$tabs['wireless_aps'] = __('Wireless Aps', 'mikrotik');","\t}","","\tif (mikrotik_wregs_exist()) {","\t\t$tabs['wireless_regs'] = __('Wireless Registrations', 'mikrotik');","\t}","","\t$tabs['graphs'] = __('Graphs', 'mikrotik');","","\t/* set the default tab */","\t$current_tab = get_request_var('action');","","\tprint \"
\\n\";","}","","function mikrotik_interfaces() {","\tglobal $config, $item_rows, $interface_hashes;",""," /* ================= input validation and session storage ================= */"," $filters = array(","\t\t'rows' => array(","\t\t\t'filter' => FILTER_VALIDATE_INT,","\t\t\t'pageset' => true,","\t\t\t'default' => read_config_option('num_rows_table')","\t\t\t),","\t\t'page' => array(","\t\t\t'filter' => FILTER_VALIDATE_INT,","\t\t\t'default' => '1'","\t\t\t),","\t\t'device' => array(","\t\t\t'filter' => FILTER_VALIDATE_INT,","\t\t\t'pageset' => true,","\t\t\t'default' => '-1',","\t\t\t),","\t\t'active' => array(","\t\t\t'filter' => FILTER_CALLBACK,","\t\t\t'pageset' => true,","\t\t\t'default' => 'true',","\t\t\t'options' => array('options' => 'sanitize_search_string')","\t\t\t),","\t\t'sincereset' => array(","\t\t\t'filter' => FILTER_CALLBACK,","\t\t\t'pageset' => true,","\t\t\t'default' => '',","\t\t\t'options' => array('options' => 'sanitize_search_string')","\t\t\t),","\t\t'filter' => array(","\t\t\t'filter' => FILTER_CALLBACK,","\t\t\t'pageset' => true,","\t\t\t'default' => '',","\t\t\t'options' => array('options' => 'sanitize_search_string')","\t\t\t),","\t\t'sort_column' => array(","\t\t\t'filter' => FILTER_CALLBACK,","\t\t\t'default' => 'name',","\t\t\t'options' => array('options' => 'sanitize_search_string')","\t\t\t),","\t\t'sort_direction' => array(","\t\t\t'filter' => FILTER_CALLBACK,","\t\t\t'default' => 'ASC',","\t\t\t'options' => array('options' => 'sanitize_search_string')","\t\t\t)","\t);","","\tvalidate_store_request_vars($filters, 'sess_mti');","\t/* ================= input validation ================= */","","\t?>","\t","\t","\t ","\t0 or TxBytes>0)';","\t\t}","","\t\t$pref = '';","","\t\tif (strpos($sort_column, 'cur') !== false) {","\t\t\t$sort_column = str_replace('cur', '', $sort_column);","\t\t}","\t} else {","\t\tif (get_request_var('active') == 'true') {","\t\t\t$sql_where .= (strlen($sql_where) ? ' AND':'WHERE') . ' (curRxBytes>0 or curTxBytes>0)';","\t\t}","","\t\t$pref = 'cur';","","\t\tif (strpos($sort_column, 'cur') === false) {","\t\t\tswitch($sort_column) {","\t\t\tcase 'description':","\t\t\tcase 'name':","\t\t\tcase 'last_seen':","\t\t\tcase 'RxErrors':","\t\t\tcase 'RxErrors':","\t\t\t\tbreak;","\t\t\tdefault:","\t\t\t\t$sort_column = $pref . $sort_column;","\t\t\t}","\t\t}","\t}","","\t$sql_order = get_order_string();","\t$sql_limit = ' LIMIT ' . ($rows*(get_request_var('page')-1)) . ', ' . $rows;","","\t$sql = \"SELECT mti.*, h.hostname, h.description, h.disabled,","\t\t(${pref}RxTooShort+${pref}RxTooLong+${pref}RxFCFSError+${pref}RxAlignError+${pref}RxFragment+${pref}RxOverflow+${pref}RxUnknownOp+${pref}RxLengthError+${pref}RxCodeError+${pref}RxCarrierError+${pref}RxJabber+${pref}RxDrop) AS RxErrors,","\t\t(${pref}TxTooShort+${pref}TxTooLong+${pref}TxUnderrun+${pref}TxCollision+${pref}TxExCollision+${pref}TxMultCollision+${pref}TxSingCollision+${pref}TxLateCollision+${pref}TxDrop+${pref}TxJabber+${pref}TxFCFSError) AS TxErrors","\t\tFROM plugin_mikrotik_interfaces AS mti","\t\tINNER JOIN host AS h","\t\tON h.id=mti.host_id","\t\tINNER JOIN plugin_mikrotik_system AS hrs","\t\tON hrs.host_id=h.id","\t\t$sql_where","\t\t$sql_order","\t\t$sql_limit\";","","\t$data_rows = db_fetch_assoc($sql);","\t$total_rows = db_fetch_cell(\"SELECT COUNT(*)","\t\tFROM plugin_mikrotik_interfaces AS mti","\t\tINNER JOIN host AS h","\t\tON h.id=mti.host_id","\t\tINNER JOIN plugin_mikrotik_system AS hrs","\t\tON hrs.host_id=h.id","\t\t$sql_where\");","","\t$display_text = array(","\t\t'nosort' => array('display' => __('Actions', 'mikrotik'), 'sort' => '', 'align' => 'left'),","\t\t'description' => array('display' => __('Hostname', 'mikrotik'), 'sort' => 'ASC', 'align' => 'left'),","\t\t'name' => array('display' => __('Name', 'mikrotik'), 'sort' => 'DESC', 'align' => 'left'),","\t\t$pref . 'RxBytes' => array('display' => __('Rx Bytes', 'mikrotik'), 'sort' => 'DESC', 'align' => 'right'),","\t\t$pref . 'TxBytes' => array('display' => __('Tx Bytes', 'mikrotik'), 'sort' => 'DESC', 'align' => 'right'),","\t\t$pref . 'RxPackets' => array('display' => __('Rx Packets', 'mikrotik'), 'sort' => 'DESC', 'align' => 'right'),","\t\t$pref . 'TxPackets' => array('display' => __('Tx Packets', 'mikrotik'), 'sort' => 'DESC', 'align' => 'right'),","\t\t'RxErrors' => array('display' => __('Rx Errors', 'mikrotik'), 'sort' => 'DESC', 'align' => 'right'),","\t\t'TxErrors' => array('display' => __('Tx Errors', 'mikrotik'), 'sort' => 'DESC', 'align' => 'right'),","\t\t'last_seen' => array('display' => __('Last Seen', 'mikrotik'), 'sort' => 'ASC', 'align' => 'right')","\t);","","\t$nav = html_nav_bar('mikrotik.php?action=interfaces', MAX_DISPLAY_PAGES, get_request_var('page'), $rows, $total_rows, cacti_sizeof($display_text), __('Interfaces', 'mikrotik'), 'page', 'main');","","\tprint $nav;","","\thtml_start_box('', '100%', '', '3', 'center', '');","","\thtml_header_sort($display_text, $sort_column, get_request_var('sort_direction'), false, 'mikrotik.php?action=interfaces');","","\tif (cacti_sizeof($data_rows)) {","\t\tforeach ($data_rows as $row) {","\t\t\tform_alternate_row();","","\t\t\t$graphs = mikrotik_graphs_url_by_template_hashs($interface_hashes, $row['host_id'], $row['name']);","","\t\t\tif (api_plugin_user_realm_auth('host.php')) {","\t\t\t\t$host_url = filter_value($row['description'], get_request_var('filter'), $config['url_path'] . 'host.php?action=edit&id=' . $row['host_id'], __('Edit Device', 'microtik'));","\t\t\t} else {","\t\t\t\t$host_url = $row['description'];","\t\t\t}","","\t\t\tprint \"