From 6f95631ce48bed9494e54770a0dd84e0785f70cd Mon Sep 17 00:00:00 2001 From: Will Budic Date: Sun, 26 Jan 2020 20:55:22 +1100 Subject: [PATCH] config settings update preceds from main.cnf. --- htdocs/cgi-bin/config.cgi | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/htdocs/cgi-bin/config.cgi b/htdocs/cgi-bin/config.cgi index 721276f..4fce540 100755 --- a/htdocs/cgi-bin/config.cgi +++ b/htdocs/cgi-bin/config.cgi @@ -800,15 +800,15 @@ sub resetSystemConfiguration { open(my $fh, '<', &Settings::logPath.'main.cnf' ) or die "Can't open main.cnf: $!"; my $db = shift; - my ($did,$name, $value, $desc); + my ($id,$name, $value, $desc); my $inData = 0; my $err = ""; my %vars = {}; try{ - my $insert = $db->prepare('INSERT INTO CONFIG VALUES (?,?,?,?)'); - my $update = $db->prepare("UPDATE CONFIG SET VALUE=? WHERE ID=?;"); + my $update = $db->prepare('UPDATE CONFIG SET VALUE=? WHERE ID=?;'); + my $updExs = $db->prepare('UPDATE CONFIG SET NAME=?, VALUE=? WHERE ID=?;'); $dbs->finish(); while (my $line = <$fh>) { chomp $line; @@ -820,9 +820,9 @@ try{ my %nash = $key =~ m[(\S+)\s*\|\$\s*(\S+)]g; if(scalar(%nash)==1){ - for my $id (keys %nash) { - my $name = $nash{$id}; - my $value = $hsh{$key}; + for $id (keys %nash) { + $name = $nash{$id}; + $value = $hsh{$key}; if($vars{$id}){ $err .= "UID{$id} taken by $vars{$id}-> $line\n"; } @@ -832,7 +832,16 @@ try{ $inData = 1; my @row = $dbs->fetchrow_array(); if(scalar @row == 0){ + #The id in config file has precedence to the one in the db, + #from a ppossible previous version. + $dbs = dbExecute("SELECT ID FROM CONFIG WHERE ID = $id;"); + @row = $dbs->fetchrow_array(); + if(scalar @row == 0){ $insert->execute($id,$name,$value,$tick[1]); + }else{ + #rename, revalue exsisting id + $updExs->execute($name,$value,$id); + } } else{ $update->execute($value,$id); @@ -864,7 +873,7 @@ try{ } catch{ close $fh; print $cgi->header; - print "SERVER ERROR!
".$_."
$err
"; + print "SERVER ERROR! [id:$id,name:$name,value:$value]/b>
".$_."
$err
"; print $cgi->end_html; exit; } -- 2.34.1