==== XML ==== Регистрация MAC адреса Kayfolom ekorepov@ukhta-inform.ru authorUrl 2011 c license 1.0 Регистрация MAC адреса mac_registration.php ==== PHP ==== 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 = '
Ваш компьютер уже зарегистрирован. Дополнительные действия не требуются.'; $row->text = preg_replace('/{mac_registration}/', $mac_registration_html, $row->text); return; } $mac_registration_html = '
'; // Форма начало ************************************ if (isset($uri->_vars['action'])) unset($uri->_vars['action']); if (isset($uri->_vars['action_accept'])) unset($uri->_vars['action_accept']); $form_body = "
".$registration_notice."

".'
'; $form_body = $form_body.''; $form_body = $form_body.'Я понимаю и принимаю условия регистрации компьютера'; $form_body = $form_body.'

'; $form_body = $form_body.'
'; $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 = "
Компьютер уже зарегистрирован, перезагрузите компьютер для вступления изменений в силу."; } 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 = "
Регистрация завершена. Обязательно перезагрузите компьютер для вступления изменений в силу."; } } // Обработка POST конец $row->text = preg_replace('/{mac_registration}/', $mac_registration_html, $row->text); } ?>
==== SQL ==== ==== HTML ==== {mac_registration}