mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2023-10-10 13:36:59 +02:00
55 lines
1.4 KiB
C
55 lines
1.4 KiB
C
|
#pragma once
|
||
|
|
||
|
// qt
|
||
|
#include <QHostAddress>
|
||
|
#include <QJsonArray>
|
||
|
|
||
|
// utils
|
||
|
#include <utils/Logger.h>
|
||
|
#include <utils/settings.h>
|
||
|
|
||
|
///
|
||
|
/// @brief Checks the origin ip addresses for access allowed
|
||
|
///
|
||
|
class NetOrigin : public QObject
|
||
|
{
|
||
|
Q_OBJECT
|
||
|
private:
|
||
|
friend class HyperionDaemon;
|
||
|
NetOrigin(QObject* parent = 0, Logger* log = Logger::getInstance("NETWORK"));
|
||
|
|
||
|
public:
|
||
|
///
|
||
|
/// @brief Check if address is allowed to connect. The local address is the network adapter ip this connection comes from
|
||
|
/// @param address The peer address
|
||
|
/// @param local The local address of the socket (Differs based on NetworkAdapter IP or localhost)
|
||
|
/// @return True when allowed, else false
|
||
|
///
|
||
|
bool accessAllowed(const QHostAddress& address, const QHostAddress& local);
|
||
|
|
||
|
///
|
||
|
/// @brief Check if address is in subnet of local
|
||
|
/// @return True or false
|
||
|
///
|
||
|
bool isLocalAddress(const QHostAddress& address, const QHostAddress& local);
|
||
|
|
||
|
static NetOrigin* getInstance(){ return instance; };
|
||
|
static NetOrigin* instance;
|
||
|
|
||
|
private slots:
|
||
|
///
|
||
|
/// @brief Handle settings update from SettingsManager
|
||
|
/// @param type settingyType from enum
|
||
|
/// @param config configuration object
|
||
|
///
|
||
|
void handleSettingsUpdate(const settings::type& type, const QJsonDocument& config);
|
||
|
|
||
|
private:
|
||
|
Logger* _log;
|
||
|
/// True when internet access is allowed
|
||
|
bool _internetAccessAllowed;
|
||
|
/// Whitelisted ip addresses
|
||
|
QList<QHostAddress> _ipWhitelist;
|
||
|
|
||
|
};
|