summaryrefslogtreecommitdiffstats
path: root/etc/inc/voucher.inc
diff options
context:
space:
mode:
authorErmal <eri@pfsense.org>2010-12-14 22:39:48 +0000
committerErmal <eri@pfsense.org>2010-12-14 22:39:48 +0000
commit666bc4d16174a67f72e3487f9b125ea890739fc0 (patch)
treed1683cf04978fa30f2a4cf728ff415185011d4d0 /etc/inc/voucher.inc
parenteaca40dffe3f8bd349163e04f4f0489978a40029 (diff)
downloadpfsense-666bc4d16174a67f72e3487f9b125ea890739fc0.zip
pfsense-666bc4d16174a67f72e3487f9b125ea890739fc0.tar.gz
Ticket #1087. Cleanup whitespace and also do not rely on having the db dirty flag set for backing up the dbs but always do this!
Diffstat (limited to 'etc/inc/voucher.inc')
-rw-r--r--etc/inc/voucher.inc115
1 files changed, 49 insertions, 66 deletions
diff --git a/etc/inc/voucher.inc b/etc/inc/voucher.inc
index 98a5340..59f4a98 100644
--- a/etc/inc/voucher.inc
+++ b/etc/inc/voucher.inc
@@ -88,21 +88,19 @@ EOF;
}
/*
- *Authenticate a voucher and return the remaining time credit in minutes
+ * Authenticate a voucher and return the remaining time credit in minutes
* if $test is set, don't mark the voucher as used nor add it to the list
* of active vouchers
+ * If $test is set, simply test the voucher. Don't change anything
+ * but return a more verbose error and result message back
*/
function voucher_auth($voucher_received, $test = 0) {
-
global $g, $config;
- // if $test is set, simply test the voucher. Don't change anything
- // but return a more verbose error and result message back
-
$voucherlck = lock('voucher');
// XMLRPC Call over to the master Voucher node
- $a_voucher = &$config['voucher'];
+ $a_voucher = &$config['voucher'];
if($a_voucher['vouchersyncdbip']) {
$syncip = $a_voucher['vouchersyncdbip'];
$syncport = $a_voucher['vouchersyncport'];
@@ -138,9 +136,9 @@ function voucher_auth($voucher_received, $test = 0) {
$result = exec("/usr/local/bin/voucher -c {$g['varetc_path']}/voucher.cfg -k {$g['varetc_path']}/voucher.public -- $v");
list($status, $roll, $nr) = explode(" ", $result);
if ($status == "OK") {
- if (!$first_voucher)
- {
- $first_voucher = $voucher; // store first voucher. Thats the one we give the timecredit
+ if (!$first_voucher) {
+ // store first voucher. Thats the one we give the timecredit
+ $first_voucher = $voucher;
$first_voucher_roll = $roll;
}
// check if we have this ticket on a registered roll for this ticket
@@ -191,7 +189,7 @@ function voucher_auth($voucher_received, $test = 0) {
} else {
$test_result[] = "Access granted for $total_minutes Minutes in total.";
}
- unlock($voucherlck);
+ unlock($voucherlck);
return $test_result;
}
@@ -200,7 +198,7 @@ function voucher_auth($voucher_received, $test = 0) {
// the user wouldn't know that he used at least one invalid voucher.
if ($error) {
- unlock($voucherlck);
+ unlock($voucherlck);
if ($total_minutes > 0) // probably not needed, but want to make sure
$total_minutes = 0; // we only report -1 (expired) or 0 (no access)
return $total_minutes; // well, at least one voucher had errors. Say NO ACCESS
@@ -240,9 +238,6 @@ function voucher_auth($voucher_received, $test = 0) {
$active_vouchers[$first_voucher_roll][$first_voucher] = "$timestamp,$minutes";
voucher_write_active_db($roll, $active_vouchers[$first_voucher_roll]);
- // mark the DB's as dirty.
- mark_subsystem_dirty('voucher');
-
unlock($voucherlck);
return $total_minutes;
@@ -275,13 +270,13 @@ function voucher_configure() {
$pubkey = base64_decode($config['voucher']['publickey']);
$fd = fopen("{$g['varetc_path']}/voucher.public", "w");
if (!$fd) {
- printf("Error: cannot write voucher.public\n");
+ log_error("Voucher error: cannot write voucher.public\n");
unlock($voucherlck);
return 1;
}
- chmod("{$g['varetc_path']}/voucher.public", 0600);
fwrite($fd, $pubkey);
fclose($fd);
+ @chmod("{$g['varetc_path']}/voucher.public", 0600);
/* write config file used by voucher binary to decode vouchers */
$fd = fopen("{$g['varetc_path']}/voucher.cfg", "w");
@@ -290,9 +285,9 @@ function voucher_configure() {
unlock($voucherlck);
return 1;
}
- chmod("{$g['varetc_path']}/voucher.cfg", 0600);
fwrite($fd, "{$config['voucher']['rollbits']},{$config['voucher']['ticketbits']},{$config['voucher']['checksumbits']},{$config['voucher']['magic']},{$config['voucher']['charset']}\n");
fclose($fd);
+ @chmod("{$g['varetc_path']}/voucher.cfg", 0600);
unlock($voucherlck);
if ($g['booting']) {
@@ -332,53 +327,48 @@ function voucher_configure() {
* Bitstring must already be base64_encoded!
*/
function voucher_write_used_db($roll, $vdb) {
-
- global $g;
-
- $fd = fopen("{$g['vardb_path']}/voucher_used_$roll.db", "w");
- if ($fd) {
- fwrite($fd, $vdb . "\n");
- fclose($fd);
- } else {
- voucher_log(LOG_ERR, "cant write {$g['vardb_path']}/voucher_used_$roll.db");
- }
+ global $g;
+
+ $fd = fopen("{$g['vardb_path']}/voucher_used_$roll.db", "w");
+ if ($fd) {
+ fwrite($fd, $vdb . "\n");
+ fclose($fd);
+ } else
+ voucher_log(LOG_ERR, "cant write {$g['vardb_path']}/voucher_used_$roll.db");
}
/* return assoc array of active vouchers with activation timestamp
* voucher is index.
*/
function voucher_read_active_db($roll) {
-
- global $g;
-
- $active = array();
- $dirty = 0;
- $file = "{$g['vardb_path']}/voucher_active_$roll.db";
- if (file_exists($file)) {
- $fd = fopen($file, "r");
- if ($fd) {
- while (!feof($fd)) {
- $line = trim(fgets($fd));
- if ($line) {
- list($voucher,$timestamp,$minutes) = explode(",", $line); // voucher,timestamp
- if ((($timestamp + 60*$minutes) - time()) > 0) {
- $active[$voucher] = "$timestamp,$minutes";
- } else {
- $dirty=1;
- }
- }
- }
- fclose($fd);
- if ($dirty) // if we found expired entries, lets save our snapshot
- voucher_write_active_db($roll, $active);
- }
- }
- return $active;
+ global $g;
+
+ $active = array();
+ $dirty = 0;
+ $file = "{$g['vardb_path']}/voucher_active_$roll.db";
+ if (file_exists($file)) {
+ $fd = fopen($file, "r");
+ if ($fd) {
+ while (!feof($fd)) {
+ $line = trim(fgets($fd));
+ if ($line) {
+ list($voucher,$timestamp,$minutes) = explode(",", $line); // voucher,timestamp
+ if ((($timestamp + 60*$minutes) - time()) > 0)
+ $active[$voucher] = "$timestamp,$minutes";
+ else
+ $dirty=1;
+ }
+ }
+ fclose($fd);
+ if ($dirty) // if we found expired entries, lets save our snapshot
+ voucher_write_active_db($roll, $active);
+ }
+ }
+ return $active;
}
/* store array of active vouchers back to DB */
function voucher_write_active_db($roll, $active) {
-
global $g;
$fd = fopen("{$g['vardb_path']}/voucher_active_$roll.db", "w");
@@ -391,7 +381,6 @@ function voucher_write_active_db($roll, $active) {
/* return how many vouchers are marked used on a roll */
function voucher_used_count($roll) {
-
global $g;
$bitstring = voucher_read_used_db($roll);
@@ -408,7 +397,6 @@ function voucher_used_count($roll) {
}
function voucher_read_used_db($roll) {
-
global $g;
$vdb = "";
@@ -426,10 +414,9 @@ function voucher_read_used_db($roll) {
}
function voucher_unlink_db($roll) {
-
global $g;
- unlink("{$g['vardb_path']}/voucher_used_$roll.db");
- unlink("{$g['vardb_path']}/voucher_active_$roll.db");
+ @unlink("{$g['vardb_path']}/voucher_used_$roll.db");
+ @unlink("{$g['vardb_path']}/voucher_active_$roll.db");
}
/* we share the log with captiveportal for now */
@@ -446,20 +433,15 @@ function voucher_log($priority, $message) {
* Called during reboot -> system_reboot_cleanup() and minicron
*/
function voucher_save_db_to_config() {
-
global $config, $g;
if (!isset($config['voucher']['enable']) || $config['voucher']['saveinterval'] == 0)
return; // no vouchers or don't want to save DB's
- if (!is_subsystem_dirty('voucher'))
- return; // nothing changed.
-
- $voucherlck = lock('voucher');
+ $voucherlck = lock('voucher', LOCK_EX);
// walk all active rolls and save runtime DB's to flash
$a_roll = &$config['voucher']['roll'];
-// foreach ($a_roll as $rollent) {
while (list($key, $value) = each($a_roll)) {
$rollent = &$a_roll[$key];
$roll = $rollent['number'];
@@ -478,8 +460,9 @@ function voucher_save_db_to_config() {
}
$rollent['active'] = $db;
}
- clear_subsystem_dirty('voucher');
+
unlock($voucherlck);
+
write_config();
return;
}
OpenPOWER on IntegriCloud