<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE install SYSTEM "http://dev.joomla.org/xml/1.5/plugin-install.dtd"> <install version="1.5" type="plugin" group="content"> <name>Регистрация MAC адреса</name> <author>Kayfolom</author> <authorEmail>ekorepov@ukhta-inform.ru</authorEmail> <authorUrl>authorUrl</authorUrl> <creationDate>2011</creationDate> <copyright>c</copyright> <license>license</license> <version>1.0</version> <description>Регистрация MAC адреса</description> <files> <filename plugin="mac_registration">mac_registration.php</filename> </files> <params /> </install>
<?php defined( '_JEXEC' ) or die( 'Restricted access' ); @ini_set("display_errors", "1"); error_reporting(E_ALL); //@ini_set("display_errors", "0"); //error_reporting(E_ALL); require_once("./urfa/URFAClient.php"); jimport( 'joomla.plugin.plugin' ); $mainframe->registerEvent( 'onPrepareContent', 'plgMAC_Registration_UTM' ); function plgMAC_Registration_UTM(&$row, &$params, $page=0){ $pos = strpos($row->text, '{mac_registration}'); if ($pos===false) return; include ("./urfa/URFAConfig.php"); $ip_temp_wildcart = '10.0.15.'; // маска пула адресов выдаваемого dhcp не зарегистрированному оборудованию $grey_ip_wildcart = '10.0.'; $id_once_service_registration = 217; $registration_notice = "Стоимость услуги 30 рублей. Сумма спишется с лицевого счета автоматически."; $mac_registration_html = ''; // $row->text = preg_replace('/{mac_registration}/', '', $row->text); function resolve_mac_for_ip($ip){ $found_mac = NULL; $f_in = fopen("/proc/net/arp","r"); if ($f_in != NULL){ fgets($f_in); while (!feof($f_in)){ $t = fgets($f_in); if ($t != NULL){ $str_split = preg_split ("/[\s]+/", $t); if ($str_split[0]==$ip) { $found_mac = $str_split[3]; break; }; }; }; fclose($f_in); }; $found_mac = strtolower($found_mac); return $found_mac; }; $ip_current = $_SERVER["REMOTE_ADDR"]; $pos = strpos($ip_current, $ip_temp_wildcart); if ($pos===false) { $mac_registration_html = '<BR>Ваш компьютер уже зарегистрирован. Дополнительные действия не требуются.'; $row->text = preg_replace('/{mac_registration}/', $mac_registration_html, $row->text); return; } $mac_registration_html = '<BR>'; // Форма начало ************************************ if (isset($uri->_vars['action'])) unset($uri->_vars['action']); if (isset($uri->_vars['action_accept'])) unset($uri->_vars['action_accept']); $form_body = "<BR>".$registration_notice."<BR><BR>".'<FORM METHOD="POST">'; $form_body = $form_body.'<input name="action" type="hidden" value="register">'; $form_body = $form_body.'<input name="action_accept" type="checkbox" value="accepted">Я понимаю и принимаю условия регистрации компьютера</input>'; $form_body = $form_body.'<BR><BR><input type="submit" value="Зарегистрировать компьютер">'; $form_body = $form_body.'</FORM>'; $mac_registration_html = $form_body; // Форма конец ************************************ // Обработка POST начало $action = JRequest::getVar('action'); $action_accept = JRequest::getVar('action_accept'); if (isset($action) && isset($action_accept)) { $mac_registration_html = ''; try { $urfa_admin = new URFAClient_Admin($UTMCore_Login, $UTMCore_Password); } catch (Exception $exception) { echo "Error in line ", $exception->getLine(); echo $exception->getMessage(); } $mac_new = resolve_mac_for_ip($_SERVER['REMOTE_ADDR']); $service_new['user_id'] = $_SESSION['URFA']['user_id']; $service_new['account_id'] = $_SESSION['URFA']['basic_account']; // Выясняем id сервисной связки // echo $service_new['account_id']; $services = $urfa_admin->rpcf_get_all_services_for_user($service_new['account_id']); foreach ($services['services'] as $key => $value) { if ($services['services'][$key]['type']==3) { $slink_id = $services['services'][$key]['slink_id']; $service_new['service_id'] = $services['services'][$key]['id']; $service_new['service_type'] = $services['services'][$key]['type']; $service_new['slink_id'] = $services['services'][$key]['slink_id']; } } // получаем список сервисов и список связок ip&mac в том числе $services_tariff = $urfa_admin->rpcf_get_iptraffic_service_link($slink_id); // { //0x2702 // Получаем первый ip вида 10.0.* ($grey_ip_mask) $service_new['tariff_link_id'] = $services_tariff['tariff_link_id']; $service_new['discount_period_id'] = $services_tariff['discount_period_id']; $service_new['ip_groups_count'] = 1; foreach ($services_tariff['ip_groups'] as $key => $value) { $pos = strpos($services_tariff['ip_groups'][$key]['ip'], $grey_ip_wildcart); if ($pos!==false) { // echo "Адрес найден !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n"; $service_new['ip_groups'][0]['ip_address'] = $services_tariff['ip_groups'][$key]['ip']; $service_new['ip_groups'][0]['mask'] = $services_tariff['ip_groups'][$key]['mask']; $service_new['ip_groups'][0]['mac'] = $services_tariff['ip_groups'][$key]['mac']; $service_new['ip_groups'][0]['iptraffic_login'] = $services_tariff['ip_groups'][$key]['login']; $service_new['ip_groups'][0]['iptraffic_allowed_cid'] = $services_tariff['ip_groups'][$key]['allowed_cid']; $service_new['ip_groups'][0]['iptraffic_password'] = $services_tariff['ip_groups'][$key]['password']; $service_new['ip_groups'][0]['ip_not_vpn'] = $services_tariff['ip_groups'][$key]['not_vpn']; $service_new['ip_groups'][0]['dont_use_fw'] = $services_tariff['ip_groups'][$key]['dont_use_fw']; $service_new['ip_groups'][0]['router_id'] = $services_tariff['ip_groups'][$key]['router_id']; // print_r($service_new); break; } } if ($mac_new==$service_new['ip_groups'][0]['mac']) { $mac_registration_html = "<BR>Компьютер уже зарегистрирован, перезагрузите компьютер для вступления изменений в силу."; } else { $service_new['ip_groups'][0]['mac'] = $mac_new; $report = $urfa_admin->rpcf_delete_from_ipgroup($service_new['slink_id'],$service_new['ip_groups'][0]['ip_address'],$service_new['ip_groups'][0]['mask']); //{ //0x5101 $report = $urfa_admin->rpcf_add_service_to_user($service_new); // { //0x2551 $urfa_admin->rpcf_add_once_service_to_user($service_new['user_id'],$service_new['account_id'],$id_once_service_registration,0,0,time(),1,0); //0x2555 $mac_registration_html = "<BR>Регистрация завершена. Обязательно перезагрузите компьютер для вступления изменений в силу."; } } // Обработка POST конец $row->text = preg_replace('/{mac_registration}/', $mac_registration_html, $row->text); } ?>
{mac_registration}