#!/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 lib "../lib/"; use RHRD::rddb; # this is ridiculous but makes it a little harder to create/remove users... # if ($> != 0 ) { # print STDERR "this must be run as root!\n"; # exit 1; # } sub print_usage { print STDERR "Usage: rhrd-sanity-check\n"; } my $num_args = $#ARGV + 1; if($num_args > 0) { print_usage(); exit(1); } my $ret = 0; sub check_groups { my ($ctx) = @_; print "groups:\n"; my @groups = RHRD::rddb::list_groups($ctx); if(!defined $groups[0] && defined $groups[1]) { print STDERR "$groups[1]: $groups[2]"; return 1; } for my $group (@groups) { next if($group eq $ctx->{'config'}{'specialgroups'}{'system'}); next if($group eq $ctx->{'config'}{'specialgroups'}{'shows'}); next if($group eq $ctx->{'config'}{'specialgroups'}{'allshows'}); next if($group eq $ctx->{'config'}{'specialgroups'}{'allpools'}); next if($group eq $ctx->{'config'}{'specialgroups'}{'alljingles'}); my @users = RHRD::rddb::get_group_members($ctx, $group); if(!defined $users[0] && defined $users[1]) { print STDERR "$users[2]\n"; return 1; } if(scalar @users == 0) { print " group: '" . $group . "' has no members\n"; } } return 0; } sub check_logs { my ($ctx) = @_; print "logs:\n"; print " check not yet implemtned!!\n"; } sub check_dropboxes { my ($ctx) = @_; print "dropboxes:\n"; print " check not yet implemtned!!\n"; } my ($ctx, $status, $errorstring) = RHRD::rddb::init(); if(defined $ctx) { check_groups($ctx); print "\n"; check_logs($ctx); print "\n"; check_dropboxes($ctx); RHRD::rddb::destroy($ctx); } else { print STDERR "$errorstring\n"; $ret = 1; } exit $ret;