144 lines
4.8 KiB
PHP
144 lines
4.8 KiB
PHP
|
|
<?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";
|
|||
|
|
|