diff --git a/.gitignore b/.gitignore index ce2c1b4..3081f8d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /hook/gogs_key.php /hook/logs.txt /hook/list.json +/hook/HashKey.php diff --git a/hook/HashKey.orig.php b/hook/HashKey.orig.php new file mode 100644 index 0000000..8aadd66 --- /dev/null +++ b/hook/HashKey.orig.php @@ -0,0 +1,7 @@ +false, + 'reason'=>'Unknown' +]; + +if(!$req_hash){ + $json_response['reason'] = 'no req'; + die(json_encode($json_response)); +} +if(!$req_time || !is_numeric($req_time)){ + $json_response['reason'] = 'invalid time'; + die(json_encode($json_response)); +} + +$key = HashKey::KEY; +if(strlen($key)<16){ + $json_response['reason'] = 'key is too short'; + die(json_encode($json_response)); +} + +$timestamp = time(); + +if(abs($timestamp - $req_time) > 300){ + $json_response['reason'] = 'time difference'; + die(json_encode($json_response)); +} + +$ans_hash = hashPassword(sprintf("%016x", $req_time), $key); + +if($ans_hash != $req_hash){ + $json_response['reason'] = 'hash mismatch'; + die(json_encode($json_response)); +} + +exec("git pull -q 2>&1", $output); + +exec("git ls-files -z ../icons", $raw_img_list); +$raw_img_list = explode("\x00", $raw_img_list[0]); +$img_list = []; + +foreach ($raw_img_list as $path) { + $pos = strpos($path, '../icons/'); + if($pos === false){ + continue; + } + $path = substr($path, $pos + 9); + + + $pathinfo = pathinfo($path); + $dpath = $pathinfo['dirname']; + $basename = $pathinfo['basename']; + $filename = $pathinfo['filename']; + + if(!\key_exists($dpath, $img_list)){ + $img_list[$dpath] = []; + } + $img_list[$dpath][$filename] = $basename; + +} + +file_put_contents('list.json', json_encode($img_list));