diff --git a/src/bin/captiveportal_gather_stats.php b/src/bin/captiveportal_gather_stats.php index 922ea7556..0b08c6d92 100644 --- a/src/bin/captiveportal_gather_stats.php +++ b/src/bin/captiveportal_gather_stats.php @@ -49,7 +49,7 @@ $concurrent_users = $no_users; $current_user_count = 0; /* tmp file to use to store old data (per interface)*/ -$tmpfile = "{$g['vardb_path']}/captiveportal_online_users"; +$tmpfile = '/var/db/captiveportal_online_users'; if(empty($type)) exit; diff --git a/src/captiveportal/index.php b/src/captiveportal/index.php index 85787338f..44ebd3c2c 100644 --- a/src/captiveportal/index.php +++ b/src/captiveportal/index.php @@ -121,10 +121,11 @@ if ($macfilter || $passthrumac) { } /* find out if we need RADIUS + RADIUSMAC or not */ -if (file_exists("{$g['vardb_path']}/captiveportal_radius_{$cpzone}.db")) { +if (file_exists("/var/db/captiveportal_radius_{$cpzone}.db")) { $radius_enable = TRUE; - if (isset($cpcfg['radmac_enable'])) + if (isset($cpcfg['radmac_enable'])) { $radmac_enable = TRUE; + } } /* find radius context */ diff --git a/src/etc/inc/auth.inc b/src/etc/inc/auth.inc index ff8dd33c8..bb6c87874 100644 --- a/src/etc/inc/auth.inc +++ b/src/etc/inc/auth.inc @@ -203,7 +203,7 @@ function index_groups() $groupindex = array(); - if (is_array($config['system']['group'])) { + if (isset($config['system']['group'])) { $i = 0; foreach($config['system']['group'] as $groupent) { $groupindex[$groupent['name']] = $i; @@ -261,7 +261,7 @@ function &getGroupEntryByGID($gid) { global $config; - if (is_array($config['system']['group'])) { + if (isset($config['system']['group'])) { foreach ($config['system']['group'] as & $group) { if ($group['gid'] == $gid) { return $group; @@ -342,9 +342,8 @@ function local_sync_accounts() * If a crontab was created to user, pw userdel will be interactive and * can cause issues. Just remove crontab before run it when necessary */ - unlink_if_exists("/var/cron/tabs/{$line[0]}"); - $cmd = "/usr/sbin/pw userdel -n '{$line[0]}'"; - mwexec($cmd); + @unlink("/var/cron/tabs/{$line[0]}"); + mwexecf('/usr/sbin/pw userdel -n %s', $line[0]); } pclose($fd); } @@ -364,8 +363,7 @@ function local_sync_accounts() if ($line[2] > 65000) { continue; } - $cmd = "/usr/sbin/pw groupdel {$line[2]}"; - mwexec($cmd); + mwexecf('/usr/sbin/pw groupdel %s', $line[2]); } pclose($fd); } @@ -477,12 +475,11 @@ function local_user_set(&$user) $keys = base64_decode($user['authorizedkeys']); @file_put_contents("{$user_home}/.ssh/authorized_keys", $keys); @chown("{$user_home}/.ssh/authorized_keys", $user_name); - } else - unlink_if_exists("{$user_home}/.ssh/authorized_keys"); - - $un = $lock_account ? "" : "un"; - exec("/usr/sbin/pw {$un}lock {$user_name} -q"); + } else { + @unlink("{$user_home}/.ssh/authorized_keys"); + } + mwexecf('/usr/sbin/pw %s %s', array($lock_account ? 'lock' : 'unlock', $user_name), true); } function local_user_del($user) @@ -518,7 +515,8 @@ function local_user_get_groups($user, $all = false) global $config; $groups = array(); - if (!is_array($config['system']['group'])) { + + if (!isset($config['system']['group'])) { return $groups; } @@ -540,8 +538,9 @@ function local_user_set_groups($user, $new_groups = null) { global $config, $groupindex; - if (!is_array($config['system']['group'])) + if (!isset($config['system']['group'])) { return; + } $cur_groups = local_user_get_groups($user, true); $mod_groups = array(); @@ -610,33 +609,26 @@ function local_group_set($group, $reset = false) { $group_name = $group['name']; $group_gid = $group['gid']; - $group_members = "''"; - if (!$reset && !empty($group['member']) && count($group['member']) > 0) - $group_members = implode(",",$group['member']); + $group_members = ''; - /* read from group db */ - $fd = popen("/usr/sbin/pw groupshow {$group_name} 2>&1", "r"); - $pwread = fgets($fd); - pclose($fd); + if (!$reset && !empty($group['member']) && count($group['member']) > 0) { + $group_members = implode(',', $group['member']); + } - /* determine add or mod */ - if (!strncmp($pwread, "pw:", 3)) - $group_op = "groupadd"; - else - $group_op = "groupmod"; - - /* add or mod group db */ - $cmd = "/usr/sbin/pw {$group_op} {$group_name} -g {$group_gid} -M {$group_members} 2>&1"; - - mwexec($cmd); + $ret = mwexecf('/usr/sbin/pw groupshow %s', $group_name, true); + if ($ret) { + $group_op = 'groupadd'; + } else { + $group_op = 'groupmod'; + } + mwexecf('/usr/sbin/pw %s %s -g %s -M %s', array($group_op, $group_name, $group_gid, $group_members)); } function local_group_del($group) { /* delete from group db */ - $cmd = "/usr/sbin/pw groupdel {$group['name']}"; - mwexec($cmd); + mwexecf('/usr/sbin/pw groupdel %s', $group['name']); } function ldap_test_connection($authcfg) @@ -680,33 +672,31 @@ function ldap_test_connection($authcfg) function ldap_setup_caenv($authcfg) { - global $g; - require_once("certs.inc"); unset($caref); + if (empty($authcfg['ldap_caref']) || !strstr($authcfg['ldap_urltype'], "SSL")) { putenv('LDAPTLS_REQCERT=never'); return; - } else { - $caref = lookup_ca($authcfg['ldap_caref']); - if (!$caref) { - log_error(sprintf(gettext("LDAP: Could not lookup CA by reference for host %s."), $authcfg['ldap_caref'])); - /* XXX: Prevent for credential leaking since we cannot setup the CA env. Better way? */ - putenv('LDAPTLS_REQCERT=hard'); - return; - } - if (!is_dir("{$g['varrun_path']}/certs")) - @mkdir("{$g['varrun_path']}/certs"); - if (file_exists("{$g['varrun_path']}/certs/{$caref['refid']}.ca")) - @unlink("{$g['varrun_path']}/certs/{$caref['refid']}.ca"); - file_put_contents("{$g['varrun_path']}/certs/{$caref['refid']}.ca", base64_decode($caref['crt'])); - @chmod("{$g['varrun_path']}/certs/{$caref['refid']}.ca", 0600); - putenv('LDAPTLS_REQCERT=hard'); - /* XXX: Probably even the hashed link should be created for this? */ - putenv("LDAPTLS_CACERTDIR={$g['varrun_path']}/certs"); - putenv("LDAPTLS_CACERT={$g['varrun_path']}/certs/{$caref['refid']}.ca"); } + + $caref = lookup_ca($authcfg['ldap_caref']); + if (!$caref) { + log_error(sprintf(gettext("LDAP: Could not lookup CA by reference for host %s."), $authcfg['ldap_caref'])); + /* XXX: Prevent for credential leaking since we cannot setup the CA env. Better way? */ + putenv('LDAPTLS_REQCERT=hard'); + return; + } + + @mkdir("/var/run/certs"); + @unlink("/var/run/certs/{$caref['refid']}.ca"); + file_put_contents("/var/run/certs/{$caref['refid']}.ca", base64_decode($caref['crt'])); + @chmod("/var/run/certs/{$caref['refid']}.ca", 0600); + putenv('LDAPTLS_REQCERT=hard'); + /* XXX: Probably even the hashed link should be created for this? */ + putenv("LDAPTLS_CACERTDIR=/var/run/certs"); + putenv("LDAPTLS_CACERT=/var/run/certs/{$caref['refid']}.ca"); } function ldap_test_bind($authcfg) @@ -1261,12 +1251,14 @@ function auth_get_authserver_list() { return $list; } -function getUserGroups($username, $authcfg) { +function getUserGroups($username, $authcfg) +{ global $config; $allowed_groups = array(); + $member_groups = array(); - switch($authcfg['type']) { + switch ($authcfg['type']) { case 'ldap': $allowed_groups = @ldap_get_groups($username, $authcfg); break; @@ -1278,11 +1270,12 @@ function getUserGroups($username, $authcfg) { break; } - $member_groups = array(); - if (is_array($config['system']['group'])) { - foreach ($config['system']['group'] as $group) - if (in_array($group['name'], $allowed_groups)) + if (isset($config['system']['group'])) { + foreach ($config['system']['group'] as $group) { + if (in_array($group['name'], $allowed_groups)) { $member_groups[] = $group['name']; + } + } } return $member_groups; @@ -1459,5 +1452,3 @@ function http_basic_auth($http_auth_header) // not authenticated return false; } - -?> diff --git a/src/etc/inc/captiveportal.inc b/src/etc/inc/captiveportal.inc index f006395fa..196242ede 100644 --- a/src/etc/inc/captiveportal.inc +++ b/src/etc/inc/captiveportal.inc @@ -212,7 +212,7 @@ function portal_allow($clientip,$clientmac,$username,$password = null, $attribut else $message = 0; - include("{$g['varetc_path']}/captiveportal-{$cpzone}-logout.html"); + include("/var/etc/captiveportal-{$cpzone}-logout.html"); } else { // TODO: remove? should be handled by login page @@ -401,11 +401,11 @@ function captiveportal_configure_zone($cpcfg) { echo "Starting captive portal({$cpcfg['zone']})... "; /* remove old information */ - unlink_if_exists("{$g['vardb_path']}/captiveportal{$cpzone}.db"); + @unlink("/var/db/captiveportal{$cpzone}.db"); } else captiveportal_syslog("Reconfiguring captive portal({$cpcfg['zone']})."); /* kill any running minicron */ - killbypid("{$g['varrun_path']}/cp_prunedb_{$cpzone}.pid"); + killbypid("/var/run/cp_prunedb_{$cpzone}.pid"); /* initialize minicron interval value */ $croninterval = $cpcfg['croninterval'] ? $cpcfg['croninterval'] : 60; @@ -422,7 +422,7 @@ function captiveportal_configure_zone($cpcfg) { $htmltext = get_default_captive_portal_html(); } - $fd = @fopen("{$g['varetc_path']}/captiveportal_{$cpzone}.html", "w"); + $fd = @fopen("/var/etc/captiveportal_{$cpzone}.html", "w"); if ($fd) { // Special case handling. Convert so that we can pass this page // through the PHP interpreter later without clobbering the vars. @@ -450,7 +450,7 @@ function captiveportal_configure_zone($cpcfg) { $errtext = get_default_captive_portal_html(); } - $fd = @fopen("{$g['varetc_path']}/captiveportal-{$cpzone}-error.html", "w"); + $fd = @fopen("/var/etc/captiveportal-{$cpzone}-error.html", "w"); if ($fd) { // Special case handling. Convert so that we can pass this page // through the PHP interpreter later without clobbering the vars. @@ -510,7 +510,7 @@ document.location.href=""; EOD; } - $fd = @fopen("{$g['varetc_path']}/captiveportal-{$cpzone}-logout.html", "w"); + $fd = @fopen("/var/etc/captiveportal-{$cpzone}-logout.html", "w"); if ($fd) { fwrite($fd, $logouttext); fclose($fd); @@ -521,22 +521,26 @@ EOD; captiveportal_write_elements(); /* kill any running mini_httpd */ - killbypid("{$g['varrun_path']}/lighty-{$cpzone}-CaptivePortal.pid"); - killbypid("{$g['varrun_path']}/lighty-{$cpzone}-CaptivePortal-SSL.pid"); + killbypid("/var/run/lighty-{$cpzone}-CaptivePortal.pid"); + killbypid("/var/run/lighty-{$cpzone}-CaptivePortal-SSL.pid"); /* start up the webserving daemon */ captiveportal_init_webgui_zone($cpcfg); /* Kill any existing prunecaptiveportal processes */ - if (file_exists("{$g['varrun_path']}/cp_prunedb_{$cpzone}.pid")) - killbypid("{$g['varrun_path']}/cp_prunedb_{$cpzone}.pid"); + killbypid("/var/run/cp_prunedb_{$cpzone}.pid"); /* start pruning process (interval defaults to 60 seconds) */ - mwexec("/usr/local/bin/minicron $croninterval {$g['varrun_path']}/cp_prunedb_{$cpzone}.pid " . - "/usr/local/etc/rc.prunecaptiveportal {$cpzone}"); + mwexecf( + '/usr/local/bin/minicron %s %s %s %s', + $croninterval, + "/var/run/cp_prunedb_{$cpzone}.pid", + '/usr/local/etc/rc.prunecaptiveportal', + $cpzone + ); /* generate radius server database */ - unlink_if_exists("{$g['vardb_path']}/captiveportal_radius_{$cpzone}.db"); + @unlink("/var/db/captiveportal_radius_{$cpzone}.db"); captiveportal_init_radius_servers(); if (file_exists("/var/run/booting")) { @@ -546,12 +550,12 @@ EOD; } } else { - killbypid("{$g['varrun_path']}/lighty-{$cpzone}-CaptivePortal.pid"); - killbypid("{$g['varrun_path']}/lighty-{$cpzone}-CaptivePortal-SSL.pid"); - killbypid("{$g['varrun_path']}/cp_prunedb_{$cpzone}.pid"); - @unlink("{$g['varetc_path']}/captiveportal_{$cpzone}.html"); - @unlink("{$g['varetc_path']}/captiveportal-{$cpzone}-error.html"); - @unlink("{$g['varetc_path']}/captiveportal-{$cpzone}-logout.html"); + killbypid("/var/run/lighty-{$cpzone}-CaptivePortal.pid"); + killbypid("/var/run/lighty-{$cpzone}-CaptivePortal-SSL.pid"); + killbypid("/var/run/cp_prunedb_{$cpzone}.pid"); + @unlink("/var/etc/captiveportal_{$cpzone}.html"); + @unlink("/var/etc/captiveportal-{$cpzone}-error.html"); + @unlink("/var/etc/captiveportal-{$cpzone}-logout.html"); captiveportal_radius_stop_all(); @@ -561,13 +565,12 @@ EOD; } /* remove old information */ - unlink_if_exists("{$g['vardb_path']}/captiveportal{$cpzone}.db"); - unlink_if_exists("{$g['vardb_path']}/captiveportal_radius_{$cpzone}.db"); - unlink_if_exists("{$g['vardb_path']}/captiveportal_{$cpzone}.rules"); + @unlink("/var/db/captiveportal{$cpzone}.db"); + @unlink("/var/db/captiveportal_radius_{$cpzone}.db"); + @unlink("/var/db/captiveportal_{$cpzone}.rules"); /* Release allocated pipes for this zone */ captiveportal_free_dnrules(); - if (empty($config['captiveportal'])) set_single_sysctl("net.link.ether.ipfw", "0"); else { @@ -634,7 +637,7 @@ function captiveportal_init_webgui_zone($cpcfg) } system_generate_lighty_config( - "{$g['varetc_path']}/lighty-{$cpzone}-CaptivePortal-SSL.conf", + "/var/etc/lighty-{$cpzone}-CaptivePortal-SSL.conf", $crt, $key, $ca, @@ -655,7 +658,7 @@ function captiveportal_init_webgui_zone($cpcfg) } system_generate_lighty_config( - "{$g['varetc_path']}/lighty-{$cpzone}-CaptivePortal.conf", + "/var/etc/lighty-{$cpzone}-CaptivePortal.conf", "", "", "", @@ -669,12 +672,12 @@ function captiveportal_init_webgui_zone($cpcfg) @unlink("{$g['varrun']}/lighty-{$cpzone}-CaptivePortal.pid"); /* attempt to start lighttpd */ - $res = mwexec("/usr/local/sbin/lighttpd -f {$g['varetc_path']}/lighty-{$cpzone}-CaptivePortal.conf"); + $res = mwexec("/usr/local/sbin/lighttpd -f /var/etc/lighty-{$cpzone}-CaptivePortal.conf"); /* fire up https instance */ if (isset($cpcfg['httpslogin'])) { @unlink("{$g['varrun']}/lighty-{$cpzone}-CaptivePortal-SSL.pid"); - $res = mwexec("/usr/local/sbin/lighttpd -f {$g['varetc_path']}/lighty-{$cpzone}-CaptivePortal-SSL.conf"); + $res = mwexec("/usr/local/sbin/lighttpd -f /var/etc/lighty-{$cpzone}-CaptivePortal-SSL.conf"); } } @@ -950,7 +953,7 @@ function captiveportal_init_radius_servers() { $radiuskey4 = $config['captiveportal'][$cpzone]['radiuskey4']; $cprdsrvlck = lock("captiveportalradius{$cpzone}", LOCK_EX); - $fd = @fopen("{$g['vardb_path']}/captiveportal_radius_{$cpzone}.db", "w"); + $fd = @fopen("/var/db/captiveportal_radius_{$cpzone}.db", "w"); if (!$fd) { captiveportal_syslog("Error: cannot open radius DB file in captiveportal_configure().\n"); unlock($cprdsrvlck); @@ -976,9 +979,9 @@ function captiveportal_get_radius_servers() { global $g, $cpzone; $cprdsrvlck = lock("captiveportalradius{$cpzone}"); - if (file_exists("{$g['vardb_path']}/captiveportal_radius_{$cpzone}.db")) { + if (file_exists("/var/db/captiveportal_radius_{$cpzone}.db")) { $radiusservers = array(); - $cpradiusdb = file("{$g['vardb_path']}/captiveportal_radius_{$cpzone}.db", + $cpradiusdb = file("/var/db/captiveportal_radius_{$cpzone}.db", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); if ($cpradiusdb) { foreach($cpradiusdb as $cpradiusentry) { @@ -1100,8 +1103,8 @@ function captiveportal_free_dnrules($rulenos_start = 2000, $rulenos_range_max = global $cpzone; $cpruleslck = lock("captiveportalrulesdn", LOCK_EX); - if (file_exists("{$g['vardb_path']}/captiveportaldn.rules")) { - $rules = unserialize(file_get_contents("{$g['vardb_path']}/captiveportaldn.rules")); + if (file_exists("/var/db/captiveportaldn.rules")) { + $rules = unserialize(file_get_contents("/var/db/captiveportaldn.rules")); $ridx = $rulenos_start; while ($ridx < $rulenos_range_max) { if ($rules[$ridx] == $cpzone) { @@ -1112,7 +1115,7 @@ function captiveportal_free_dnrules($rulenos_start = 2000, $rulenos_range_max = } else $ridx += 2; } - file_put_contents("{$g['vardb_path']}/captiveportaldn.rules", serialize($rules)); + file_put_contents("/var/db/captiveportaldn.rules", serialize($rules)); unset($rules); } unlock($cpruleslck); @@ -1123,8 +1126,8 @@ function captiveportal_get_next_dn_ruleno($rulenos_start = 2000, $rulenos_range_ $cpruleslck = lock("captiveportalrulesdn", LOCK_EX); $ruleno = 0; - if (file_exists("{$g['vardb_path']}/captiveportaldn.rules")) { - $rules = unserialize(file_get_contents("{$g['vardb_path']}/captiveportaldn.rules")); + if (file_exists("/var/db/captiveportaldn.rules")) { + $rules = unserialize(file_get_contents("/var/db/captiveportaldn.rules")); $ridx = $rulenos_start; while ($ridx < $rulenos_range_max) { if (empty($rules[$ridx])) { @@ -1144,7 +1147,7 @@ function captiveportal_get_next_dn_ruleno($rulenos_start = 2000, $rulenos_range_ $rulenos_start++; $rules[$rulenos_start] = $cpzone; } - file_put_contents("{$g['vardb_path']}/captiveportaldn.rules", serialize($rules)); + file_put_contents("/var/db/captiveportaldn.rules", serialize($rules)); unlock($cpruleslck); unset($rules); @@ -1155,12 +1158,12 @@ function captiveportal_free_dn_ruleno($ruleno) { global $config, $g; $cpruleslck = lock("captiveportalrulesdn", LOCK_EX); - if (file_exists("{$g['vardb_path']}/captiveportaldn.rules")) { - $rules = unserialize(file_get_contents("{$g['vardb_path']}/captiveportaldn.rules")); + if (file_exists("/var/db/captiveportaldn.rules")) { + $rules = unserialize(file_get_contents("/var/db/captiveportaldn.rules")); $rules[$ruleno] = false; $ruleno++; $rules[$ruleno] = false; - file_put_contents("{$g['vardb_path']}/captiveportaldn.rules", serialize($rules)); + file_put_contents("/var/db/captiveportaldn.rules", serialize($rules)); unset($rules); } unlock($cpruleslck); @@ -1315,9 +1318,9 @@ function portal_reply_page($redirurl, $type = null, $message = null, $clientmac header("Location: {$redirurl}"); return; } else if ($type == "login") - $htmltext = get_include_contents("{$g['varetc_path']}/captiveportal_{$cpzone}.html"); + $htmltext = get_include_contents("/var/etc/captiveportal_{$cpzone}.html"); else - $htmltext = get_include_contents("{$g['varetc_path']}/captiveportal-{$cpzone}-error.html"); + $htmltext = get_include_contents("/var/etc/captiveportal-{$cpzone}-error.html"); $cpcfg = $config['captiveportal'][$cpzone]; @@ -1445,8 +1448,8 @@ function captiveportal_read_usedmacs_db() { global $g, $cpzone; $cpumaclck = lock("captiveusedmacs{$cpzone}"); - if (file_exists("{$g['vardb_path']}/captiveportal_usedmacs_{$cpzone}.db")) { - $usedmacs = file("{$g['vardb_path']}/captiveportal_usedmacs_{$cpzone}.db", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); + if (file_exists("/var/db/captiveportal_usedmacs_{$cpzone}.db")) { + $usedmacs = file("/var/db/captiveportal_usedmacs_{$cpzone}.db", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); if (!$usedmacs) $usedmacs = array(); } else @@ -1460,7 +1463,7 @@ function captiveportal_write_usedmacs_db($usedmacs) { global $g, $cpzone; $cpumaclck = lock("captiveusedmacs{$cpzone}", LOCK_EX); - @file_put_contents("{$g['vardb_path']}/captiveportal_usedmacs_{$cpzone}.db", implode("\n", $usedmacs)); + @file_put_contents("/var/db/captiveportal_usedmacs_{$cpzone}.db", implode("\n", $usedmacs)); unlock($cpumaclck); } diff --git a/src/etc/inc/config.console.inc b/src/etc/inc/config.console.inc index 9605477cf..baa6faed5 100644 --- a/src/etc/inc/config.console.inc +++ b/src/etc/inc/config.console.inc @@ -333,26 +333,34 @@ EODD; if(isset($config['nat'])) unset($config['nat']); } - if (preg_match($g['wireless_regex'], $lanif)) { + + if (match_wireless_interface($lanif)) { if (is_array($config['interfaces']['lan']) && - (!is_array($config['interfaces']['lan']['wireless']))) + (!is_array($config['interfaces']['lan']['wireless']))) { $config['interfaces']['lan']['wireless'] = array(); + } } else { - if (isset($config['interfaces']['lan'])) + if (isset($config['interfaces']['lan'])) { unset($config['interfaces']['lan']['wireless']); + } } - if (!is_array($config['interfaces']['wan'])) + if (!is_array($config['interfaces']['wan'])) { $config['interfaces']['wan'] = array(); + } + $config['interfaces']['wan']['if'] = $wanif; $config['interfaces']['wan']['enable'] = true; - if (preg_match($g['wireless_regex'], $wanif)) { + + if (match_wireless_interface($wanif)) { if (is_array($config['interfaces']['wan']) && - (!is_array($config['interfaces']['wan']['wireless']))) + (!is_array($config['interfaces']['wan']['wireless']))) { $config['interfaces']['wan']['wireless'] = array(); + } } else { - if (isset($config['interfaces']['wan'])) + if (isset($config['interfaces']['wan'])) { unset($config['interfaces']['wan']['wireless']); + } } for ($i = 0; $i < count($optif); $i++) { @@ -361,8 +369,7 @@ EODD; $config['interfaces']['opt' . ($i+1)]['if'] = $optif[$i]; - /* wireless interface? */ - if (preg_match($g['wireless_regex'], $optif[$i])) { + if (match_wireless_interface($optif[$i])) { if (!is_array($config['interfaces']['opt' . ($i+1)]['wireless'])) $config['interfaces']['opt' . ($i+1)]['wireless'] = array(); } else { diff --git a/src/etc/inc/config.lib.inc b/src/etc/inc/config.lib.inc index a2b2481da..84a2a3fc6 100644 --- a/src/etc/inc/config.lib.inc +++ b/src/etc/inc/config.lib.inc @@ -177,7 +177,7 @@ function write_config($desc = 'Unknown', $backup = true) $cnf->save($revision_info, $backup); } catch (OPNsense\Core\ConfigException $e) { // write failure - log_error(gettext("WARNING: Config contents could not be save. Could not open file!")); + log_error(gettext("WARNING: Config contents could not be saved. Could not open file!")); file_notice('config.xml', sprintf("%s\n", gettext('Unable to open /conf/config.xml for writing in write_config()'))); return -1; } @@ -204,7 +204,7 @@ function write_config($desc = 'Unknown', $backup = true) ******/ function reset_factory_defaults($sync = true) { - unlink_if_exists('/conf/*' . $filename); + mwexec('/bin/rm -r /conf/*'); disable_security_checks(); setup_serial_port(); @@ -217,7 +217,8 @@ function reset_factory_defaults($sync = true) } } -function config_restore($conffile) { +function config_restore($conffile) +{ global $config, $g; if (!file_exists($conffile)) diff --git a/src/etc/inc/dyndns.class b/src/etc/inc/dyndns.class index 0319f6445..4734e740d 100644 --- a/src/etc/inc/dyndns.class +++ b/src/etc/inc/dyndns.class @@ -139,7 +139,7 @@ $this->_cacheFile = "/conf/dyndns_{$dnsIf}{$dnsService}" . escapeshellarg($dnsHost) . "{$dnsID}.cache"; $this->_cacheFile_v6 = "/conf/dyndns_{$dnsIf}{$dnsService}" . escapeshellarg($dnsHost) . "{$dnsID}_v6.cache"; - $this->_debugFile = "{$g['varetc_path']}/dyndns_{$dnsIf}{$dnsService}" . escapeshellarg($dnsHost) . "{$dnsID}.debug"; + $this->_debugFile = "/var/etc/dyndns_{$dnsIf}{$dnsService}" . escapeshellarg($dnsHost) . "{$dnsID}.debug"; $this->_curlIpresolveV4 = $curlIpresolveV4; $this->_curlSslVerifypeer = $curlSslVerifypeer; diff --git a/src/etc/inc/filter.inc b/src/etc/inc/filter.inc index 9ba0b621f..1a71aa9c5 100644 --- a/src/etc/inc/filter.inc +++ b/src/etc/inc/filter.inc @@ -100,14 +100,13 @@ function flowtable_configure() { } } -function filter_pflog_start($kill_first = false) +function filter_pflog_start() { - global $config, $g; - - if (!file_exists("{$g['varrun_path']}/filterlog.pid") || - !isvalidpid("{$g['varrun_path']}/filterlog.pid")) { - mwexec("/usr/local/sbin/filterlog -i pflog0 -p {$g['varrun_path']}/filterlog.pid"); + if (isvalidpid('/var/run/filterlog.pid')) { + return; } + + mwexec('/usr/local/sbin/filterlog -i pflog0 -p /var/run/filterlog.pid'); } /* reload filter async */ @@ -319,31 +318,32 @@ function filter_configure_sync($delete_states_if_needed = true) } # If we are not using bogonsv6 then we can remove any bogonsv6 table from the running pf (if the table is not there, the kill is still fine). - if (!is_bogonsv6_used()) - $_grbg = exec("/sbin/pfctl -t bogonsv6 -T kill 2>/dev/null"); + if (!is_bogonsv6_used()) { + $_grbg = exec('/sbin/pfctl -t bogonsv6 -T kill 2>/dev/null'); + } update_filter_reload_status(gettext("Starting up layer7 daemon")); layer7_start_l7daemon(); - if(!empty($filterdns)) { - @file_put_contents("{$g['varetc_path']}/filterdns.conf", implode("", $filterdns)); + if (!empty($filterdns)) { + @file_put_contents('/var/etc/filterdns.conf', implode('', $filterdns)); unset($filterdns); - if (isvalidpid("{$g['varrun_path']}/filterdns.pid")) { - killbypid("{$g['varrun_path']}/filterdns.pid", 'HUP'); + if (isvalidpid('/var/run/filterdns.pid')) { + killbypid('/var/run/filterdns.pid', 'HUP'); } else { /* * FilterDNS has three debugging levels. The default choosen is 1. * Availabe are level 2 and greater then 2. */ - if (isset($config['system']['aliasesresolveinterval']) && is_numeric($config['system']['aliasesresolveinterval'])) + if (isset($config['system']['aliasesresolveinterval']) && is_numeric($config['system']['aliasesresolveinterval'])) { $resolve_interval = $config['system']['aliasesresolveinterval']; - else + } else { $resolve_interval = 300; - mwexec("/usr/local/sbin/filterdns -p {$g['varrun_path']}/filterdns.pid -i {$resolve_interval} -c {$g['varetc_path']}/filterdns.conf -d 1"); + } + mwexec("/usr/local/sbin/filterdns -p /var/run/filterdns.pid -i {$resolve_interval} -c /var/etc/filterdns.conf -d 1"); } } else { - killbypid("{$g['varrun_path']}/filterdns.pid"); - @unlink("{$g['varrun_path']}/filterdns.pid"); + killbypid('/var/run/filterdns.pid'); } /* run items scheduled for after filter configure run */ diff --git a/src/etc/inc/globals.inc b/src/etc/inc/globals.inc index ea078c4fc..553e3f76c 100644 --- a/src/etc/inc/globals.inc +++ b/src/etc/inc/globals.inc @@ -37,9 +37,6 @@ $g = array( "factory_shipped_password" => "opnsense", "dhcpd_chroot_path" => "/var/dhcpd", "unbound_chroot_path" => "/var/unbound", - "varrun_path" => "/var/run", - "varetc_path" => "/var/etc", - "vardb_path" => "/var/db", "admin_group" => "admins", "product_name" => "OPNsense", "product_website" => "https://opnsense.org", @@ -48,7 +45,6 @@ $g = array( "product_copyright_years" => "2014 - 2015", "product_copyright_url" => "https://www.deciso.com/", "latest_config" => "11.2", - "wireless_regex" => "/^(ndis|wi|ath|an|ral|ural|iwi|wlan|rum|run|bwn|zyd|mwl|bwi|ipw|iwn|malo|uath|upgt|urtw|wpi)/", ); /* IP TOS flags */ @@ -114,3 +110,9 @@ function is_install_media() return true; } + +function match_wireless_interface($int) +{ + $wireless_regex = '/^(ndis|wi|ath|an|ral|ural|iwi|wlan|rum|run|bwn|zyd|mwl|bwi|ipw|iwn|malo|uath|upgt|urtw|wpi)/'; + return preg_match($wireless_regex, $int); +} diff --git a/src/etc/inc/gwlb.inc b/src/etc/inc/gwlb.inc index a347d18da..c55c44abc 100644 --- a/src/etc/inc/gwlb.inc +++ b/src/etc/inc/gwlb.inc @@ -48,20 +48,22 @@ function return_apinger_defaults() { * Creates monitoring configuration file and * adds appropriate static routes. */ -function setup_gateways_monitor() { +function setup_gateways_monitor() +{ global $config, $g; $gateways_arr = return_gateways_array(); if (!is_array($gateways_arr)) { log_error("No gateways to monitor. Apinger will not be run."); - killbypid("{$g['varrun_path']}/apinger.pid"); - @unlink("{$g['varrun_path']}/apinger.status"); + killbypid('/var/run/apinger.pid'); + @unlink('/var/run/apinger.status'); return; } $apinger_debug = ""; - if (isset($config['system']['apinger_debug'])) + if (isset($config['system']['apinger_debug'])) { $apinger_debug = "debug on"; + } $apinger_default = return_apinger_defaults(); $apingerconfig = << $item) { if (stripos($item['command'], $cron_cmd_file) !== false) @@ -1443,10 +1444,10 @@ function getMPDCRONSettings($pppif) { } function handle_pppoe_reset($post_array) { - global $config, $g; + global $config; $pppif = "{$post_array['type']}{$post_array['ptpid']}"; - $cron_cmd_file = "{$g['varetc_path']}/pppoe_restart_{$pppif}"; + $cron_cmd_file = "/var/etc/pppoe_restart_{$pppif}"; if (!is_array($config['cron']['item'])) $config['cron']['item'] = array(); @@ -1455,14 +1456,17 @@ function handle_pppoe_reset($post_array) { // reset cron items if necessary and return if (empty($post_array['pppoe-reset-type'])) { - if (isset($itemhash)) + if (isset($itemhash)) { unset($config['cron']['item'][$itemhash['ID']]); - killbypid("{$g['varrun_path']}/cron.pid", 'HUP'); + } + killbypid('/var/run/cron.pid', 'HUP'); return; } - if (empty($itemhash)) + if (empty($itemhash)) { $itemhash = array(); + } + $item = array(); if (isset($post_array['pppoe-reset-type']) && $post_array['pppoe-reset-type'] == "custom") { $item['minute'] = $post_array['pppoe_resetminute']; @@ -1524,8 +1528,9 @@ function handle_pppoe_reset($post_array) { * This function can configure PPPoE, MLPPP (PPPoE), PPTP. * It writes the mpd config file to /var/etc every time the link is opened. */ -function interface_ppps_configure($interface) { - global $config, $g; +function interface_ppps_configure($interface) +{ + global $config; /* Return for unassigned interfaces. This is a minimum requirement. */ if (empty($config['interfaces'][$interface])) @@ -1535,12 +1540,12 @@ function interface_ppps_configure($interface) { return 0; // mpd5 requires a /var/spool/lock directory for PPP modem links. - if(!is_dir("/var/spool/lock")) { - mkdir("/var/spool/lock", 0777, true); - } + @mkdir("/var/spool/lock", 0777, true); + // mpd5 modem chat script expected in the same directory as the mpd_xxx.conf files - if (!file_exists("{$g['varetc_path']}/mpd.script")) - @symlink("/usr/local/sbin/mpd.script", "{$g['varetc_path']}/mpd.script"); + if (!file_exists('/var/etc/mpd.script')) { + symlink('/usr/local/sbin/mpd.script', '/var/etc/mpd.script'); + } if (is_array($config['ppps']['ppp']) && count($config['ppps']['ppp'])) { foreach ($config['ppps']['ppp'] as $pppid => $ppp) { @@ -1563,8 +1568,9 @@ function interface_ppps_configure($interface) { $descr = isset($ifcfg['descr']) ? $ifcfg['descr'] : strtoupper($interface); echo "starting {$pppif} link..."; // Do not re-configure the interface if we are booting and it's already been started - if(file_exists("{$g['varrun_path']}/{$ppp['type']}_{$interface}.pid")) + if (isvalidproc("/var/run/{$ppp['type']}_{$interface}.pid")) { return 0; + } } $ports = explode(',',$ppp['ports']); @@ -1886,9 +1892,9 @@ EOD; /* Generate mpd.conf. If mpd_[interface].conf exists in the conf path, then link to it instead of generating a fresh conf file. */ if (file_exists("/conf/mpd_{$interface}.conf")) - @symlink("/conf/mpd_{$interface}.conf", "{$g['varetc_path']}/mpd_{$interface}.conf"); + @symlink("/conf/mpd_{$interface}.conf", "/var/etc/mpd_{$interface}.conf"); else { - $fd = fopen("{$g['varetc_path']}/mpd_{$interface}.conf", "w"); + $fd = fopen("/var/etc/mpd_{$interface}.conf", "w"); if (!$fd) { log_error(sprintf(gettext("Error: cannot open mpd_%s.conf in interface_ppps_configure().%s"), $interface, "\n")); return 0; @@ -1911,13 +1917,12 @@ EOD; } /* clean up old lock files */ - foreach($ports as $port) { - if(file_exists("{$g['var_path']}/spool/lock/LCK..{$port}")) - unlink("{$g['var_path']}/spool/lock/LCK..{$port}"); + foreach ($ports as $port) { + @unlink("/var/spool/lock/LCK..{$port}"); } /* fire up mpd */ - mwexec("/usr/local/sbin/mpd5 -b -k -d {$g['varetc_path']} -f mpd_{$interface}.conf -p {$g['varrun_path']}/" . + mwexec("/usr/local/sbin/mpd5 -b -k -d /var/etc -f mpd_{$interface}.conf -p /var/run/" . escapeshellarg($ppp['type']) . "_{$interface}.pid -s ppp " . escapeshellarg($ppp['type']) . "client"); // Check for PPPoE periodic reset request @@ -1960,7 +1965,7 @@ EOD; function interfaces_carp_setup() { - global $g, $config; + global $config; if (file_exists("/var/run/booting")) { echo gettext("Configuring CARP settings..."); @@ -2026,15 +2031,14 @@ function interfaces_carp_setup() function interface_proxyarp_configure($interface = '') { - global $config, $g; + global $config; /* kill any running choparp */ if (empty($interface)) - killbyname("choparp"); + killbyname('choparp'); else { $vipif = get_real_interface($interface); - if (file_exists("{$g['varrun_path']}/choparp_{$vipif}.pid")) - killbypid("{$g['varrun_path']}/choparp_{$vipif}.pid"); + killbypid("/var/run/choparp_{$vipif}.pid"); } $paa = array(); @@ -2090,16 +2094,18 @@ function interface_proxyarp_configure($interface = '') } } -function interface_ipalias_cleanup($interface, $inet = "inet4") { - global $g, $config; +function interface_ipalias_cleanup($interface, $inet = 'inet4') +{ + global $config; - if (is_array($config['virtualip']['vip'])) { + if (isset($config['virtualip']['vip'])) { foreach ($config['virtualip']['vip'] as $vip) { - if ($vip['mode'] == "ipalias" && $vip['interface'] == $interface) { - if ($inet == "inet6" && is_ipaddrv6($vip['subnet'])) + if ($vip['mode'] == 'ipalias' && $vip['interface'] == $interface) { + if ($inet == 'inet6' && is_ipaddrv6($vip['subnet'])) { interface_vip_bring_down($vip); - else if ($inet == "inet4" && is_ipaddrv4($vip['subnet'])) + } elseif ($inet == 'inet4' && is_ipaddrv4($vip['subnet'])) { interface_vip_bring_down($vip); + } } } } @@ -2107,10 +2113,11 @@ function interface_ipalias_cleanup($interface, $inet = "inet4") { function interfaces_vips_configure($interface = '') { - global $g, $config; + global $config; $paa = array(); - if(is_array($config['virtualip']['vip'])) { + + if (isset($config['virtualip']['vip'])) { $carp_setuped = false; $anyproxyarp = false; foreach ($config['virtualip']['vip'] as $vip) { @@ -2163,7 +2170,7 @@ function interface_ipalias_configure(&$vip) { function interface_carp_configure(&$vip) { - global $config, $g; + global $config; if ($vip['mode'] != 'carp') { return; @@ -2217,8 +2224,10 @@ function interface_carp_configure(&$vip) return $realif; } -function interface_wireless_clone($realif, $wlcfg) { - global $config, $g; +function interface_wireless_clone($realif, $wlcfg) +{ + global $config; + /* Check to see if interface has been cloned as of yet. * If it has not been cloned then go ahead and clone it. */ @@ -2281,8 +2290,9 @@ function interface_wireless_clone($realif, $wlcfg) { return true; } -function interface_sync_wireless_clones(&$ifcfg, $sync_changes = false) { - global $config, $g; +function interface_sync_wireless_clones(&$ifcfg, $sync_changes = false) +{ + global $config; $shared_settings = array('standard', 'turbo', 'protmode', 'txpower', 'channel', 'diversity', 'txantenna', 'rxantenna', 'distance', @@ -2361,7 +2371,7 @@ function interface_wireless_configure($if, &$wl, &$wlcfg) { */ // Remove script file - unlink_if_exists("/tmp/{$if}_setup.sh"); + @unlink("/tmp/{$if}_setup.sh"); // Clone wireless nic if needed. interface_wireless_clone($if, $wl); @@ -2523,7 +2533,7 @@ function interface_wireless_configure($if, &$wl, &$wlcfg) { case 'bss': if (isset($wlcfg['wpa']['enable'])) { $wpa .= << /tmp/{$wanif}_output 2> /tmp/{$wanif}_error_output"); + mwexec("/sbin/dhclient -c /var/etc/dhclient_{$interface}.conf {$wanif} > /tmp/{$wanif}_output 2> /tmp/{$wanif}_error_output"); return 0; } @@ -4038,41 +4052,47 @@ function DHCP_Config_File_Substitutions($wancfg, $wanif, $dhclientconf) { return $dhclientconf; } -function interfaces_group_setup() { +function interfaces_group_setup() +{ global $config; - if (!is_array($config['ifgroups']['ifgroupentry'])) + if (!isset($config['ifgroups']['ifgroupentry'])) { return; - - foreach ($config['ifgroups']['ifgroupentry'] as $groupar) - interface_group_setup($groupar); - - return; -} - -function interface_group_setup(&$groupname /* The parameter is an array */) { - global $config; - - if (!is_array($groupname)) - return; - $members = explode(" ", $groupname['members']); - foreach($members as $ifs) { - $realif = get_real_interface($ifs); - if ($realif) - mwexec("/sbin/ifconfig {$realif} group {$groupname['ifname']}"); } - return; + foreach ($config['ifgroups']['ifgroupentry'] as $groupar) { + interface_group_setup($groupar); + } } -function is_interface_group($if) { +function interface_group_setup(&$groupname) +{ global $config; - if (is_array($config['ifgroups']['ifgroupentry'])) - foreach ($config['ifgroups']['ifgroupentry'] as $groupentry) { - if ($groupentry['ifname'] === $if) - return true; + if (!is_array($groupname)) { + return; + } + + $members = explode(" ", $groupname['members']); + foreach ($members as $ifs) { + $realif = get_real_interface($ifs); + if ($realif) { + mwexec("/sbin/ifconfig {$realif} group {$groupname['ifname']}"); } + } +} + +function is_interface_group($if) +{ + global $config; + + if (isset($config['ifgroups']['ifgroupentry'])) { + foreach ($config['ifgroups']['ifgroupentry'] as $groupentry) { + if ($groupentry['ifname'] === $if) { + return true; + } + } + } return false; } @@ -4316,10 +4336,11 @@ function get_real_interface($interface = "wan", $family = "all", $realv6iface = case 'ppp': case 'l2tp': case 'pptp': - if( is_array($cfg['wireless']) || preg_match($g['wireless_regex'], $cfg['if'])) + if (isset($cfg['wireless']) || match_wireless_interface($cfg['if'])) { $wanif = interface_get_wireless_clone($cfg['if']); - else + } else { $wanif = $cfg['if']; + } break; default: switch ($cfg['ipaddr']) { @@ -4338,10 +4359,11 @@ function get_real_interface($interface = "wan", $family = "all", $realv6iface = } break; default: - if( is_array($cfg['wireless']) || preg_match($g['wireless_regex'], $cfg['if'])) + if (isset($cfg['wireless']) || match_wireless_interface($cfg['if'])) { $wanif = interface_get_wireless_clone($cfg['if']); - else + } else { $wanif = $cfg['if']; + } break; } break; @@ -4350,10 +4372,11 @@ function get_real_interface($interface = "wan", $family = "all", $realv6iface = // Wireless cloned NIC support (FreeBSD 8+) // interface name format: $parentnic_wlanparentnic# // example: ath0_wlan0 - if( (isset($cfg['wireless']) && is_array($cfg['wireless'])) || preg_match($g['wireless_regex'], $cfg['if'])) + if (isset($cfg['wireless']) || match_wireless_interface($cfg['if'])) { $wanif = interface_get_wireless_clone($cfg['if']); - else + } else { $wanif = $cfg['if']; + } } break; } @@ -5030,19 +5053,22 @@ function is_altq_capable($int) * RESULT * $tmp - Returns if an interface is wireless ******/ -function is_interface_wireless($interface) { +function is_interface_wireless($interface) +{ global $config, $g; $friendly = convert_real_interface_to_friendly_interface_name($interface); - if(!isset($config['interfaces'][$friendly]['wireless'])) { - if (preg_match($g['wireless_regex'], $interface)) { - if (isset($config['interfaces'][$friendly])) + if (!isset($config['interfaces'][$friendly]['wireless'])) { + if (match_wireless_interface($interface)) { + if (isset($config['interfaces'][$friendly])) { $config['interfaces'][$friendly]['wireless'] = array(); + } return true; } return false; - } else - return true; + } + + return true; } function get_wireless_modes($interface) { @@ -5162,10 +5188,9 @@ function is_jumbo_capable($iface) { return false; } -function interface_setup_pppoe_reset_file($pppif, $iface="") { - global $g; - - $cron_file = "{$g['varetc_path']}/pppoe_restart_{$pppif}"; +function interface_setup_pppoe_reset_file($pppif, $iface = '') +{ + $cron_file = "/var/etc/pppoe_restart_{$pppif}"; if(!empty($iface) && !empty($pppif)){ $cron_cmd = << diff --git a/src/etc/inc/openvpn.auth-user.php b/src/etc/inc/openvpn.auth-user.php index 3d70cdb62..17da3aa58 100644 --- a/src/etc/inc/openvpn.auth-user.php +++ b/src/etc/inc/openvpn.auth-user.php @@ -98,8 +98,8 @@ if (!$username || !$password) { /* Replaced by a sed with propper variables used below(ldap parameters). */ //