first commit, base server
This commit is contained in:
commit
e5078b4969
29
ServidorTFG.pro
Normal file
29
ServidorTFG.pro
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
TEMPLATE = app
|
||||||
|
CONFIG += console c++11
|
||||||
|
CONFIG -= app_bundle
|
||||||
|
CONFIG -= qt
|
||||||
|
LIBS += -lcrypto -lssl -pthread -lcppunit -lmysqlcppconn
|
||||||
|
SOURCES += \
|
||||||
|
main.cpp \
|
||||||
|
conexion.cpp \
|
||||||
|
conexion_ssl.cpp \
|
||||||
|
thread_selector.cpp \
|
||||||
|
config_reader.cpp \
|
||||||
|
tests.cpp \
|
||||||
|
data_acces.cpp \
|
||||||
|
msql_acces.cpp \
|
||||||
|
session_manager.cpp \
|
||||||
|
session_manager_ssl.cpp \
|
||||||
|
config_package.cpp
|
||||||
|
|
||||||
|
HEADERS += \
|
||||||
|
conexion.h \
|
||||||
|
conexion_ssl.h \
|
||||||
|
thread_selector.h \
|
||||||
|
config_reader.h \
|
||||||
|
tests.h \
|
||||||
|
data_acces.h \
|
||||||
|
msql_acces.h \
|
||||||
|
session_manager.h \
|
||||||
|
session_manager_ssl.h \
|
||||||
|
config_package.h
|
292
ServidorTFG.pro.user
Normal file
292
ServidorTFG.pro.user
Normal file
@ -0,0 +1,292 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE QtCreatorProject>
|
||||||
|
<!-- Written by QtCreator 4.8.2, 2020-05-07T01:43:45. -->
|
||||||
|
<qtcreator>
|
||||||
|
<data>
|
||||||
|
<variable>EnvironmentId</variable>
|
||||||
|
<value type="QByteArray">{6372de0b-6c3f-4b3a-9367-dde6c2574520}</value>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.ActiveTarget</variable>
|
||||||
|
<value type="int">0</value>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.EditorSettings</variable>
|
||||||
|
<valuemap type="QVariantMap">
|
||||||
|
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
|
||||||
|
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
|
||||||
|
<value type="QString" key="language">Cpp</value>
|
||||||
|
<valuemap type="QVariantMap" key="value">
|
||||||
|
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
|
||||||
|
</valuemap>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
|
||||||
|
<value type="QString" key="language">QmlJS</value>
|
||||||
|
<valuemap type="QVariantMap" key="value">
|
||||||
|
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
|
||||||
|
</valuemap>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
|
||||||
|
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
|
||||||
|
<value type="int" key="EditorConfiguration.IndentSize">4</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
|
||||||
|
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
|
||||||
|
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
|
||||||
|
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
|
||||||
|
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
|
||||||
|
<value type="int" key="EditorConfiguration.TabSize">8</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
|
||||||
|
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
|
||||||
|
</valuemap>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.PluginSettings</variable>
|
||||||
|
<valuemap type="QVariantMap">
|
||||||
|
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey"/>
|
||||||
|
<value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
|
||||||
|
</valuemap>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.Target.0</variable>
|
||||||
|
<valuemap type="QVariantMap">
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{dd182432-2a2f-4b92-8ddc-d07764586196}</value>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
|
||||||
|
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/roche/Cosas/C++/build-ServidorTFG-Desktop-Debug</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
|
||||||
|
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||||
|
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||||
|
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||||
|
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
|
||||||
|
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/roche/Cosas/C++/build-ServidorTFG-Desktop-Release</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
|
||||||
|
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||||
|
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||||
|
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||||
|
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
|
||||||
|
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/roche/Cosas/C++/build-ServidorTFG-Desktop-Profile</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
|
||||||
|
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||||
|
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||||
|
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Profile</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||||
|
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||||
|
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy Configuration</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
|
||||||
|
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
|
||||||
|
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
|
||||||
|
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
|
||||||
|
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
|
||||||
|
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
|
||||||
|
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
|
||||||
|
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">ServidorTFG</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/roche/Cosas/C++/ServidorTFG/ServidorTFG.pro</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">ServidorTFG.pro</value>
|
||||||
|
<value type="QString" key="RunConfiguration.Arguments"></value>
|
||||||
|
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||||
|
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
|
||||||
|
<value type="QString" key="RunConfiguration.WorkingDirectory.default">/home/roche/Cosas/C++/build-ServidorTFG-Desktop-Debug</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
||||||
|
</valuemap>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.TargetCount</variable>
|
||||||
|
<value type="int">1</value>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
|
||||||
|
<value type="int">20</value>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>Version</variable>
|
||||||
|
<value type="int">20</value>
|
||||||
|
</data>
|
||||||
|
</qtcreator>
|
82
conexion.cpp
Normal file
82
conexion.cpp
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
#include "conexion.h"
|
||||||
|
#include "session_manager.h"
|
||||||
|
#include "msql_acces.h"
|
||||||
|
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
#include <thread>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
void conexion_client(int client);
|
||||||
|
|
||||||
|
conexion::conexion(config_reader &config)
|
||||||
|
{
|
||||||
|
this->config=&config;
|
||||||
|
this->data=new msql_acces();
|
||||||
|
}
|
||||||
|
|
||||||
|
int conexion::create_socket(int port)
|
||||||
|
{
|
||||||
|
int s;
|
||||||
|
struct sockaddr_in addr;
|
||||||
|
|
||||||
|
addr.sin_family = AF_INET;
|
||||||
|
addr.sin_port = htons(port);
|
||||||
|
addr.sin_addr.s_addr = htonl(INADDR_ANY);
|
||||||
|
|
||||||
|
s = socket(AF_INET, SOCK_STREAM, 0);
|
||||||
|
if (s < 0) {
|
||||||
|
perror("Unable to create socket");
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bind(s, (struct sockaddr*)&addr, sizeof(addr)) < 0) {
|
||||||
|
perror("Unable to bind");
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (listen(s, 1) < 0) {
|
||||||
|
perror("Unable to listen");
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
void conexion::start_server(){
|
||||||
|
int sock;
|
||||||
|
string port;
|
||||||
|
if(!this->config->get_param("port", port)){
|
||||||
|
perror("bad port in config file");
|
||||||
|
}
|
||||||
|
sock = this->create_socket(atoi(port.data()));
|
||||||
|
|
||||||
|
while(1) {
|
||||||
|
struct sockaddr_in addr;
|
||||||
|
uint len = sizeof(addr);
|
||||||
|
int client = accept(sock, (struct sockaddr*)&addr, &len);
|
||||||
|
std::thread t_client(conexion_client , client);
|
||||||
|
t_client.detach();
|
||||||
|
//cont++;
|
||||||
|
}
|
||||||
|
close(sock);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool conexion::check_pass(std::string username, std::string passwd){
|
||||||
|
return passwd==this->data->get_passwd(username);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void conexion_client(int client){
|
||||||
|
char buf [256];
|
||||||
|
|
||||||
|
if (client < 0) {
|
||||||
|
perror("Unable to accept");
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}else{
|
||||||
|
session_manager* session = new session_manager(client);
|
||||||
|
while(session->validate_pass());
|
||||||
|
session->execute();
|
||||||
|
delete (session);
|
||||||
|
close(client);
|
||||||
|
}
|
||||||
|
}
|
18
conexion.h
Normal file
18
conexion.h
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#ifndef CONEXION_H
|
||||||
|
#define CONEXION_H
|
||||||
|
#include <string>
|
||||||
|
#include "config_reader.h"
|
||||||
|
#include "data_acces.h"
|
||||||
|
using namespace std;
|
||||||
|
class conexion
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
conexion(config_reader &conf);
|
||||||
|
virtual void start_server();
|
||||||
|
bool check_pass(std::string username, std::string passwd);
|
||||||
|
protected:
|
||||||
|
data_acces* data;
|
||||||
|
int create_socket(int port);
|
||||||
|
config_reader* config;
|
||||||
|
};
|
||||||
|
#endif // CONEXION_H
|
133
conexion_ssl.cpp
Normal file
133
conexion_ssl.cpp
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
#include "conexion_ssl.h"
|
||||||
|
#include "session_manager.h"
|
||||||
|
#include "session_manager_ssl.h"
|
||||||
|
#include "config_reader.h"
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <cstring>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
#include <openssl/err.h>
|
||||||
|
#include <thread>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
void init_openssl();
|
||||||
|
void cleanup_openssl();
|
||||||
|
SSL_CTX *create_context();
|
||||||
|
void conexion_client(SSL_CTX *ctx,int client);
|
||||||
|
|
||||||
|
conexion_ssl::conexion_ssl(config_reader &conf):conexion(conf)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void conexion_ssl::start_server(){
|
||||||
|
int sock;
|
||||||
|
string port;
|
||||||
|
if(!this->config->get_param("port", port)){
|
||||||
|
perror("bad port in config file");
|
||||||
|
}
|
||||||
|
sock = this->create_socket(atoi(port.data()));
|
||||||
|
/* Handle connections */
|
||||||
|
SSL_CTX *ctx;
|
||||||
|
|
||||||
|
init_openssl();
|
||||||
|
ctx = create_context();
|
||||||
|
|
||||||
|
this->configure_context(ctx);
|
||||||
|
|
||||||
|
//std::thread *hilos=new thread[50];
|
||||||
|
//int cont=0;
|
||||||
|
while(1) {
|
||||||
|
struct sockaddr_in addr;
|
||||||
|
uint len = sizeof(addr);
|
||||||
|
int client = accept(sock, (struct sockaddr*)&addr, &len);
|
||||||
|
std::thread t_client(conexion_client,ctx , client);
|
||||||
|
t_client.detach();
|
||||||
|
//cont++;
|
||||||
|
}
|
||||||
|
close(sock);
|
||||||
|
SSL_CTX_free(ctx);
|
||||||
|
cleanup_openssl();
|
||||||
|
}
|
||||||
|
|
||||||
|
void init_openssl()
|
||||||
|
{
|
||||||
|
SSL_load_error_strings();
|
||||||
|
OpenSSL_add_ssl_algorithms();
|
||||||
|
}
|
||||||
|
|
||||||
|
void cleanup_openssl()
|
||||||
|
{
|
||||||
|
EVP_cleanup();
|
||||||
|
}
|
||||||
|
|
||||||
|
SSL_CTX* conexion_ssl::create_context()
|
||||||
|
{
|
||||||
|
const SSL_METHOD *method;
|
||||||
|
SSL_CTX *ctx;
|
||||||
|
|
||||||
|
method = SSLv23_server_method();
|
||||||
|
|
||||||
|
ctx = SSL_CTX_new(method);
|
||||||
|
if (!ctx) {
|
||||||
|
perror("Unable to create SSL context");
|
||||||
|
ERR_print_errors_fp(stderr);
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
|
||||||
|
void conexion_ssl::configure_context(SSL_CTX *ctx)
|
||||||
|
{
|
||||||
|
SSL_CTX_set_ecdh_auto(ctx, 1);
|
||||||
|
|
||||||
|
/* Set the key and cert */
|
||||||
|
|
||||||
|
string cert;
|
||||||
|
if(!this->config->get_param("cert", cert)){
|
||||||
|
perror("bad cert in config file");
|
||||||
|
}
|
||||||
|
if (SSL_CTX_use_certificate_file(ctx, cert.data(), SSL_FILETYPE_PEM) <= 0) {
|
||||||
|
ERR_print_errors_fp(stderr);
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
string key;
|
||||||
|
if(!this->config->get_param("key", key)){
|
||||||
|
perror("bad key in config file");
|
||||||
|
}
|
||||||
|
if (SSL_CTX_use_PrivateKey_file(ctx, key.data(), SSL_FILETYPE_PEM) <= 0 ) {
|
||||||
|
ERR_print_errors_fp(stderr);
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void conexion_client(SSL_CTX *ctx,int client){
|
||||||
|
char buf [256];
|
||||||
|
|
||||||
|
if (client < 0) {
|
||||||
|
perror("Unable to accept");
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}else{
|
||||||
|
SSL *ssl;
|
||||||
|
ssl = SSL_new(ctx);
|
||||||
|
SSL_set_fd(ssl, client);
|
||||||
|
|
||||||
|
if (SSL_accept(ssl) <= 0) {
|
||||||
|
ERR_print_errors_fp(stderr);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
session_manager* session = new session_manager_ssl(ssl);
|
||||||
|
while(!session->validate_pass());
|
||||||
|
session->execute();
|
||||||
|
//SSL_write(ssl,std::to_string(la->execute()).data() , sizeof (int));
|
||||||
|
delete (session);
|
||||||
|
}
|
||||||
|
SSL_shutdown(ssl);
|
||||||
|
SSL_free(ssl);
|
||||||
|
close(client);
|
||||||
|
}
|
||||||
|
}
|
19
conexion_ssl.h
Normal file
19
conexion_ssl.h
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#ifndef CONEXION_SSL_H
|
||||||
|
#define CONEXION_SSL_H
|
||||||
|
#include "conexion.h"
|
||||||
|
|
||||||
|
#include <openssl/ssl.h>
|
||||||
|
|
||||||
|
class conexion_ssl : public conexion
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
conexion_ssl(config_reader &conf);
|
||||||
|
void start_server();
|
||||||
|
private:
|
||||||
|
/*void init_openssl();
|
||||||
|
void cleanup_openssl();*/
|
||||||
|
SSL_CTX *create_context();
|
||||||
|
void configure_context(SSL_CTX *ctx);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // CONEXION_SSL_H
|
19
config_package.cpp
Normal file
19
config_package.cpp
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#include "config_package.h"
|
||||||
|
|
||||||
|
config_package::config_package(std::string name) : name(name){
|
||||||
|
this->file = std::fstream("/etc/portage/package.use/"+name, std::ifstream::in);
|
||||||
|
|
||||||
|
for(std::string line; std::getline(this->file, line);){
|
||||||
|
this->uses+=line+"\n";
|
||||||
|
}
|
||||||
|
this->file.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
void config_package::change_uses(std::string remote_uses){
|
||||||
|
if(remote_uses!=this->uses){
|
||||||
|
this->file=std::fstream("/etc/portage/package.use/"+name, std::ofstream::out);
|
||||||
|
this->file << remote_uses;
|
||||||
|
this->file.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
17
config_package.h
Normal file
17
config_package.h
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#ifndef CONFIG_PACKAGE_H
|
||||||
|
#define CONFIG_PACKAGE_H
|
||||||
|
#include <string>
|
||||||
|
#include <fstream>
|
||||||
|
|
||||||
|
class config_package
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
config_package(std::string name);
|
||||||
|
void change_uses(std::string remote_uses);
|
||||||
|
private:
|
||||||
|
std::string name;
|
||||||
|
std::string uses;
|
||||||
|
std::fstream file;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // CONFIG_PACKAGE_H
|
27
config_reader.cpp
Normal file
27
config_reader.cpp
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
#include "config_reader.h"
|
||||||
|
#include <iostream>
|
||||||
|
config_reader::config_reader(std::string dir)
|
||||||
|
{
|
||||||
|
this->file.open(dir, std::ios::in);
|
||||||
|
std::string prueba;
|
||||||
|
std::getline(file, prueba);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool config_reader::get_param(std::string variable, std::string &value){
|
||||||
|
this->file.clear();
|
||||||
|
this->file.seekg(0, file.beg);
|
||||||
|
std::string line;
|
||||||
|
while(std::getline(file, line)){
|
||||||
|
std::string no_coment=line.substr(0,line.find("#"));
|
||||||
|
std::size_t found=no_coment.find(variable);
|
||||||
|
if(found!=std::string::npos){
|
||||||
|
no_coment=no_coment.substr(found+variable.length(), no_coment.length());
|
||||||
|
found=no_coment.find("=");
|
||||||
|
if(found!=std::string::npos){
|
||||||
|
value=no_coment.substr(found+1, no_coment.length());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
15
config_reader.h
Normal file
15
config_reader.h
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#ifndef CONFIG_READER_H
|
||||||
|
#define CONFIG_READER_H
|
||||||
|
#include <string>
|
||||||
|
#include <fstream>
|
||||||
|
|
||||||
|
class config_reader
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
config_reader(std::string);
|
||||||
|
bool get_param(std::string variable, std::string &value);
|
||||||
|
private:
|
||||||
|
std::ifstream file;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // CONFIG_READER_H
|
6
data_acces.cpp
Normal file
6
data_acces.cpp
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#include "data_acces.h"
|
||||||
|
|
||||||
|
data_acces::data_acces()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
13
data_acces.h
Normal file
13
data_acces.h
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#ifndef DATA_ACCES_H
|
||||||
|
#define DATA_ACCES_H
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
class data_acces
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
data_acces();
|
||||||
|
virtual std::string get_passwd(std::string username) = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // DATA_ACCES_H
|
41
main.cpp
Normal file
41
main.cpp
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
#include <iostream>
|
||||||
|
#include <cstdlib>
|
||||||
|
|
||||||
|
#include "conexion.h"
|
||||||
|
#include "conexion_ssl.h"
|
||||||
|
#include "config_reader.h"
|
||||||
|
#include "tests.h"
|
||||||
|
|
||||||
|
#define file_config "config"
|
||||||
|
CPPUNIT_TEST_SUITE_REGISTRATION( test_basic );
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
//inicio de los tests
|
||||||
|
CPPUNIT_NS::TestResult testresult;
|
||||||
|
CPPUNIT_NS::TestResultCollector collectedresults;
|
||||||
|
testresult.addListener (&collectedresults);
|
||||||
|
CPPUNIT_NS::BriefTestProgressListener progress;
|
||||||
|
testresult.addListener (&progress);
|
||||||
|
CPPUNIT_NS::TestRunner testrunner;
|
||||||
|
testrunner.addTest (CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest ());
|
||||||
|
testrunner.run(testresult);
|
||||||
|
CPPUNIT_NS::CompilerOutputter compileroutputter(&collectedresults, std::cerr);
|
||||||
|
compileroutputter.write ();
|
||||||
|
|
||||||
|
config_reader conf = config_reader(file_config);
|
||||||
|
string option;
|
||||||
|
if(conf.get_param("security",option)){
|
||||||
|
conexion *con=nullptr;
|
||||||
|
if(option=="yes"){
|
||||||
|
con = new conexion_ssl(conf);
|
||||||
|
}else if(option=="no"){
|
||||||
|
con = new conexion(conf);
|
||||||
|
}else{
|
||||||
|
perror("unknow option in security option");
|
||||||
|
}
|
||||||
|
con->start_server();
|
||||||
|
}else{
|
||||||
|
perror("no define security option");
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
20
msql_acces.cpp
Normal file
20
msql_acces.cpp
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#include "msql_acces.h"
|
||||||
|
#include <iostream>
|
||||||
|
msql_acces::msql_acces()
|
||||||
|
{
|
||||||
|
driver = get_driver_instance();
|
||||||
|
con = driver->connect("tcp://127.0.0.1:3306", "root", "1234");
|
||||||
|
con->setSchema("bin_database");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
std::string msql_acces::get_passwd(std::string username){
|
||||||
|
sql::PreparedStatement *pstmt = con->prepareStatement("select passwd from users where username=?");
|
||||||
|
pstmt->setString(1,username);
|
||||||
|
sql::ResultSet *res = pstmt->executeQuery();
|
||||||
|
std::string ret;
|
||||||
|
while(res->next())
|
||||||
|
ret = res->getString("passwd");
|
||||||
|
delete res;
|
||||||
|
return ret;
|
||||||
|
}
|
21
msql_acces.h
Normal file
21
msql_acces.h
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#ifndef MSQL_ACCES_H
|
||||||
|
#define MSQL_ACCES_H
|
||||||
|
#include "data_acces.h"
|
||||||
|
|
||||||
|
#include <cppconn/driver.h>
|
||||||
|
#include <cppconn/exception.h>
|
||||||
|
#include <cppconn/resultset.h>
|
||||||
|
#include <cppconn/statement.h>
|
||||||
|
#include <cppconn/prepared_statement.h>
|
||||||
|
|
||||||
|
class msql_acces : public data_acces
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
msql_acces();
|
||||||
|
std::string get_passwd(std::string username);
|
||||||
|
private:
|
||||||
|
sql::Connection *con;
|
||||||
|
sql::Driver *driver;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // MSQL_ACCES_H
|
81
session_manager.cpp
Normal file
81
session_manager.cpp
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
#include "session_manager.h"
|
||||||
|
#include "msql_acces.h"
|
||||||
|
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <sys/wait.h>
|
||||||
|
#include <iostream>
|
||||||
|
#include <cstring>
|
||||||
|
|
||||||
|
session_manager::session_manager(int fd)
|
||||||
|
{
|
||||||
|
this->fd=fd;
|
||||||
|
this->data=new msql_acces();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool session_manager::validate_pass(){
|
||||||
|
char* buffer = new char[256];
|
||||||
|
this->read_data(buffer, 256);
|
||||||
|
std::string user=buffer;
|
||||||
|
this->read_data(buffer, 256);
|
||||||
|
std::string pass=buffer;
|
||||||
|
if(this->data->get_passwd(user)==pass){
|
||||||
|
this->write_data("pass");
|
||||||
|
return true;
|
||||||
|
}else{
|
||||||
|
this->write_data("fail");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void session_manager::start_dialog(){
|
||||||
|
char* buffer = new char[5];
|
||||||
|
while(true){
|
||||||
|
this->read_data(buffer,5);
|
||||||
|
if(strcmp(buffer, "exec")==0){
|
||||||
|
this->execute();
|
||||||
|
}else if(strcmp(buffer, "info")==0){
|
||||||
|
this->send_information();
|
||||||
|
}else if(strcmp(buffer,"exit")){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int session_manager::execute(){
|
||||||
|
char* n_package = new char[256];
|
||||||
|
this->read_data(n_package, 256);
|
||||||
|
this->args=new char*[4];
|
||||||
|
this->args[0]="emerge";
|
||||||
|
this->args[1]="--ask";
|
||||||
|
this->args[2]=n_package;
|
||||||
|
this->args[3]=nullptr;
|
||||||
|
int pid = fork();
|
||||||
|
int status=-2;
|
||||||
|
if(pid==0){
|
||||||
|
if(execvp(this->args[0],this->args)==-1){
|
||||||
|
std::cout << "error inesperado" << std::endl;
|
||||||
|
}
|
||||||
|
exit(0);
|
||||||
|
}else {
|
||||||
|
waitpid(pid, &status, WCONTINUED);
|
||||||
|
if(status>0){
|
||||||
|
this->write_data("ok");
|
||||||
|
}else{
|
||||||
|
this->write_data("bad");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
delete[] (n_package);
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
void session_manager::send_information(){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int session_manager::read_data(char* input, int size){
|
||||||
|
return read(this->fd, input, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
int session_manager::write_data(std::string output){
|
||||||
|
return write(this->fd, output.data(), output.size());
|
||||||
|
}
|
21
session_manager.h
Normal file
21
session_manager.h
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#ifndef LAUNCHER_H
|
||||||
|
#define LAUNCHER_H
|
||||||
|
#include <iostream>
|
||||||
|
#include <data_acces.h>
|
||||||
|
class session_manager
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
session_manager(int fd);
|
||||||
|
void start_dialog();
|
||||||
|
int execute();
|
||||||
|
void send_information();
|
||||||
|
bool validate_pass();
|
||||||
|
private:
|
||||||
|
virtual int read_data(char* input, int size);
|
||||||
|
virtual int write_data(std::string output);
|
||||||
|
int fd;
|
||||||
|
data_acces* data;
|
||||||
|
char** args;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // LAUNCHER_H
|
14
session_manager_ssl.cpp
Normal file
14
session_manager_ssl.cpp
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#include "session_manager_ssl.h"
|
||||||
|
|
||||||
|
session_manager_ssl::session_manager_ssl(SSL* sfd):session_manager(-1)
|
||||||
|
{
|
||||||
|
this->sfd=sfd;
|
||||||
|
}
|
||||||
|
|
||||||
|
int session_manager_ssl::read_data(char* input, int size){
|
||||||
|
return SSL_read(this->sfd, input, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
int session_manager_ssl::write_data(std::string output){
|
||||||
|
return SSL_write(this->sfd, output.data(), output.size());
|
||||||
|
}
|
16
session_manager_ssl.h
Normal file
16
session_manager_ssl.h
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#ifndef SESSION_MANAGER_SSL_H
|
||||||
|
#define SESSION_MANAGER_SSL_H
|
||||||
|
#include <openssl/ssl.h>
|
||||||
|
#include "session_manager.h"
|
||||||
|
|
||||||
|
class session_manager_ssl : public session_manager
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
session_manager_ssl(SSL* fd);
|
||||||
|
int read_data(char* input, int size);
|
||||||
|
int write_data(std::string output);
|
||||||
|
private:
|
||||||
|
SSL* sfd;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // SESSION_MANAGER_SSL_H
|
22
tests.cpp
Normal file
22
tests.cpp
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#include "tests.h"
|
||||||
|
|
||||||
|
void test_basic::setUp(){
|
||||||
|
this->conf=new config_reader("config");
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_basic::testInitial(){
|
||||||
|
std::string res;
|
||||||
|
CPPUNIT_ASSERT(true==this->conf->get_param("port",res));
|
||||||
|
CPPUNIT_ASSERT("4433"==res);
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_basic::pass_tests(){
|
||||||
|
CPPUNIT_NS::TestResult testresult;
|
||||||
|
CPPUNIT_NS::TestResultCollector collectedresults;
|
||||||
|
testresult.addListener (&collectedresults);
|
||||||
|
CPPUNIT_NS::BriefTestProgressListener progress;
|
||||||
|
testresult.addListener (&progress);
|
||||||
|
CPPUNIT_NS::TestRunner testrunner;
|
||||||
|
testrunner.addTest (CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest ());
|
||||||
|
testrunner.run(testresult);
|
||||||
|
}
|
28
tests.h
Normal file
28
tests.h
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
#ifndef TESTS_H
|
||||||
|
#define TESTS_H
|
||||||
|
#include <cppunit/TestCase.h>
|
||||||
|
#include <cppunit/TestFixture.h>
|
||||||
|
#include <cppunit/ui/text/TextTestRunner.h>
|
||||||
|
#include <cppunit/extensions/HelperMacros.h>
|
||||||
|
#include <cppunit/extensions/TestFactoryRegistry.h>
|
||||||
|
#include <cppunit/TestResult.h>
|
||||||
|
#include <cppunit/TestResultCollector.h>
|
||||||
|
#include <cppunit/TestRunner.h>
|
||||||
|
#include <cppunit/BriefTestProgressListener.h>
|
||||||
|
#include <cppunit/CompilerOutputter.h>
|
||||||
|
#include <cppunit/XmlOutputter.h>
|
||||||
|
#include "config_reader.h"
|
||||||
|
using namespace CppUnit;
|
||||||
|
|
||||||
|
class test_basic : public CppUnit::TestFixture{
|
||||||
|
CPPUNIT_TEST_SUITE(test_basic);
|
||||||
|
CPPUNIT_TEST(testInitial);
|
||||||
|
CPPUNIT_TEST_SUITE_END();
|
||||||
|
public:
|
||||||
|
void setUp(void);
|
||||||
|
void pass_tests();
|
||||||
|
private:
|
||||||
|
void testInitial(void);
|
||||||
|
config_reader *conf;
|
||||||
|
};
|
||||||
|
#endif // TESTS_H
|
6
thread_selector.cpp
Normal file
6
thread_selector.cpp
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#include "thread_selector.h"
|
||||||
|
|
||||||
|
thread_selector::thread_selector()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
15
thread_selector.h
Normal file
15
thread_selector.h
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#ifndef THREAD_SELECTOR_H
|
||||||
|
#define THREAD_SELECTOR_H
|
||||||
|
#include <queue>
|
||||||
|
#include <thread>
|
||||||
|
|
||||||
|
class thread_selector
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
thread_selector();
|
||||||
|
private:
|
||||||
|
std::queue<int> t_pos;
|
||||||
|
std::thread* list;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // THREAD_SELECTOR_H
|
Loading…
Reference in New Issue
Block a user