89 lines
3.8 KiB (Stored with Git LFS)
PHP
89 lines
3.8 KiB (Stored with Git LFS)
PHP
<?php
|
|
require('../../db.php');
|
|
require("../../function/function.php");
|
|
blockedIP($_SERVER['REMOTE_ADDR']);
|
|
|
|
header("Content-Type: application/json; charset=utf-8");
|
|
header("Access-Control-Allow-Origin: *");
|
|
|
|
if (isset($_FILES['update_zip']) && isset($_POST['userid']) && isset($_POST['account_id']) && isset($_COOKIE['loginkey'])) {
|
|
$postUserid = safetext($_POST['userid']);
|
|
$postZip= $_FILES['update_zip'];
|
|
$loginid = safetext($_POST['account_id']);
|
|
$loginkey = safetext($_COOKIE['loginkey']);
|
|
|
|
$is_login = uwuzuUserLoginCheck($loginid, $loginkey, "admin");
|
|
if ($is_login === false) {
|
|
echo json_encode(['success' => false, 'error' => '認証に失敗しました。(AUTH_INVALID)']);
|
|
exit;
|
|
}
|
|
|
|
try {
|
|
$option = array(
|
|
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
|
PDO::MYSQL_ATTR_MULTI_STATEMENTS => false
|
|
);
|
|
$pdo = new PDO('mysql:charset=utf8mb4;dbname=' . DB_NAME . ';host=' . DB_HOST, DB_USER, DB_PASS, $option);
|
|
} catch (PDOException $e) {
|
|
// 接続エラーのときエラー内容を取得する
|
|
$error_message[] = $e->getMessage();
|
|
}
|
|
|
|
$query = $pdo->prepare('SELECT * FROM account WHERE userid = :userid limit 1');
|
|
|
|
$query->execute(array(':userid' => $postUserid));
|
|
|
|
$result2 = $query->fetch();
|
|
|
|
if($result2["loginid"] === $loginid){
|
|
if($result2["admin"] === "yes"){
|
|
|
|
$uploadDir = sys_get_temp_dir();
|
|
$uploadFile = $uploadDir . '/' . basename($_FILES['update_zip']['name']);
|
|
|
|
if (move_uploaded_file($_FILES['update_zip']['tmp_name'], $uploadFile)) {
|
|
$extractPath = $uploadDir . '/uwuzu_update_' . createUniqId();
|
|
|
|
$zip = new ZipArchive;
|
|
if ($zip->open($uploadFile) == true) {
|
|
$zip->extractTo($extractPath);
|
|
$zip->close();
|
|
|
|
// JSONファイルを読み込む
|
|
$jsonFile = $extractPath . '/update.json';
|
|
if (file_exists($jsonFile)) {
|
|
$jsonData = json_decode(file_get_contents($jsonFile), true);
|
|
if (json_last_error() === JSON_ERROR_NONE) {
|
|
$response = [
|
|
'success' => true,
|
|
'software_name' => safetext($jsonData['software']) ?? '名前がありません',
|
|
'version' => safetext($jsonData['version']) ?? 'バージョン情報がありません',
|
|
'release_notes' => safetext($jsonData['release_notes']) ?? 'リリースノートが見つかりません。',
|
|
'notices' => safetext($jsonData['notices']) ?? '注意事項が見つかりません。',
|
|
'file_path' => safetext($extractPath)
|
|
];
|
|
echo json_encode($response);
|
|
} else {
|
|
echo json_encode(['success' => false, 'error' => 'JSONファイルの読み込みに失敗しました。(ROADING_JSON_ERROR)']);
|
|
}
|
|
} else {
|
|
echo json_encode(['success' => false, 'error' => 'JSONファイルの読み込みに失敗しました。(ROADING_JSON_ERROR)']);
|
|
}
|
|
} else {
|
|
echo json_encode(['success' => false, 'error' => '読み込みに失敗しました。1(ROADING_ERROR)']);
|
|
}
|
|
|
|
if (file_exists($uploadFile)) {
|
|
if (is_file($uploadFile)) {
|
|
unlink($uploadFile);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}else{
|
|
echo json_encode(['success' => false, 'error' => '読み込みに失敗しました。2(ROADING_ERROR)']);
|
|
exit;
|
|
}
|
|
?>
|