299 lines
16 KiB
PHP
299 lines
16 KiB
PHP
<?php
|
|
/**
|
|
* FavMasToKey - Page de diagnostic
|
|
*/
|
|
|
|
// Définir la constante pour inclure les fichiers
|
|
define('FAVMASTOKEY', true);
|
|
|
|
// Inclure les fichiers requis
|
|
require_once 'includes/config.php';
|
|
require_once 'includes/functions.php';
|
|
|
|
// Traitement des actions AVANT tout envoi de contenu HTML
|
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|
if (isset($_POST['reset_session'])) {
|
|
// Conserver l'ID de session pour les messages
|
|
$old_session_id = session_id();
|
|
|
|
// Détruire la session
|
|
session_destroy();
|
|
|
|
// Redémarrer une nouvelle session
|
|
session_start();
|
|
|
|
$session_message = 'Session réinitialisée. Ancien ID: ' . $old_session_id . ', Nouvel ID: ' . session_id();
|
|
}
|
|
|
|
if (isset($_POST['test_connection']) && ENVIRONMENT === 'development') {
|
|
if (isset($_SESSION['misskey_token']) && isset($_SESSION['misskey_instance'])) {
|
|
$test_result = validate_misskey_token($_SESSION['misskey_instance'], $_SESSION['misskey_token']);
|
|
|
|
if ($test_result['success']) {
|
|
$connection_message = 'Connexion à l\'API Misskey réussie!';
|
|
$connection_status = 'success';
|
|
$connection_data = isset($test_result['data']) ? $test_result['data'] : null;
|
|
} else {
|
|
$connection_message = 'Échec de la connexion à l\'API Misskey: ' . (is_string($test_result['message']) ? $test_result['message'] : json_encode($test_result['message']));
|
|
$connection_status = 'danger';
|
|
}
|
|
} else {
|
|
$connection_message = 'Aucun token ou instance disponible dans la session.';
|
|
$connection_status = 'warning';
|
|
}
|
|
}
|
|
}
|
|
|
|
// Fonction pour tester si une URL est accessible
|
|
function test_url($url) {
|
|
$ch = curl_init($url);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($ch, CURLOPT_NOBODY, true);
|
|
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
|
|
curl_exec($ch);
|
|
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
|
curl_close($ch);
|
|
return $http_code;
|
|
}
|
|
|
|
// Déterminer les URLs importantes
|
|
$current_url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
|
|
$root_url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']);
|
|
|
|
// Tester l'API Misskey si un token est disponible
|
|
$misskey_api_status = 'Non testé';
|
|
$misskey_api_details = '';
|
|
if (isset($_SESSION['misskey_token']) && isset($_SESSION['misskey_instance'])) {
|
|
$token_test = validate_misskey_token($_SESSION['misskey_instance'], $_SESSION['misskey_token']);
|
|
if ($token_test['success']) {
|
|
$misskey_api_status = 'OK';
|
|
$misskey_api_details = 'Token valide, API accessible';
|
|
} else {
|
|
$misskey_api_status = 'Erreur';
|
|
$misskey_api_details = isset($token_test['message']) ? (is_string($token_test['message']) ? $token_test['message'] : json_encode($token_test['message'])) : 'Erreur inconnue';
|
|
}
|
|
}
|
|
|
|
// Test de connexion à l'API process.php
|
|
// Remarque : process.php accepte seulement les requêtes POST, donc un échec avec HTTP 405 est normal ici
|
|
$process_url = $root_url . '/process.php';
|
|
$process_status = test_url($process_url);
|
|
?>
|
|
<!DOCTYPE html>
|
|
<html lang="fr" data-bs-theme="dark">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<meta name="theme-color" content="#7e57c2">
|
|
<link rel="icon" href="images/favicon.svg" type="image/svg+xml">
|
|
<title>Diagnostic - FavMasToKey</title>
|
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css">
|
|
<link rel="stylesheet" href="css/styles.css">
|
|
</head>
|
|
<body>
|
|
<div class="container py-5">
|
|
<header class="text-center mb-4">
|
|
<h1>FavMasToKey - Diagnostic</h1>
|
|
<p class="lead">Informations de débogage pour l'application</p>
|
|
<p><a href="index.php" class="btn btn-primary">Retour à l'application</a></p>
|
|
</header>
|
|
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
<div class="card mb-4">
|
|
<div class="card-header">
|
|
<h2 class="card-title h5 mb-0">Configuration actuelle</h2>
|
|
</div>
|
|
<div class="card-body">
|
|
<dl class="row">
|
|
<dt class="col-sm-3">Environnement</dt>
|
|
<dd class="col-sm-9"><?php echo ENVIRONMENT; ?></dd>
|
|
|
|
<dt class="col-sm-3">URL de l'application (config)</dt>
|
|
<dd class="col-sm-9"><?php echo $config['app_url']; ?></dd>
|
|
|
|
<dt class="col-sm-3">URL courante</dt>
|
|
<dd class="col-sm-9"><?php echo $current_url; ?></dd>
|
|
|
|
<dt class="col-sm-3">Test de l'API process.php</dt>
|
|
<dd class="col-sm-9">
|
|
<?php
|
|
if ($process_status === 405) {
|
|
echo '<span class="badge bg-success">OK (405)</span> - L\'API process.php n\'accepte que les requêtes POST';
|
|
} elseif ($process_status >= 200 && $process_status < 400) {
|
|
echo '<span class="badge bg-success">OK (' . $process_status . ')</span>';
|
|
} else {
|
|
echo '<span class="badge bg-danger">Échec (' . $process_status . ')</span> - L\'API process.php n\'est pas accessible';
|
|
}
|
|
?>
|
|
</dd>
|
|
|
|
<dt class="col-sm-3">Version de l'application</dt>
|
|
<dd class="col-sm-9"><?php echo $config['app_version']; ?></dd>
|
|
|
|
<dt class="col-sm-3">Instance Misskey connectée</dt>
|
|
<dd class="col-sm-9">
|
|
<?php
|
|
if (isset($_SESSION['misskey_instance'])) {
|
|
echo htmlspecialchars($_SESSION['misskey_instance']);
|
|
} else {
|
|
echo '<span class="text-muted">Non connecté</span>';
|
|
}
|
|
?>
|
|
</dd>
|
|
|
|
<dt class="col-sm-3">Statut de l'API Misskey</dt>
|
|
<dd class="col-sm-9">
|
|
<?php
|
|
if ($misskey_api_status === 'OK') {
|
|
echo '<span class="badge bg-success">OK</span> ' . htmlspecialchars($misskey_api_details);
|
|
} elseif ($misskey_api_status === 'Erreur') {
|
|
echo '<span class="badge bg-danger">Erreur</span> ' . htmlspecialchars($misskey_api_details);
|
|
} else {
|
|
echo '<span class="badge bg-secondary">Non testé</span> (Aucun jeton disponible)';
|
|
}
|
|
?>
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card mb-4">
|
|
<div class="card-header">
|
|
<h2 class="card-title h5 mb-0">État de la session</h2>
|
|
</div>
|
|
<div class="card-body">
|
|
<dl class="row">
|
|
<dt class="col-sm-3">ID de session</dt>
|
|
<dd class="col-sm-9"><?php echo session_id(); ?></dd>
|
|
|
|
<dt class="col-sm-3">Token stocké</dt>
|
|
<dd class="col-sm-9">
|
|
<?php
|
|
if (isset($_SESSION['misskey_token'])) {
|
|
$token = $_SESSION['misskey_token'];
|
|
$masked_token = substr($token, 0, 4) . '...' . substr($token, -4);
|
|
echo '<code>' . htmlspecialchars($masked_token) . '</code> (principal)';
|
|
} else {
|
|
echo '<span class="text-muted">Non défini</span>';
|
|
}
|
|
|
|
// Ajouter les tokens supplémentaires du mode filou
|
|
if (isset($_SESSION['additional_tokens']) && !empty($_SESSION['additional_tokens'])) {
|
|
echo '<br><strong>Tokens supplémentaires (mode filou):</strong><ul>';
|
|
|
|
foreach ($_SESSION['additional_tokens'] as $token_id => $token_data) {
|
|
$token = $token_data['token'];
|
|
$name = isset($token_data['name']) ? $token_data['name'] : 'Token sans nom';
|
|
$masked_token = substr($token, 0, 4) . '...' . substr($token, -4);
|
|
|
|
echo '<li><strong>' . htmlspecialchars($name) . ':</strong> <code>' .
|
|
htmlspecialchars($masked_token) . '</code></li>';
|
|
}
|
|
|
|
echo '</ul>';
|
|
}
|
|
?>
|
|
</dd>
|
|
|
|
<dt class="col-sm-3">Instance Misskey</dt>
|
|
<dd class="col-sm-9">
|
|
<?php
|
|
if (isset($_SESSION['misskey_instance'])) {
|
|
echo htmlspecialchars($_SESSION['misskey_instance']);
|
|
} else {
|
|
echo '<span class="text-muted">Non défini</span>';
|
|
}
|
|
?>
|
|
</dd>
|
|
|
|
<dt class="col-sm-3">Données de localStorage</dt>
|
|
<dd class="col-sm-9">
|
|
<div id="local-storage-info">
|
|
<span class="text-muted">Chargement...</span>
|
|
</div>
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card mb-4">
|
|
<div class="card-header">
|
|
<h2 class="card-title h5 mb-0">Actions</h2>
|
|
</div>
|
|
<div class="card-body">
|
|
<form method="post" class="mb-3">
|
|
<button type="submit" name="reset_session" class="btn btn-warning">Réinitialiser la session</button>
|
|
<button type="button" id="clear-localstorage" class="btn btn-danger">Effacer les données localStorage</button>
|
|
<?php if (ENVIRONMENT === 'development'): ?>
|
|
<button type="submit" name="test_connection" class="btn btn-info">Tester la connexion à l'API Misskey</button>
|
|
<?php endif; ?>
|
|
</form>
|
|
|
|
<?php
|
|
// Afficher les messages des actions traitées au début du script
|
|
if (isset($session_message)) {
|
|
echo '<div class="alert alert-success">' . $session_message . '</div>';
|
|
}
|
|
|
|
if (isset($connection_message)) {
|
|
echo '<div class="alert alert-' . $connection_status . '">' . $connection_message . '</div>';
|
|
|
|
if (ENVIRONMENT === 'development' && isset($connection_data)) {
|
|
echo '<pre class="bg-dark text-light p-3">';
|
|
print_r($connection_data);
|
|
echo '</pre>';
|
|
}
|
|
}
|
|
?>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<div class="card-header">
|
|
<h2 class="card-title h5 mb-0">Instructions pour résoudre les problèmes</h2>
|
|
</div>
|
|
<div class="card-body">
|
|
<h5>Problème de connexion avec le jeton</h5>
|
|
<p>Si vous obtenez une erreur lors de la connexion avec votre jeton Misskey :</p>
|
|
|
|
<ol>
|
|
<li>Vérifiez que vous avez copié correctement le jeton d'accès complet, sans espaces supplémentaires.</li>
|
|
<li>Assurez-vous que vous avez accordé les permissions suivantes :
|
|
<ul>
|
|
<li><strong>Afficher les informations du compte</strong></li>
|
|
<li><strong>Afficher les favoris</strong></li>
|
|
<li><strong>Gérer les favoris</strong></li>
|
|
</ul>
|
|
</li>
|
|
<li>Essayez de générer un nouveau jeton d'accès depuis votre instance Misskey.</li>
|
|
<li>Vérifiez que votre instance Misskey est accessible et fonctionne correctement.</li>
|
|
</ol>
|
|
|
|
<h5>Problème avec localStorage</h5>
|
|
<p>Si l'application ne se souvient pas de votre progression :</p>
|
|
|
|
<ol>
|
|
<li>Assurez-vous que JavaScript est activé dans votre navigateur.</li>
|
|
<li>Vérifiez que votre navigateur autorise l'utilisation de localStorage pour ce site.</li>
|
|
<li>Essayez d'effacer les données localStorage en utilisant le bouton ci-dessus, puis recommencez le processus.</li>
|
|
</ol>
|
|
|
|
<h5>Problème de traitement des favoris</h5>
|
|
<p>Si certains favoris ne peuvent pas être ajoutés :</p>
|
|
|
|
<ol>
|
|
<li>Vérifiez que votre instance Misskey peut se fédérer avec les instances des publications originales.</li>
|
|
<li>Certaines publications peuvent avoir été supprimées ou rendues privées, ce qui les rend inaccessibles.</li>
|
|
<li>Votre instance peut avoir des limitations de taux (rate limiting). Dans ce cas, essayez de réduire la vitesse de traitement en modifiant le délai entre les requêtes dans le fichier de configuration.</li>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
|
|
<script src="js/diagnostic.js"></script>
|
|
</body>
|
|
</html>
|