plugin wip
This commit is contained in:
parent
44709f0498
commit
4d020014c0
7 changed files with 80 additions and 15 deletions
|
@ -30,6 +30,7 @@ add_executable(bigsnitch
|
||||||
networkthread.cpp
|
networkthread.cpp
|
||||||
session.cpp
|
session.cpp
|
||||||
httpflow.cpp
|
httpflow.cpp
|
||||||
|
pluginhandler.cpp
|
||||||
proxyhandler.cpp
|
proxyhandler.cpp
|
||||||
historymodel.cpp
|
historymodel.cpp
|
||||||
editandresend.cpp
|
editandresend.cpp
|
||||||
|
@ -41,6 +42,7 @@ add_executable(bigsnitch
|
||||||
session.h
|
session.h
|
||||||
includes.h
|
includes.h
|
||||||
proxyhandler.h
|
proxyhandler.h
|
||||||
|
pluginhandler.h
|
||||||
historymodel.h
|
historymodel.h
|
||||||
editandresend.h
|
editandresend.h
|
||||||
settings.h
|
settings.h
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "include/api.h"
|
#include "api.h"
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
|
|
||||||
namespace http {
|
namespace http {
|
||||||
|
@ -11,8 +11,8 @@ namespace http {
|
||||||
/*!
|
/*!
|
||||||
Interface for implementing proxies
|
Interface for implementing proxies
|
||||||
*/
|
*/
|
||||||
class ProxyInterface {
|
class ProxyInterface : public QObject {
|
||||||
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
virtual ~ProxyInterface() = default;
|
virtual ~ProxyInterface() = default;
|
||||||
//! called in a custom thread, may block.
|
//! called in a custom thread, may block.
|
||||||
|
@ -23,9 +23,9 @@ public:
|
||||||
virtual void disconnect() = 0;
|
virtual void disconnect() = 0;
|
||||||
// options/settings
|
// options/settings
|
||||||
signals:
|
signals:
|
||||||
void finished();
|
virtual void finished();
|
||||||
void error(QString err);
|
virtual void error(QString err);
|
||||||
void message(http::Flow flow);
|
virtual void message(http::Flow flow);
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
28
pluginhandler.cpp
Normal file
28
pluginhandler.cpp
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
#include "pluginhandler.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
const auto staticInstances = QPluginLoader::staticInstances();
|
||||||
|
for (QObject *plugin : staticInstances)
|
||||||
|
populateMenus(plugin);
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
bool PluginHandler::load(QString path)
|
||||||
|
{
|
||||||
|
QPluginLoader loader(path);
|
||||||
|
QObject *plugin = loader.instance();
|
||||||
|
if (plugin) {
|
||||||
|
proxyhandler.loadPlugin(plugin);
|
||||||
|
loaded_plugins += path;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void PluginHandler::loadPlugins(QDir path)
|
||||||
|
{
|
||||||
|
const auto entryList = path.entryList(QDir::Files);
|
||||||
|
for (const QString &fileName : entryList) {
|
||||||
|
load(path.absoluteFilePath(fileName));
|
||||||
|
}
|
||||||
|
}
|
18
pluginhandler.h
Normal file
18
pluginhandler.h
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <include/api.h>
|
||||||
|
#include <include/proxyinterface.h>
|
||||||
|
#include <QObject>
|
||||||
|
#include <QDir>
|
||||||
|
#include <QPluginLoader>
|
||||||
|
#include <proxyhandler.h>
|
||||||
|
|
||||||
|
class PluginHandler
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
QStringList loaded_plugins;
|
||||||
|
ProxyHandler proxyhandler;
|
||||||
|
public:
|
||||||
|
bool load(QString path);
|
||||||
|
void loadPlugins(QDir path);
|
||||||
|
};
|
|
@ -1,6 +1,15 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "api.h"
|
#include "api.h"
|
||||||
|
#include "proxyinterface.h"
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
|
|
||||||
|
class mitmproxyPlugin : public QObject,
|
||||||
|
public http::ProxyInterface
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
Q_PLUGIN_METADATA(IID "bigsnitch.api.HTTPProxyInterface/100" FILE "mitmproxy.json")
|
||||||
|
Q_INTERFACES(http::ProxyInterface)
|
||||||
|
public:
|
||||||
|
|
||||||
|
};
|
||||||
|
|
|
@ -1,11 +1,14 @@
|
||||||
#include "proxyhandler.h"
|
#include "proxyhandler.h"
|
||||||
|
|
||||||
bool PluginHandler::load(std::string path)
|
bool http::ProxyHandler::loadPlugin(QObject *proxy)
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void PluginHandler::loadPlugins(std::string path)
|
|
||||||
{
|
{
|
||||||
|
auto inst = qobject_cast<ProxyInterface*>(proxy);
|
||||||
|
if(!inst) {
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,10 +2,15 @@
|
||||||
|
|
||||||
#include <include/api.h>
|
#include <include/api.h>
|
||||||
#include <include/proxyinterface.h>
|
#include <include/proxyinterface.h>
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
class PluginHandler
|
namespace http {
|
||||||
|
|
||||||
|
class ProxyHandler
|
||||||
{
|
{
|
||||||
|
private:
|
||||||
public:
|
public:
|
||||||
bool load(std::string path);
|
bool loadPlugin(QObject *proxy);
|
||||||
void loadPlugins(std::string path);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue