Files
crm.clientright.ru/check_nextcloud_apps.php

144 lines
4.8 KiB
PHP
Raw Permalink Normal View History

<?php
/**
* Проверка установленных приложений Nextcloud
*/
$baseUrl = 'https://office.clientright.ru';
$username = 'admin';
$password = 'yft,fkjdj90';
echo "=== Проверка установленных приложений Nextcloud ===\n\n";
// 1. Проверяем OCS API для списка приложений
echo "1. Получаем список активных приложений...\n";
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => "$baseUrl/ocs/v2.php/cloud/apps?filter=enabled",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
CURLOPT_USERPWD => "$username:$password",
CURLOPT_HTTPHEADER => ['OCS-APIRequest: true', 'Accept: application/json'],
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo "HTTP Status: $httpCode\n";
if ($httpCode == 200) {
$data = json_decode($response, true);
if (isset($data['ocs']['data']['apps'])) {
$apps = $data['ocs']['data']['apps'];
echo "Найдено приложений: " . count($apps) . "\n\n";
// Ищем редакторы
$editors = [];
foreach ($apps as $app) {
if (stripos($app, 'office') !== false ||
stripos($app, 'collabora') !== false ||
stripos($app, 'richdocuments') !== false ||
stripos($app, 'onlyoffice') !== false) {
$editors[] = $app;
}
}
if (!empty($editors)) {
echo "📝 Найдены редакторы документов:\n";
foreach ($editors as $editor) {
echo " - $editor\n";
}
} else {
echo "⚠️ Редакторы документов не найдены!\n";
}
echo "\n📋 Все приложения:\n";
foreach (array_slice($apps, 0, 20) as $app) {
echo " - $app\n";
}
if (count($apps) > 20) {
echo " ... и ещё " . (count($apps) - 20) . " приложений\n";
}
}
} else {
echo "Ошибка получения списка приложений\n";
echo "Response: $response\n";
}
// 2. Проверяем конкретные редакторы
echo "\n\n2. Проверяем доступность конкретных редакторов...\n";
$editors_to_check = [
'richdocuments' => "$baseUrl/apps/richdocuments",
'onlyoffice' => "$baseUrl/apps/onlyoffice",
'files_texteditor' => "$baseUrl/apps/files_texteditor",
];
foreach ($editors_to_check as $name => $url) {
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_NOBODY => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
CURLOPT_USERPWD => "$username:$password",
]);
curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$status = $httpCode == 200 ? '✅ Доступен' : '❌ Недоступен';
echo " $name: $status (HTTP $httpCode)\n";
}
// 3. Проверяем fileId для тестового документа
echo "\n\n3. Проверяем fileId для документа 395695...\n";
$ncPath = '/crm/crm2/CRM_Active_Files/Documents/395695/zayavlenie_proekt.docx';
$webdavUrl = "$baseUrl/remote.php/dav/files/admin" . $ncPath;
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $webdavUrl,
CURLOPT_CUSTOMREQUEST => 'PROPFIND',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Depth: 0',
'Content-Type: application/xml; charset=utf-8',
],
CURLOPT_POSTFIELDS => '<?xml version="1.0"?>
<d:propfind xmlns:d="DAV:" xmlns:oc="http://owncloud.org/ns" xmlns:nc="http://nextcloud.org/ns">
<d:prop>
<oc:fileid />
<oc:size />
<d:getcontenttype />
</d:prop>
</d:propfind>',
CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
CURLOPT_USERPWD => "$username:$password",
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo "HTTP Status: $httpCode\n";
if ($httpCode == 207) {
// Парсим XML
$xml = simplexml_load_string($response);
$namespaces = $xml->getNamespaces(true);
foreach ($xml->xpath('//oc:fileid') as $fileid) {
echo "FileID: $fileid\n";
}
foreach ($xml->xpath('//oc:size') as $size) {
echo "Size: $size bytes\n";
}
foreach ($xml->xpath('//d:getcontenttype') as $type) {
echo "Content-Type: $type\n";
}
} else {
echo "Ошибка получения fileId\n";
echo "Response: " . substr($response, 0, 500) . "\n";
}
echo "\n=== Проверка завершена ===\n";