- my $prog = "$main::root/local/client.pl";
- $prog = "$main::root/perl/client.pl" if ! -e $prog;
-
- my $pid = fork();
- if (defined $pid) {
- if (!$pid) {
- # in child, unset warnings, disable debugging and general clean up from us
- $^W = 0;
-# do "$main::root/perl/Disable_debug.pl";
- eval "{ package DB; sub DB {} }";
- alarm(0);
- $SIG{CHLD} = $SIG{TERM} = $SIG{INT} = $SIG{__WARN__} = 'DEFAULT';
- exec $prog, $call, 'connect';
- dbg('cron', "exec '$prog' failed $!");
- }
- dbg('cron', "connect to $call started");
- } else {
- dbg('cron', "can't fork for $prog $!");
- }
+# is it remotely connected anywhere (ignoring SSIDS)?
+sub presentish
+{
+ my $call = uc shift;
+ return DXCluster->get($call);
+}
+
+# is it remotely connected anywhere (with exact callsign) and on node?
+sub present_on
+{
+ my $call = uc shift;
+ my $node = uc shift;
+ my $ref = DXCluster->get_exact($call);
+ return ($ref && $ref->mynode) ? $ref->mynode->call eq $node : undef;
+}
+
+# is it remotely connected anywhere (ignoring SSIDS) and on node?
+sub presentish_on
+{
+ my $call = uc shift;
+ my $node = uc shift;
+ my $ref = DXCluster->get($call);
+ return ($ref && $ref->mynode) ? $ref->mynode->call eq $node : undef;
+}
+
+# last time this thing was connected
+sub last_connect
+{
+ my $call = uc shift;
+ return $main::systime if DXChannel->get($call);
+ my $user = DXUser->get($call);
+ return $user ? $user->lastin : 0;
+}
+
+# disconnect a locally connected thing
+sub disconnect
+{
+ my $call = shift;
+ run_cmd("disconnect $call");
+}
+
+# start a connect process off
+sub start_connect
+{
+ my $call = shift;
+ # connecting is now done in one place - Yeah!
+ run_cmd("connect $call");