function installFramework( $comp_folder )
{
	$framework_folder = $comp_folder.'/framework/framework';
	$xml_name = 'plugins/system/nnframework.xml';
	$xml_file = $framework_folder.'/15/'.$xml_name;
	if ( !JFile::exists( $xml_file ) ) {
		return;
	}
	$xml_new = JApplicationHelper::parseXMLInstallFile( $xml_file );

	$do_install = 1;
	if ( $xml_new && isset( $xml_new['version'] ) ) {
		$do_install = 1;
		$xml_file = JPATH_SITE.'/'.$xml_name;
		if ( JFile::exists( $xml_file ) ) {
			$xml_current = JApplicationHelper::parseXMLInstallFile( $xml_file );
			$installed = ( $xml_current && isset( $xml_current['version'] ) );
			if ( $installed ) {
				$current_version = $xml_current['version'];
				$new_version = $xml_new['version'];
				$do_install = version_compare( $current_version, $new_version, '<=' );
			}
		}
	}

	$success = 1;
	if ( $do_install ) {
		$mainframe =& JFactory::getApplication();
		if ( !installFiles( $framework_folder ) ) {
			$mainframe->enqueueMessage( 'Could not install the NoNumber Framework extension', 'error' );
			$mainframe->enqueueMessage( 'Could not copy all files', 'error' );
			$success = 0;
		}
		if ( $success ) {
			$elements_folder = $comp_folder.'/framework/elements';
			if ( JFolder::exists( JPATH_SITE.'/plugins/system/nonumberelements' ) && JFolder::exists( $elements_folder ) ) {
				uninstallLanguages( 'nonumberelements' );
				if ( installFiles( $elements_folder ) ) {
					installExtension( 'nonumberelements', 'System - NoNumber! Elements', 'plugin', array( 'folder'=> 'system' ), 1 );
				}
			}
		}
	}

	if ( $success ) {
		installExtension( 'nnframework', 'System - NoNumber! Framework', 'plugin', array( 'folder'=> 'system' ), 1 );
	}
}
			$has_installed = $has_updated = 0;
			break;
		} else if ( $state == 2 ) {
			$has_updated = 1;
		} else {
			$has_installed = 1;
		}
	}
}

if ( !$has_installed && !$has_updated ) {
	$mainframe->enqueueMessage( JText::_( 'NNI_SOMETHING_HAS_GONE_WRONG_DURING_INSTALLATION_OF_THE_DATABASE_RECORDS' ), 'error' );
	uninstallInstaller();
}

if ( !installFiles( $comp_folder.'/extensions' ) ) {
	$mainframe->enqueueMessage( JText::_( 'NNI_COULD_NOT_COPY_ALL_FILES' ), 'error error_nonumber' );
	uninstallInstaller();
}

if ( !JV15 && !empty( $ids ) ) {
	$installer = JInstaller::getInstance();
	foreach ( $ids as $id ) {
		$installer->refreshManifestCache( (int) $id );
	}
}

$txt_installed = ( $has_installed ) ? JText::_( 'NNI_INSTALLED' ) : '';
$txt_installed .= ( $has_installed && $has_updated ) ? ' / ' : '';
$txt_installed .= ( $has_updated ) ? JText::_( 'NNI_UPDATED' ) : '';
$mainframe->set( '_messageQueue', '' );
Example #3
0
function buildConf($url, $data)
{
    global $proto, $debug, $purge;
    if ($data['dryrun'] && $debug) {
        echo fM("Dryrun mode (nothing will be written to disk)\n\n");
    }
    $raw_data = getPostData($url, $data);
    $raw_data = $data['compress'] ? @unserialize(gzuncompress($raw_data)) : @unserialize($raw_data);
    if (!is_array($raw_data)) {
        if ($debug) {
            echo fM($raw_data);
        }
        addLogEntry($raw_data);
        exit(1);
    }
    extract($raw_data, EXTR_SKIP);
    if (dirname($server_chroot_dir)) {
        $server_root_dir = $server_chroot_dir . $server_root_dir;
        $server_zones_dir = $server_chroot_dir . $server_zones_dir;
        $server_config_file = $server_chroot_dir . $server_config_file;
        foreach ($files as $filename => $contents) {
            $new_files[$server_chroot_dir . $filename] = $contents;
        }
        $files = $new_files;
        unset($new_files);
    }
    if ($debug) {
        foreach ($files as $filename => $contents) {
            echo str_repeat('=', 50) . "\n";
            echo $filename . ":\n";
            echo str_repeat('=', 50) . "\n";
            echo $contents . "\n\n";
        }
    }
    $runas = $server_run_as_predefined == 'as defined:' ? $server_run_as : $server_run_as_predefined;
    $chown_files = array($server_root_dir, $server_zones_dir);
    /** Remove previous files so there are no stale files */
    if ($purge || $purge_config_files == 'yes' && $server_update_config == 'conf') {
        /** Server config files */
        $path_parts = pathinfo($server_config_file);
        if (version_compare(PHP_VERSION, '5.2.0', '<')) {
            $path_parts['filename'] = str_replace('.' . $path_parts['extension'], '', $path_parts['basename']);
        }
        $config_file_pattern = $path_parts['dirname'] . DIRECTORY_SEPARATOR . $path_parts['filename'] . '.*';
        exec('ls ' . $config_file_pattern, $config_file_match);
        foreach ($config_file_match as $config_file) {
            deleteFile($config_file, $debug, $data['dryrun']);
        }
        /** Zone files */
        deleteFile($server_zones_dir, $debug, $data['dryrun']);
    }
    /** Install the new files */
    installFiles($runas, $chown_files, $files, $data['dryrun']);
    /** Reload the server */
    $message = "Reloading the server\n";
    if ($debug) {
        echo fM($message);
    }
    if (!$data['dryrun']) {
        addLogEntry($message);
        if (shell_exec('ps -A | grep named | grep -vc grep') > 0) {
            $rndc_actions = array('freeze', 'reload', 'thaw');
            /** Handle dynamic zones to support reloading */
            foreach ($rndc_actions as $action) {
                $last_line = system(findProgram('rndc') . " {$action} 2>&1", $retval);
                if ($retval) {
                    return processReloadFailure($last_line);
                }
            }
        } else {
            $message = "The server is not running - attempting to start it\n";
            if ($debug) {
                echo fM($message);
            }
            addLogEntry($message);
            $named_rc_script = getStartupScript();
            if ($named_rc_script === false) {
                $last_line = "Cannot locate the start script\n";
                $retval = true;
            } else {
                $last_line = system($named_rc_script . ' 2>&1', $retval);
            }
        }
        if ($retval) {
            return processReloadFailure($last_line);
        } else {
            /** Only update reloaded zones */
            $data['reload_domain_ids'] = $reload_domain_ids;
            if (!isset($server_build_all)) {
                $data['zone'] = 'update';
            }
            /** Update the server with a successful reload */
            $data['action'] = 'update';
            $raw_update = getPostData($url, $data);
            $raw_update = $data['compress'] ? @unserialize(gzuncompress($raw_update)) : @unserialize($raw_update);
            if ($debug) {
                echo $raw_update;
            }
        }
    }
    return true;
}
Example #4
0
function buildConf($url, $data)
{
    global $proto, $debug;
    if ($data['dryrun'] && $debug) {
        echo fM("Dryrun mode (nothing will be written to disk)\n\n");
    }
    $raw_data = getPostData($url, $data);
    $raw_data = $data['compress'] ? @unserialize(gzuncompress($raw_data)) : @unserialize($raw_data);
    if (!is_array($raw_data)) {
        if ($debug) {
            echo fM($raw_data);
        }
        addLogEntry($raw_data);
        exit(1);
    }
    if ($debug) {
        foreach ($raw_data['files'] as $filename => $contents) {
            echo str_repeat('=', 50) . "\n";
            echo $filename . ":\n";
            echo str_repeat('=', 50) . "\n";
            echo $contents . "\n\n";
        }
    }
    extract($raw_data, EXTR_SKIP);
    $runas = 'root';
    $chown_files = array($server_root_dir);
    /** Install the new files */
    installFiles($runas, $chown_files, $files, $data['dryrun']);
    $message = "Reloading the server\n";
    if ($debug) {
        echo fM($message);
    }
    $rc_script = str_replace('__FILE__', $server_config_file, getStartupScript($server_type));
    $message = "{$rc_script}\n";
    if ($debug) {
        echo fM($message);
    }
    if (!$data['dryrun']) {
        addLogEntry($message);
        $rc_script = str_replace('__FILE__', $server_config_file, getStartupScript($server_type));
        if ($rc_script === false) {
            $last_line = "Cannot locate the start script\n";
            if ($debug) {
                echo fM($last_line);
            }
            addLogEntry($last_line);
            $retval = true;
        } else {
            $last_line = system($rc_script . ' 2>&1', $retval);
            addLogEntry($last_line);
        }
        if ($retval) {
            $message = "There was an error reloading the firewall - please check the logs for details\n";
            if ($debug) {
                echo fM($message);
            }
            addLogEntry($message);
            return false;
        } else {
            /** Update the server with a successful reload */
            $data['action'] = 'update';
            $raw_update = getPostData($url, $data);
            $raw_update = $data['compress'] ? @unserialize(gzuncompress($raw_update)) : @unserialize($raw_update);
        }
    }
    return true;
}