📄 records-lib.pl
字号:
# date_serial()# Returns a string like YYYYMMDDsub date_serial{local $now = time();local @tm = localtime($now);return sprintf "%4.4d%2.2d%2.2d", $tm[5]+1900, $tm[4]+1, $tm[3];}# get_zone_defaults(&array)sub get_zone_defaults{if (!&read_file("$module_config_directory/zonedef", $_[0])) { $_[0]->{'refresh'} = 10800; $_[0]->{'retry'} = 3600; $_[0]->{'expiry'} = 432000; $_[0]->{'minimum'} = 38400; }}# save_zone_defaults(&array)sub save_zone_defaults{&write_file("$module_config_directory/zonedef", $_[0]);}# allowed_zone_file(&access, file)sub allowed_zone_file{return 0 if ($_[1] =~ /\.\./);return 0 if (-l $_[1] && !&allowed_zone_file($_[0], readlink($_[1])));local $l = length($_[0]->{'dir'});return length($_[1]) > $l && substr($_[1], 0, $l) eq $_[0]->{'dir'};}# sort_records(list)sub sort_records{return @_ if (!@_ || !$config{'records_order'});if ($config{'records_order'} == 1) { # Sort by name if ($_[0]->{'type'} eq "PTR") { return sort ptr_sort_func @_; } else { return sort { $a->{'name'} cmp $b->{'name'} } @_; } }else { # Sort by value if ($_[0]->{'type'} eq "A") { return sort ip_sort_func @_; } elsif ($_[0]->{'type'} eq "MX") { return sort { $a->{'values'}->[1] cmp $b->{'values'}->[1] } @_; } else { return sort { $a->{'values'}->[0] cmp $b->{'values'}->[0] } @_; } }}sub ptr_sort_func{$a->{'name'} =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)/;local ($a1, $a2, $a3, $a4) = ($1, $2, $3, $4);$b->{'name'} =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)/;return $a4 < $4 ? -1 : $a4 > $4 ? 1 : $a3 < $3 ? -1 : $a3 > $3 ? 1 : $a2 < $2 ? -1 : $a2 > $2 ? 1 : $a1 < $1 ? -1 : $a1 > $1 ? 1 : 0;}sub ip_sort_func{$a->{'values'}->[0] =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)/;local ($a1, $a2, $a3, $a4) = ($1, $2, $3, $4);$b->{'values'}->[0] =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)/;return $a1 < $1 ? -1 : $a1 > $1 ? 1 : $a2 < $2 ? -1 : $a2 > $2 ? 1 : $a3 < $3 ? -1 : $a3 > $3 ? 1 : $a4 < $4 ? -1 : $a4 > $4 ? 1 : 0;}# arpa_to_ip(name)# Converts an address like 4.3.2.1.in-addr.arpa. to 1.2.3.4sub arpa_to_ip{if ($_[0] =~ /^([\d\.]+)\.in-addr\.arpa/i) { return join('.',reverse(split(/\./, $1))); }return $_[0];}# ip_to_arpa(address)# Converts an IP address like 1.2.3.4 to 4.3.2.1.in-addr.arpa.sub ip_to_arpa{if ($_[0] =~ /^([\d\.]+)$/) { return join('.',reverse(split(/\./,$1))).".in-addr.arpa."; }return $_[0];}# absolute_path(path)# If a path does not start with a /, prepend the base directorysub absolute_path{if ($_[0] =~ /^\//) { return $_[0]; }return &base_directory()."/".$_[0];}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -