#!/usr/bin/perl -w
use strict;
use warnings;
use File::Slurp;

sub check_ip {
	my ($ip) = @_;
	my @nums = split /\./, $ip;
	return if @nums != 4;
	return if grep {!/^\A\d{1,3}\z/} @nums;
	return if grep {$_<0 || $_>255} @nums;
	return join '.', @nums;
}

sub d {
	my ($u, $s, $d) = @_;
	my $h="/home/$u";
	my $ip_file = "$h/.ip";
	my $stamp_file = "$h/.ip.stamp";
	if ((stat($ip_file))[9] >= (stat($stamp_file))[9]) {
		append_file($stamp_file, '');
		sleep(1);
		my $ip = read_file($ip_file);
		chomp $ip; $ip =~ s/\r//g;
		$ip = check_ip($ip);
		if ($ip) {
			system "sed", "-i", "s/^$s\\t.*/$s\\t$ip/", "/freens/$d";
			system "freens-update";
		}
	}
}

d("netstar", "bogotron", "nipl.net");
