This commit is contained in:
2025-12-05 11:48:24 +03:00
parent 63cd6a71d1
commit 57673d0ee4
160 changed files with 315 additions and 315 deletions

174
Server/Data/Client.h Normal file
View File

@@ -0,0 +1,174 @@
#ifndef CLIENT_H
#define CLIENT_H
#include <QString>
#include <QTcpSocket>
#include "typesDataServerClient.h"
class Client
{
public:
Client(QString name, QString address, QString port,QObject *parent = nullptr):
login(""),
ready(false),
typeClient(TypeClientAutorization::TYPE_QT_CLIENT)
{
this->name = name;
this->address = address;
this->port = port;
//this->fullName = "Name: " + name + " IP: " + address + " port : " + port + " login: " + login;
this->fullName = "IP: " + address + " port : " + port + " login: " + login;
};
~Client(){};
public:
QString getFullName()
{
return fullName;
};
void setLogin(QString login)
{
this->login = login;
isLoggedIn = true;
//fullName = "Name: " + name + " IP: " + address + " port : " + port + " login: " + login;
fullName = "IP: " + address + " port : " + port + " login: " + login;
}
QString getLogin()
{
return login;
}
QString getAddress()
{
return address;
}
QString getPort()
{
return port;
}
bool getReady()
{
return ready;
}
void setReady(bool ready)
{
this->ready = ready;
}
void setUnity(TypeClientAutorization type)
{
typeClient = type;
}
TypeClientAutorization getClientType()
{
return typeClient;
}
void setTypeClient(TypeClientAutorization TypeClient)
{
this->typeClient = TypeClient;
}
TypeClientAutorization getTypeClient()
{
return typeClient;
}
void changePackageResponse()
{
if (typeClient == TypeClientAutorization::TYPE_QT_CLIENT)
typeClient = TypeClientAutorization::TYPE_UNITY_CLIENT;
else if (typeClient == TypeClientAutorization::TYPE_UNITY_CLIENT)
typeClient = TypeClientAutorization::TYPE_QT_CLIENT;
}
bool operator == (Client* right)
{
return this->address == right->address;
}
bool getIsLoggedIn()
{
return isLoggedIn;
}
void setIsLoggedIn(bool value)
{
isLoggedIn = value;
}
void setAccessType(UserType type)
{
userType = type;
}
UserType getAccessType()
{
return userType;
}
QString getId()
{
return id;
}
void setId(QString value)
{
id = value;
}
QByteArray getClientHash()
{
return clientHash;
}
void setClientHash(const QByteArray &value)
{
clientHash = value;
}
QList<FileData> getFileSendList() const
{
return fileSendList;
}
void setFileSendList(const QList<FileData> &value)
{
fileSendList = value;
}
QList<FileData> getFileDeleteList() const
{
return fileDeleteList;
}
void setFileDeleteList(const QList<FileData> &value)
{
fileDeleteList = value;
}
private:
QString name;
QString address;
QString port;
QString fullName;
QString id;
QString login;
bool ready;
bool isLoggedIn;
TypeClientAutorization typeClient;
UserType userType;
QByteArray clientHash;
QList<FileData> fileSendList;
QList<FileData> fileDeleteList;
};
#endif // CLIENT_H

111
Server/Data/PacketType.h Normal file
View File

@@ -0,0 +1,111 @@
#ifndef PACKETTYPE_H
#define PACKETTYPE_H
#include <QString>
enum PacketType
{
TYPE_NONE = 0,
TYPE_UNITY = 1,
TYPE_FILE = 2,
TYPE_COMMAND =3,
TYPE_FOLDER = 4,
TYPE_DELETE = 5,
UPDATE_FILES_COMPLETE = 6,
TYPE_NEEDUPDATE = 7,
TYPE_XMLANSWER = 8,
TYPE_QT = 9,
TYPE_DISABLE = 11,
TYPE_UPDATE = 12,
TYPE_CHECK_VERSION = 13,
TYPE_FILESIZE = 20,
TYPE_BIGXML = 21,
UPDATE_DOCS_COMPLETE = 22,
TYPE_XMLANSWER_MESSAGE_FOR_GUI = 90,
//xml-ответы на запросы к БД
TYPE_XMLANSWER_QUERY_DB__LIST_INSTRUCTORS = 100,
TYPE_XMLANSWER_QUERY_DB__LIST_GROUPS = 101,
TYPE_XMLANSWER_QUERY_DB__LIST_TRAINEES = 102,
TYPE_XMLANSWER_QUERY_DB__LIST_COMPUTERS = 103,
TYPE_XMLANSWER_QUERY_DB__LIST_CLASSROOMS = 104,
TYPE_XMLANSWER_QUERY_TASKS_AMM_OF_TRAINEE = 106,
TYPE_XMLANSWER_QUERY_TASKS_FIM_OF_TRAINEE = 107,
//xml-ответы на запросы AdditionalFiles
TYPE_XMLANSWER_QUERY_TASKS_XML_FIM = 130,
TYPE_XMLANSWER_QUERY_TASKS_XML_AMM = 131,
//оповещение об изменении docs.xml
TYPE_XMLANSWER_DOCS_CHANGED = 132,
TYPE_XMLANSWER_QUERY_LIST_SUB_PROC_AMM = 133,
//ответы по обновлениям
GET_VERSION = 149,
HASH_READY = 150,
CHANGE_DATA_VERSION = 151,
COPY_VERSION = 152,
DELETE_DATA_VERSION = 153,
BUSY = 154,
FREE = 155,
RECALCULATE_HASH = 156,
RECALCULATE_DOCS = 157,
GET_DOCS = 158,
SEND_HASH = 159
};
template<typename T>
QString enumToString(T value);
template<>
inline QString enumToString(PacketType value) {
switch(value) {
case PacketType::TYPE_NONE: return "TYPE_NONE";
case PacketType::TYPE_UNITY: return "TYPE_UNITY";
case PacketType::TYPE_FILE: return "TYPE_FILE";
case PacketType::TYPE_COMMAND: return "TYPE_COMMAND";
case PacketType::TYPE_FOLDER: return "TYPE_FOLDER";
case PacketType::TYPE_DELETE: return "TYPE_DELETE";
case PacketType::UPDATE_FILES_COMPLETE: return "UPDATE_FILE_COMPLETE";
case PacketType::TYPE_NEEDUPDATE: return "TYPE_NEEDUPDATE";
case PacketType::TYPE_XMLANSWER: return "TYPE_XMLANSWER";
case PacketType::TYPE_QT: return "TYPE_QT";
case PacketType::TYPE_DISABLE: return "TYPE_DISABLE";
case PacketType::TYPE_UPDATE: return "TYPE_UPDATE";
case PacketType::TYPE_CHECK_VERSION: return "TYPE_CHECK_VERSION";
case PacketType::TYPE_FILESIZE: return "TYPE_FILESIZE";
case PacketType::TYPE_BIGXML: return "TYPE_BIGXML";
case PacketType::UPDATE_DOCS_COMPLETE: return "UPDATE_DOCS_COMPLETE";
case PacketType::TYPE_XMLANSWER_MESSAGE_FOR_GUI: return "TYPE_XMLANSWER_MESSAGE_FOR_GUI";
case PacketType::TYPE_XMLANSWER_QUERY_DB__LIST_INSTRUCTORS: return "TYPE_XMLANSWER_QUERY_DB__LIST_INSTRUCTORS";
case PacketType::TYPE_XMLANSWER_QUERY_DB__LIST_GROUPS: return "TYPE_XMLANSWER_QUERY_DB__LIST_GROUPS";
case PacketType::TYPE_XMLANSWER_QUERY_DB__LIST_TRAINEES: return "TYPE_XMLANSWER_QUERY_DB__LIST_TRAINEES";
case PacketType::TYPE_XMLANSWER_QUERY_DB__LIST_COMPUTERS: return "TYPE_XMLANSWER_QUERY_DB__LIST_COMPUTERS";
case PacketType::TYPE_XMLANSWER_QUERY_DB__LIST_CLASSROOMS: return "TYPE_XMLANSWER_QUERY_DB__LIST_CLASSROOMS";
case PacketType::TYPE_XMLANSWER_QUERY_TASKS_AMM_OF_TRAINEE: return "TYPE_XMLANSWER_QUERY_TASKS_AMM_OF_TRAINEE";
case PacketType::TYPE_XMLANSWER_QUERY_TASKS_FIM_OF_TRAINEE: return "TYPE_XMLANSWER_QUERY_TASKS_FIM_OF_TRAINEE";
case PacketType::TYPE_XMLANSWER_QUERY_TASKS_XML_FIM: return "TYPE_XMLANSWER_QUERY_TASKS_XML_FIM";
case PacketType::TYPE_XMLANSWER_QUERY_TASKS_XML_AMM: return "TYPE_XMLANSWER_QUERY_TASKS_XML_AMM";
case PacketType::TYPE_XMLANSWER_DOCS_CHANGED: return "TYPE_XMLANSWER_DOCS_CHANGED";
case PacketType::TYPE_XMLANSWER_QUERY_LIST_SUB_PROC_AMM: return "TYPE_XMLANSWER_QUERY_LIST_SUB_PROC_AMM";
case PacketType::GET_VERSION: return "GET_VERSION";
case PacketType::HASH_READY: return "HASH_READY";
case PacketType::CHANGE_DATA_VERSION: return "CHANGE_DATA_VERSION";
case PacketType::COPY_VERSION: return "COPY_VERSION";
case PacketType::DELETE_DATA_VERSION: return "DELETE_DATA_VERSION";
case PacketType::BUSY: return "BUSY";
case PacketType::FREE: return "FREE";
case PacketType::RECALCULATE_HASH: return "HASH_CALCULATE_START";
case PacketType::RECALCULATE_DOCS: return "RECALCULATE_DOCS";
case PacketType::GET_DOCS: return "GET_DOCS";
case PacketType::SEND_HASH: return "SEND_HASH";
default: return "Unknown";
}
}
#endif // PACKETTYPE_H

View File

@@ -0,0 +1,102 @@
#ifndef STREAMINGVERSIONDATA_H
#define STREAMINGVERSIONDATA_H
#include <QTime>
#include <QString>
class StreamingVersionData
{
public:
StreamingVersionData(QString absoltePath,QString viewName,QDateTime data,qint32 size)
{
this->absolutePath = absoltePath;
this->viewName = viewName;
this->createData = data;
this->size = size;
this->isChangeable = false;
}
StreamingVersionData(){};
~StreamingVersionData();
void fill(StreamingVersionData* data)
{
this->absolutePath = data->getAbsolutPath();
this->viewName = data->getViewName();
this->createData = data->getCreateData();
this->size = data->getSize();
this->isChangeable = data->getIsChangeable();
this->author = data->getAuthor();
}
QString getAbsolutPath() const
{
return absolutePath;
}
QString getViewName() const
{
return viewName;
}
QDateTime getCreateData() const
{
return createData;
}
qint32 getSize() const
{
return size;
}
bool getIsChangeable() const
{
return isChangeable;
}
void setIsChangeable(bool value)
{
isChangeable = value;
}
QString getAuthor() const
{
return author;
}
void setAuthor(const QString &value)
{
author = value;
}
void setViewName(const QString &value)
{
viewName = value;
}
void setCreateData(const QDateTime &value)
{
createData = value;
}
void setAbsolutePath(const QString &value)
{
absolutePath = value;
}
private:
QString absolutePath;
QString viewName;
QString author;
QDateTime createData;
bool isChangeable;
qint32 size;
};
#endif // STREAMINGVERSIONDATA_H

View File

@@ -0,0 +1,155 @@
#ifndef TYPESDATASERVERCLIENT_H
#define TYPESDATASERVERCLIENT_H
#include <QList>
#include <QString>
#include "typeQueryToDB.h"
#define NOTIFY_ERROR_AUTH_DB "ERROR_AUTH_DB"
#define NOTIFY_ERROR_AUTH_LOGINORPASSWORD "ERROR_AUTH_LOGINORPASSWORD"
#define NOTIFY_ERROR_AUTH_ARCHIVED "ERROR_AUTH_ARCHIVED"
#define NOTIFY_ERROR_AUTH_ALREADYLOGIN "ERROR_AUTH_ALREADYLOGIN"
#define NOTIFY_SERVER_END "END"
#define NOTIFY_SERVER_BLOCKED "BLOCKED"
#define SERVER_HELLO "NewConnection. I am server LMS!"
enum EStateServer{started, stoped};
enum EStateBlockAutorization{blocked, unblocked};
struct FileData
{
QString path;
QString hash;
bool operator==(const FileData& other)const
{
if (this->path== other.path && this->hash == other.hash) return true;
return false;
}
bool operator<(const FileData& data2) const
{
return this->hash == "FOLDER" && data2.hash !="FOLDER";
}
};
struct SAttribute
{
QString name;
QString value;
};
struct SXmlAnswerTag
{
QString elementName;
QList<SAttribute> attr;
};
enum TypeClientAutorization{
TYPE_QT_CLIENT = 0,
TYPE_UNITY_CLIENT = 1,
TYPE_GUI = 10
};
enum UserType
{
INSTRUCTOR,
TRAINEE,
NONE = 100
};
class ClientAutorization
{
public:
QString Login;
QString Password;
int NumberOfScreen;
TypeClientAutorization TypeClient;
};
class ClientDeAutorization
{
public:
QString Login;
};
/*
enum TypeQueryToDB{
TYPE_QUERY_GET_ALL_LISTS,
TYPE_QUERY_NEW_INSTRUCTOR,
TYPE_QUERY_DEL_INSTRUCTOR,
TYPE_QUERY_EDIT_INSTRUCTOR,
TYPE_QUERY_NEW_GROUP,
TYPE_QUERY_DEL_GROUP,
TYPE_QUERY_EDIT_GROUP,
TYPE_QUERY_NEW_TRAINEE,
TYPE_QUERY_DEL_TRAINEE,
TYPE_QUERY_EDIT_TRAINEE,
TYPE_QUERY_ASSIGN_TASK_AMM_TO_TRAINEE,
TYPE_QUERY_ASSIGN_TASK_FIM_TO_TRAINEE
};
*/
class ClientQueryToDB{
public:
TypeQueryToDB typeQuery;
};
class ClientQueryTasksXML
{
public:
QString Type;
};
class ServerMessage
{
public:
QString Text;
};
class ClientMessage
{
public:
QString From;//формат"id-type"
QString To;//формат"id-type"
QString Text;
//id-0 инструктор
//id-1 обучаемый
ClientMessage(){}
ClientMessage(QString from,QString to,QString text)
{
From = from;
To = to;
Text = text;
}
};
class ServerTask
{
public:
QString Text;
};
class ServerNotify
{
public:
QString Code;
};
class ClientNotify
{
public:
QString Code;
};
class DataInfo{
public:
QString path;
quint64 size;
};
#endif // TYPESDATASERVERCLIENT_H

12
Server/Data/userType.h Normal file
View File

@@ -0,0 +1,12 @@
#ifndef USERTYPE_H
#define USERTYPE_H
#include <QString>
enum UserType{
INSTRUCTOR,
TRAINEES
};
#endif // USERTYPE_H