$base_path."/180619/dhtmlxSuite_v5.2.0_std.zip", "dhtmlxGrid.zip" => $base_path."/$version/dhtmlxGrid_v${build}_std.zip", "dhtmlxTree.zip" => $base_path."/$version/dhtmlxTree_v${build}_std.zip", "dhtmlxTreeView.zip" => $base_path."/$version/dhtmlxTreeView_v${build}_std.zip", "dhtmlxTabbar.zip" => $base_path."/$version/dhtmlxTabbar_v${build}_std.zip", "dhtmlxWindows.zip" => $base_path."/$version/dhtmlxWindows_v${build}_std.zip", "dhtmlxMenu.zip" => $base_path."/$version/dhtmlxMenu_v${build}_std.zip", "dhtmlxToolbar.zip" => $base_path."/$version/dhtmlxToolbar_v${build}_std.zip", "dhtmlxAjax.zip" => $base_path."/$version/dhtmlxAjax_v${build}_std.zip", "dhtmlxCalendar.zip" => $base_path."/$version/dhtmlxCalendar_v${build}_std.zip", "dhtmlxAccordion.zip" => $base_path."/$version/dhtmlxAccordion_v${build}_std.zip", "dhtmlxChart.zip" => $base_path."/$version/dhtmlxChart_v${build}_std.zip", "dhtmlxCombo.zip" => $base_path."/$version/dhtmlxCombo_v${build}_std.zip", "dhtmlxColorPicker.zip" => $base_path."/$version/dhtmlxColorPicker_v${build}_std.zip", "dhtmlxDataView.zip" => $base_path."/$version/dhtmlxDataView_v${build}_std.zip", "dhtmlxEditor.zip" => $base_path."/$version/dhtmlxEditor_v${build}_std.zip", "dhtmlxForm.zip" => $base_path."/$version/dhtmlxForm_v${build}_std.zip", "dhtmlxSlider.zip" => $base_path."/$version/dhtmlxSlider_v${build}_std.zip", "dhtmlxRibbon.zip" => $base_path."/$version/dhtmlxRibbon_v${build}_std.zip", "dhtmlxSidebar.zip" => $base_path."/$version/dhtmlxSidebar_v${build}_std.zip", "dhtmlxLayout.zip" => $base_path."/$version/dhtmlxLayout_v${build}_std.zip", "dhtmlxList.zip" => $base_path."/$version/dhtmlxList_v${build}_std.zip", "dhtmlxCarousel.zip" => $base_path."/$version/dhtmlxCarousel_v${build}_std.zip", "dhtmlxVault.zip" => $base_path."/dhtmlxVault/dhtmlxVault_v25_std.zip", "dhtmlx_30_chm.zip" => $base_path."/130416/dhtmlx36_chm.zip", "dhtmlx_chm.zip" => $base_path."/150929/dhtmlx45_chm.zip", "dhtmlx_v40_beta_std.zip" => $base_path."/betas/dhtmlxSuite_4.0_Beta_STD_build_140421.zip", "dhtmlx_v40_beta_pro_ae1622fdb0.zip" => $base_path."/betas/AD9316EF2/dhtmlxSuite_4.0_Beta_PRO_build_140421.zip", "dhtmlxScheduler.zip" => $base_path."/dhtmlxScheduler/scheduler.zip", "dhtmlxScheduler_mobile.zip" => $base_path."/dhtmlxScheduler/dhtmlxScheduler_mobile_v35_120626.zip", "dhtmlxScheduler_docs_chm.zip" => $base_path."/dhtmlxScheduler/dhtmlxscheduler_v40_chm.zip", "dhtmlxscheduler_chm.zip" => $base_path."/dhtmlxScheduler/dhtmlxscheduler_v40_chm.zip", "dhtmlxScheduler_docs_html.zip" => $base_path."/dhtmlxScheduler/dhtmlxscheduler_v37_html.zip", "dhtmlxGantt.zip" => $base_path."/dhtmlxGantt/gantt.zip", "dhtmlxgantt_chm.zip" => $base_path."/dhtmlxGantt/dhtmlxgantt_v20_chm.zip", "dhtmlxgantt_docs_html.zip" => $base_path."/dhtmlxGantt/dhtmlxgantt_v20_html.zip", "dhtmlxConnector_java.zip" => $base_path."/dhtmlxConnector/dhtmlxConnector_java_v15_120612.zip", "dhtmlxConnector_net.zip" => $base_path."/dhtmlxConnector/dhtmlxConnector_net_v15_120612.zip", "dhtmlxConnector_php.zip" => $base_path."/dhtmlxConnector/dhtmlxConnector_php_v15_120612.zip", "dhtmlxConnector_cfm.zip" => $base_path."/dhtmlxConnector/dhtmlxConnector_cfm_v10.zip", "dhtmlxScheduler_windows.zip" => $base_path."/dhtmlxScheduler/dhtmlxScheduler_v37_win_130220.zip", "joomla_com_scheduler.zip" => $base_path."/dhtmlxScheduler/joomla_com_scheduler_v30_120425.zip", "dhtmlxSpreadsheet.zip" => $base_path."/dhtmlxSpreadsheet/dhtmlxSpreadsheet_v21.zip", "dhtmlxSpreadsheet_wp.zip" => $base_path."/dhtmlxSpreadsheet/dhtmlxSpreadsheet_v20_wp.zip", "dhtmlxSpreadsheet_drupal.zip" => $base_path."/dhtmlxSpreadsheet/dhtmlxSpreadsheet_v20_drupal.zip", "dhtmlxSpreadsheet_joomla.zip" => $base_path."/dhtmlxSpreadsheet/dhtmlxSpreadsheet_v20_joomla.zip", "dhtmlxSpreadsheet_joomla_30.zip" => $base_path."/dhtmlxSpreadsheet/dhtmlxSpreadsheet_v20_joomla_30.zip", "dhtmlxSpreadsheet_modx.zip" => $base_path."/dhtmlxSpreadsheet/spreadsheet-2.0-pl.transport.zip", "dhtmlxConnector_php_dvl.zip" => $xfiles_url."/dhtmlxConnector_php_1.1.dvl.zip", "dhtmlxConnector_java_dvl.zip" => $xfiles_url."/dhtmlxConnector_java_1.1.dvl.zip", "dhtmlxConnector_net_dvl.zip" => $xfiles_url."/dhtmlxConnector_net_1.1.dvl.zip", "dhtmlxConnector_cfm_dvl.zip" => $xfiles_url."/dhtmlxConnector_cfm_1.1.dvl.zip", "dhtmlxTouch.zip" => $base_path."/dhtmlxTouch/dhtmlxTouch_v12_120913.zip", "dhtmlxtouch_html.zip" => $base_path."/dhtmlxTouch/dhtmlxtouch_html_v12.zip", "dhtmlxtouch_chm.zip" => $base_path."/dhtmlxTouch/dhtmlxtouch_chm_v12.zip", "grid-pdf-php.zip" => $xfiles_url."/grid-pdf-php.zip", "grid-pdf-net.zip" => $xfiles_url."/grid-pdf-net.zip", "grid-pdf-java.zip" => $xfiles_url."/grid-pdf-java.zip", "grid-excel-php.zip" => $xfiles_url."/grid-excel-php.zip", "grid-excel-net.zip" => $xfiles_url."/grid-excel-net.zip", "grid-excel-java.zip" => $xfiles_url."/grid-excel-java.zip", "scheduler-pdf-php.zip" => $xfiles_url."/scheduler-pdf-php.zip", "scheduler-pdf-java.zip" => $xfiles_url."/scheduler-pdf-java.zip", "scheduler-pdf-net.zip" => $xfiles_url."/scheduler-pdf-net.zip", "dhtmlxDataTable.zip" => $base_path."/dhtmlxDataTable/dhtmlxdatatable_1.0rc_1206191307.zip", "dhtmlxdatatable_chm.zip" => $base_path."/dhtmlxDataTable/dhtmlxdatatable-docs-chm-1.0rc_120626.zip" ); $file = $durl[$_GET["pack"]]; $date = @str_replace(" ","\t",date('Y-m-d H:i:s')); //if file pathin configuration is remote url, check if it exists localy (using local path to x-files) - if not try to curl it there and then use as local if(strpos($file,'http://')!==false){ $url = $file; $local_file = str_replace($xfiles_url,$xfiles_local_path,$url); //if no such file localy - download it from remote url and store localy if(!file_exists($local_file)){ $fp = fopen($local_file, 'w'); $ch = curl_init($url); curl_setopt($ch, CURLOPT_FILE, $fp); $data = curl_exec($ch); curl_close($ch); fclose($fp); } $file = $local_file; } //get file content and put it into response if (file_exists($file)) { //file_put_contents($base_path."/download_log.txt", "\nstarted on ".$date.": ".$_GET["pack"], FILE_APPEND); /* header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename='.basename($file)); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); ob_clean(); flush(); readfile($file);*/ $file_direct_url = str_replace($base_path,$base_url,$file); header('Location: '.$file_direct_url.'?direct');//try access the file directly by requested url //$date_fin = date('Y-m-d\tH:i:s'); file_put_contents($base_path."/download_log.txt", "\n".$date."\t".$_GET["pack"], FILE_APPEND); saveDownloadLog($_GET["pack"],"normal"); exit; }else{ //if file wasn't found in configuration above there is still a chance it exists by direct requested url if($_GET["direct"] || $_GET["url"]=="" || strpos($_GET["url"],"?direct")!==false){ file_put_contents($base_path."/download_log.txt", "\n".$date."\t".$_GET["pack"]."\tNot Found", FILE_APPEND); saveDownloadLog($_GET["pack"],"notfound"); header('Location: /docs/404.shtml'); }else{ file_put_contents($base_path."/download_log.txt", "\n".$date."\t".$_GET["pack"]."\tDirect Access", FILE_APPEND); saveDownloadLog($_GET["pack"],"direct"); header('Location: /x'.$_GET["url"].'?direct');//try access the file directly by requested url } die(); } function saveDownloadLog($pack,$state){ return; require_once("./config.php"); $db = new DB(); $conn = new mysqli($db->host, $db->user, $db->pass, $db->base); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $sql = "INSERT INTO regular_downloads (package,state) VALUES ('".$pack."','".$state."')"; if ($conn->query($sql) === TRUE) { //error_log("Succesfull insert: ".$sql, 1, "nb@dhtmlx.com",$hdrs); } $conn->close(); } ?>