diff options
| author | Jon duSaint | 2022-07-16 16:30:16 -0700 |
|---|---|---|
| committer | Jon duSaint | 2022-07-16 16:30:16 -0700 |
| commit | 55e4d50871d8930647682396c60cf3b52036bb5d (patch) | |
| tree | 922e76ed099388bcc32617e6742945c354a3e347 | |
| parent | 3c1c5007557e877c1e32a40d9486cd32c5b5c538 (diff) | |
reolink: Hoist load_params to main
Prepare for use by Client.
| -rwxr-xr-x | reolink/reolink | 58 |
1 files changed, 30 insertions, 28 deletions
diff --git a/reolink/reolink b/reolink/reolink index 48800ab..e6f5e6f 100755 --- a/reolink/reolink +++ b/reolink/reolink @@ -63,6 +63,34 @@ my %commands = ( die => {alias => 'exit'} ); +# Load parameters from the config file +sub load_params { + my $params = $_[0]; + + $params->{spool_dir} = $global_config->{spool_dir} if not defined $params->{spool_dir}; + + open (my $fh, '<', $global_config->{config}) or return; + + foreach my $line (<$fh>) { + chomp $line; + $line =~ s/^\s*#.*//; + if ($line =~ m/^\s*(\S+)\s*[=:]\s*(\S+)/) { + my ($key, $value) = ($1, $2); + if ($key eq 'interval' and $commands{interval}->{validate} ($value)) { + $params->{interval} = $value; + } elsif ($key =~ m/^spool(?:_dir)?$/) { + $params->{spool_dir} = $value; + } elsif ($key =~ m/^(?:reolink|camera)(?:_ip)?$/) { + $params->{reolink_ip} = $value; + } elsif ($key =~ m/^video(?:[-_]?times?)?$/ and $commands{video}->{validate} ($value)) { + $params->{video} = $value; + } + } + } + + close ($fh); +} + package Server; use Errno qw/EINTR/; @@ -130,32 +158,6 @@ sub save_params { message ("saved $global_config->{config}"); } -sub load_params { - $server_params{spool_dir} = $global_config->{spool_dir} if not defined $server_params{spool_dir}; - - open (my $fh, '<', $global_config->{config}) or return; - - foreach my $line (<$fh>) { - chomp $line; - $line =~ s/^\s*#.*//; - if ($line =~ m/^\s*(\S+)\s*[=:]\s*(\S+)/) { - my ($key, $value) = ($1, $2); - debug ("config: found $key '$value'"); - if ($key eq 'interval' and $commands{interval}->{validate} ($value)) { - $server_params{interval} = $value; - } elsif ($key =~ m/^spool(?:_dir)?$/) { - $server_params{spool_dir} = $value; - } elsif ($key =~ m/^(?:reolink|camera)(?:_ip)?$/) { - $server_params{reolink_ip} = $value; - } elsif ($key =~ m/^video(?:[-_]?times?)?$/ and $commands{video}->{validate} ($value)) { - $server_params{video} = $value; - } - } - } - - close ($fh); -} - sub daemonize { chdir ('/') or die "failed to chdir(/): $!"; @@ -373,6 +375,8 @@ sub run { }, server => sub {}); + main::load_params (\%server_params); + unless ($debug) { pledge (qw/rpath wpath cpath inet proc unix/) or die "Failed to pledge: $!"; openlog ('reolinkd', 'PID', LOG_DAEMON); @@ -380,8 +384,6 @@ sub run { daemonize; } - load_params (); - $SIG{HUP} = \&server_reload; $SIG{INT} = \&server_terminate; $SIG{TERM} = \&server_terminate; |
