diff --git a/ddclient.in b/ddclient.in index 776e5d0..899b674 100755 --- a/ddclient.in +++ b/ddclient.in @@ -1645,6 +1645,25 @@ sub _read_config { ## verify that keywords are valid...and check the value foreach my $k (keys %locals) { + # Handle '_env' keyword suffix + if ($k =~ /(.*)_env$/) + { + debug("Loading value for $1 from environment variable $locals{$k}."); + if (exists($ENV{$locals{$k}})) + { + # Set the value to the value of the environment variable + $locals{$1} = $ENV{$locals{$k}}; + # Remove the '_env' suffix from the key + $k = $1; + } + else + { + warning("Environment variable '$locals{$k}' not set for keyword '$k' (ignored)"); + delete $locals{$k}; + next; + } + } + $locals{$k} = $passwords{$k} if defined $passwords{$k}; if (!exists $variables{'merged'}{$k}) { warning("unrecognized keyword '%s' (ignored)", $k);