mirror of
https://github.com/YACReader/yacreader
synced 2025-08-27 08:34:42 -04:00
YACReader
YACReaderLibrary
db
server
controllers
lib
documentcache.h
main.cpp
requestmapper.cpp
requestmapper.h
server.pri
startup.cpp
startup.h
static.cpp
static.h
YACReaderLibrary.icns
YACReaderLibrary.pro
add_library_dialog.cpp
add_library_dialog.h
bundle_creator.cpp
bundle_creator.h
comic_flow.cpp
comic_flow.h
comic_flow_widget.cpp
comic_flow_widget.h
create_library_dialog.cpp
create_library_dialog.h
export_comics_info_dialog.cpp
export_comics_info_dialog.h
export_library_dialog.cpp
export_library_dialog.h
files.qrc
icon.ico
icon.rc
icon2.ico
icon3.ico
images.qrc
import_comics_info_dialog.cpp
import_comics_info_dialog.h
import_library_dialog.cpp
import_library_dialog.h
library_creator.cpp
library_creator.h
library_window.cpp
library_window.h
main.cpp
options_dialog.cpp
options_dialog.h
package_manager.cpp
package_manager.h
properties_dialog.cpp
properties_dialog.h
rename_library_dialog.cpp
rename_library_dialog.h
server_config_dialog.cpp
server_config_dialog.h
yacreaderlibrary_es.qm
yacreaderlibrary_es.ts
common
dependencies
files
images
release
COPYING.txt
README.txt
compileOSX.sh
compileX11.sh
generateVS2010Projects.bat
releaseOSX.sh
Se ha eliminado el soporte del servidor para conexiones persistentes. A?adido soporte para buscar aleatoriamente un puerto v?lido, si el seleccionado por el usuario no esta disponible
94 lines
3.0 KiB
C++
94 lines
3.0 KiB
C++
/**
|
|
@file
|
|
@author Stefan Frings
|
|
*/
|
|
|
|
#include "requestmapper.h"
|
|
#include "static.h"
|
|
#include "staticfilecontroller.h"
|
|
#include "controllers/dumpcontroller.h"
|
|
#include "controllers/templatecontroller.h"
|
|
#include "controllers/formcontroller.h"
|
|
#include "controllers/fileuploadcontroller.h"
|
|
#include "controllers/sessioncontroller.h"
|
|
|
|
#include "controllers/librariescontroller.h"
|
|
#include "controllers/foldercontroller.h"
|
|
#include "controllers/covercontroller.h"
|
|
#include "controllers/comiccontroller.h"
|
|
#include "controllers/folderinfocontroller.h"
|
|
#include "controllers/pagecontroller.h"
|
|
#include "controllers/errorcontroller.h"
|
|
|
|
#include "library_window.h"
|
|
|
|
extern LibraryWindow * mw;
|
|
|
|
RequestMapper::RequestMapper(QObject* parent)
|
|
:HttpRequestHandler(parent) {}
|
|
|
|
void RequestMapper::service(HttpRequest& request, HttpResponse& response) {
|
|
QByteArray path=request.getPath();
|
|
qDebug("RequestMapper: path=%s",path.data());
|
|
|
|
QRegExp folder("/library/.+/folder/[0-9]+/?");//get comic content
|
|
QRegExp folderInfo("/library/.+/folder/[0-9]+/info/?"); //get folder info
|
|
QRegExp comic("/library/.+/comic/[0-9]+/?"); //get comic info
|
|
QRegExp comicOpen("/library/.+/comic/[0-9]+/open/?"); //the server will open for reading the comic
|
|
QRegExp comicClose("/library/.+/comic/[0-9]+/close/?"); //the server will close the comic and free memory
|
|
QRegExp cover("/library/.+/cover/[0-9a-f]+.jpg"); //get comic cover (navigation)
|
|
QRegExp comicPage("/library/.+/comic/[0-9]+/page/[0-9]+/?"); //get comic page
|
|
|
|
QRegExp library("/library/([^/.]+)/.+"); //permite verificar que la biblioteca solicitada existe
|
|
|
|
path = QUrl::fromPercentEncoding(path).toLatin1();
|
|
|
|
//primera petición, se ha hecho un post, se sirven las bibliotecas si la seguridad mediante login no está habilitada
|
|
if(path == "/")
|
|
{
|
|
LibrariesController().service(request, response);
|
|
}
|
|
|
|
else
|
|
{
|
|
//se comprueba que la sesión sea la correcta con el fin de evitar accesos no autorizados
|
|
HttpSession session=Static::sessionStore->getSession(request,response,false);
|
|
if(!session.isNull() && session.contains("ySession"))
|
|
{
|
|
if(library.indexIn(path)!=-1 && mw->getLibraries().contains(library.cap(1)) )
|
|
{
|
|
//listar el contenido del folder
|
|
if(folder.exactMatch(path))
|
|
{
|
|
FolderController().service(request, response);
|
|
}
|
|
else if (folderInfo.exactMatch(path))
|
|
{
|
|
FolderInfoController().service(request, response);
|
|
}
|
|
else if(cover.exactMatch(path))
|
|
{
|
|
CoverController().service(request, response);
|
|
}
|
|
else if(comic.exactMatch(path))
|
|
{
|
|
ComicController().service(request, response);
|
|
}
|
|
else if(comicPage.exactMatch(path))
|
|
{
|
|
PageController().service(request,response);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//response.writeText(library.cap(1));
|
|
Static::staticFileController->service(request, response);
|
|
}
|
|
}
|
|
else //acceso no autorizado, redirección
|
|
{
|
|
ErrorController(300).service(request,response);
|
|
}
|
|
}
|
|
|
|
} |