Содержание

XML

<?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

<?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);
 
}
 
?>

SQL

 

HTML

{mac_registration}

 
/home/u18456/wiki.flintnet.ru/www/data/pages/joomla_plugin/mac_registration.txt · Последние изменения: 2011/11/14 12:06 От kayfolom
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki