]> scm.dxcluster.org Git - spider.git/blob - cmd/set/pinginterval.pl
use DXUtil::month for sh/contest
[spider.git] / cmd / set / pinginterval.pl
1 #
2 # set ping interval for this node
3 #
4 # Copyright (c) 1998 - Dirk Koopman
5 #
6 #
7 #
8
9 my ($self, $line) = @_;
10 my @args = split /\s+/, $line;
11 my $call;
12 my @out;
13 my $user;
14 my $val = shift @args if @args;
15
16
17 return (1, $self->msg('e5')) if $self->priv < 8;
18 return (1, $self->msg('e14')) unless defined $val;
19 return (1, $self->msg('e12')) unless @args;
20
21 if ($val =~ /^(\d+)[sS]$/) {
22         $val = $1;
23 } elsif ($val =~ /^(\d+)[mM]$/) {
24         $val = $1 * 60;
25 } elsif ($val =~ /^(\d+)[hH]$/) {
26         $val = $1 * 60 * 60;
27 } elsif ($val =~ /^\d+$/) {
28         $val *= 60 if $val < 30;
29 } else {
30         return (1, $self->msg('e14'));
31 }
32
33 foreach $call (@args) {
34         $call = uc $call;
35         my $dxchan = DXChannel::get($call);
36         $user = $dxchan->user if $dxchan;
37         $user = DXUser->get($call) unless $user;
38         if ($user) {
39                 unless ($user->is_node) {
40                         push @out, $self->msg('e13', $call);
41                         next;
42                 }
43                 $user->pingint($val);
44                 if ($dxchan) {
45                         $dxchan->pingint($val);
46                 } else {
47                         $user->close();
48                 }
49                 push @out, $self->msg('pingint', $call, $val);
50         } else {
51                 push @out, $self->msg('e3', "Set/Pinginterval", $call);
52         }
53 }
54 return (1, @out);