| | |
| | | <?php |
| | | |
| | | /* |
| | | Copyright (c) 2007, Till Brehm, projektfarm Gmbh |
| | | Copyright (c) 2007-2012, Till Brehm, projektfarm Gmbh, Oliver Vogel www.muv.com |
| | | All rights reserved. |
| | | |
| | | Redistribution and use in source and binary forms, with or without modification, |
| | |
| | | |
| | | //* This function is called during ispconfig installation to determine |
| | | // if a symlink shall be created for this plugin. |
| | | function onInstall() { |
| | | public function onInstall() { |
| | | global $conf; |
| | | |
| | | return true; |
| | |
| | | This function is called when the plugin is loaded |
| | | */ |
| | | |
| | | function onLoad() { |
| | | public function onLoad() { |
| | | global $app; |
| | | |
| | | /* |
| | | Register for the events |
| | | */ |
| | | |
| | | //* Mailboxes |
| | | $app->plugins->registerEvent('software_update_inst_insert',$this->plugin_name,'process'); |
| | | //$app->plugins->registerEvent('software_update_inst_update',$this->plugin_name,'process'); |
| | | //$app->plugins->registerEvent('software_update_inst_delete',$this->plugin_name,'process'); |
| | | |
| | | //* Register for actions |
| | | $app->plugins->registerAction('os_update',$this->plugin_name,'os_update'); |
| | | |
| | | |
| | | } |
| | | |
| | | function set_install_status($inst_id, $status) { |
| | | private function set_install_status($inst_id, $status) { |
| | | global $app; |
| | | |
| | | $app->db->query("UPDATE software_update_inst SET status = '{$status}' WHERE software_update_inst_id = '{$inst_id}'"); |
| | | $app->dbmaster->query("UPDATE software_update_inst SET status = '{$status}' WHERE software_update_inst_id = '{$inst_id}'"); |
| | | } |
| | | |
| | | function process($event_name,$data) { |
| | | public function process($event_name,$data) { |
| | | global $app, $conf; |
| | | |
| | | //* Get the info of the package: |
| | | $software_update_id = intval($data["new"]["software_update_id"]); |
| | | $software_update_id = intval($data["new"]["software_update_id"]); |
| | | $software_update = $app->db->queryOneRecord("SELECT * FROM software_update WHERE software_update_id = '$software_update_id'"); |
| | | $software_package = $app->db->queryOneRecord("SELECT * FROM software_package WHERE package_name = '".$app->db->quote($software_update['package_name'])."'"); |
| | | |
| | |
| | | $temp_dir = '/tmp/'.md5 (uniqid (rand())); |
| | | $app->log("The temp dir is $temp_dir",LOGLEVEL_DEBUG); |
| | | mkdir($temp_dir); |
| | | if($installuser != '') exec('chown '.$installuser.' '.$temp_dir); |
| | | if($installuser != '') chown($temp_dir, $installuser); |
| | | |
| | | if(!is_dir($temp_dir)) { |
| | | $app->log("Unable to create temp directory.",LOGLEVEL_WARN); |
| | |
| | | $app->log("No package file found. Download failed? Installation aborted.",LOGLEVEL_WARN); |
| | | exec("rm -rf $temp_dir"); |
| | | $app->log("Deleting the temp directory $temp_dir",LOGLEVEL_DEBUG); |
| | | $this->set_install_status($data["new"]["software_update_inst_id"], "failed"); |
| | | $this->set_install_status($data["new"]["software_update_inst_id"], "failed"); |
| | | return false; |
| | | } |
| | | |
| | |
| | | $app->log("The md5 sum of the downloaded file is incorrect. Update aborted.",LOGLEVEL_WARN); |
| | | exec("rm -rf $temp_dir"); |
| | | $app->log("Deleting the temp directory $temp_dir",LOGLEVEL_DEBUG); |
| | | $this->set_install_status($data["new"]["software_update_inst_id"], "failed"); |
| | | $this->set_install_status($data["new"]["software_update_inst_id"], "failed"); |
| | | return false; |
| | | } else { |
| | | $app->log("md5sum of the downloaded file is verified.",LOGLEVEL_DEBUG); |
| | | $app->log("MD5 checksum of the downloaded file verified.",LOGLEVEL_DEBUG); |
| | | } |
| | | |
| | | |
| | |
| | | } |
| | | |
| | | } |
| | | |
| | | //* Operating system update |
| | | public function os_update($action_name,$data) { |
| | | global $app; |
| | | |
| | | //** Debian and compatible Linux distributions |
| | | if(file_exists('/etc/debian_version')) { |
| | | exec("aptitude update"); |
| | | exec("aptitude safe-upgrade -y"); |
| | | $app->log('Execeuted Debian / Ubuntu update',LOGLEVEL_DEBUG); |
| | | } |
| | | |
| | | //** Gentoo Linux |
| | | if(file_exists('/etc/gentoo-release')) { |
| | | exec("glsa-check -f --nocolor affected"); |
| | | $app->log('Execeuted Gentoo update',LOGLEVEL_DEBUG); |
| | | } |
| | | |
| | | return 'ok'; |
| | | } |
| | | |
| | | } // end class |
| | | |
| | | ?> |
| | | ?> |