189 lines
5.5 KiB
JavaScript
189 lines
5.5 KiB
JavaScript
const express = require('express');
|
|
const router = express.Router();
|
|
|
|
// Эндпоинт для отладки сессий
|
|
router.get('/session', (req, res) => {
|
|
try {
|
|
console.log('Отладка сессии:', {
|
|
sessionID: req.sessionID,
|
|
session: req.session ? {
|
|
isAuthenticated: req.session.isAuthenticated,
|
|
authenticated: req.session.authenticated,
|
|
address: req.session.address,
|
|
isAdmin: req.session.isAdmin
|
|
} : null,
|
|
cookies: req.cookies,
|
|
headers: {
|
|
cookie: req.headers.cookie
|
|
}
|
|
});
|
|
|
|
res.json({
|
|
sessionID: req.sessionID,
|
|
session: req.session ? {
|
|
isAuthenticated: req.session.isAuthenticated,
|
|
authenticated: req.session.authenticated,
|
|
address: req.session.address,
|
|
isAdmin: req.session.isAdmin
|
|
} : null,
|
|
cookies: req.cookies
|
|
});
|
|
} catch (error) {
|
|
console.error('Ошибка при отладке сессии:', error);
|
|
res.status(500).json({ error: 'Internal server error' });
|
|
}
|
|
});
|
|
|
|
// Эндпоинт для создания тестовой сессии
|
|
router.post('/create-session', (req, res) => {
|
|
const { address } = req.body;
|
|
|
|
if (!address) {
|
|
return res.status(400).json({ error: 'Address is required' });
|
|
}
|
|
|
|
// Инициализируем сессию, если она не существует
|
|
if (!req.session) {
|
|
req.session = {};
|
|
}
|
|
|
|
req.session.isAuthenticated = true;
|
|
req.session.authenticated = true;
|
|
req.session.address = address.toLowerCase();
|
|
req.session.isAdmin = true;
|
|
|
|
// Сохраняем сессию
|
|
req.session.save((err) => {
|
|
if (err) {
|
|
console.error('Ошибка сохранения тестовой сессии:', err);
|
|
return res.status(500).json({ error: 'Session save error' });
|
|
}
|
|
|
|
console.log('Тестовая сессия создана:', {
|
|
sessionID: req.sessionID,
|
|
session: {
|
|
isAuthenticated: req.session.isAuthenticated,
|
|
authenticated: req.session.authenticated,
|
|
address: req.session.address,
|
|
isAdmin: req.session.isAdmin
|
|
}
|
|
});
|
|
|
|
res.cookie('authToken', 'true', {
|
|
maxAge: 86400000,
|
|
httpOnly: false,
|
|
secure: false,
|
|
sameSite: 'lax',
|
|
path: '/'
|
|
});
|
|
|
|
res.json({
|
|
success: true,
|
|
sessionID: req.sessionID,
|
|
address: req.session.address,
|
|
isAdmin: req.session.isAdmin
|
|
});
|
|
});
|
|
});
|
|
|
|
// Тестовый эндпоинт для отправки сообщений без проверки сессии
|
|
router.post('/test-chat', (req, res) => {
|
|
try {
|
|
const { message, address } = req.body;
|
|
|
|
console.log('Тестовый чат-запрос:', {
|
|
message,
|
|
address,
|
|
headers: {
|
|
cookie: req.headers.cookie,
|
|
'content-type': req.headers['content-type']
|
|
},
|
|
cookies: req.cookies,
|
|
session: req.session ? {
|
|
isAuthenticated: req.session.isAuthenticated,
|
|
authenticated: req.session.authenticated,
|
|
address: req.session.address,
|
|
isAdmin: req.session.isAdmin
|
|
} : null
|
|
});
|
|
|
|
if (!message) {
|
|
return res.status(400).json({ error: 'Message is required' });
|
|
}
|
|
|
|
// Возвращаем тестовый ответ
|
|
res.json({
|
|
response: `Тестовый ответ на сообщение: ${message}`,
|
|
receivedAddress: address,
|
|
sessionAddress: req.session?.address
|
|
});
|
|
} catch (error) {
|
|
console.error('Ошибка в тестовом чате:', error);
|
|
res.status(500).json({ error: 'Internal server error' });
|
|
}
|
|
});
|
|
|
|
// Тестовый эндпоинт для проверки соединения
|
|
router.get('/ping', (req, res) => {
|
|
res.json({
|
|
message: 'pong',
|
|
timestamp: new Date().toISOString(),
|
|
server: {
|
|
port: process.env.PORT || 8080,
|
|
address: req.socket.localAddress,
|
|
hostname: require('os').hostname()
|
|
}
|
|
});
|
|
});
|
|
|
|
// Тестовый эндпоинт для проверки Ollama
|
|
router.get('/ollama-test', async (req, res) => {
|
|
try {
|
|
const { directOllamaQuery } = require('../services/ollama');
|
|
|
|
// Тестовый запрос к Ollama
|
|
const result = await directOllamaQuery('Привет, как дела?', 'mistral');
|
|
|
|
res.json({
|
|
success: true,
|
|
response: result,
|
|
model: 'mistral'
|
|
});
|
|
} catch (error) {
|
|
console.error('Ошибка при тестировании Ollama:', error);
|
|
res.status(500).json({
|
|
success: false,
|
|
error: error.message || 'Ошибка при тестировании Ollama'
|
|
});
|
|
}
|
|
});
|
|
|
|
// Тестовый эндпоинт для проверки доступности Ollama
|
|
router.get('/ollama-status', async (req, res) => {
|
|
try {
|
|
const { checkOllamaAvailability } = require('../services/ollama');
|
|
|
|
// Проверяем доступность Ollama
|
|
const isAvailable = await checkOllamaAvailability();
|
|
|
|
if (isAvailable) {
|
|
res.json({
|
|
status: 'ok',
|
|
message: 'Ollama доступен'
|
|
});
|
|
} else {
|
|
res.status(503).json({
|
|
status: 'error',
|
|
message: 'Ollama недоступен'
|
|
});
|
|
}
|
|
} catch (error) {
|
|
console.error('Ошибка при проверке доступности Ollama:', error);
|
|
res.status(500).json({
|
|
status: 'error',
|
|
message: error.message || 'Ошибка при проверке доступности Ollama'
|
|
});
|
|
}
|
|
});
|
|
|
|
module.exports = router;
|