summaryrefslogtreecommitdiff
path: root/rh-bin
diff options
context:
space:
mode:
Diffstat (limited to 'rh-bin')
-rwxr-xr-xrh-bin/activesystem.json72
1 files changed, 72 insertions, 0 deletions
diff --git a/rh-bin/activesystem.json b/rh-bin/activesystem.json
new file mode 100755
index 0000000..d65c6c4
--- /dev/null
+++ b/rh-bin/activesystem.json
@@ -0,0 +1,72 @@
+#!/usr/bin/perl
+#
+# rhrdweb
+#
+# Copyright (C) 2016 Christian Pointner <equinox@helsinki.at>
+#
+# This file is part of rhrdweb.
+#
+# rhrdweb is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# any later version.
+#
+# rhrdweb is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with rhrdweb. If not, see <http://www.gnu.org/licenses/>.
+#
+
+use strict;
+use RHRD::rddb;
+use JSON;
+use IO::Socket;
+use Socket qw(SOCK_STREAM getaddrinfo);
+
+my $status = 'ERROR';
+my $errorstring = 'unknown';
+my $responsecode = 500;
+my $system = 'unknown';
+
+
+my %hints = (socktype => SOCK_STREAM);
+my ($err, @res) = getaddrinfo("rhctl.helsinki.at", "2345", \%hints);
+if($err) {
+ $errorstring = "Cannot getaddrinfo - $err";
+} else {
+ my $sock;
+ foreach my $ai (@res) {
+ my $candidate = IO::Socket->new();
+ $candidate->socket($ai->{family}, $ai->{socktype}, $ai->{protocol})
+ or next;
+ $candidate->connect($ai->{addr})
+ or next;
+ $sock = $candidate;
+ last;
+ }
+ if($sock) {
+ $system = <$sock>;
+ $system =~ s/\s+$//;
+ $status = 'OK';
+ $errorstring = 'success';
+ $responsecode = 200;
+ close($sock);
+ } else {
+ $errorstring = "Cannot connect to rhctl.helsinki.at:2345";
+ }
+}
+
+my %answer;
+$answer{'status'} = $status;
+$answer{'errorstring'} = $errorstring;
+$answer{'system'} = $system;
+
+print "Content-type: application/json; charset=UTF-8\n";
+print "Status: $responsecode\n\n";
+print JSON->new->encode(\%answer);
+
+
+