2020-09-19 09:47:02 +02:00
|
|
|
/*****************************************************************************
|
|
|
|
* smsub Server Manager Subprocess
|
|
|
|
* Copyright (C) 2020 Syping
|
|
|
|
*
|
|
|
|
* Redistribution and use in source and binary forms, with or without modification,
|
|
|
|
* are permitted provided that the following conditions are met:
|
|
|
|
*
|
|
|
|
* 1. Redistributions of source code must retain the above copyright notice,
|
|
|
|
* this list of conditions and the following disclaimer.
|
|
|
|
*
|
|
|
|
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
|
|
* this list of conditions and the following disclaimer in the documentation
|
|
|
|
* and/or other materials provided with the distribution.
|
|
|
|
*
|
|
|
|
* This software is provided as-is, no warranties are given to you, we are not
|
|
|
|
* responsible for anything with use of the software, you are self responsible.
|
|
|
|
*****************************************************************************/
|
|
|
|
|
|
|
|
#ifndef SMSUBSERVER_H
|
|
|
|
#define SMSUBSERVER_H
|
|
|
|
|
|
|
|
#include <QWebSocketServer>
|
|
|
|
#include <QLocalServer>
|
|
|
|
#include <QLocalSocket>
|
|
|
|
#include <QWebSocket>
|
|
|
|
#include <QObject>
|
|
|
|
|
|
|
|
struct SMSubServerSettings
|
|
|
|
{
|
|
|
|
bool canRegister;
|
|
|
|
bool isLocal;
|
|
|
|
};
|
|
|
|
|
|
|
|
class SMSubServer : public QObject
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
public:
|
|
|
|
SMSubServer(SMSubServerSettings *serverSettings, const QString &socket);
|
|
|
|
SMSubServer(SMSubServerSettings *serverSettings, const QString &serverName, const quint16 &port);
|
|
|
|
bool isListening();
|
|
|
|
|
|
|
|
enum ServerType { Local, WebSocket };
|
|
|
|
Q_ENUM(ServerType)
|
|
|
|
|
|
|
|
public slots:
|
|
|
|
void writeOutput(const QByteArray &output);
|
|
|
|
void registerToken(const QString &token);
|
|
|
|
|
|
|
|
private slots:
|
|
|
|
void wsMessageReceived(const QByteArray &message);
|
|
|
|
void lsReadyRead();
|
|
|
|
void newConnection();
|
|
|
|
void deleteSocket();
|
|
|
|
|
|
|
|
private:
|
|
|
|
inline void debugOutput(QObject *socket, const QByteArray &message);
|
|
|
|
inline void sendMessage(QObject *socket, const QByteArray &message);
|
|
|
|
bool messageReceived(QObject *socket, const QByteArray &message);
|
|
|
|
SMSubServerSettings *serverSettings;
|
|
|
|
QVector<QObject*> sockets;
|
|
|
|
QVector<QString> tokens;
|
|
|
|
ServerType type;
|
|
|
|
QObject *server;
|
|
|
|
|
|
|
|
signals:
|
|
|
|
void tokenRegistered(const QString &password);
|
|
|
|
void inputWritten(const QByteArray &input);
|
|
|
|
void killRequested();
|
|
|
|
void stopRequested();
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif // SMSUBSERVER_H
|