From 4576961ae6426605dfb17f514d1997f75ece4884 Mon Sep 17 00:00:00 2001 From: groche97 Date: Wed, 3 Jun 2020 22:39:12 +0200 Subject: [PATCH] minor fixes --- Makefile | 510 +++++++++++++++++++++++++++++++++++++++++++ ServidorTFG | Bin 0 -> 108560 bytes ServidorTFG.pro.user | 2 +- conf | 8 + session_manager.cpp | 23 +- 5 files changed, 528 insertions(+), 15 deletions(-) create mode 100644 Makefile create mode 100755 ServidorTFG create mode 100644 conf diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..1164566 --- /dev/null +++ b/Makefile @@ -0,0 +1,510 @@ +############################################################################# +# Makefile for building: ServidorTFG +# Generated by qmake (3.1) (Qt 5.14.2) +# Project: ServidorTFG.pro +# Template: app +# Command: /usr/lib64/qt5/bin/qmake -o Makefile ServidorTFG.pro +############################################################################# + +MAKEFILE = Makefile + +EQ = = + +####### Compiler, tools and options + +CC = gcc +CXX = g++ +DEFINES = +CFLAGS = -pipe -O2 -Wall -Wextra -fPIC $(DEFINES) +CXXFLAGS = -pipe -O2 -std=gnu++11 -Wall -Wextra -fPIC $(DEFINES) +INCPATH = -I. -I/usr/lib64/qt5/mkspecs/linux-g++ +QMAKE = /usr/lib64/qt5/bin/qmake +DEL_FILE = rm -f +CHK_DIR_EXISTS= test -d +MKDIR = mkdir -p +COPY = cp -f +COPY_FILE = cp -f +COPY_DIR = cp -f -R +INSTALL_FILE = install -m 644 -p +INSTALL_PROGRAM = install -m 755 -p +INSTALL_DIR = cp -f -R +QINSTALL = /usr/lib64/qt5/bin/qmake -install qinstall +QINSTALL_PROGRAM = /usr/lib64/qt5/bin/qmake -install qinstall -exe +DEL_FILE = rm -f +SYMLINK = ln -f -s +DEL_DIR = rmdir +MOVE = mv -f +TAR = tar -cf +COMPRESS = gzip -9f +DISTNAME = ServidorTFG1.0.0 +DISTDIR = /home/roche/Cosas/C++/ServidorTFG/.tmp/ServidorTFG1.0.0 +LINK = g++ +LFLAGS = -Wl,-O1 +LIBS = $(SUBLIBS) -lcrypto -lssl -pthread -lcppunit -lmysqlcppconn +AR = ar cqs +RANLIB = +SED = sed +STRIP = strip + +####### Output directory + +OBJECTS_DIR = ./ + +####### Files + +SOURCES = main.cpp \ + conexion.cpp \ + conexion_ssl.cpp \ + config_reader.cpp \ + tests.cpp \ + data_acces.cpp \ + msql_acces.cpp \ + session_manager.cpp \ + session_manager_ssl.cpp \ + config_package.cpp +OBJECTS = main.o \ + conexion.o \ + conexion_ssl.o \ + config_reader.o \ + tests.o \ + data_acces.o \ + msql_acces.o \ + session_manager.o \ + session_manager_ssl.o \ + config_package.o +DIST = /usr/lib64/qt5/mkspecs/features/spec_pre.prf \ + /usr/lib64/qt5/mkspecs/common/unix.conf \ + /usr/lib64/qt5/mkspecs/common/linux.conf \ + /usr/lib64/qt5/mkspecs/common/sanitize.conf \ + /usr/lib64/qt5/mkspecs/common/gcc-base.conf \ + /usr/lib64/qt5/mkspecs/common/gcc-base-unix.conf \ + /usr/lib64/qt5/mkspecs/common/g++-base.conf \ + /usr/lib64/qt5/mkspecs/common/g++-unix.conf \ + /usr/lib64/qt5/mkspecs/qconfig.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_concurrent.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_core.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_core_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_dbus.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_dbus_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_edid_support_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_egl_support_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_fb_support_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_glx_support_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_gui.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_gui_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_help.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_help_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_input_support_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_multimedia.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_multimedia_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_network.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_network_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_opengl.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_opengl_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_openglextensions.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_packetprotocol_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_printsupport.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qml.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qml_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qmldebug_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qmlmodels.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qmlmodels_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qmltest.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qmltest_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qmlworkerscript.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qmlworkerscript_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_quick.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_quick_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_quickshapes_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_quickwidgets.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_script.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_script_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_scripttools.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_scripttools_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_service_support_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_sql.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_sql_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_svg.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_svg_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_testlib.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_testlib_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_theme_support_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_waylandclient.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_waylandclient_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_waylandcompositor.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_waylandcompositor_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_widgets.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_widgets_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_x11extras.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_x11extras_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_xkbcommon_support_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_xml.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_xml_private.pri \ + /usr/lib64/qt5/mkspecs/features/qt_functions.prf \ + /usr/lib64/qt5/mkspecs/features/qt_config.prf \ + /usr/lib64/qt5/mkspecs/linux-g++/qmake.conf \ + /usr/lib64/qt5/mkspecs/features/spec_post.prf \ + .qmake.stash \ + /usr/lib64/qt5/mkspecs/features/exclusive_builds.prf \ + /usr/lib64/qt5/mkspecs/features/toolchain.prf \ + /usr/lib64/qt5/mkspecs/features/default_pre.prf \ + /usr/lib64/qt5/mkspecs/features/resolve_config.prf \ + /usr/lib64/qt5/mkspecs/features/default_post.prf \ + /usr/lib64/qt5/mkspecs/features/warn_on.prf \ + /usr/lib64/qt5/mkspecs/features/qmake_use.prf \ + /usr/lib64/qt5/mkspecs/features/file_copies.prf \ + /usr/lib64/qt5/mkspecs/features/testcase_targets.prf \ + /usr/lib64/qt5/mkspecs/features/exceptions.prf \ + /usr/lib64/qt5/mkspecs/features/yacc.prf \ + /usr/lib64/qt5/mkspecs/features/lex.prf \ + ServidorTFG.pro conexion.h \ + conexion_ssl.h \ + config_reader.h \ + tests.h \ + data_acces.h \ + msql_acces.h \ + session_manager.h \ + session_manager_ssl.h \ + config_package.h main.cpp \ + conexion.cpp \ + conexion_ssl.cpp \ + config_reader.cpp \ + tests.cpp \ + data_acces.cpp \ + msql_acces.cpp \ + session_manager.cpp \ + session_manager_ssl.cpp \ + config_package.cpp +QMAKE_TARGET = ServidorTFG +DESTDIR = +TARGET = ServidorTFG + + +first: all +####### Build rules + +ServidorTFG: $(OBJECTS) + $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS) + +Makefile: ServidorTFG.pro /usr/lib64/qt5/mkspecs/linux-g++/qmake.conf /usr/lib64/qt5/mkspecs/features/spec_pre.prf \ + /usr/lib64/qt5/mkspecs/common/unix.conf \ + /usr/lib64/qt5/mkspecs/common/linux.conf \ + /usr/lib64/qt5/mkspecs/common/sanitize.conf \ + /usr/lib64/qt5/mkspecs/common/gcc-base.conf \ + /usr/lib64/qt5/mkspecs/common/gcc-base-unix.conf \ + /usr/lib64/qt5/mkspecs/common/g++-base.conf \ + /usr/lib64/qt5/mkspecs/common/g++-unix.conf \ + /usr/lib64/qt5/mkspecs/qconfig.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_concurrent.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_core.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_core_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_dbus.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_dbus_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_edid_support_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_egl_support_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_fb_support_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_glx_support_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_gui.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_gui_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_help.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_help_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_input_support_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_multimedia.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_multimedia_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_network.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_network_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_opengl.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_opengl_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_openglextensions.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_packetprotocol_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_printsupport.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qml.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qml_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qmldebug_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qmlmodels.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qmlmodels_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qmltest.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qmltest_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qmlworkerscript.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_qmlworkerscript_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_quick.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_quick_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_quickshapes_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_quickwidgets.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_script.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_script_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_scripttools.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_scripttools_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_service_support_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_sql.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_sql_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_svg.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_svg_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_testlib.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_testlib_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_theme_support_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_waylandclient.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_waylandclient_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_waylandcompositor.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_waylandcompositor_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_widgets.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_widgets_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_x11extras.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_x11extras_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_xkbcommon_support_private.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_xml.pri \ + /usr/lib64/qt5/mkspecs/modules/qt_lib_xml_private.pri \ + /usr/lib64/qt5/mkspecs/features/qt_functions.prf \ + /usr/lib64/qt5/mkspecs/features/qt_config.prf \ + /usr/lib64/qt5/mkspecs/linux-g++/qmake.conf \ + /usr/lib64/qt5/mkspecs/features/spec_post.prf \ + .qmake.stash \ + /usr/lib64/qt5/mkspecs/features/exclusive_builds.prf \ + /usr/lib64/qt5/mkspecs/features/toolchain.prf \ + /usr/lib64/qt5/mkspecs/features/default_pre.prf \ + /usr/lib64/qt5/mkspecs/features/resolve_config.prf \ + /usr/lib64/qt5/mkspecs/features/default_post.prf \ + /usr/lib64/qt5/mkspecs/features/warn_on.prf \ + /usr/lib64/qt5/mkspecs/features/qmake_use.prf \ + /usr/lib64/qt5/mkspecs/features/file_copies.prf \ + /usr/lib64/qt5/mkspecs/features/testcase_targets.prf \ + /usr/lib64/qt5/mkspecs/features/exceptions.prf \ + /usr/lib64/qt5/mkspecs/features/yacc.prf \ + /usr/lib64/qt5/mkspecs/features/lex.prf \ + ServidorTFG.pro + $(QMAKE) -o Makefile ServidorTFG.pro +/usr/lib64/qt5/mkspecs/features/spec_pre.prf: +/usr/lib64/qt5/mkspecs/common/unix.conf: +/usr/lib64/qt5/mkspecs/common/linux.conf: +/usr/lib64/qt5/mkspecs/common/sanitize.conf: +/usr/lib64/qt5/mkspecs/common/gcc-base.conf: +/usr/lib64/qt5/mkspecs/common/gcc-base-unix.conf: +/usr/lib64/qt5/mkspecs/common/g++-base.conf: +/usr/lib64/qt5/mkspecs/common/g++-unix.conf: +/usr/lib64/qt5/mkspecs/qconfig.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_concurrent.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_concurrent_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_core.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_core_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_dbus.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_dbus_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_edid_support_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_egl_support_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_fb_support_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_glx_support_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_gui.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_gui_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_help.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_help_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_input_support_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_multimedia.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_multimedia_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_network.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_network_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_opengl.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_opengl_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_openglextensions.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_packetprotocol_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_printsupport.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_printsupport_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_qml.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_qml_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_qmldebug_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_qmlmodels.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_qmlmodels_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_qmltest.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_qmltest_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_qmlworkerscript.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_qmlworkerscript_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_quick.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_quick_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_quickshapes_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_quickwidgets.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_script.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_script_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_scripttools.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_scripttools_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_service_support_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_sql.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_sql_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_svg.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_svg_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_testlib.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_testlib_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_theme_support_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_waylandclient.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_waylandclient_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_waylandcompositor.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_waylandcompositor_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_widgets.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_widgets_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_x11extras.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_x11extras_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_xkbcommon_support_private.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_xml.pri: +/usr/lib64/qt5/mkspecs/modules/qt_lib_xml_private.pri: +/usr/lib64/qt5/mkspecs/features/qt_functions.prf: +/usr/lib64/qt5/mkspecs/features/qt_config.prf: +/usr/lib64/qt5/mkspecs/linux-g++/qmake.conf: +/usr/lib64/qt5/mkspecs/features/spec_post.prf: +.qmake.stash: +/usr/lib64/qt5/mkspecs/features/exclusive_builds.prf: +/usr/lib64/qt5/mkspecs/features/toolchain.prf: +/usr/lib64/qt5/mkspecs/features/default_pre.prf: +/usr/lib64/qt5/mkspecs/features/resolve_config.prf: +/usr/lib64/qt5/mkspecs/features/default_post.prf: +/usr/lib64/qt5/mkspecs/features/warn_on.prf: +/usr/lib64/qt5/mkspecs/features/qmake_use.prf: +/usr/lib64/qt5/mkspecs/features/file_copies.prf: +/usr/lib64/qt5/mkspecs/features/testcase_targets.prf: +/usr/lib64/qt5/mkspecs/features/exceptions.prf: +/usr/lib64/qt5/mkspecs/features/yacc.prf: +/usr/lib64/qt5/mkspecs/features/lex.prf: +ServidorTFG.pro: +qmake: FORCE + @$(QMAKE) -o Makefile ServidorTFG.pro + +qmake_all: FORCE + + +all: Makefile ServidorTFG + +dist: distdir FORCE + (cd `dirname $(DISTDIR)` && $(TAR) $(DISTNAME).tar $(DISTNAME) && $(COMPRESS) $(DISTNAME).tar) && $(MOVE) `dirname $(DISTDIR)`/$(DISTNAME).tar.gz . && $(DEL_FILE) -r $(DISTDIR) + +distdir: FORCE + @test -d $(DISTDIR) || mkdir -p $(DISTDIR) + $(COPY_FILE) --parents $(DIST) $(DISTDIR)/ + + +clean: compiler_clean + -$(DEL_FILE) $(OBJECTS) + -$(DEL_FILE) *~ core *.core + + +distclean: clean + -$(DEL_FILE) $(TARGET) + -$(DEL_FILE) .qmake.stash + -$(DEL_FILE) Makefile + + +####### Sub-libraries + +check: first + +benchmark: first + +compiler_yacc_decl_make_all: +compiler_yacc_decl_clean: +compiler_yacc_impl_make_all: +compiler_yacc_impl_clean: +compiler_lex_make_all: +compiler_lex_clean: +compiler_clean: + +####### Compile + +main.o: main.cpp conexion.h \ + config_reader.h \ + data_acces.h \ + conexion_ssl.h \ + tests.h \ + msql_acces.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp + +conexion.o: conexion.cpp conexion.h \ + config_reader.h \ + data_acces.h \ + session_manager.h \ + msql_acces.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o conexion.o conexion.cpp + +conexion_ssl.o: conexion_ssl.cpp conexion_ssl.h \ + conexion.h \ + config_reader.h \ + data_acces.h \ + session_manager.h \ + session_manager_ssl.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o conexion_ssl.o conexion_ssl.cpp + +config_reader.o: config_reader.cpp config_reader.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o config_reader.o config_reader.cpp + +tests.o: tests.cpp tests.h \ + config_reader.h \ + data_acces.h \ + msql_acces.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o tests.o tests.cpp + +data_acces.o: data_acces.cpp data_acces.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o data_acces.o data_acces.cpp + +msql_acces.o: msql_acces.cpp msql_acces.h \ + data_acces.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o msql_acces.o msql_acces.cpp + +session_manager.o: session_manager.cpp session_manager.h \ + data_acces.h \ + msql_acces.h \ + config_package.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o session_manager.o session_manager.cpp + +session_manager_ssl.o: session_manager_ssl.cpp session_manager_ssl.h \ + session_manager.h \ + data_acces.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o session_manager_ssl.o session_manager_ssl.cpp + +config_package.o: config_package.cpp config_package.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o config_package.o config_package.cpp + +####### Install + +install: FORCE + +uninstall: FORCE + +FORCE: + diff --git a/ServidorTFG b/ServidorTFG new file mode 100755 index 0000000000000000000000000000000000000000..c215b1d2a35e3500d5e6c823a0a772b217a6adea GIT binary patch literal 108560 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 literal 0 HcmV?d00001 diff --git a/ServidorTFG.pro.user b/ServidorTFG.pro.user index 217efb5..9dff60f 100644 --- a/ServidorTFG.pro.user +++ b/ServidorTFG.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/conf b/conf new file mode 100644 index 0000000..9353002 --- /dev/null +++ b/conf @@ -0,0 +1,8 @@ +#security=yes use tls, no use unsecure conexion +security=yes +#port to listen +port=4433 +#certificate to seccure conexion +cert=/home/roche/Cosas/OpenSSL/public.pem +#private key for certificate +key=/home/roche/Cosas/OpenSSL/private.pem diff --git a/session_manager.cpp b/session_manager.cpp index 8d0de0f..8811884 100644 --- a/session_manager.cpp +++ b/session_manager.cpp @@ -84,7 +84,7 @@ int session_manager::generate_package(){ return -1; } delete [] (use_conf); - std::string result = this->appli_command("--ask", n_package); + std::string result = this->appli_command("--buildpkg", n_package); delete[] (n_package); if(result=="err"){ return -1; @@ -99,24 +99,24 @@ int session_manager::generate_package(){ int session_manager::remove(){ char* n_package = new char[256]; this->read_data(n_package, 256); + this->read_data(n_package, 256); std::string result = this->appli_command("--unmerge",n_package); + this->data->write_remove(n_package); delete[] (n_package); if(result=="err"){ return -1; }else{ - this->data->write_remove(result); return 1; } } std::string session_manager::appli_command(char comand[], char* n_package){ - char** args=new char*[6]; + char** args=new char*[5]; args[0]="sudo"; args[1]=strcat(&this->env[0],"emerge"); - args[2]="--buildpkg"; - args[3]=comand; - args[4]=n_package; - args[5]=nullptr; + args[2]=comand; + args[3]=n_package; + args[4]=nullptr; int pid = fork(); int status=-2; std::string ret; @@ -127,13 +127,8 @@ std::string session_manager::appli_command(char comand[], char* n_package){ exit(0); }else { waitpid(pid, &status, WCONTINUED); - if(status>0){ - this->write_data("ok"); - ret = n_package; - }else{ - this->write_data("bad"); - ret = "err"; - } + this->write_data("ok"); + ret = n_package; } delete [] (args); return ret;