From 8d0da02c44468259ed688e93d6a9ab2d9cea1400 Mon Sep 17 00:00:00 2001
From: Christian Pointner <equinox@spreadspace.org>
Date: Thu, 30 Jul 2015 20:09:38 +0200
Subject: no more special characters for passwords as rmlsend and others don't
 like it added login/logout script for workstations


diff --git a/Makefile.PL b/Makefile.PL
index d9d78ee..3796727 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -1,7 +1,7 @@
 use ExtUtils::MakeMaker;
 use 5.004;
 
-my @utils = qw(get-rd-token get-rd-week update-rd-tokens rd-user);
+my @utils = qw(get-rd-token rhrd-ws-login get-rd-week update-rd-tokens rd-user);
 
 WriteMakefile(
   NAME       => 'RHRD',
diff --git a/utils/get-rd-token b/utils/get-rd-token
index ff014c0..6965cab 100755
--- a/utils/get-rd-token
+++ b/utils/get-rd-token
@@ -52,7 +52,6 @@ if(defined $dbh) {
     print STDERR "$errorstring\n";
     exit 1;
   }
-  $token = '' unless($token);
   RHRD::rddb::closedb($dbh);
 } else {
   print STDERR "$errorstring\n";
diff --git a/utils/rd-user b/utils/rd-user
index 520a653..019f004 100755
--- a/utils/rd-user
+++ b/utils/rd-user
@@ -47,7 +47,7 @@ if(defined $dbh) {
     RHRD::rddb::closedb($dbh);
     exit $result;
   } elsif($cmd eq "add") {
-    my $token = mkpasswd(-length => 16, -minnum => 3, -minupper => 3, -minspecial => 2);
+    my $token = mkpasswd(-length => 16, -minnum => 3, -minupper => 3, -minspecial => 0);
     (my $cnt, undef, $errorstring) = RHRD::rddb::add_user($dbh, $username, $token);
     unless(defined $cnt) {
       print "$errorstring\n";
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
diff --git a/utils/update-rd-tokens b/utils/update-rd-tokens
index bcd5bb1..ba22110 100755
--- a/utils/update-rd-tokens
+++ b/utils/update-rd-tokens
@@ -48,7 +48,7 @@ if(defined $dbh) {
 
   foreach my $user (@users) {
     next if(exists($EXCLUDED_USERS{$user}));
-    my $token = mkpasswd(-length => 16, -minnum => 3, -minupper => 3, -minspecial => 2);
+    my $token = mkpasswd(-length => 16, -minnum => 3, -minupper => 3, -minspecial => 0);
     RHRD::rddb::set_token($dbh, $user, $token);
     print "$user -> $token\n";
   }
-- 
cgit v0.10.2