From 8d0da02c44468259ed688e93d6a9ab2d9cea1400 Mon Sep 17 00:00:00 2001 From: Christian Pointner 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 +# +# 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 . +# + +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