Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 953

Přidáno uživatelem Michal Kliment před více než 13 roky(ů)

Dalsi sada zmen ve vetvi prirazeni podsiti k clenum.

Zobrazit rozdíly:

freenetis/branches/subnets_assigning/media/css/style.css
.help {
cursor: help;
}
.red {
color: red;
}
freenetis/branches/subnets_assigning/application/i18n/cs_CZ/texts.php
'address point has been successfully deleted' => 'Adresní bod byl úspěšně smazán.',
'address point has been successfully updated' => 'Adresní bod byl úspěšně aktualizován.',
'address points' => 'Adresní body',
'address ranges' => 'Adresní rozsahy',
'additional contacts have been successfully updated' => 'Další kontakty úspěšně uloženy',
'administrate additional contacts' => 'Přidávání/editace dalších kontaktních informací',
'administration' => 'Administrace',
......
'item number' => 'Položka č.',
'item separator' => 'Oddělovač položek',
'item(s) have been successfully added' => 'položka(ek) bylo úspěšně přidáno',
'is not in system' => 'Není v systému',
'is not telephonists' => 'Není telefonista',
'is missing from' => 'chybí z',
'january' => 'Leden',
......
'netmask' => 'Maska',
'network address' => 'Síťová adresa',
'network address does not match the mask' => 'Síťová adresa neodpovídá zadané masce.',
'network settings' => 'Nastavení sítě',
'networks' => 'Síť',
'never' => 'Nikdy',
'never redirect' => 'Nikdy nepřesměrovat',
freenetis/branches/subnets_assigning/application/helpers/network.php
class network_Core {
/**
* Convert netmask in classic format (eg. 255.255.255.0] in CIDR format (/24)
* Converts netmask in classic format (eg. 255.255.255.0) to CIDR format (/24)
* @author Michal Kliment
* @param string
* @return string
*/
public static function netmask2cidr($netmask)
{
return 32 - log(~ip2long($netmask) + 1, 2);
return 32 - log((~ip2long($netmask) & 0xffffffff) + 1, 2);
}
/**
* Converts netmask in CIDR format (eg. /24) to classic format (255.255.255.0)
*
* @author Michal Kliment
* @param string $cidr
* @return string
*/
public static function cidr2netmask ($cidr)
{
return long2ip(~(pow(2,32 - $cidr)-1) & 0xffffffff);
}
/**
* Formats size
*
* @author Michal Kliment
......
return ($size) ? $size.' '.$unit : '0 '.$unit;
}
/**
* Checks whether ip address belongs to default address ranges
*
* @author Michal Kliment
* @param string $ip_address
* @return boolean
*/
public static function ip_address_in_ranges ($ip_address)
{
// default address range is not set, return true
if (($ranges = Settings::get('address_ranges')) == '')
return true;
// transform ip to long
$ip_address = ip2long($ip_address);
// transform string to array
$ranges = explode(',',$ranges);
foreach ($ranges as $range_address)
{
// address contains / => it's in CIDR format
if (strpos($range_address, '/') !== FALSE)
// split address and mask
list ($range_address, $range_mask) = explode('/', $range_address);
// address is without / => it's single address
else
$range_mask = 32;
$net = ip2long($range_address);
$mask = ip2long(network::cidr2netmask($range_mask));
// success
if (($ip_address & $mask) == $net)
return true;
}
return false;;
}
}
freenetis/branches/subnets_assigning/application/helpers/valid.php
return preg_match ("/^\/([^\/]+\/)*$/", $str);
}
/**
* Checks whether a string is valid network address range (in format eg. 10.0.0.0/8)
*
* @author MIchal Kliment
* @param string $str
* @return boolean
*/
public static function address_ranges ($str)
{
if (!preg_match("/^((25[0-5])|(2[0-4][0-9])|(1[0-9][0-9])|([1-9][0-9])|[0-9])\.((25[0-5])|(2[0-4][0-9])|(1[0-9][0-9])|([1-9][0-9])|[0-9])\.((25[0-5])|(2[0-4][0-9])|(1[0-9][0-9])|([1-9][0-9])|[0-9])\.((25[0-5])|(2[0-4][0-9])|(1[0-9][0-9])|([1-9][0-9])|[0-9])(\/([0-9]|([1-2][0-9])|(3[0-2])))?(,((25[0-5])|(2[0-4][0-9])|(1[0-9][0-9])|([1-9][0-9])|[0-9])\.((25[0-5])|(2[0-4][0-9])|(1[0-9][0-9])|([1-9][0-9])|[0-9])\.((25[0-5])|(2[0-4][0-9])|(1[0-9][0-9])|([1-9][0-9])|[0-9])\.((25[0-5])|(2[0-4][0-9])|(1[0-9][0-9])|([1-9][0-9])|[0-9])(\/([0-9]|([1-2][0-9])|(3[0-2])))?)*$/",$str,$matches))
return false;
else
{
$ranges = explode (',', $str);
foreach ($ranges as $address)
{
if (strpos($address, '/') !== FALSE)
{
list ($address, $mask) = explode ('/',$address);
if ((ip2long($address) & ip2long(network::cidr2netmask ($mask))) != ip2long($address))
return false;
}
}
return true;
}
}
} // End valid
freenetis/branches/subnets_assigning/application/helpers/callback.php
* @param unknown_type $item
* @param unknown_type $name
*/
static function member_field($item, $name)
static function member_field($item, $name, $args = array())
{
if ($item->member_id)
echo html::anchor(url_lang::base()."members/show/$item->member_id", $item->member_name);
elseif (isset($args[0]))
echo $args[0];
else
echo '&nbsp';
}
......
)
);
}
/**
* Callback function to print traffic field in ulogd
*
*@author Michal Kliment
* @param <type> $item
* @param <type> $name
*/
public static function ulogd_traffic_field($item, $name)
{
echo "<span";
if (!$item->member_id && network::ip_address_in_ranges($item->ip_address)) echo " class='red'";
echo ">";
self::traffic_field($item, $name);
echo "</span>";
}
/**
* Callback function to print order number field in ulogd
*
* @author Michal Kliment
* @param <type> $item
* @param <type> $name
* @param <type> $args
*/
public static function ulogd_order_number_field($item, $name, $args = array())
{
echo "<span";
if (!$item->member_id && network::ip_address_in_ranges($item->ip_address)) echo " class='red'";
echo ">";
self::order_number_field($item, $name, $args);
echo "</span>";
}
/**
* Callback function to print ip address field in ulogd
*
* @author Michal Kliment
* @param <type> $item
* @param <type> $name
*/
public static function ulogd_ip_address_field($item, $name)
{
echo "<span";
if (!$item->member_id && network::ip_address_in_ranges($item->ip_address)) echo " class='red'";
echo ">";
echo $item->ip_address;
echo "</span>";
}
/**
* Callback function to print member field in ulogd
*
* @author Michal Kliment
* @param <type> $item
* @param <type> $name
* @param <type> $args
*/
public static function ulogd_member_field($item, $name, $args = array())
{
echo "<span";
if (!$item->member_id && network::ip_address_in_ranges($item->ip_address)) echo " class='red'";
echo ">";
self::member_field($item, $name, $args);
echo "</span>";
}
}
freenetis/branches/subnets_assigning/application/controllers/subnets.php
function valid_netip($input) {
$netip=ip2long($input->value);
$mask=ip2long($_POST['netmask']);
// default network adress ranges are set
if (($ranges = Settings::get('address_ranges')) != '')
{
$net_start = ip2long($input->value);
$net_end = $net_start + (~ip2long($this->input->post('netmask')) & 0xffffffff)+1;
// transform string to array
$ranges = explode(',',$ranges);
$matches = 0;
foreach ($ranges as $range_address)
{
// address contains / => it's in CIDR format
if (strpos($range_address, '/') !== FALSE)
// split address and mask
list ($range_address, $range_mask) = explode('/', $range_address);
// address is without / => it's single address
else
$range_mask = 32;
$range_start = ip2long($range_address);
$range_end = $range_start + (~ip2long(network::cidr2netmask($range_mask)) & 0xffffffff)+1;
// match
if ($net_start >= $range_start && $net_end <= $range_end)
$matches++;
}
// no matches - error!
if (!$matches)
$input->add_error('required', url_lang::lang('texts.Network address does not match any address ranges.'));
}
if ($netip==0)
$input->add_error('required', url_lang::lang('texts.Invalid network address.'));
freenetis/branches/subnets_assigning/application/controllers/scheduler.php
// update ulogd
self::update_ulogd();
// update allowed subnets
self::update_allowed_subnets();
}
/**
......
Settings::set('ulogd_update_last', time());
}
}
/**
* Updates allowed subnets
*
* @author Michal Kliment
*/
function update_allowed_subnets ()
{
// it's time to update
if (Settings::get('allowed_subnets_enabled') && Settings::get('allowed_subnets_update_last') + Settings::get('allowed_subnets_update_interval') < time())
{
$ip_addresses_model = new Ip_address_Model();
// updates allowed ips
$ip_addresses_model->update_allowed_ips();
$subnets_owner_model = new Subnets_owner_Model();
// updates allowed subnets
$subnets_owner_model->update_allowed_subnets();
// updates variable
Settings::set('allowed_subnets_update_last', time());
}
}
}
freenetis/branches/subnets_assigning/application/controllers/members.php
// saving account
$account->member_id = $member->id;
$account->save_throwable();
// save allowed subnets count of member
$allowed_subnets_count = new Allowed_subnets_count_Model();
$allowed_subnets_count->member_id = $member->id;
$allowed_subnets_count->count = Settings::get('allowed_subnets_default_count');
$allowed_subnets_count->save();
// insert regular member access rights
Controller::insert_phpgacl($user->id,$user->surname.' '.$user->name,$user->login, $form_data['type']);
unset($form_data);
......
if ($this->acl_check_edit(get_class($this),'debit',$member->id))
$member->debt_payment_rate = $form_data['debt_payment_rate'];
if (isset($form_data['allowed_subnets_count']))
{
// posted value is not null
if ($form_data['allowed_subnets_count'])
{
// count of allowed subnets is not set
if ($member->allowed_subnets_count->id == 0)
{
$allowed_subnets_count = new Allowed_subnets_count_Model();
$allowed_subnets_count->member_id = $member->id;
$allowed_subnets_count->count = $form_data['allowed_subnets_count'];
$allowed_subnets_count->save();
}
// count of allowed subnets is already set
else
{
$member->allowed_subnets_count->count = $form_data['allowed_subnets_count'];
$member->allowed_subnets_count->save();
}
}
// delete null count
elseif ($member->allowed_subnets_count)
$member->allowed_subnets_count->delete();
Allowed_subnets_Controller::update_enabled ($member->id);
}
$member_saved = $member->save();
freenetis/branches/subnets_assigning/application/controllers/settings.php
$this->form->radio('clean_urls')->label(url_lang::lang('texts.Clean URLs').':')->options(array('1'=>url_lang::lang('texts.Yes'),'0'=>url_lang::lang('texts.No')))->default(!$this->settings->get('index_page'))->help(url_lang::lang('texts.URL addresses without index.php.'));
$this->form->group('')->label(url_lang::lang('texts.Network settings'));
$this->form->input('address_ranges')->label(url_lang::lang('texts.Address ranges').':')->rules('valid_address_ranges')->value(Settings::get('address_ranges'));
// load .htaccess sample file
$htaccessFile = file('.htaccess-sample');
foreach ($htaccessFile as $line_num => $line)
freenetis/branches/subnets_assigning/application/controllers/ulogd.php
// direction for order number field
$direction = ($order_by_direction == 'DESC') ? 1 : -1;
$grid->order_callback_field(Settings::get('ulogd_active_type'))->label(url_lang::lang('texts.Order'))->callback('callback::order_number_field',$first_number,$direction)->help(help::hint('ulogd_order'))->class('right');
$grid->field('ip_address')->label(url_lang::lang('texts.Ip address'))->class('right')->order(FALSE);
$grid->order_callback_field('upload')->label(url_lang::lang('texts.Upload'))->callback('callback::traffic_field')->class('right');
$grid->order_callback_field('download')->label(url_lang::lang('texts.Download'))->callback('callback::traffic_field')->class('right');
$grid->order_callback_field('total')->label(url_lang::lang('texts.Total'))->callback('callback::traffic_field')->class('right');
$grid->order_callback_field('member_id')->label(url_lang::lang('texts.Member'))->callback('callback::member_field');
$grid->order_callback_field(Settings::get('ulogd_active_type'))->label(url_lang::lang('texts.Order'))->callback('callback::ulogd_order_number_field',$first_number,$direction)->help(help::hint('ulogd_order'))->class('right');
$grid->callback_field('ip_address')->label(url_lang::lang('texts.Ip address'))->class('right')->order(FALSE)->callback('callback::ulogd_ip_address_field');
$grid->order_callback_field('upload')->label(url_lang::lang('texts.Upload'))->callback('callback::ulogd_traffic_field')->class('right');
$grid->order_callback_field('download')->label(url_lang::lang('texts.Download'))->callback('callback::ulogd_traffic_field')->class('right');
$grid->order_callback_field('total')->label(url_lang::lang('texts.Total'))->callback('callback::ulogd_traffic_field')->class('right');
$grid->order_callback_field('member_id')->label(url_lang::lang('texts.Member'))->callback('callback::ulogd_member_field', url_lang::lang('texts.Is not in system').'!');
$grid->datasource($ip_addresses_traffics);
freenetis/branches/subnets_assigning/application/libraries/Settings.php
// type of traffic of members to find, default download traffic
private static $ulogd_active_type = 'download';
private static $allowed_subnets_enabled = 1;
// time of last update of allowed subnets
private static $allowed_subnets_update_last = 0;
// interval of updating of allowed subnets, default 60s
private static $allowed_subnets_update_interval = 60;
// default count of allowed subnets
private static $allowed_subnets_default_count = 1;
/**
* @author Michal Kliment
* Function to get value from settings by given key

Také k dispozici: Unified diff