To improve the user experience, the configuration part of generating new vouchers has been reworked.
Signed-off-by: Alexander Marx alexander.marx@ipfire.org --- html/cgi-bin/captive.cgi | 187 +++++++++++++++++++++-------------------------- langs/de/cgi-bin/de.pl | 4 +- langs/en/cgi-bin/en.pl | 4 +- 3 files changed, 88 insertions(+), 107 deletions(-)
diff --git a/html/cgi-bin/captive.cgi b/html/cgi-bin/captive.cgi index 50f4795..a8add4d 100755 --- a/html/cgi-bin/captive.cgi +++ b/html/cgi-bin/captive.cgi @@ -58,11 +58,6 @@ unless (-e $voucherout) { system("touch $voucherout"); }
#actions if ($cgiparams{'ACTION'} eq "$Lang::tr{'save'}"){ - #Check Expiretime - if($cgiparams{'EXP_HOUR'}+$cgiparams{'EXP_DAY'}+$cgiparams{'EXP_WEEK'}+$cgiparams{'EXP_MONTH'} == 0 && $cgiparams{'UNLIMITED'} == ''){ - $errormessage=$Lang::tr{'Captive noexpiretime'}; - } - my $file = $cgiparams{'uploaded_file'}; if ($file){ #Check if extension is png @@ -76,11 +71,6 @@ if ($cgiparams{'ACTION'} eq "$Lang::tr{'save'}"){ $settings{'ENABLE_GREEN'} = $cgiparams{'ENABLE_GREEN'}; $settings{'ENABLE_BLUE'} = $cgiparams{'ENABLE_BLUE'}; $settings{'AUTH'} = $cgiparams{'AUTH'}; - $settings{'EXPIRE'} = $cgiparams{'EXP_HOUR'}+$cgiparams{'EXP_DAY'}+$cgiparams{'EXP_WEEK'}+$cgiparams{'EXP_MONTH'}; - $settings{'EXP_HOUR'} = $cgiparams{'EXP_HOUR'}; - $settings{'EXP_DAY'} = $cgiparams{'EXP_DAY'}; - $settings{'EXP_WEEK'} = $cgiparams{'EXP_WEEK'}; - $settings{'EXP_MONTH'} = $cgiparams{'EXP_MONTH'}; $settings{'TITLE'} = $cgiparams{'TITLE'}; $settings{'UNLIMITED'} = $cgiparams{'UNLIMITED'};
@@ -108,14 +98,6 @@ if ($cgiparams{'ACTION'} eq "$Lang::tr{'save'}"){ } }
- #saves the Captiveportal settings to disk - if ($cgiparams{'UNLIMITED'} eq 'on'){ - $cgiparams{'EXP_HOUR'} = '0'; - $cgiparams{'EXP_DAY'} = '0'; - $cgiparams{'EXP_WEEK'} = '0'; - $cgiparams{'EXP_MONTH'} = '0'; - } - &General::writehash("$settingsfile", %settings);
#write Licensetext if defined @@ -135,9 +117,22 @@ if ($cgiparams{'ACTION'} eq "$Lang::tr{'save'}"){ } }
-if ($cgiparams{'ACTION'} eq "$Lang::tr{'Captive voucherout'}"){ +if ($cgiparams{'ACTION'} eq "$Lang::tr{'Captive genvoucher'}"){ #generates a voucher and writes it to /var/ipfire/voucher_out
+ #calculate expiredate + my $expire; + if ($settings{'UNLIMITED'} eq 'on'){ + $expire = $Lang::tr{'Captive nolimit'}; + }else{ + $settings{'EXPIRE'} = $cgiparams{'EXP_HOUR'}+$cgiparams{'EXP_DAY'}+$cgiparams{'EXP_WEEK'}+$cgiparams{'EXP_MONTH'}; + $expire = sub{sprintf '%02d.%02d.%04d %02d:%02d', $_[3], $_[4]+1, $_[5]+1900, $_[2], $_[1] }->(localtime(time()+$settings{'EXPIRE'})); + } + + #Check Expiretime + if($cgiparams{'EXP_HOUR'}+$cgiparams{'EXP_DAY'}+$cgiparams{'EXP_WEEK'}+$cgiparams{'EXP_MONTH'} == 0 && $cgiparams{'UNLIMITED'} == ''){ + $errormessage=$Lang::tr{'Captive noexpiretime'}; + } #check if we already have a voucher with same code &General::readhasharray("$voucherout", %voucherhash); foreach my $key (keys %voucherhash) { @@ -316,70 +311,6 @@ END print"<td>$Lang::tr{'Captive logo_set'}</td>"; print"<td><br>$Lang::tr{'no'}</td></tr>"; } - print"<tr><td>$Lang::tr{'Captive vouchervalid'}</td><td>"; - print "<br><table border='0' with=100%>"; - print "<th>$Lang::tr{'hours'}</th><th>$Lang::tr{'days'}</th><th>$Lang::tr{'weeks'}</th><th>$Lang::tr{'months'}</th>"; - - #print hour-dropdownbox - my $hrs=3600; - print "<tr><td><select name='EXP_HOUR' style='width:8em;'>"; - print "<option value='0' "; - print " selected='selected'" if ($settings{'EXP_HOUR'} eq '0'); - print ">--</option>"; - for (my $i = 1; $i<25; $i++){ - my $exp_sec = $i * $hrs; - print "<option value='$exp_sec' "; - print " selected='selected'" if ($settings{'EXP_HOUR'} eq $exp_sec); - print ">$i</option>"; - } - print "</td><td>"; - - #print day-dropdownbox - my $days=3600*24; - print "<select name='EXP_DAY' style='width:8em;'>"; - print "<option value='0' "; - print " selected='selected'" if ($settings{'EXP_DAY'} eq '0'); - print ">--</option>"; - for (my $i = 1; $i<8; $i++){ - my $exp_sec = $i * $days; - print "<option value='$exp_sec' "; - print " selected='selected'" if ($settings{'EXP_DAY'} eq $exp_sec); - print ">$i</option>"; - } - print "</td><td>"; - - #print week-dropdownbox - my $week=3600*24*7; - print "<select name='EXP_WEEK' style='width:8em;'>"; - print "<option value='0' "; - print " selected='selected'" if ($settings{'EXP_WEEK'} eq '0'); - print ">--</option>"; - for (my $i = 1; $i<5; $i++){ - my $exp_sec = $i * $week; - print "<option value='$exp_sec' "; - print " selected='selected'" if ($settings{'EXP_WEEK'} eq $exp_sec); - print ">$i</option>"; - } - print "</td><td>"; - - #print month-dropdownbox - my $month=3600*24*30; - print "<select name='EXP_MONTH' style='width:8em;'>"; - print "<option value='0' "; - print " selected='selected'" if ($settings{'EXP_MONTH'} eq '0'); - print ">--</option>"; - for (my $i = 1; $i<13; $i++){ - my $exp_sec = $i * $month; - print "<option value='$exp_sec' "; - print " selected='selected'" if ($settings{'EXP_MONTH'} eq $exp_sec); - print ">$i</option>"; - } - print "</td>"; - - print "<td> <input type='checkbox' name='UNLIMITED' $checked{'UNLIMITED'}{'on'} /></td><td> <b>$Lang::tr{'Captive nolimit'}</b></td>"; - - print "</tr></table>"; - print<<END <tr> <td> @@ -431,27 +362,77 @@ sub gencode(){
sub voucher(){ #show voucher part - #calculate expiredate - my $expire; - if ($settings{'UNLIMITED'} eq 'on'){ - $expire = $Lang::tr{'Captive nolimit'}; - }else{ - $expire = sub{sprintf '%02d.%02d.%04d %02d:%02d', $_[3], $_[4]+1, $_[5]+1900, $_[2], $_[1] }->(localtime(time()+$settings{'EXPIRE'})); - } - - &Header::openbox('100%', 'left', $Lang::tr{'Captive voucher'}); -print<<END - <form method='post' action='$ENV{'SCRIPT_NAME'}'> - <table class='tbl' width='100%'> - <tr> - <th align='center' width='20%'>$Lang::tr{'Captive voucher'}</th><th align='center' width='15%'>$Lang::tr{'Captive expire'}</th><th align='center' width='65%'>$Lang::tr{'remark'}</th></tr> -END -; - + &Header::openbox('100%', 'left', $Lang::tr{'Captive genvoucher'}); + print "<form method='post' action='$ENV{'SCRIPT_NAME'}'>"; + print "<table border='0' width='100%'>"; + print "<tr><td width='30%'><br>$Lang::tr{'Captive vouchervalid'}</td><td width='70%'><br>"; + + print "<table class='tbl' border='0' width='100%'>"; + print "<th>$Lang::tr{'hours'}</th><th>$Lang::tr{'days'}</th><th>$Lang::tr{'weeks'}</th><th>$Lang::tr{'months'}</th><th></th><th></th>"; + + #print hour-dropdownbox + my $hrs=3600; + print "<tr height='40px'><td><select name='EXP_HOUR' style='width:8em;'>"; + print "<option value='0' "; + print " selected='selected'" if ($settings{'EXP_HOUR'} eq '0'); + print ">--</option>"; + for (my $i = 1; $i<25; $i++){ + my $exp_sec = $i * $hrs; + print "<option value='$exp_sec' "; + print " selected='selected'" if ($settings{'EXP_HOUR'} eq $exp_sec); + print ">$i</option>"; + } + print "</td><td>"; + + #print day-dropdownbox + my $days=3600*24; + print "<select name='EXP_DAY' style='width:8em;'>"; + print "<option value='0' "; + print " selected='selected'" if ($settings{'EXP_DAY'} eq '0'); + print ">--</option>"; + for (my $i = 1; $i<8; $i++){ + my $exp_sec = $i * $days; + print "<option value='$exp_sec' "; + print " selected='selected'" if ($settings{'EXP_DAY'} eq $exp_sec); + print ">$i</option>"; + } + print "</td><td>"; + + #print week-dropdownbox + my $week=3600*24*7; + print "<select name='EXP_WEEK' style='width:8em;'>"; + print "<option value='0' "; + print " selected='selected'" if ($settings{'EXP_WEEK'} eq '0'); + print ">--</option>"; + for (my $i = 1; $i<5; $i++){ + my $exp_sec = $i * $week; + print "<option value='$exp_sec' "; + print " selected='selected'" if ($settings{'EXP_WEEK'} eq $exp_sec); + print ">$i</option>"; + } + print "</td><td>"; + + #print month-dropdownbox + my $month=3600*24*30; + print "<select name='EXP_MONTH' style='width:8em;'>"; + print "<option value='0' "; + print " selected='selected'" if ($settings{'EXP_MONTH'} eq '0'); + print ">--</option>"; + for (my $i = 1; $i<13; $i++){ + my $exp_sec = $i * $month; + print "<option value='$exp_sec' "; + print " selected='selected'" if ($settings{'EXP_MONTH'} eq $exp_sec); + print ">$i</option>"; + } + print "</td>"; + print "<td> <input type='checkbox' name='UNLIMITED' $checked{'UNLIMITED'}{'on'} /></td><td> <b>$Lang::tr{'Captive nolimit'}</b></td>"; + print "</tr></table>"; + print "</td></tr>"; + print "<tr><td><br>$Lang::tr{'remark'}</td><td><br><input type='text' style='width: 98%;' name='REMARK' align='left'></td></tr>"; + print "<tr><td> </td><td></td></tr></table><br><br>"; $cgiparams{'CODE'} = &gencode(); - print "<tr><td><center><b><font size='5'>$cgiparams{'CODE'}</font></b></center></td><td><center><font size='2'>$expire</font></center></td><td><input type='text' style='width: 96%;' name='REMARK' align='left'></td></tr>"; - print "</table><br>"; - print "<center><input type='submit' name='ACTION' value='$Lang::tr{'Captive voucherout'}'><input type='hidden' name='CODE' value='$cgiparams{'CODE'}'</center></form>"; + print "<div align='right'><input type='submit' name='ACTION' value='$Lang::tr{'Captive genvoucher'}'><input type='hidden' name='CODE' value='$cgiparams{'CODE'}'></form></div>"; + &Header::closebox(); if (! -z $voucherout) { &show_voucher_out();} if (! -z $clients) { &show_voucher_in_use();} diff --git a/langs/de/cgi-bin/de.pl b/langs/de/cgi-bin/de.pl index 3b400f4..def1ae5 100644 --- a/langs/de/cgi-bin/de.pl +++ b/langs/de/cgi-bin/de.pl @@ -33,9 +33,9 @@ 'Captive time' => 'Erlaubter Nutzungszeitraum nach Aktivierung (Stunden)', 'Captive title' => 'Titel der Anmeldeseite', 'Captive voactive' => 'Aktive Gutscheine', +'Captive genvoucher' => 'Gutschein generieren', 'Captive voucher' => 'Gutschein', -'Captive voucherout' => 'Gutschein ausgeben', -'Captive vouchervalid' => 'Verbindungszeitraum', +'Captive vouchervalid' => 'Erlaubter Zeitraum für Gutschein', 'Captive vout' => 'Ausgegebene Gutscheine', 'Captive wrong ext' => 'Die hochgeladene Datei hat den falschen Dateityp', 'Choose Rule' => 'Wählen Sie <u>eine</u> der untenstehenden Regeln aus.', diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl index c23470a..ace3f24 100644 --- a/langs/en/cgi-bin/en.pl +++ b/langs/en/cgi-bin/en.pl @@ -33,9 +33,9 @@ 'Captive time' => 'Access time post activation (hours)', 'Captive title' => 'Title of Login Page', 'Captive voactive' => 'Active Vouchers', +'Captive genvoucher' => 'Generate voucher', 'Captive voucher' => 'Voucher', -'Captive voucherout' => 'Ticket Transfer', -'Captive vouchervalid' => 'Connection time range', +'Captive vouchervalid' => 'Allowed time for this voucher', 'Captive vout' => 'Issued Vouchers', 'Captive wrong ext' => 'Uploaded file has wrong filetype', 'Choose Rule' => 'Choose <u>one</u> of the following rules.',