# HG changeset patch # User Matthias Förste # Date 1310461283 -7200 # Node ID 059036ddb06df0731b9cccb9a1cc91a8a80585ae # Parent 4227cf8872b8fb20abcf200e947d93642927133e moved cgi script to cgi-bin; cgi script should work now diff -r 4227cf8872b8 -r 059036ddb06d Build.PL --- a/Build.PL Tue Jul 12 10:58:31 2011 +0200 +++ b/Build.PL Tue Jul 12 11:01:23 2011 +0200 @@ -41,6 +41,10 @@ 'POSIX' => 0, 'String::MkPasswd' => 0 }, - script_files => [glob 'bin/*'] + script_files => [glob 'bin/*'], + cgi_files => { map { /\.(bak|orig)$/ ? () : ($_ => $_) } glob 'cgi-bin/*' } ); +$build->add_build_element('cgi'); +$build->install_path( + 'cgi-bin' => $build->original_prefix($build->installdirs) . '/lib/cgi-bin'); $build->create_build_script; diff -r 4227cf8872b8 -r 059036ddb06d bin/dav-htuseradd.cgi --- a/bin/dav-htuseradd.cgi Tue Jul 12 10:58:31 2011 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,80 +0,0 @@ -#!/usr/bin/perl - -# Copyright (C) 2011 Matthias Förste -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program 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 General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -# Matthias Förste - -use warnings; - -#use CGI::Fast; -#use POSIX; - -while (my $q = new CGI::Fast) { - - print $q->header(-charset => 'UTF-8'); - print $q->start_html( - -title => $0, - -bgcolor => "white", - ); - - my ($user, $expiry) = ( - $q->param('user'), - $q->param('expiry') - ); - - print $q->start_form, 'New User' => $q->textfield('user'), 'Expiry' => $q->textfield('expiry'), $q->submit, $q->end_form - unless defined $user or defined $expiry; - - $expiry ||= $defaults->{expiry}; - if (_validate $q, $user, $expiry) { - - my $t = POSIX::strftime '%Y%m%d%H%M%S', time + 86400 * $expiry; - my @at_cmd = ('at', $t - - - } else { - _error ($q, 'invalid input'); - } - - print $q->end_html; - -} - -sub _validate { - - my ($u, $e) = @_; - - return unless $u =~ /^[[:alpha:]_]+$/; - return unless $e =~ /^[0-9]+$/; - return unless $e >= $defaults->{expiry_min} and $e <= $defaults->{expiry_max}; - - return 1; - -} - -sub _notice { - - my ($q, @n) = @_; - print @_; - -} - -sub _error { - - my ($q, @n) = @_; - print @_; - -} diff -r 4227cf8872b8 -r 059036ddb06d cgi-bin/dav-htuseradd.cgi --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cgi-bin/dav-htuseradd.cgi Tue Jul 12 11:01:23 2011 +0200 @@ -0,0 +1,64 @@ +#!/usr/bin/perl + +# Copyright (C) 2011 Matthias Förste +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# Matthias Förste + +use warnings; + +use CGI::Fast; +use Ius::Dav::Htpasswd qw(mkpasswd readconfig useradd); + +while (my $q = new CGI::Fast) { + + print $q->header(-charset => 'UTF-8'); + print $q->start_html( + -title => $0, + -bgcolor => "white", + ); + + my ($user, $pass, $expiry) = ( + $q->param('user'), + $q->param('pass'), + $q->param('expiry') + ); + + unless (defined $user or defined $pass or defined $expiry) { + + print $q->start_form, + 'New User' => $q->textfield('user'), + 'Password' => $q->password_field('pass'), + 'Expiry' => $q->textfield('expiry'), + $q->submit, + $q->end_form; + + } else { + + my @cmd = (qw(sudo dav-htuseradd -u), $user); + push @cmd, '-e', $expiry if defined $expiry and $expiry ne ''; + + if (my $pass = qx(@cmd)) { + chomp $pass; + print $q->p($pass); + } else { + print $q->p('Something went wrong'); + } + + } + + print $q->end_html; + +}