Remoto - VFS: VFS_tcp_server.h Source File
Remoto - VFS
VFS_tcp_server.h
Go to the documentation of this file.
1 #ifndef VFS_TCP_SERVER_H
2 #define VFS_TCP_SERVER_H
3 
4 #include <QTcpServer>
5 #include <QSslConfiguration>
6 
7 #include "VFS_base/VFS_node.h"
9 
10 class VFSQTcpServer : public QTcpServer
11 {
12  Q_OBJECT
13 
14  public:
15  VFSQTcpServer(QObject *parent = nullptr, bool ssl=false);
16  void setSslConfiguration(QSslConfiguration sslConfiguration);
17 
18  protected:
19  bool _ssl;
20  QSslConfiguration _sslConfiguration;
21  void incomingConnection(qintptr socketDescriptor);
22 
23  protected slots:
24  void sslErrors(const QList<QSslError> &errors);
25  void modeChanged(QSslSocket::SslMode mode);
26  void sslReady();
27 };
28 
29 class VFS_tcp_server : public VFS_node
30 {
31  Q_OBJECT
32 
33  public:
34  explicit VFS_tcp_server(quint16 port=0, QHostAddress address=QHostAddress::Any, bool ssl=false, QString sslCertPath="", QString sslKeyPath="");
35  virtual ~VFS_tcp_server();
36 
37  virtual bool isContainer();
38  virtual QString reportDetails();
39 
40  protected:
41  QHostAddress _listenAddress;
42  quint16 _port;
43  bool _ssl;
44  QSslConfiguration _sslConfiguration;
45  QString _sslCertPath;
46  QString _sslKeyPath;
48 
49  virtual void newConnection(VFS_tcp_client *c);
50  virtual VFS_tcp_client *newClient(QTcpSocket *socket, bool ssl=false, QSslConfiguration sslConfiguration=QSslConfiguration());
51 
52  private:
53  // virtual void ls(VFS_request *r);
54  virtual void read(VFS_request *r);
55  // virtual void write(VFS_request *r);
56  virtual void metadata(VFS_request *r);
57  // virtual void report(VFS_request *r);
58  // virtual void submit(VFS_request *r);
59  // virtual void rm(VFS_request *r);
60 
61  public slots:
62  virtual bool listen();
63  virtual void clientMessage(QByteArray message);
64  virtual void clientError(QAbstractSocket::SocketError error);
65 
66  protected slots:
67  virtual void createNewConnection();
68  virtual void closeConnection();
69 };
70 
71 #endif // VFS_TCP_SERVER_H
72 
VFS_node is the base class from which all other VFS_node classes derive.
Definition: VFS_node.h:143
The base class for all requests between nodes.
Definition: VFS_node.h:54
Open a listening TCP port for other clients to connect to.
QString _sslKeyPath
ssl key file path
virtual void read(VFS_request *r)
Read the state of this node, which is the result of ls().
virtual void createNewConnection()
The server has received a new connection request.
virtual QString reportDetails()
Report details of this node.
virtual void clientError(QAbstractSocket::SocketError error)
A socket error has occurred.
virtual bool isContainer()
A server is a container.
QSslConfiguration _sslConfiguration
ssl config built up from below paths
QHostAddress _listenAddress
Address(es) allowed to connect, or 0.0.0.0 if all are allowed.
virtual void newConnection(VFS_tcp_client *c)
Attach the clientMessage handler.
virtual bool listen()
Open the server socket and listen for new connections.
virtual ~VFS_tcp_server()
bool _ssl
Use ssl?
virtual void metadata(VFS_request *r)
Fetch the metadata for this node.
VFSQTcpServer _socket
TCP socket used for connections.
QString _sslCertPath
ssl cert file path
virtual VFS_tcp_client * newClient(QTcpSocket *socket, bool ssl=false, QSslConfiguration sslConfiguration=QSslConfiguration())
Create a new VFS_tcp_client with the new socket.
virtual void clientMessage(QByteArray message)
A message has been received.
quint16 _port
TCP port to listen on, or 0 to find an available one.
VFS_tcp_server(quint16 port=0, QHostAddress address=QHostAddress::Any, bool ssl=false, QString sslCertPath="", QString sslKeyPath="")
Create a VFS_tcp_server node.
virtual void closeConnection()
Close a socket connection.
This is a subclass of QTcpServer, needed to enable SSL.
void setSslConfiguration(QSslConfiguration sslConfiguration)
Set the SSL configuration.
void incomingConnection(qintptr socketDescriptor)
Handle a new incoming connection.
bool _ssl
Use ssl?
QSslConfiguration _sslConfiguration
The ssl configuration, which will include cert files and ssl mode.
VFSQTcpServer(QObject *parent=nullptr, bool ssl=false)
Create a VFSQTcpServer, which allows to create QSslSocket instances if _ssl is true.
void modeChanged(QSslSocket::SslMode mode)
A slot for when the SSL mode has changed.
void sslErrors(const QList< QSslError > &errors)
One or more ssl errors have occurred.
void sslReady()
SSL is ready, but do nothing.