I applied v2 instead. > On September 13, 2018 at 2:55 PM Dominik Csapak <d.csa...@proxmox.com> wrote: > > > Signed-off-by: Dominik Csapak <d.csa...@proxmox.com> > --- > changes from v3: > * removed digest code (now in api) > src/PVE/INotify.pm | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 48 insertions(+) > > diff --git a/src/PVE/INotify.pm b/src/PVE/INotify.pm > index 8b5544e..bea4821 100644 > --- a/src/PVE/INotify.pm > +++ b/src/PVE/INotify.pm > @@ -537,6 +537,54 @@ register_file('hostname', "/etc/hostname", > \&read_etc_hostname, > \&write_etc_hostname); > > +sub read_etc_hosts { > + my ($filename, $fh) = @_; > + > + my $raw = ''; > + my $data = ''; > + > + while (my $line = <$fh>) { > + $raw .= $line; > + if ($line =~ m/^\s*#/) { > + $line = decode('UTF-8', $line); > + } > + $data .= $line; > + } > + > + return { > + raw => $raw, > + decoded => $data, > + } > +} > + > +sub write_etc_hosts { > + my ($filename, $fh, $hosts, @args) = @_; > + > + # check validity of ips/names > + for my $line (split("\n", $hosts)) { > + next if $line =~ m/^\s*#/; # comments > + next if $line =~ m/^\s*$/; # whitespace/empty lines > + > + my ($ip, @names) = split(/\s+/, $line); > + > + raise_param_exc({ 'data' => "Invalid IP '$ip'" }) > + if $ip !~ m/^$PVE::Tools::IPRE$/; > + > + for my $name (@names) { > + raise_param_exc({ 'data' => "Invalid Hostname '$name'" }) > + if $name !~ m/^[.\-a-zA-Z0-9]+$/; > + } > + } > + > + die "write failed: $!" if !print $fh encode('UTF-8', $hosts); > + > + return $hosts; > +} > + > +register_file('etchosts', "/etc/hosts", > + \&read_etc_hosts, > + \&write_etc_hosts); > + > sub read_etc_resolv_conf { > my ($filename, $fh) = @_; > > -- > 2.11.0 > > > _______________________________________________ > pve-devel mailing list > pve-devel@pve.proxmox.com > https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
_______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel