Download account.json for Render

This commit is contained in:
Khrysse 2025-06-22 12:44:55 +02:00
parent 8bb851fb9d
commit 519edc3a27
5 changed files with 46 additions and 7 deletions

View File

@ -1,6 +1,4 @@
from fastapi import APIRouter, HTTPException from fastapi import APIRouter
import httpx
import json
router = APIRouter() router = APIRouter()

View File

@ -6,4 +6,6 @@ load_dotenv(dotenv_path=Path(__file__).parent.parent / ".env")
CLIENT_NAME = os.getenv("CLIENT_NAME", "default-client-name") CLIENT_NAME = os.getenv("CLIENT_NAME", "default-client-name")
API_BASE = os.getenv("VRCHAT_API_BASE", "https://api.vrchat.cloud/api/1") API_BASE = os.getenv("VRCHAT_API_BASE", "https://api.vrchat.cloud/api/1")
TOKEN_FILE = Path(os.getenv("TOKEN_FILE", "data/auth/account.json")) TOKEN_FILE = Path(os.getenv("TOKEN_FILE", "data/auth/account.json"))
IS_RENDER = os.getenv("IS_RENDER", "false").lower() in ("true", "1", "t") IS_RENDER = os.getenv("IS_RENDER", "false").lower() in ("true", "1", "t")
ACCOUNT_URL_JSON = os.getenv("ACCOUNT_JSON_URL", "https://example.com/vrcapi_render_download_acc.php")
ACCOUNT_JSON_TOKEN = os.getenv("ACCOUNT_JSON_TOKEN", "your-token-here")

View File

@ -17,7 +17,7 @@ app = FastAPI(
- Automatic token management with 2FA handling - Automatic token management with 2FA handling
- Public and private VRChat data endpoints - Public and private VRChat data endpoints
- Response caching for performance - Response caching for performance
- Easy deployment on self-hosted servers (YunoHost compatible) - Easy deployment on hosted servers (Render compatible)
Built with FastAPI and async HTTPX for high performance and reliability. Built with FastAPI and async HTTPX for high performance and reliability.
""", """,

View File

@ -6,10 +6,25 @@ import sys
from pathlib import Path from pathlib import Path
sys.path.append(str(Path(__file__).resolve().parent.parent)) sys.path.append(str(Path(__file__).resolve().parent.parent))
from env import CLIENT_NAME, API_BASE, TOKEN_FILE, IS_RENDER from env import CLIENT_NAME, API_BASE, TOKEN_FILE, IS_RENDER, ACCOUNT_URL_JSON, ACCOUNT_JSON_TOKEN
if IS_RENDER: if IS_RENDER:
print("⚠️ Running in Render environment, skipping VRChat auth.") import requests
print("⚠️ Running in Render environment, downloading account.json with token in URL...")
url = f"{ACCOUNT_URL_JSON}?token={ACCOUNT_JSON_TOKEN}"
try:
response = requests.get(url)
response.raise_for_status()
except requests.RequestException as e:
print(f"❌ Failed to download account.json: {e}")
sys.exit(1)
with open("data/auth/account.json", "wb") as f:
f.write(response.content)
print("✅ account.json downloaded successfully.")
sys.exit(0) sys.exit(0)
def save_token(data): def save_token(data):

View File

@ -0,0 +1,24 @@
<?php
define('ACCESS_TOKEN', 'mon_token_de_securite_ici');
if (!isset($_GET['token']) || $_GET['token'] !== ACCESS_TOKEN) {
header('HTTP/1.1 401 Unauthorized');
echo json_encode(['error' => 'Unauthorized']);
exit;
}
$jsonContent = <<<'JSON'
{
"manual_username": "user123",
"displayName": "User Display Name",
"user_id": "abcdef123456",
"auth": "xxxxxxxxxxxxxxx==",
"auth_cookie": "yyyyyyyyyyyyyy",
"created_at": "2025-06-22T14:00:00+00:00"
}
JSON;
header('Content-Type: application/json');
echo $jsonContent;
?>