0, 'path' => '/', 'domain' => '', 'secure' => true, 'httponly' => true, 'samesite' => 'Lax' ]); session_start(); session_regenerate_id(true); // データベースに接続 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(); } //ログイン認証--------------------------------------------------- blockedIP($_SERVER['REMOTE_ADDR']); $is_login = uwuzuUserLogin($_SESSION, $_COOKIE, $_SERVER['REMOTE_ADDR'], "user"); if($is_login === false){ header("Location: ../index.php"); exit; }else{ $userid = safetext($is_login['userid']); $username = safetext($is_login['username']); $loginid = safetext($is_login["loginid"]); $role = safetext($is_login["role"]); $sacinfo = safetext($is_login["sacinfo"]); $myblocklist = safetext($is_login["blocklist"]); $myfollowlist = safetext($is_login["follow"]); $is_Admin = safetext($is_login["admin"]); } $notiQuery = $pdo->prepare("SELECT COUNT(*) as notification_count FROM notification WHERE touserid = :userid AND userchk = 'none'"); $notiQuery->bindValue(':userid', $userid); $notiQuery->execute(); $notiData = $notiQuery->fetch(PDO::FETCH_ASSOC); $notificationcount = $notiData['notification_count']; if( !empty($pdo) ) { // データベース接続の設定 $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, )); $userQuery = $dbh->prepare("SELECT userid,role,datetime FROM account WHERE userid = :userid"); $userQuery->bindValue(':userid', $userid); $userQuery->execute(); $userData = $userQuery->fetch(); } if( !empty($_POST['migration_submit']) ) { $server_domain = safetext($_POST['server_domain']); if( empty($server_domain) ) { $error_message[] = '移行先のサーバードメインを入力してください。(INPUT_PLEASE)'; }else{ $domain_response = @file_get_contents("https://".$server_domain."/"); if (empty($domain_response)) { $error_message[] = '入力されたドメインに接続できませんでした。(INPUT_PLEASE)'; } } if($server_domain == $domain){ $error_message[] = 'このサーバーに移行することはできません。(MIGRATION_ONAJI_SERVER_DAME)'; } if(empty($error_message)){ $data = array(); $options = [ 'http' => [ 'method'=> 'POST', 'content' => http_build_query($data, '', '&') ] ]; $Get_Info = @file_get_contents("http://".$server_domain."/api/serverinfo-api", false, stream_context_create($options)); if($Get_Info === false){ $error_message[] = '入力されたサーバーがuwuzu以外のサーバーソフトウェア(MisskeyさんやMastodonさんなど)を使用しているかuwuzu v1.2.26未満のバージョンを使用している可能性があります。(MIGRATION_TO_SERVER_NOT_UWUZU)'; }else{ $Check_result = json_decode($Get_Info, true); if($Check_result["software"]["name"] == "uwuzu"){ $version = str_pad(str_replace('.', '', $Check_result["software"]["version"]), 4, 0, STR_PAD_RIGHT); if($version >= 1360){ if($Check_result["server_info"]["account_migration"] == "true"){ $pdo->beginTransaction(); try { $account = $userid; $migration_code = createUniqId(); $encryption_key = random(32); $encryption_ivkey = random(16); $datetime = date("Y-m-d H:i:s"); $domain = $server_domain; $stmt = $pdo->prepare("INSERT INTO migration (account, domain, migration_code, encryption_key, encryption_ivkey, datetime) VALUES (:account, :domain, :migration_code, :encryption_key, :encryption_ivkey, :datetime)"); $stmt->bindParam(':account', safetext($account), PDO::PARAM_STR); $stmt->bindParam(':domain', safetext($domain), PDO::PARAM_STR); $stmt->bindParam(':migration_code', safetext($migration_code), PDO::PARAM_STR); $stmt->bindParam(':encryption_key', safetext($encryption_key), PDO::PARAM_STR); $stmt->bindParam(':encryption_ivkey', safetext($encryption_ivkey), PDO::PARAM_STR); $stmt->bindParam(':datetime', safetext($datetime), PDO::PARAM_STR); $res = $stmt->execute(); $res = $pdo->commit(); } catch(Exception $e) { $pdo->rollBack(); } if($res) { $_SESSION["migration_code"] = safetext($migration_code); $_SESSION["encryption_key"] = safetext($encryption_key); $_SESSION["encryption_ivkey"] = safetext($encryption_ivkey); header("Location: account_migration_done.php"); exit; }else{ $error_message[] = $e->getMessage(); } }else{ $error_message[] = "移行先のサーバーがアカウントの移行登録を拒否しているためアカウントの移行はできません。(MIGRATION_TO_SERVER_IYADA)"; } }else{ $error_message[] = "移行先のサーバーのuwuzuバージョンが1.3.6未満のためアカウントの移行はできません。(MIGRATION_TO_SERVER_BAD_UWUZU_VERSION)"; } }else{ $error_message[] = "移行先のサーバーのソフトウェアがuwuzuではありません。(MIGRATION_TO_SERVER_NOT_UWUZU)"; } } } } if( !empty($_POST['migration_cancel_submit']) ) { $account = $userid; $pdo->beginTransaction(); try { $deleteQuery = $pdo->prepare("DELETE FROM migration WHERE account = :account"); $deleteQuery->bindValue(':account', safetext($account), PDO::PARAM_STR); $res = $deleteQuery->execute(); $res = $pdo->commit(); } catch(Exception $e) { $pdo->rollBack(); } if($res) { $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; header("Location: ".$url.""); exit; }else{ $error_message[] = $e->getMessage(); } } if(!(empty($pdo))){ $CheckQuery = $pdo->prepare("SELECT COUNT(*) as count FROM migration WHERE account = :account"); $CheckQuery->bindValue(':account', $userid); $CheckQuery->execute(); $CheckData = $CheckQuery->fetch(PDO::FETCH_ASSOC); $CheckCount = $CheckData['count']; if(!(empty($CheckCount))){ if((int)$CheckCount > 0){ $migration_start = true; }else{ $migration_start = false; } }else{ $migration_start = false; } } $today = strtotime(date("Y-m-d")); $accountDate = new DateTime($userData["datetime"]); $day = strtotime($accountDate->format('Y-m-d')); $account_date = ($today - $day) / (60 * 60 * 24); if($account_date > 30){ $migration = true; }else{ $migration = false; } require('../logout/logout.php'); ?> アカウントの移行 - <?php echo safetext($serversettings["serverinfo"]["server_name"]);?>

アカウントの移行

アカウントの移行をすると以下のデータが引き継がれます。
フォロー・フォロワー、いいねなどの情報は引き継がれません。
ユーザーID、パスワードや二段階認証の設定は移行先サーバーで再度行う必要があります。
移行後30日は別のサーバーに移行することはできません。

- アカウント名
- プロフィール
- アイコン
- ヘッダー
- メールアドレス

アカウントの移行後このサーバーのアカウントは自動凍結されます。

このアカウントは凍結されているため移行できません。

既に移行作業は開始されているようです。
もし以降に必要な情報をなくしてしまった場合はもう一度最初から作業をやり直す必要があります!

移行先サーバーのドメイン

uwuzu v1.3.6以上が使用されているサーバーに対応します。

アカウントを作成してから30日以上経過していないとアカウントの移行はできません。

戻る