summaryrefslogtreecommitdiff
path: root/utils/rhrd-ws-login
diff options
context:
space:
mode:
Diffstat (limited to 'utils/rhrd-ws-login')
-rwxr-xr-xutils/rhrd-ws-login55
1 files changed, 55 insertions, 0 deletions
diff --git a/utils/rhrd-ws-login b/utils/rhrd-ws-login
new file mode 100755
index 0000000..44e4eea
--- /dev/null
+++ b/utils/rhrd-ws-login
@@ -0,0 +1,55 @@
+#!/usr/bin/perl -w
+#
+# rhrdlibs
+#
+# Copyright (C) 2015 Christian Pointner <equinox@helsinki.at>
+#
+# This file is part of rhrdlibs.
+#
+# rhrdlibs 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.
+#
+# rhrdlibs 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 rhrdlibs. If not, see <http://www.gnu.org/licenses/>.
+#
+
+use strict;
+use RHRD::rddb;
+
+my $num_args = $#ARGV + 1;
+if($num_args != 1 || ($ARGV[0] ne "login" && $ARGV[0] ne "logout")) {
+ print STDERR "Usage: rhrd-ws-login (login|logout)\n";
+ exit 1;
+}
+
+my $username = getpwuid($>);
+
+my ($dbh, undef, $errorstring) = RHRD::rddb::opendb();
+if(defined $dbh) {
+ my $macro = "NN!";
+ if($ARGV[0] eq "logout") {
+ $macro = "LO!";
+ } elsif($ARGV[0] eq "login") {
+ (my $token, undef, $errorstring) = RHRD::rddb::get_token($dbh, $username);
+ unless($token) {
+ print STDERR "$errorstring\n";
+ exit 1;
+ }
+ $token =~ s/([ !'"\\])/\\$1/g;
+ $macro = "LO $username $token!"
+ }
+ RHRD::rddb::closedb($dbh);
+ system('/usr/bin/rmlsend', $macro) == 0 or die "system(/usr/bin/rmlsend, $macro) failed: $?";
+} else {
+ print STDERR "$errorstring\n";
+ exit 1;
+}
+
+exit 0