From d78860fe69223f4c7d8653773b9cec94e916a77e Mon Sep 17 00:00:00 2001 From: Bigsk <1332540+bigskcode@user.noreply.gitee.com> Date: Tue, 11 Aug 2020 15:39:44 +0800 Subject: [PATCH] update index.php. --- index.php | 85 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 64 insertions(+), 21 deletions(-) diff --git a/index.php b/index.php index 82ec58c..f108451 100644 --- a/index.php +++ b/index.php @@ -1,8 +1,9 @@ array( @@ -12,6 +13,9 @@ function url_exists($url){ $context = stream_context_create($opts); return @file_get_contents($url, false, $context); } +function download_file($url,$file,$other){//下载文件 + system('python download.py --url "'.$url.'" --file "'.$file.'" --other "'.$other.'"'); +} function get_main_domain($file){ $str=preg_replace('/^[^\/]*\//is','',$file); $str2=str_replace('/'.$str,'',$file); @@ -39,6 +43,10 @@ function get_online_domain($file,$id){ return $str; } function check_file_update($file,$dir,$url,$time){ + global $replace_mode; + if($replace_mode==true){ + $file=str_replace('?','/',$file); + } header('Content-Disposition: attachment; filename="'.basename($file).'"'); $time=time()-@filemtime($file); if($time<$time){//检查文件是否超出过期期限(1天,86400秒) @@ -49,9 +57,7 @@ function check_file_update($file,$dir,$url,$time){ 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":"'.time().'"}'); - fwrite($jsonwrite,file_get_contents($url.'/'.str_replace($dir,'',$file))); - fclose($jsonwrite); + download_file($url.'/'.str_replace($dir,'',$file),$file,''); } }else{ echo file_get_contents($file); @@ -59,6 +65,10 @@ function check_file_update($file,$dir,$url,$time){ } } function check_file_update_json($file,$dir,$url,$time){ + global $replace_mode; + if($replace_mode==true){ + $file=str_replace('?','/',$file); + } header('Content-Disposition: attachment; filename="'.basename($file).'"'); $time=time()-@filemtime($file.'/index.json'); if($time<$time){//检查文件是否超出过期期限(1天,86400秒) @@ -69,9 +79,7 @@ function check_file_update_json($file,$dir,$url,$time){ echo file_get_contents($file); }else{ echo file_get_contents($url.'/'.str_replace($dir,'',$file)); - $jsonwrite = fopen($file.'/index.json', "w") or die('{"wikis":"https://gitee.com/ghink/gemcapi/wikis","code":502,"server_time":"'.time().'"}'); - fwrite($jsonwrite,file_get_contents($url.'/'.str_replace($dir,'',$file))); - fclose($jsonwrite); + download_file($url.'/'.str_replace($dir,'',$file),$file.'/index.json',''); } }else{ echo file_get_contents($file.'/index.json'); @@ -79,6 +87,10 @@ function check_file_update_json($file,$dir,$url,$time){ } } function check_file_update_adv($file,$url,$check_url){ + global $replace_mode; + if($replace_mode==true){ + $file=str_replace('?','/',$file); + } header('Content-Disposition: attachment; filename="'.basename($file).'"'); $time=time()-@filemtime($file); if($time<86400){//检查文件是否超出过期期限(1天,86400秒) @@ -89,29 +101,29 @@ function check_file_update_adv($file,$url,$check_url){ 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":"'.time().'"}'); - fwrite($jsonwrite,file_get_contents($url)); - fclose($jsonwrite); + download_file($url,$file,''); } }else{ echo file_get_contents($file); } } } - -function download_file($url,$file,$other){//下载文件 - system('python download.py --url "'.$url.'" --file "'.$file.'" --other "'.$other.'"'); +if(strstr($_GET['path'],'liteloader')!=False){//替换掉Literloader源中的特殊字符 + $replace_mode=true; } if(get_main_domain($_GET['path'])=='mojang'){//分配顶级域名尾 $id=0; }elseif(get_main_domain($_GET['path'])=='fabricmc'){ $id=1; +}elseif(get_main_domain($_GET['path'])=='liteloader'){ + $id=2; +}elseif(get_main_domain($_GET['path'])=='yushi'){ + $id=3; } if($_GET['error']!=""){ - echo '{"wikis":"https://gitee.com/ghink/gemcapi/wikis","code":'.$_GET['error'].',"server_time":"'.time().'"}'; + echo '{"wikis":"https://gitee.com/ghink/gemcapi/wikis","code":'.$_GET['error'].',"server_time":'.time().'}'; }elseif($_GET['path']==""){ - echo '{"wikis":"https://gitee.com/ghink/gemcapi/wikis","code":200,"server_time":"'.time().'"}'; + echo '{"wikis":"https://gitee.com/ghink/gemcapi/wikis","code":200,"server_time":'.time().'}'; }else{ if(is_file($_GET['path'])){ //文件存在 @@ -124,6 +136,14 @@ if($_GET['error']!=""){ 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'); } + }elseif(strstr($_GET['path'],'optifine/')!=False){//目录分组 + if(strstr($_GET['path'],'optifine/versionlist')!=False){ + check_file_update_adv('optifine/versionlist','https://download.mcbbs.net/optifine/versionlist','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'); + } + }elseif(strstr($_GET['path'],'liteloader/')!=False){//目录分组 + if(strstr($_GET['path'],'liteloader/dl/versions')!=False){ + check_file_update_adv('liteloader/dl/versions/versions.json','http://dl.liteloader.com/versions/versions.json','http://dl.liteloader.com/versions/versions.json'); + } } }else{//无需频繁更新的文件 if(@file_get_contents(get_online_url($_GET['path'],$id)=="")){ @@ -136,6 +156,9 @@ if($_GET['error']!=""){ //目录存在 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'); + }elseif(strstr($_GET['path'],'yushi/authlib-injector')!=False){ + check_file_update_adv('yushi/authlib-injector/index.json','https://authlib-injector.yushi.moe','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'); + //此处暂时使用bmclapi源检测文件欺骗检测authlib-injector,原因见底部注释 }elseif(is_file($_GET['path'].'/index.json')){ check_file_update($_GET['path'],get_main_domain($_GET['path']).'/'.get_sub_domain($_GET['path']).'/',get_online_domain($_GET['path'],$id),86400); }else{ @@ -160,9 +183,24 @@ if($_GET['error']!=""){ echo file_get_contents($_GET['path']); } }else{ - echo '{"wikis":"https://gitee.com/ghink/gemcapi/wikis","code":404,"server_time":"'.time().'"}'; + echo '{"wikis":"https://gitee.com/ghink/gemcapi/wikis","code":404,"server_time":'.time().'}'; header('HTTP/1.1 404 Not Found'); } + }elseif(strstr($_GET['path'],'optifine/')!=False){//Optifine同步 + if($_GET['path']=='optifine'){ + echo '{"wikis":"https://gitee.com/ghink/gemcapi/wikis","code":404,"server_time":'.time().'}'; + header('HTTP/1.1 404 Not Found'); + }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'); + } + }elseif(strstr($_GET['path'],'liteloader/')!=False){//Liteloader同步 + if(strstr($_GET['path'],'liteloader/list')!=False){ + check_file_update_adv(str_replace('?','/',$_GET['path']).'/index.json','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'); + }elseif(strstr($_GET['path'],'liteloader/download')!=False){ + check_file_update_advstr_replace('?','/',($_GET['path']).'/index.jar','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{ + check_file_update_adv($_GET['path'],get_online_url($_GET['path'],$id),'http://dl.liteloader.com/versions/versions.json'); + } }else{ if(url_exists(get_online_url($_GET['path'],$id))){ if(@file_get_contents(get_online_url($_GET['path'],$id)=="")){ @@ -174,8 +212,13 @@ if($_GET['error']!=""){ header('Content-Disposition: attachment; filename="'.basename($_GET['path']).'"'); echo file_get_contents($_GET['path'].'/index.json'); } + }elseif(get_main_domain($_GET['path'])=='yushi'){ + //暂不明确为何authlib-injector的服务器即使存活文件存在也会被判定为不存在 + download_file(get_online_url($_GET['path'],$id),$_GET['path'].'/index.json',''); + header('Content-Disposition: attachment; filename="'.basename($_GET['path']).'"'); + echo file_get_contents($_GET['path'].'/index.json'); }else{ - echo '{"wikis":"https://gitee.com/ghink/gemcapi/wikis","code":404,"server_time":"'.time().'"}'; + echo '{"wikis":"https://gitee.com/ghink/gemcapi/wikis","code":404,"server_time":'.time().'}'; header('HTTP/1.1 404 Not Found'); } }