Merge pull request #6260
320bc84
rpc: add --rpc-payment-allow-free-loopback (moneromooo-monero)
This commit is contained in:
commit
ccc3726d86
|
@ -153,6 +153,7 @@ namespace cryptonote
|
||||||
command_line::add_arg(desc, arg_rpc_payment_address);
|
command_line::add_arg(desc, arg_rpc_payment_address);
|
||||||
command_line::add_arg(desc, arg_rpc_payment_difficulty);
|
command_line::add_arg(desc, arg_rpc_payment_difficulty);
|
||||||
command_line::add_arg(desc, arg_rpc_payment_credits);
|
command_line::add_arg(desc, arg_rpc_payment_credits);
|
||||||
|
command_line::add_arg(desc, arg_rpc_payment_allow_free_loopback);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------------------------------------------------
|
||||||
core_rpc_server::core_rpc_server(
|
core_rpc_server::core_rpc_server(
|
||||||
|
@ -163,6 +164,7 @@ namespace cryptonote
|
||||||
, m_p2p(p2p)
|
, m_p2p(p2p)
|
||||||
, m_was_bootstrap_ever_used(false)
|
, m_was_bootstrap_ever_used(false)
|
||||||
, disable_rpc_ban(false)
|
, disable_rpc_ban(false)
|
||||||
|
, m_rpc_payment_allow_free_loopback(false)
|
||||||
{}
|
{}
|
||||||
//------------------------------------------------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------------------------------------------------
|
||||||
bool core_rpc_server::set_bootstrap_daemon(const std::string &address, const std::string &username_password)
|
bool core_rpc_server::set_bootstrap_daemon(const std::string &address, const std::string &username_password)
|
||||||
|
@ -280,6 +282,7 @@ namespace cryptonote
|
||||||
MERROR("Payments difficulty and/or payments credits are 0, but a payment address was given");
|
MERROR("Payments difficulty and/or payments credits are 0, but a payment address was given");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
m_rpc_payment_allow_free_loopback = command_line::get_arg(vm, arg_rpc_payment_allow_free_loopback);
|
||||||
m_rpc_payment.reset(new rpc_payment(info.address, diff, credits));
|
m_rpc_payment.reset(new rpc_payment(info.address, diff, credits));
|
||||||
m_rpc_payment->load(command_line::get_arg(vm, cryptonote::arg_data_dir));
|
m_rpc_payment->load(command_line::get_arg(vm, cryptonote::arg_data_dir));
|
||||||
m_p2p.set_rpc_credits_per_hash(RPC_CREDITS_PER_HASH_SCALE * (credits / (float)diff));
|
m_p2p.set_rpc_credits_per_hash(RPC_CREDITS_PER_HASH_SCALE * (credits / (float)diff));
|
||||||
|
@ -353,7 +356,7 @@ namespace cryptonote
|
||||||
#define CHECK_PAYMENT_BASE(req, res, payment, same_ts) do { if (!ctx) break; uint64_t P = (uint64_t)payment; if (P > 0 && !check_payment(req.client, P, tracker.rpc_name(), same_ts, res.status, res.credits, res.top_hash)){return true;} tracker.pay(P); } while(0)
|
#define CHECK_PAYMENT_BASE(req, res, payment, same_ts) do { if (!ctx) break; uint64_t P = (uint64_t)payment; if (P > 0 && !check_payment(req.client, P, tracker.rpc_name(), same_ts, res.status, res.credits, res.top_hash)){return true;} tracker.pay(P); } while(0)
|
||||||
#define CHECK_PAYMENT(req, res, payment) CHECK_PAYMENT_BASE(req, res, payment, false)
|
#define CHECK_PAYMENT(req, res, payment) CHECK_PAYMENT_BASE(req, res, payment, false)
|
||||||
#define CHECK_PAYMENT_SAME_TS(req, res, payment) CHECK_PAYMENT_BASE(req, res, payment, true)
|
#define CHECK_PAYMENT_SAME_TS(req, res, payment) CHECK_PAYMENT_BASE(req, res, payment, true)
|
||||||
#define CHECK_PAYMENT_MIN1(req, res, payment, same_ts) do { if (!ctx) break; uint64_t P = (uint64_t)payment; if (P == 0) P = 1; if(!check_payment(req.client, P, tracker.rpc_name(), same_ts, res.status, res.credits, res.top_hash)){return true;} tracker.pay(P); } while(0)
|
#define CHECK_PAYMENT_MIN1(req, res, payment, same_ts) do { if (!ctx || (m_rpc_payment_allow_free_loopback && ctx->m_remote_address.is_loopback())) break; uint64_t P = (uint64_t)payment; if (P == 0) P = 1; if(!check_payment(req.client, P, tracker.rpc_name(), same_ts, res.status, res.credits, res.top_hash)){return true;} tracker.pay(P); } while(0)
|
||||||
//------------------------------------------------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------------------------------------------------
|
||||||
bool core_rpc_server::check_core_ready()
|
bool core_rpc_server::check_core_ready()
|
||||||
{
|
{
|
||||||
|
@ -3255,4 +3258,10 @@ namespace cryptonote
|
||||||
, "Restrict RPC to clients sending micropayment, yields that many credits per payment"
|
, "Restrict RPC to clients sending micropayment, yields that many credits per payment"
|
||||||
, DEFAULT_PAYMENT_CREDITS_PER_HASH
|
, DEFAULT_PAYMENT_CREDITS_PER_HASH
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const command_line::arg_descriptor<bool> core_rpc_server::arg_rpc_payment_allow_free_loopback = {
|
||||||
|
"rpc-payment-allow-free-loopback"
|
||||||
|
, "Allow free access from the loopback address (ie, the local host)"
|
||||||
|
, false
|
||||||
|
};
|
||||||
} // namespace cryptonote
|
} // namespace cryptonote
|
||||||
|
|
|
@ -75,6 +75,7 @@ namespace cryptonote
|
||||||
static const command_line::arg_descriptor<std::string> arg_rpc_payment_address;
|
static const command_line::arg_descriptor<std::string> arg_rpc_payment_address;
|
||||||
static const command_line::arg_descriptor<uint64_t> arg_rpc_payment_difficulty;
|
static const command_line::arg_descriptor<uint64_t> arg_rpc_payment_difficulty;
|
||||||
static const command_line::arg_descriptor<uint64_t> arg_rpc_payment_credits;
|
static const command_line::arg_descriptor<uint64_t> arg_rpc_payment_credits;
|
||||||
|
static const command_line::arg_descriptor<bool> arg_rpc_payment_allow_free_loopback;
|
||||||
|
|
||||||
typedef epee::net_utils::connection_context_base connection_context;
|
typedef epee::net_utils::connection_context_base connection_context;
|
||||||
|
|
||||||
|
@ -287,6 +288,7 @@ private:
|
||||||
std::map<std::string, uint64_t> m_host_fails_score;
|
std::map<std::string, uint64_t> m_host_fails_score;
|
||||||
std::unique_ptr<rpc_payment> m_rpc_payment;
|
std::unique_ptr<rpc_payment> m_rpc_payment;
|
||||||
bool disable_rpc_ban;
|
bool disable_rpc_ban;
|
||||||
|
bool m_rpc_payment_allow_free_loopback;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue