لوحة تحكم XUI One
إجراءات المشترك
false, 'message' => 'No action specified']);
exit;
}
switch ($input['action']) {
case 'login':
handleLogin($input);
break;
case 'createUser':
handleCreateUser($input);
break;
case 'generateM3U':
handleGenerateM3U($input);
break;
case 'generateXtream':
handleGenerateXtream($input);
break;
case 'resetUser':
handleResetUser($input);
break;
default:
echo json_encode(['success' => false, 'message' => 'Invalid action']);
}
}
function callXuiApi($url, $endpoint, $token = null, $data = null) {
$ch = curl_init($url . '/api/' . $endpoint);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
if ($token) {
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer ' . $token,
'Content-Type: application/json'
]);
}
if ($data) {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
}
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}
function handleLogin($input) {
if (empty($input['panelUrl']) || empty($input['username']) || empty($input['password'])) {
echo json_encode(['success' => false, 'message' => 'Missing credentials']);
return;
}
$result = callXuiApi($input['panelUrl'], 'login', null, [
'username' => $input['username'],
'password' => $input['password']
]);
if (isset($result['token'])) {
echo json_encode(['success' => true, 'token' => $result['token']]);
} else {
echo json_encode(['success' => false, 'message' => $result['msg'] ?? 'Login failed']);
}
}
function handleCreateUser($input) {
if (empty($input['panelUrl']) || empty($input['token']) || empty($input['username']) || empty($input['password'])) {
echo json_encode(['success' => false, 'message' => 'Missing data']);
return;
}
$expireDate = date('Y-m-d', strtotime('+' . $input['expireDays'] . ' days'));
$result = callXuiApi($input['panelUrl'], 'user', $input['token'], [
'username' => $input['username'],
'password' => $input['password'],
'expire' => $expireDate,
'package' => null,
'description' => 'Created via API',
'active' => 1,
'multi_login' => 1
]);
if (isset($result['success']) && $result['success']) {
echo json_encode(['success' => true]);
} else {
echo json_encode(['success' => false, 'message' => $result['msg'] ?? 'User creation failed']);
}
}
function handleGenerateM3U($input) {
if (empty($input['panelUrl']) || empty($input['token']) || empty($input['username'])) {
echo json_encode(['success' => false, 'message' => 'Missing data']);
return;
}
$result = callXuiApi($input['panelUrl'], 'user/' . $input['username'], $input['token']);
if (isset($result['success']) && $result['success']) {
// إنشاء محتوى ملف M3U بسيط (يمكنك تخصيصه حسب احتياجاتك)
$m3uContent = "#EXTM3U\n";
$m3uContent .= "#EXTINF:-1,Main Stream\n";
$m3uContent .= $input['panelUrl'] . "/stream/" . $input['username'] . "/" . $result['data']['password'] . "/1\n";
echo json_encode([
'success' => true,
'm3uContent' => $m3uContent
]);
} else {
echo json_encode(['success' => false, 'message' => $result['msg'] ?? 'Failed to generate M3U']);
}
}
function handleGenerateXtream($input) {
if (empty($input['panelUrl']) || empty($input['token']) || empty($input['username'])) {
echo json_encode(['success' => false, 'message' => 'Missing data']);
return;
}
$result = callXuiApi($input['panelUrl'], 'user/' . $input['username'], $input['token']);
if (isset($result['success']) && $result['success']) {
echo json_encode([
'success' => true,
'xtreamData' => [
'url' => $input['panelUrl'],
'username' => $input['username'],
'password' => $result['data']['password']
]
]);
} else {
echo json_encode(['success' => false, 'message' => $result['msg'] ?? 'Failed to generate Xtream data']);
}
}
function handleResetUser($input) {
if (empty($input['panelUrl']) || empty($input['token']) || empty($input['username'])) {
echo json_encode(['success' => false, 'message' => 'Missing data']);
return;
}
$result = callXuiApi($input['panelUrl'], 'user/' . $input['username'] . '/reset', $input['token'], []);
if (isset($result['success']) && $result['success']) {
echo json_encode(['success' => true]);
} else {
echo json_encode(['success' => false, 'message' => $result['msg'] ?? 'Reset failed']);
}
}
?>