function InstallationAborted($msg = '', $action = '') { global $TMP_FOLDER; switch ($action) { case 'patch': nc_print_status(($msg ? $msg . "<br>" : "") . TOOLS_PATCH_ERR_CANTINSTALL, "error"); PatchForm(); PatchList(); break; case 'module': nc_print_status(($msg ? $msg . "<br>" : "") . TOOLS_MODULES_ERR_INSTALL, "error"); break; case 'activation': nc_print_status($msg ? $msg : TOOLS_PATCH_ERROR, "error"); nc_activation_show_form(); break; default: nc_print_status($msg ? $msg : TOOLS_PATCH_ERROR, "error"); break; } DeleteFilesInDirectory($TMP_FOLDER); EndHtml(); exit; }
} switch ($phase) { # Форма ввода данных case 1: BeginHtml($Title2, $Title2, "http://" . $DOC_DOMAIN . "/settings/activation/"); $perm->ExitIfNotAccess(NC_PERM_PATCH, 0, 0, 0, 0); nc_activation_show_form(); break; # Сообственно, активация # Сообственно, активация case 2: BeginHtml($Title2, $Title2, "http://" . $DOC_DOMAIN . "/settings/activation/"); $perm->ExitIfNotAccess(NC_PERM_PATCH, 0, 0, 0, 1); if (!$activation_code || !$license) { nc_print_status(TOOLS_ACTIVATION_INPUT_KEY_CODE, 'error'); nc_activation_show_form(); break; } $patch_file_data = nc_activation_get_files(); // get gzip file $patch_file_tgz = !empty($patch_file_data) ? $patch_file_data['_FILE'] : ""; if (!$patch_file_tgz) { break; } if (!file_exists($TMP_FOLDER . $patch_file_tgz)) { break; } if (!checkPermissions($HTTP_ROOT_PATH . "tmp/", $DOCUMENT_ROOT)) { break; } // this temporary file will be deleted in the end of this function or in InstallationAborted()
/** * Функция получает файл с активацией * потом копирует его в tmp-директорию * * @return array */ function nc_activation_get_files() { global $nc_core; $db = $nc_core->db; $TMP_FOLDER = $nc_core->TMP_FOLDER; $url = "http://update.netcat.ru/"; $data = nc_activation_requset_data(); $result = array(); $options = array("http" => array("method" => "POST", "header" => "Content-type: application/x-www-form-urlencoded\n" . "Content-Length: " . strlen($data) . "\n", "content" => $data)); $context = stream_context_create($options); // get data from update server $request = @file_get_contents($url, false, $context); // parse requested data if ($request) { $parser = xml_parser_create(); xml_parse_into_struct($parser, $request, $values, $indexes); xml_parser_free($parser); } else { nc_print_status(TOOLS_PATCH_ERROR_UPDATE_SERVER_NOT_AVAILABLE, "error"); return ""; } // check if (empty($values)) { return ""; } // result flat array foreach ($values as $value) { if ($value['type'] != "complete") { continue; } $result[$value['tag']] = $value['value']; } if ($result['OPERATION'] != "success") { nc_print_status(TOOLS_ACTIVATION_INVALID_KEY_CODE, 'error'); nc_activation_show_form(); return ""; } // get patch file data if ($result['LINK']) { $update_file = @file_get_contents($result['LINK']); } // write file on disk if ($update_file) { // set patch file temp name $patch_file_name = "update_" . md5(microtime()) . ".tgz"; // write data into the file if (!is_writable($TMP_FOLDER)) { nc_print_status(sprintf(TOOLS_PATCH_ERROR_TMP_FOLDER_NOT_WRITABLE, $TMP_FOLDER), "error"); } elseif (file_put_contents($TMP_FOLDER . $patch_file_name, $update_file)) { $result['_FILE'] = $patch_file_name; // return file name return $result; } } else { nc_print_status(TOOLS_PATCH_ERROR_UPDATE_FILE_NOT_AVAILABLE, "error"); } return ""; }