summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon duSaint2022-07-16 16:30:16 -0700
committerJon duSaint2022-07-16 16:30:16 -0700
commit55e4d50871d8930647682396c60cf3b52036bb5d (patch)
tree922e76ed099388bcc32617e6742945c354a3e347
parent3c1c5007557e877c1e32a40d9486cd32c5b5c538 (diff)

reolink: Hoist load_params to main

Prepare for use by Client.

-rwxr-xr-xreolink/reolink58
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;