#!/usr/local/bin/php
System: Package Manager: Install Package
$instpkg) $instpkgs[] = $instpkg['name']; foreach($pkg_config['packages']['package'] as $index => $available_package) { if(in_array($available_package['name'], $instpkgs)) { $packages_to_install[] = $index; $output_static .= "Adding " . $package['name'] . " to installation array.\n"; update_output_window($output_static); fwrite($fd_log, "Adding (" . $counter . ") " . $package['name'] . " to package installation array.\n" . $status); } } } else { /* * Push the desired package id onto the install packages array */ fwrite($fd_log, "Single package installation started.\n"); $packages_to_install[] = $_GET['id']; } /* * Loop through packages_to_install, installing needed packages */ foreach ($packages_to_install as $id) { fwrite($fd_log, "Begin package ${id}\n"); $pkg_config = parse_xml_config_pkg("{$g['tmp_path']}/pkg_config.xml", "pfsensepkgs"); /* * install the package */ // Ensure directories are in place for pkg_add. safe_mkdir("{$g['www_path']}/ext/Services", 0755); safe_mkdir("{$g['www_path']}/ext/System", 0755); safe_mkdir("{$g['www_path']}/ext/Interfaces", 0755); safe_mkdir("{$g['www_path']}/ext/Firewall", 0755); safe_mkdir("{$g['www_path']}/ext/VPN", 0755); safe_mkdir("{$g['www_path']}/ext/Status", 0755); safe_mkdir("{$g['www_path']}/ext/Diagnostics", 0755); safe_mkdir("/usr/local/pkg", 0755); $a_out = &$pkg_config['packages']['package']; if($pkg_config['packages']['package'][$id]['verifyinstalledpkg'] <> "") $package_to_verify = $pkg_config['packages']['package'][$id]['verifyinstalledpkg']; else $package_to_verify = $pkg_config['packages']['package'][$id]['name']; $pkgent = array(); $pkgent['name'] = $pkg_config['packages']['package'][$id]['name']; $pkgent['descr'] = $pkg_config['packages']['package'][$id]['descr']; $pkgent['category'] = $pkg_config['packages']['package'][$id]['category']; $pkgent['version'] = $pkg_config['packages']['package'][$id]['version']; $pkgent['depends_on_package'] = $a_out[$id]['depends_on_package']; $pkgent['depends_on_package_base_url'] = $a_out[$id]['depends_on_package_base_url']; $pkgent['pfsense_package'] = $a_out[$id]['pfsense_package']; $pkgent['pfsense_package_base_url'] = $a_out[$id]['pfsense_package_base_url']; $pkgent['configurationfile'] = $a_out[$id]['configurationfile']; if($pkg_config['packages']['package'][$id]['logging']) { // logging facilities. $pkgent['logging']['facility'] = $pkg_config['packages']['package'][$id]['logging']['facility']; $pkgent['logging']['logfile_name'] = $pkg_config['packages']['package'][$id]['logging']['logfile_name']; mwexec("/usr/sbin/clog -i -s 32768 {$g['varlog_path']}" . $pkgent['logging']['logfile_name']); chmod($g['varlog_path'] . $pkgent['logging']['logfile_name'], 0600); fwrite($fd_log, "Adding text to file /etc/syslog.conf\n"); add_text_to_file("/etc/syslog.conf", $pkgent['logging']['facilityname'] . "\t\t\t" . $pkgent['logging']['logfilename']); mwexec("/usr/bin/killall -HUP syslogd"); } $a_out = &$config['packages']['package']; // save item to installedpkgs fwrite($fd_log, "Begining (" . $id. ") " . $pkgent['name'] . " package installation.\n" . $status); log_error("Begining (" . $id. ") " . $pkgent['name'] . " package installation."); $static_status = "Beginning package installation for " . $pkgent['name'] . "..."; update_status($static_status); if($pkg_config['packages']['package'][$id]['config_file'] <> "") { $static_output .= "Downloading package configuration file... "; download_file_with_progress_bar($pkg_config['packages']['package'][$id]['config_file'], "/usr/local/pkg/" . substr(strrchr($pkg_config['packages']['package'][$id]['config_file'], '/'), 1)); fwrite($fd_log, "Downloading configuration file " . $pkg_config['packages']['package'][$id]['config_file'] . "...\n"); if(!file_exists("/usr/local/pkg/" . substr(strrchr($pkg_config['packages']['package'][$id]['config_file'], '/'), 1))) { fwrite($fd_log, "ERROR! Could not fetch " . $pkg_config['packages']['package'][$id]['config_file']); $static_output .= "failed!\n\nInstallation aborted."; update_output_window($static_output); echo "