making full node more configurable and passing relevant info to web api

This commit is contained in:
Daniel Larimer 2015-09-18 14:22:20 -04:00
parent 966df708a5
commit 7237ef618f
3 changed files with 10 additions and 4 deletions

View file

@ -13,6 +13,7 @@
#include <QDebug> #include <QDebug>
#include <QStandardPaths> #include <QStandardPaths>
#include <QDir> #include <QDir>
#include <QSettings>
BlockChain::BlockChain() BlockChain::BlockChain()
: chainThread(new fc::thread("chainThread")), : chainThread(new fc::thread("chainThread")),
@ -34,14 +35,17 @@ void BlockChain::start()
{ {
startFuture = chainThread->async([this] { startFuture = chainThread->async([this] {
try { try {
QSettings settings;
rpcEndpoint = settings.value( "rpc-endpoint", "127.0.0.1:8091" ).value<QString>();
auto seed_node = settings.value( "seed-node", "104.236.51.238:1776" ).value<QString>().toStdString();
grapheneApp->register_plugin<graphene::account_history::account_history_plugin>(); grapheneApp->register_plugin<graphene::account_history::account_history_plugin>();
grapheneApp->register_plugin<graphene::market_history::market_history_plugin>(); grapheneApp->register_plugin<graphene::market_history::market_history_plugin>();
QString dataDir = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation); QString dataDir = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
QDir(dataDir).mkpath("."); QDir(dataDir).mkpath(".");
boost::program_options::variables_map map; boost::program_options::variables_map map;
map.insert({"rpc-endpoint",boost::program_options::variable_value(std::string("127.0.0.1:8091"), false)}); map.insert({"rpc-endpoint",boost::program_options::variable_value(rpcEndpoint.toStdString(), false)});
map.insert({"seed-node",boost::program_options::variable_value(std::vector<std::string>{("104.200.28.117:61705")}, false)}); map.insert({"seed-node",boost::program_options::variable_value(std::vector<std::string>{(seed_node)}, false)});
grapheneApp->initialize(dataDir.toStdString(), map); grapheneApp->initialize(dataDir.toStdString(), map);
grapheneApp->initialize_plugins(map); grapheneApp->initialize_plugins(map);
grapheneApp->startup(); grapheneApp->startup();
@ -52,7 +56,7 @@ void BlockChain::start()
webPermissions.password_hash_b64 = fc::base64_encode(passHash.data(), passHash.data_size()); webPermissions.password_hash_b64 = fc::base64_encode(passHash.data(), passHash.data_size());
webPermissions.password_salt_b64 = fc::base64_encode(""); webPermissions.password_salt_b64 = fc::base64_encode("");
webPermissions.allowed_apis = {"database_api", "network_broadcast_api", "network_node_api", "history_api"}; webPermissions.allowed_apis = {"database_api", "network_broadcast_api", "network_node_api", "history_api"};
grapheneApp->set_api_access_info(webUsername.toStdString(), std::move(webPermissions)); grapheneApp->set_api_access_info(webUsername.toStdString(), std::move(webPermissions) );
} catch (const fc::exception& e) { } catch (const fc::exception& e) {
elog("Crap went wrong: ${e}", ("e", e.to_detail_string())); elog("Crap went wrong: ${e}", ("e", e.to_detail_string()));
} }

View file

@ -12,12 +12,14 @@ class BlockChain : public QObject {
Q_OBJECT Q_OBJECT
Q_PROPERTY(QString webUsername MEMBER webUsername CONSTANT) Q_PROPERTY(QString webUsername MEMBER webUsername CONSTANT)
Q_PROPERTY(QString webPassword MEMBER webPassword CONSTANT) Q_PROPERTY(QString webPassword MEMBER webPassword CONSTANT)
Q_PROPERTY(QString rpcEndpoint MEMBER rpcEndpoint CONSTANT)
fc::thread* chainThread; fc::thread* chainThread;
graphene::app::application* grapheneApp; graphene::app::application* grapheneApp;
fc::future<void> startFuture; fc::future<void> startFuture;
QString webUsername; QString webUsername;
QString webPassword; QString webPassword;
QString rpcEndpoint;
public: public:
BlockChain(); BlockChain();

View file

@ -13,7 +13,7 @@ Window {
BlockChain { BlockChain {
id: blockChain id: blockChain
onStarted: { onStarted: {
var url = "qrc:/index.html#auth/" + webUsername + ":" + webPassword var url = "qrc:/index.html#auth/" + webUsername + ":" + webPassword + ":" + rpcEndpoint
console.log("Loading %1 in web view".arg(url)) console.log("Loading %1 in web view".arg(url))
webView.url = url webView.url = url
} }