mirror of
https://github.com/serghey-rodin/vesta.git
synced 2025-08-19 21:04:06 -07:00
DNS Cluster Serial fix
This commit is contained in:
parent
a379e01e5a
commit
264b851d1a
22 changed files with 79 additions and 40 deletions
|
@ -81,6 +81,7 @@ if [ -z $ns2 ]; then
|
||||||
fi
|
fi
|
||||||
soa="$ns1"
|
soa="$ns1"
|
||||||
exp=$(date +%F -d "+ 1 year")
|
exp=$(date +%F -d "+ 1 year")
|
||||||
|
serial=$(date +'%Y%m%d01')
|
||||||
ttl=14400
|
ttl=14400
|
||||||
|
|
||||||
# Reading template
|
# Reading template
|
||||||
|
@ -111,8 +112,8 @@ records="$(wc -l $USER_DATA/dns/$domain.conf |cut -f 1 -d ' ')"
|
||||||
|
|
||||||
# Adding dns.conf record
|
# Adding dns.conf record
|
||||||
dns_rec="DOMAIN='$domain' IP='$ip' TPL='$template' TTL='$ttl' EXP='$exp'"
|
dns_rec="DOMAIN='$domain' IP='$ip' TPL='$template' TTL='$ttl' EXP='$exp'"
|
||||||
dns_rec="$dns_rec SOA='$soa' RECORDS='$records' SUSPENDED='no' TIME='$TIME'"
|
dns_rec="$dns_rec SOA='$soa' SERIAL='$serial' SRC='' RECORDS='$records'"
|
||||||
dns_rec="$dns_rec DATE='$DATE'"
|
dns_rec="$dns_rec SUSPENDED='no' TIME='$TIME' DATE='$DATE'"
|
||||||
|
|
||||||
echo "$dns_rec" >> $USER_DATA/dns.conf
|
echo "$dns_rec" >> $USER_DATA/dns.conf
|
||||||
chmod 660 $USER_DATA/dns.conf
|
chmod 660 $USER_DATA/dns.conf
|
||||||
|
|
|
@ -82,6 +82,7 @@ sort_dns_records
|
||||||
|
|
||||||
# Updating zone
|
# Updating zone
|
||||||
if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
|
if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
|
||||||
|
update_domain_serial
|
||||||
update_domain_zone
|
update_domain_zone
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -111,7 +111,7 @@ for cluster_str in $search_str; do
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Rebuild dns zone
|
# Rebuild dns zone
|
||||||
$send_cmd v-rebuild-dns-domain $DNS_USER $domain 'scheduled'
|
$send_cmd v-rebuild-dns-domain $DNS_USER $domain 'scheduled' 'no'
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
echo "Error: $TYPE connection to $HOST failed"
|
echo "Error: $TYPE connection to $HOST failed"
|
||||||
log_event "$E_CONNECT $EVENT"
|
log_event "$E_CONNECT $EVENT"
|
||||||
|
|
|
@ -80,13 +80,16 @@ for cluster_str in $(grep "SUSPENDED='no'" $VESTA/conf/dns-cluster.conf); do
|
||||||
DNS_CLUSTER_IGNORE='dns-cluster'
|
DNS_CLUSTER_IGNORE='dns-cluster'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Sync SOA
|
||||||
|
$send_cmd v-insert-dns-domain $DNS_USER "$str" $HOSTNAME 'domain' 'no'
|
||||||
|
|
||||||
# Sync record
|
# Sync record
|
||||||
str=$(grep "ID='$id'" $USER_DATA/dns/$domain.conf)
|
str=$(grep "ID='$id'" $USER_DATA/dns/$domain.conf)
|
||||||
str=$(echo "$str" | sed 's/"/\\"/g')
|
str=$(echo "$str" | sed 's/"/\\"/g')
|
||||||
$send_cmd v-insert-dns-record $DNS_USER $domain "$str" 'no'
|
$send_cmd v-insert-dns-record $DNS_USER $domain "$str" 'no'
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
# Rebuild dns zone
|
# Rebuild dns zone
|
||||||
$send_cmd v-rebuild-dns-domain $DNS_USER $domain 'scheduled'
|
$send_cmd v-rebuild-dns-domain $DNS_USER $domain 'scheduled' 'no'
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
echo "Error: $TYPE connection to $HOST failed (rebuild)"
|
echo "Error: $TYPE connection to $HOST failed (rebuild)"
|
||||||
log_event "$E_CONNECT $EVENT"
|
log_event "$E_CONNECT $EVENT"
|
||||||
|
|
|
@ -51,6 +51,7 @@ sed -i "s/$old/$ip/g" $USER_DATA/dns/$domain.conf
|
||||||
|
|
||||||
# Updating zone
|
# Updating zone
|
||||||
if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
|
if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
|
||||||
|
update_domain_serial
|
||||||
update_domain_zone
|
update_domain_zone
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -59,7 +60,7 @@ if [ ! -z "$DNS_CLUSTER" ]; then
|
||||||
# Check for first sync
|
# Check for first sync
|
||||||
dlock=$(grep "domain $user $domain" $VESTA/data/queue/dns-cluster.pipe)
|
dlock=$(grep "domain $user $domain" $VESTA/data/queue/dns-cluster.pipe)
|
||||||
if [ -z "$dlock" ]; then
|
if [ -z "$dlock" ]; then
|
||||||
cmd="$BIN/v-add-remote-dns-domain $user $domain domain"
|
cmd="$BIN/v-add-remote-dns-domain $user $domain domain yes"
|
||||||
echo "$cmd" >> $VESTA/data/queue/dns-cluster.pipe
|
echo "$cmd" >> $VESTA/data/queue/dns-cluster.pipe
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -45,6 +45,7 @@ update_object_value 'dns' 'DOMAIN' "$domain" '$SOA' "$soa"
|
||||||
|
|
||||||
# Updating zone
|
# Updating zone
|
||||||
if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
|
if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
|
||||||
|
update_domain_serial
|
||||||
update_domain_zone
|
update_domain_zone
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -67,6 +67,7 @@ records="$(wc -l $USER_DATA/dns/$domain.conf |cut -f 1 -d ' ')"
|
||||||
|
|
||||||
# Updating zone
|
# Updating zone
|
||||||
if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
|
if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
|
||||||
|
update_domain_serial
|
||||||
update_domain_zone
|
update_domain_zone
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,7 @@ update_object_value 'dns' 'DOMAIN' "$domain" '$TTL' "$ttl"
|
||||||
|
|
||||||
# Updating zone
|
# Updating zone
|
||||||
if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
|
if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
|
||||||
|
update_domain_serial
|
||||||
update_domain_zone
|
update_domain_zone
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -77,6 +77,7 @@ sort_dns_records
|
||||||
|
|
||||||
# Updating zone
|
# Updating zone
|
||||||
if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
|
if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
|
||||||
|
update_domain_serial
|
||||||
update_domain_zone
|
update_domain_zone
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -51,6 +51,7 @@ sort_dns_records
|
||||||
|
|
||||||
# Updating zone
|
# Updating zone
|
||||||
if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
|
if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
|
||||||
|
update_domain_serial
|
||||||
update_domain_zone
|
update_domain_zone
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -85,7 +85,7 @@ for cluster_str in $(grep "SUSPENDED='no'" $VESTA/conf/dns-cluster.conf); do
|
||||||
$send_cmd v-insert-dns-domain $DNS_USER "$str" $HOSTNAME 'no'
|
$send_cmd v-insert-dns-domain $DNS_USER "$str" $HOSTNAME 'no'
|
||||||
|
|
||||||
# Rebuild dns zone
|
# Rebuild dns zone
|
||||||
$send_cmd v-rebuild-dns-domain $DNS_USER $domain 'scheduled'
|
$send_cmd v-rebuild-dns-domain $DNS_USER $domain 'scheduled' 'no'
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
echo "Error: $TYPE connection to $HOST failed (rebuild)"
|
echo "Error: $TYPE connection to $HOST failed (rebuild)"
|
||||||
log_event "$E_CONNECT $EVENT"
|
log_event "$E_CONNECT $EVENT"
|
||||||
|
|
|
@ -100,7 +100,7 @@ for cluster_str in $(grep "SUSPENDED='no'" $VESTA/conf/dns-cluster.conf); do
|
||||||
$send_cmd v-insert-dns-domain $DNS_USER "$str" $HOSTNAME 'no'
|
$send_cmd v-insert-dns-domain $DNS_USER "$str" $HOSTNAME 'no'
|
||||||
|
|
||||||
# Rebuild dns zone
|
# Rebuild dns zone
|
||||||
$send_cmd v-rebuild-dns-domain $DNS_USER $domain 'scheduled'
|
$send_cmd v-rebuild-dns-domain $DNS_USER $domain 'scheduled' 'no'
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
echo "Error: $TYPE connection to $HOST failed (rebuild)"
|
echo "Error: $TYPE connection to $HOST failed (rebuild)"
|
||||||
log_event "$E_CONNECT $EVENT"
|
log_event "$E_CONNECT $EVENT"
|
||||||
|
|
|
@ -45,6 +45,7 @@ sed -i "/^ID='$id'/d" $USER_DATA/dns/$domain.conf
|
||||||
|
|
||||||
# Updating zone
|
# Updating zone
|
||||||
if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
|
if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
|
||||||
|
update_domain_serial
|
||||||
update_domain_zone
|
update_domain_zone
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -57,7 +57,7 @@ fi
|
||||||
|
|
||||||
# Prepare values for the insert
|
# Prepare values for the insert
|
||||||
dns_rec="DOMAIN='$DOMAIN' IP='$IP' TPL='$TPL' TTL='$TTL' EXP='$EXP'"
|
dns_rec="DOMAIN='$DOMAIN' IP='$IP' TPL='$TPL' TTL='$TTL' EXP='$EXP'"
|
||||||
dns_rec="$dns_rec SOA='$SOA' SRC='$src' RECORDS='$RECORDS'"
|
dns_rec="$dns_rec SOA='$SOA' SERIAL="$SERIAL" SRC='$src' RECORDS='$RECORDS'"
|
||||||
dns_rec="$dns_rec SUSPENDED='$SUSPENDED' TIME='$TIME' DATE='$DATE'"
|
dns_rec="$dns_rec SUSPENDED='$SUSPENDED' TIME='$TIME' DATE='$DATE'"
|
||||||
echo "$dns_rec" >> $USER_DATA/dns.conf
|
echo "$dns_rec" >> $USER_DATA/dns.conf
|
||||||
|
|
||||||
|
|
|
@ -87,7 +87,8 @@ is_object_valid 'dns' 'DOMAIN' "$domain"
|
||||||
|
|
||||||
# Defining config and fields to select
|
# Defining config and fields to select
|
||||||
conf=$USER_DATA/dns.conf
|
conf=$USER_DATA/dns.conf
|
||||||
fields='$DOMAIN $IP $TPL $TTL $EXP $SOA $RECORDS $SUSPENDED $TIME $DATE'
|
fields='$DOMAIN $IP $TPL $TTL $EXP $SOA $SERIAL $SRC $RECORDS
|
||||||
|
$SUSPENDED $TIME $DATE'
|
||||||
|
|
||||||
# Listing domains
|
# Listing domains
|
||||||
case $format in
|
case $format in
|
||||||
|
|
|
@ -32,7 +32,8 @@ is_object_valid 'user' 'USER' "$user"
|
||||||
|
|
||||||
# Defining config and fields
|
# Defining config and fields
|
||||||
conf=$USER_DATA/dns.conf
|
conf=$USER_DATA/dns.conf
|
||||||
fields='$DOMAIN $IP $TPL $TTL $EXP $SOA $SRC $RECORDS $SUSPENDED $TIME $DATE'
|
fields='$DOMAIN $IP $TPL $TTL $EXP $SOA $SERIAL $SRC $RECORDS
|
||||||
|
$SUSPENDED $TIME $DATE'
|
||||||
|
|
||||||
# Listing domains
|
# Listing domains
|
||||||
case $format in
|
case $format in
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# info: rebuild dns domain
|
# info: rebuild dns domain
|
||||||
# options: USER DOMAIN [RESTART]
|
# options: USER DOMAIN [RESTART] [UPDATE_SERIAL]
|
||||||
#
|
#
|
||||||
# The function rebuilds DNS configuration files.
|
# The function rebuilds DNS configuration files.
|
||||||
|
|
||||||
|
@ -13,6 +13,7 @@
|
||||||
user=$1
|
user=$1
|
||||||
domain=$2
|
domain=$2
|
||||||
restart=$3
|
restart=$3
|
||||||
|
update_serial=$4
|
||||||
|
|
||||||
# Includes
|
# Includes
|
||||||
source $VESTA/func/main.sh
|
source $VESTA/func/main.sh
|
||||||
|
@ -25,7 +26,7 @@ source $VESTA/conf/vesta.conf
|
||||||
# Verifications #
|
# Verifications #
|
||||||
#----------------------------------------------------------#
|
#----------------------------------------------------------#
|
||||||
|
|
||||||
check_args '2' "$#" 'USER DOMAIN [RESTART]'
|
check_args '2' "$#" 'USER DOMAIN [RESTART] [UPDATE_SERIAL]'
|
||||||
validate_format 'user' 'domain'
|
validate_format 'user' 'domain'
|
||||||
is_system_enabled "$DNS_SYSTEM" 'DNS_SYSTEM'
|
is_system_enabled "$DNS_SYSTEM" 'DNS_SYSTEM'
|
||||||
is_object_valid 'user' 'USER' "$user"
|
is_object_valid 'user' 'USER' "$user"
|
||||||
|
@ -59,10 +60,15 @@ if [ -e '/etc/bind/named.conf' ]; then
|
||||||
dns_conf='/etc/bind/named.conf'
|
dns_conf='/etc/bind/named.conf'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Remove old user's zone
|
# Deleting old user's zone
|
||||||
sed -i "/\/$user\/conf\/dns\/$domain/d" $dns_conf
|
sed -i "/\/$user\/conf\/dns\/$domain/d" $dns_conf
|
||||||
|
|
||||||
# Starting loop
|
# Updating zone serial
|
||||||
|
if [ "$update_serial" != 'no' ]; then
|
||||||
|
update_domain_serial
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Rebuiling zone config
|
||||||
rebuild_dns_domain_conf
|
rebuild_dns_domain_conf
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# info: rebuild dns domains
|
# info: rebuild dns domains
|
||||||
# options: USER [RESTART]
|
# options: USER [RESTART] [UPDATE_SERIAL]
|
||||||
#
|
#
|
||||||
# The function rebuilds DNS configuration files.
|
# The function rebuilds DNS configuration files.
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@
|
||||||
# Argument defenition
|
# Argument defenition
|
||||||
user=$1
|
user=$1
|
||||||
restart=$2
|
restart=$2
|
||||||
|
update_serial=$3
|
||||||
|
|
||||||
# Includes
|
# Includes
|
||||||
source $VESTA/func/main.sh
|
source $VESTA/func/main.sh
|
||||||
|
@ -24,7 +25,7 @@ source $VESTA/conf/vesta.conf
|
||||||
# Verifications #
|
# Verifications #
|
||||||
#----------------------------------------------------------#
|
#----------------------------------------------------------#
|
||||||
|
|
||||||
check_args '1' "$#" 'USER [RESTART]'
|
check_args '1' "$#" 'USER [RESTART] [UPDATE_SERIAL]'
|
||||||
validate_format 'user'
|
validate_format 'user'
|
||||||
is_system_enabled "$DNS_SYSTEM" 'DNS_SYSTEM'
|
is_system_enabled "$DNS_SYSTEM" 'DNS_SYSTEM'
|
||||||
is_object_valid 'user' 'USER' "$user"
|
is_object_valid 'user' 'USER' "$user"
|
||||||
|
@ -65,6 +66,9 @@ sed -i "/\/$user\/conf\/dns/d" $dns_conf
|
||||||
|
|
||||||
# Starting loop
|
# Starting loop
|
||||||
for domain in $(search_objects 'dns' 'DOMAIN' "*" 'DOMAIN'); do
|
for domain in $(search_objects 'dns' 'DOMAIN' "*" 'DOMAIN'); do
|
||||||
|
if [ "$update_serial" != 'no' ]; then
|
||||||
|
update_domain_serial
|
||||||
|
fi
|
||||||
rebuild_dns_domain_conf
|
rebuild_dns_domain_conf
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
|
@ -54,6 +54,7 @@ sort_dns_records
|
||||||
|
|
||||||
# Updating zone
|
# Updating zone
|
||||||
if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
|
if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
|
||||||
|
update_domain_serial
|
||||||
update_domain_zone
|
update_domain_zone
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -53,6 +53,7 @@ sort_dns_records
|
||||||
|
|
||||||
# Updating zone
|
# Updating zone
|
||||||
if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
|
if [[ "$DNS_SYSTEM" =~ named|bind ]]; then
|
||||||
|
update_domain_serial
|
||||||
update_domain_zone
|
update_domain_zone
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -216,32 +216,13 @@ is_mail_new() {
|
||||||
# Update domain zone
|
# Update domain zone
|
||||||
update_domain_zone() {
|
update_domain_zone() {
|
||||||
conf="$HOMEDIR/$user/conf/dns/$domain.db"
|
conf="$HOMEDIR/$user/conf/dns/$domain.db"
|
||||||
line=$(grep "DOMAIN='$domain'" $USER_DATA/dns.conf)
|
domain_param=$(grep "DOMAIN='$domain'" $USER_DATA/dns.conf)
|
||||||
fields='$RECORD\t$TTL\tIN\t$TYPE\t$PRIORITY\t$VALUE'
|
fields='$RECORD\t$TTL\tIN\t$TYPE\t$PRIORITY\t$VALUE'
|
||||||
if [ -e $conf ]; then
|
eval $domain_param
|
||||||
zn_serial=$(head $conf|grep 'SOA' -A1|tail -n 1|sed "s/ //g")
|
|
||||||
s_date=$(echo ${zn_serial:0:8})
|
|
||||||
c_date=$(date +'%Y%m%d')
|
|
||||||
if [ "$s_date" == "$c_date" ]; then
|
|
||||||
cur_value=$(echo ${zn_serial:8} )
|
|
||||||
new_value=$(expr $cur_value + 1 )
|
|
||||||
len_value=$(expr length $new_value)
|
|
||||||
if [ 1 -eq "$len_value" ]; then
|
|
||||||
new_value='0'$new_value
|
|
||||||
fi
|
|
||||||
serial="$c_date""$new_value"
|
|
||||||
else
|
|
||||||
serial="$(date +'%Y%m%d01')"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
serial="$(date +'%Y%m%d01')"
|
|
||||||
fi
|
|
||||||
|
|
||||||
eval $line
|
|
||||||
SOA=$(idn --quiet -a -t "$SOA")
|
SOA=$(idn --quiet -a -t "$SOA")
|
||||||
echo "\$TTL $TTL
|
echo "\$TTL $TTL
|
||||||
@ IN SOA $SOA. root.$domain_idn. (
|
@ IN SOA $SOA. root.$domain_idn. (
|
||||||
$serial
|
$SERIAL
|
||||||
7200
|
7200
|
||||||
3600
|
3600
|
||||||
1209600
|
1209600
|
||||||
|
@ -264,6 +245,31 @@ update_domain_zone() {
|
||||||
done < $USER_DATA/dns/$domain.conf
|
done < $USER_DATA/dns/$domain.conf
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Update zone serial
|
||||||
|
update_domain_serial() {
|
||||||
|
zn_conf="$HOMEDIR/$user/conf/dns/$domain.db"
|
||||||
|
if [ -e $zn_conf ]; then
|
||||||
|
zn_serial=$(head $zn_conf |grep 'SOA' -A1 |tail -n 1 |sed "s/ //g")
|
||||||
|
s_date=$(echo ${zn_serial:0:8})
|
||||||
|
c_date=$(date +'%Y%m%d')
|
||||||
|
if [ "$s_date" == "$c_date" ]; then
|
||||||
|
cur_value=$(echo ${zn_serial:8} )
|
||||||
|
new_value=$(expr $cur_value + 1 )
|
||||||
|
len_value=$(expr length $new_value)
|
||||||
|
if [ 1 -eq "$len_value" ]; then
|
||||||
|
new_value='0'$new_value
|
||||||
|
fi
|
||||||
|
serial="$c_date""$new_value"
|
||||||
|
else
|
||||||
|
serial="$(date +'%Y%m%d01')"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
serial="$(date +'%Y%m%d01')"
|
||||||
|
fi
|
||||||
|
add_object_key "dns" 'DOMAIN' "$domain" 'SERIAL' 'RECORDS'
|
||||||
|
update_object_value 'dns' 'DOMAIN' "$domain" '$SERIAL' "$serial"
|
||||||
|
}
|
||||||
|
|
||||||
# Get next DNS record ID
|
# Get next DNS record ID
|
||||||
get_next_dnsrecord(){
|
get_next_dnsrecord(){
|
||||||
if [ -z "$id" ]; then
|
if [ -z "$id" ]; then
|
||||||
|
|
|
@ -161,13 +161,20 @@ sort-expire="<?=strtotime($data[$key]['EXP'])?>" sort-records="<?=(int)$data[$ke
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div class="l-unit__stat-cols clearfix">
|
<div class="l-unit__stat-cols clearfix">
|
||||||
<div class="l-unit__stat-col l-unit__stat-col--left compact"><?=__('Expire')?>:</div>
|
<div class="l-unit__stat-col l-unit__stat-col--left compact"><?=__('Serial')?>:</div>
|
||||||
<div class="l-unit__stat-col l-unit__stat-col--right">
|
<div class="l-unit__stat-col l-unit__stat-col--right">
|
||||||
<b><?=translate_date($data[$key]['EXP'])?></b>
|
<b><?=$data[$key]['SERIAL']?></b>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
|
|
||||||
|
<div class="l-unit__stat-cols clearfix">
|
||||||
|
<div class="l-unit__stat-col l-unit__stat-col--left compact"><?=__('Expire')?>:</div>
|
||||||
|
<div class="l-unit__stat-col l-unit__stat-col--right">
|
||||||
|
<b><?=$data[$key]['EXP']?></b>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue