array( 'timeout'=>3, ) ); $context = stream_context_create($opts); return @file_get_contents($url, false, $context); } function get_main_domain($file){ $str=preg_replace('/^[^\/]*\//is','',$file); $str2=str_replace('/'.$str,'',$file); return $str2; } function get_sub_domain($file){ $str=preg_replace('/^[^\/]*\//is','',$file); $str2=preg_replace('/^[^\/]*\//is','',$str); $str3=str_replace('/'.$str2,'',$str); return $str3; } function get_file_path($file){ $str=preg_replace('/^[^\/]*\//is','',$file); $str2=preg_replace('/^[^\/]*\//is','',$str); return $str2; } function get_online_url($file,$id){ global $type; $str='http://'.get_sub_domain($file).'.'.get_main_domain($file).$type[$id].'/'.get_file_path($file); return $str; } function check_file_update($file,$dir,$url){ $time=time()-@filemtime($file); if($time<86400){//检查文件是否超出过期期限(1天,86400秒) echo file_get_contents($file); }else{ if(url_exists($url.'/'.str_replace($dir,'',$file))){//防止源无法访问而损坏文件 if(file_get_contents($url.'/'.str_replace($dir,'',$file))==@file_get_contents($file)){ echo file_get_contents($file); }else{ echo file_get_contents($url.'/'.str_replace($dir,'',$file)); $jsonwrite = fopen($file, "w") or die('{"wikis":"https://gitee.com/ghink/gemcapi/wikis","code":502,"server_time":"'.date("Y-m-d h:i:s").'"}'); fwrite($jsonwrite,file_get_contents($url.'/'.str_replace($dir,'',$file))); fclose($jsonwrite); } }else{ echo file_get_contents($file); } } } function check_file_update_adv($file,$url,$check_url){ $time=time()-@filemtime($file); if($time<86400){//检查文件是否超出过期期限(1天,86400秒) echo file_get_contents($file); }else{ if(url_exists_2($check_url)){//防止源无法访问而损坏文件 if(file_get_contents($url)==@file_get_contents($file)){ echo file_get_contents($file); }else{ echo @file_get_contents($url); $jsonwrite = fopen($file, "w") or die('{"wikis":"https://gitee.com/ghink/gemcapi/wikis","code":502,"server_time":"'.date("Y-m-d h:i:s").'"}'); fwrite($jsonwrite,file_get_contents($url)); fclose($jsonwrite); } }else{ echo file_get_contents($file); } } } function download_file($url,$file,$other){//下载文件 system('python download.py --url "'.$url.'" --file "'.$file.'" --other "'.$other.'"'); } if($_GET['error']!=""){ echo '{"wikis":"https://gitee.com/ghink/gemcapi/wikis","code":'.$_GET['error'].',"server_time":"'.date("Y-m-d h:i:s").'"}'; }elseif($_GET['path']==""){ echo '{"wikis":"https://gitee.com/ghink/gemcapi/wikis","code":200,"server_time":"'.date("Y-m-d h:i:s").'"}'; }else{ if(is_file($_GET['path'])){ //文件存在 if(in_array($_GET['path'],$active)){//判断是否为需要保持最新的文件 if(strstr($_GET['path'],'mojang/')!=False){//目录分组 if(strstr($_GET['path'],'mojang/launchermeta/')!=False){ $dir='mojang/launchermeta/'; check_file_update('mojang/launchermeta/mc/game/version_manifest.json',$dir,'http://launchermeta.mojang.com'); } }elseif(strstr($_GET['path'],'forge/')!=False){//目录分组 if(strstr($_GET['path'],'forge/last')!=False){ check_file_update_adv('forge/last','https://download.mcbbs.net/forge/last','https://download.mcbbs.net/maven/net/minecraftforge/forge/1.7.10-10.13.0.1151/forge-1.7.10-10.13.0.1151-installer.jar'); } } }else{//无需更新的文件,直接重定向 if(strstr($_GET['path'],'forge/minecraft')!=False){//特殊返回目录 echo @file_get_contents($_GET['path']); }else{ header('Location: http://1.gemcapi.ghink.net:10000/'.$_GET['path']); } } }elseif(is_dir($_GET['path'])){ //目录存在 if(strstr($_GET['path'],'forge/minecraft')!=False){//特殊目录返回 check_file_update_adv('forge/minecraft/index.json','https://download.mcbbs.net/forge/minecraft','https://download.mcbbs.net/maven/net/minecraftforge/forge/1.7.10-10.13.0.1151/forge-1.7.10-10.13.0.1151-installer.jar'); }else{ header('Location: http://1.gemcapi.ghink.net:10000/'.$_GET['path']); } }else{ //目录或文件不存在 if(strstr($_GET['path'],'forge/')!=False){//特殊Forge,采用二级源 if(url_exists_2('https://download.mcbbs.net/maven/net/minecraftforge/forge/1.7.10-10.13.0.1151/forge-1.7.10-10.13.0.1151-installer.jar')){ if(strstr($_GET['path'],'forge/minecraft')!=False){//forge/minecraft目录特殊同步 if($_GET['path']=='forge/minecraft'){ check_file_update_adv('forge/minecraft/index.json','https://download.mcbbs.net/forge/minecraft','https://download.mcbbs.net/maven/net/minecraftforge/forge/1.7.10-10.13.0.1151/forge-1.7.10-10.13.0.1151-installer.jar'); }else{ check_file_update_adv($_GET['path'],'https://download.mcbbs.net/'.$_GET['path'],'https://download.mcbbs.net/maven/net/minecraftforge/forge/1.7.10-10.13.0.1151/forge-1.7.10-10.13.0.1151-installer.jar'); } }else{ download_file('https://download.mcbbs.net/'.$_GET['path'],$_GET['path'],''); header('Location: http://1.gemcapi.ghink.net:10000/'.$_GET['path']); } }else{ echo '{"wikis":"https://gitee.com/ghink/gemcapi/wikis","code":404,"server_time":"'.date("Y-m-d h:i:s").'"}'; header('HTTP/1.1 404 Not Found'); } }else{ if(get_main_domain($_GET['path'])=='mojang'){//分配顶级域名尾 $id=0; } if(url_exists(get_online_url($_GET['path'],$id))){ download_file(get_online_url($_GET['path'],$id),$_GET['path'],''); header('Location: http://1.gemcapi.ghink.net:10000/'.$_GET['path']); }else{ echo '{"wikis":"https://gitee.com/ghink/gemcapi/wikis","code":404,"server_time":"'.date("Y-m-d h:i:s").'"}'; header('HTTP/1.1 404 Not Found'); } } } }