Marius Cramer
2014-03-11 60b70001fd59bed089dd78bec9a897ffd3916850
Implemented apache module check and mod_authz_compat warning for OpenSuSE
4 files modified
115 ■■■■ changed files
install/dist/lib/opensuse.lib.php 18 ●●●●● patch | view | raw | blame | history
install/install.php 1 ●●●● patch | view | raw | blame | history
install/lib/install.lib.php 70 ●●●●● patch | view | raw | blame | history
server/lib/classes/system.inc.php 26 ●●●●● patch | view | raw | blame | history
install/dist/lib/opensuse.lib.php
@@ -29,7 +29,23 @@
*/
class installer_dist extends installer_base {
    public function __construct() {
        //** check apache modules */
        $mods = getapachemodules();
        if(in_array('authz_compat', $mods, true)) {
            swriteln($inst->lng('    WARNING! You are using mod_authz_compat.'));
            swriteln($inst->lng('    Please make sure that your apache config uses the new auth syntax:'));
            swriteln($inst->lng('    <Directory />'));
            swriteln($inst->lng('    Options None'));
            swriteln($inst->lng('    AllowOverride None'));
            swriteln($inst->lng('    Require all denied'));
            swriteln($inst->lng('    </Directory>'."\n"));
            swriteln($inst->lng('    If it uses the old syntax (deny from all) ISPConfig would fail to work.'));
        }
    }
    public function configure_mailman($status = 'insert') {
        global $conf;
install/install.php
@@ -87,6 +87,7 @@
//** Installer Interface
//****************************************************************************************************
$inst = new installer();
swriteln($inst->lng('    Following will be a few questions for primary configuration so be careful.'));
swriteln($inst->lng('    Default values are in [brackets] and can be accepted with <ENTER>.'));
swriteln($inst->lng('    Tap in "quit" (without the quotes) to stop the installer.'."\n\n"));
install/lib/install.lib.php
@@ -830,29 +830,55 @@
}
function getapacheversion($get_minor = false) {
        global $app;
        $cmd = '';
        if(is_installed('apache2ctl')) $cmd = 'apache2ctl -v';
        elseif(is_installed('apachectl')) $cmd = 'apachectl -v';
        else {
            $app->log("Could not check apache version, apachectl not found.", LOGLEVEL_WARN);
            return '2.2';
        }
        exec($cmd, $output, $return_var);
        if($return_var != 0 || !$output[0]) {
            $app->log("Could not check apache version, apachectl did not return any data.", LOGLEVEL_WARN);
            return '2.2';
        }
        if(preg_match('/version:\s*Apache\/(\d+)(\.(\d+)(\.(\d+))*)?(\D|$)/i', $output[0], $matches)) {
            return $matches[1] . (isset($matches[3]) ? '.' . $matches[3] : '') . (isset($matches[5]) && $get_minor == true ? '.' . $matches[5] : '');
        } else {
            $app->log("Could not check apache version, did not find version string in apachectl output.", LOGLEVEL_WARN);
            return '2.2';
    global $app;
    $cmd = '';
    if(is_installed('apache2ctl')) $cmd = 'apache2ctl -v';
    elseif(is_installed('apachectl')) $cmd = 'apachectl -v';
    else {
        $app->log("Could not check apache version, apachectl not found.", LOGLEVEL_WARN);
        return '2.2';
    }
    exec($cmd, $output, $return_var);
    if($return_var != 0 || !$output[0]) {
        $app->log("Could not check apache version, apachectl did not return any data.", LOGLEVEL_WARN);
        return '2.2';
    }
    if(preg_match('/version:\s*Apache\/(\d+)(\.(\d+)(\.(\d+))*)?(\D|$)/i', $output[0], $matches)) {
        return $matches[1] . (isset($matches[3]) ? '.' . $matches[3] : '') . (isset($matches[5]) && $get_minor == true ? '.' . $matches[5] : '');
    } else {
        $app->log("Could not check apache version, did not find version string in apachectl output.", LOGLEVEL_WARN);
        return '2.2';
    }
}
function getapachemodules() {
    global $app;
    $cmd = '';
    if(is_installed('apache2ctl')) $cmd = 'apache2ctl -t -D DUMP_MODULES';
    elseif(is_installed('apachectl')) $cmd = 'apachectl -t -D DUMP_MODULES';
    else {
        $app->log("Could not check apache modules, apachectl not found.", LOGLEVEL_WARN);
        return array();
    }
    exec($cmd, $output, $return_var);
    if($return_var != 0 || !$output[0]) {
        $app->log("Could not check apache modules, apachectl did not return any data.", LOGLEVEL_WARN);
        return array();
    }
    $modules = array();
    for($i = 0; $i < count($output); $i++) {
        if(preg_match('/^\s*(\w+)\s+\((shared|static)\)\s*$/', $output[$i], $matches)) {
            $modules[] = $matches[1];
        }
    }
    return $modules;
}
?>
server/lib/classes/system.inc.php
@@ -1759,6 +1759,32 @@
        }
    }
    function getapachemodules() {
        global $app;
        $cmd = '';
        if(is_installed('apache2ctl')) $cmd = 'apache2ctl -t -D DUMP_MODULES';
        elseif(is_installed('apachectl')) $cmd = 'apachectl -t -D DUMP_MODULES';
        else {
            $app->log("Could not check apache modules, apachectl not found.", LOGLEVEL_WARN);
            return array();
        }
        exec($cmd, $output, $return_var);
        if($return_var != 0 || !$output[0]) {
            $app->log("Could not check apache modules, apachectl did not return any data.", LOGLEVEL_WARN);
            return array();
        }
        $modules = array();
        for($i = 0; $i < count($output); $i++) {
            if(preg_match('/^\s*(\w+)\s+\((shared|static)\)\s*$/', $output[$i], $matches)) {
                $modules[] = $matches[1];
            }
        }
        return $modules;
    }
}
?>