@ -645,27 +645,23 @@ sub update_item {
/^(man_)?allowed_ips$/ && do {
/^(man_)?allowed_ips$/ && do {
my $ pref_name = $ pref . "_grp" ;
my $ pref_name = $ pref . "_grp" ;
my $ aig_rs ;
my $ aig_rs ;
my $ seq ;
my $ aig_group_id ;
my $ rs = $ self - > get_preference_rs ( $ c , $ type , $ elem , $ pref_name ) ;
my $ rs = $ self - > get_preference_rs ( $ c , $ type , $ elem , $ pref_name ) ;
if ( $ rs - > first ) {
if ( $ rs - > first ) {
$ aig_group_id = $ rs - > first - > value ;
$ aig_rs = $ c - > model ( 'DB' ) - > resultset ( 'voip_allowed_ip_groups' ) - > search ( {
$ aig_rs = $ c - > model ( 'DB' ) - > resultset ( 'voip_allowed_ip_groups' ) - > search ( {
group_id = > $ rs- > first - > value
group_id = > $ aig_group_id
} ) ;
} ) ;
$ aig_rs - > delete ;
$ aig_rs - > delete ;
} else {
} else {
my $ aig_seq = $ c - > model ( 'DB' ) - > resultset ( 'voip_aig_sequence' ) - > search ( { } , {
my $ new_group = $ c - > model ( 'DB' ) - > resultset ( 'voip_aig_sequence' ) - > create ( { } ) ;
for = > 'update' ,
$ aig_group_id = $ new_group - > id ;
} ) ;
unless ( $ aig_seq - > first ) {
$ seq = 1 ;
$ aig_seq - > create ( { id = > $ seq } ) ;
} else {
$ seq = $ aig_seq - > first - > id + 1 ;
$ aig_seq - > first - > update ( { id = > $ seq } ) ;
}
$ aig_rs = $ c - > model ( 'DB' ) - > resultset ( 'voip_allowed_ip_groups' ) - > search ( {
$ aig_rs = $ c - > model ( 'DB' ) - > resultset ( 'voip_allowed_ip_groups' ) - > search ( {
group_id = > $ seq
group_id = > $ aig_group_id
} ) ;
} ) ;
$ c - > model ( 'DB' ) - > resultset ( 'voip_aig_sequence' ) - > search_rs ( {
id = > { '<' = > $ aig_group_id } ,
} ) - > delete_all ;
}
}
foreach my $ ip ( @ { $ resource - > { $ pref } } ) {
foreach my $ ip ( @ { $ resource - > { $ pref } } ) {
unless ( $ self - > validate_ipnet ( $ c , $ pref , $ ip ) ) {
unless ( $ self - > validate_ipnet ( $ c , $ pref , $ ip ) ) {
@ -675,8 +671,9 @@ sub update_item {
$ aig_rs - > create ( { ipnet = > $ ip } ) ;
$ aig_rs - > create ( { ipnet = > $ ip } ) ;
}
}
unless ( $ rs - > first ) {
unless ( $ rs - > first ) {
$ rs - > create ( { value = > $ seq } ) ;
$ rs - > create ( { value = > $ aig_group_id } ) ;
}
}
# in contrast to panel, it does not drop the allowed_ips_grp pref, if empty ipnets.
last SWITCH ;
last SWITCH ;
} ;
} ;
# default
# default