|
|
@ -253,8 +253,6 @@ class page {
|
|
|
|
|
|
|
|
|
|
|
|
string lmdb2_path;
|
|
|
|
string lmdb2_path;
|
|
|
|
|
|
|
|
|
|
|
|
string css_styles;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool testnet;
|
|
|
|
bool testnet;
|
|
|
|
|
|
|
|
|
|
|
|
bool enable_pusher;
|
|
|
|
bool enable_pusher;
|
|
|
@ -270,6 +268,13 @@ class page {
|
|
|
|
uint64_t no_of_mempool_tx_of_frontpage;
|
|
|
|
uint64_t no_of_mempool_tx_of_frontpage;
|
|
|
|
uint64_t no_blocks_on_index;
|
|
|
|
uint64_t no_blocks_on_index;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// instead of constatnly reading template files
|
|
|
|
|
|
|
|
// from hard drive for each request, we can read
|
|
|
|
|
|
|
|
// them only once, when the explorer starts into this map
|
|
|
|
|
|
|
|
// this will improve performance of the explorer and reduce
|
|
|
|
|
|
|
|
// read operation in OS
|
|
|
|
|
|
|
|
map<string, string> template_file;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
@ -293,7 +298,7 @@ public:
|
|
|
|
enable_autorefresh_option {_enable_autorefresh_option},
|
|
|
|
enable_autorefresh_option {_enable_autorefresh_option},
|
|
|
|
no_blocks_on_index {_no_blocks_on_index}
|
|
|
|
no_blocks_on_index {_no_blocks_on_index}
|
|
|
|
{
|
|
|
|
{
|
|
|
|
css_styles = xmreg::read(TMPL_CSS_STYLES);
|
|
|
|
|
|
|
|
no_of_mempool_tx_of_frontpage = 25;
|
|
|
|
no_of_mempool_tx_of_frontpage = 25;
|
|
|
|
|
|
|
|
|
|
|
|
// just moneky patching now, to check
|
|
|
|
// just moneky patching now, to check
|
|
|
@ -324,6 +329,29 @@ public:
|
|
|
|
<< endl;
|
|
|
|
<< endl;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// read template files for all the pages
|
|
|
|
|
|
|
|
// into template_file map
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template_file["css_styles"] = xmreg::read(TMPL_CSS_STYLES);
|
|
|
|
|
|
|
|
template_file["header"] = xmreg::read(TMPL_HEADER);
|
|
|
|
|
|
|
|
template_file["footer"] = get_footer();
|
|
|
|
|
|
|
|
template_file["index2"] = get_full_page(xmreg::read(TMPL_INDEX2));
|
|
|
|
|
|
|
|
template_file["mempool"] = xmreg::read(TMPL_MEMPOOL);
|
|
|
|
|
|
|
|
template_file["mempool_full"] = get_full_page(template_file["mempool"]);
|
|
|
|
|
|
|
|
template_file["block"] = get_full_page(xmreg::read(TMPL_BLOCK));
|
|
|
|
|
|
|
|
template_file["tx"] = get_full_page(xmreg::read(TMPL_TX));
|
|
|
|
|
|
|
|
template_file["my_outputs"] = get_full_page(xmreg::read(TMPL_MY_OUTPUTS));
|
|
|
|
|
|
|
|
template_file["rawtx"] = get_full_page(xmreg::read(TMPL_MY_RAWTX));
|
|
|
|
|
|
|
|
template_file["checkrawtx"] = get_full_page(xmreg::read(TMPL_MY_CHECKRAWTX));
|
|
|
|
|
|
|
|
template_file["pushrawtx"] = get_full_page(xmreg::read(TMPL_MY_PUSHRAWTX));
|
|
|
|
|
|
|
|
template_file["rawkeyimgs"] = get_full_page(xmreg::read(TMPL_MY_RAWKEYIMGS));
|
|
|
|
|
|
|
|
template_file["rawoutputkeys"] = get_full_page(xmreg::read(TMPL_MY_RAWOUTPUTKEYS));
|
|
|
|
|
|
|
|
template_file["checkrawkeyimgs"] = get_full_page(xmreg::read(TMPL_MY_CHECKRAWKEYIMGS));
|
|
|
|
|
|
|
|
template_file["checkoutputkeys"] = get_full_page(xmreg::read(TMPL_MY_CHECKRAWOUTPUTKEYS));
|
|
|
|
|
|
|
|
template_file["address"] = get_full_page(xmreg::read(TMPL_ADDRESS));
|
|
|
|
|
|
|
|
template_file["search_results"] = get_full_page(xmreg::read(TMPL_SEARCH_RESULTS));
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -494,16 +522,10 @@ public:
|
|
|
|
// append mempool_html to the index context map
|
|
|
|
// append mempool_html to the index context map
|
|
|
|
context["mempool_info"] = mempool_html;
|
|
|
|
context["mempool_info"] = mempool_html;
|
|
|
|
|
|
|
|
|
|
|
|
// read index.html
|
|
|
|
|
|
|
|
string index2_html = xmreg::read(TMPL_INDEX2);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// add header and footer
|
|
|
|
|
|
|
|
string full_page = get_full_page(index2_html);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
add_css_style(context);
|
|
|
|
add_css_style(context);
|
|
|
|
|
|
|
|
|
|
|
|
// render the page
|
|
|
|
// render the page
|
|
|
|
return mstch::render(full_page, context);
|
|
|
|
return mstch::render(template_file["index2"], context);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -640,8 +662,6 @@ public:
|
|
|
|
return t1 > t2;
|
|
|
|
return t1 > t2;
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
// read mempool.html
|
|
|
|
|
|
|
|
string mempool_html = xmreg::read(TMPL_MEMPOOL);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (add_header_and_footer)
|
|
|
|
if (add_header_and_footer)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -650,11 +670,8 @@ public:
|
|
|
|
|
|
|
|
|
|
|
|
context["partial_mempool_shown"] = false;
|
|
|
|
context["partial_mempool_shown"] = false;
|
|
|
|
|
|
|
|
|
|
|
|
// add header and footer
|
|
|
|
|
|
|
|
string full_page = get_full_page(mempool_html);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// render the page
|
|
|
|
// render the page
|
|
|
|
return mstch::render(full_page, context);
|
|
|
|
return mstch::render(template_file["mempool_full"], context);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// this is for partial disply on front page.
|
|
|
|
// this is for partial disply on front page.
|
|
|
@ -672,7 +689,7 @@ public:
|
|
|
|
context["partial_mempool_shown"] = true;
|
|
|
|
context["partial_mempool_shown"] = true;
|
|
|
|
|
|
|
|
|
|
|
|
// render the page
|
|
|
|
// render the page
|
|
|
|
return mstch::render(mempool_html, context);
|
|
|
|
return mstch::render(template_file["mempool"], context);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -842,16 +859,10 @@ public:
|
|
|
|
context["blk_reward"]
|
|
|
|
context["blk_reward"]
|
|
|
|
= xmreg::xmr_amount_to_str(txd_coinbase.xmr_outputs - sum_fees, "{:0.6f}");
|
|
|
|
= xmreg::xmr_amount_to_str(txd_coinbase.xmr_outputs - sum_fees, "{:0.6f}");
|
|
|
|
|
|
|
|
|
|
|
|
// read block.html
|
|
|
|
|
|
|
|
string block_html = xmreg::read(TMPL_BLOCK);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
add_css_style(context);
|
|
|
|
add_css_style(context);
|
|
|
|
|
|
|
|
|
|
|
|
// add header and footer
|
|
|
|
|
|
|
|
string full_page = get_full_page(block_html);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// render the page
|
|
|
|
// render the page
|
|
|
|
return mstch::render(full_page, context);
|
|
|
|
return mstch::render(template_file["block"], context);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -1643,20 +1654,10 @@ public:
|
|
|
|
context["possible_spending"] = xmreg::xmr_amount_to_str(
|
|
|
|
context["possible_spending"] = xmreg::xmr_amount_to_str(
|
|
|
|
possible_spending, "{:0.12f}", false);
|
|
|
|
possible_spending, "{:0.12f}", false);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//cout << "no_of_matched_mixins: " << no_of_matched_mixins << endl;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// read my_outputs.html
|
|
|
|
|
|
|
|
string my_outputs_html = xmreg::read(TMPL_MY_OUTPUTS);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// add header and footer
|
|
|
|
|
|
|
|
string full_page = get_full_page(my_outputs_html);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
add_css_style(context);
|
|
|
|
add_css_style(context);
|
|
|
|
|
|
|
|
|
|
|
|
// render the page
|
|
|
|
// render the page
|
|
|
|
return mstch::render(full_page, context);
|
|
|
|
return mstch::render(template_file["my_outputs"], context);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
string
|
|
|
|
string
|
|
|
@ -1680,16 +1681,10 @@ public:
|
|
|
|
{"have_custom_lmdb" , have_custom_lmdb}
|
|
|
|
{"have_custom_lmdb" , have_custom_lmdb}
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// read rawtx.html
|
|
|
|
|
|
|
|
string rawtx_html = xmreg::read(TMPL_MY_RAWTX);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// add header and footer
|
|
|
|
|
|
|
|
string full_page = get_full_page(rawtx_html);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
add_css_style(context);
|
|
|
|
add_css_style(context);
|
|
|
|
|
|
|
|
|
|
|
|
// render the page
|
|
|
|
// render the page
|
|
|
|
return mstch::render(full_page, context);
|
|
|
|
return mstch::render(template_file["rawtx"], context);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
string
|
|
|
|
string
|
|
|
@ -2313,17 +2308,10 @@ public:
|
|
|
|
{"tx_details", xmreg::read(string(TMPL_PARIALS_DIR) + "/tx_details.html")},
|
|
|
|
{"tx_details", xmreg::read(string(TMPL_PARIALS_DIR) + "/tx_details.html")},
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// read checkrawtx.html
|
|
|
|
|
|
|
|
string checkrawtx_html = xmreg::read(TMPL_MY_CHECKRAWTX);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// add header and footer
|
|
|
|
|
|
|
|
string full_page = get_full_page(checkrawtx_html);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
add_css_style(context);
|
|
|
|
add_css_style(context);
|
|
|
|
|
|
|
|
|
|
|
|
// render the page
|
|
|
|
// render the page
|
|
|
|
return mstch::render(full_page, context, partials);
|
|
|
|
return mstch::render(template_file["checkrawtx"], context, partials);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
string
|
|
|
|
string
|
|
|
@ -2348,11 +2336,8 @@ public:
|
|
|
|
};
|
|
|
|
};
|
|
|
|
context.emplace("txs", mstch::array{});
|
|
|
|
context.emplace("txs", mstch::array{});
|
|
|
|
|
|
|
|
|
|
|
|
// read pushrawtx.html
|
|
|
|
|
|
|
|
string pushrawtx_html = xmreg::read(TMPL_MY_PUSHRAWTX);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// add header and footer
|
|
|
|
// add header and footer
|
|
|
|
string full_page = get_full_page(pushrawtx_html);
|
|
|
|
string full_page = template_file["pushrawtx"];
|
|
|
|
|
|
|
|
|
|
|
|
add_css_style(context);
|
|
|
|
add_css_style(context);
|
|
|
|
|
|
|
|
|
|
|
@ -2526,16 +2511,10 @@ public:
|
|
|
|
{"have_custom_lmdb" , have_custom_lmdb}
|
|
|
|
{"have_custom_lmdb" , have_custom_lmdb}
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// read rawkeyimgs.html
|
|
|
|
|
|
|
|
string rawkeyimgs_html = xmreg::read(TMPL_MY_RAWKEYIMGS);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// add header and footer
|
|
|
|
|
|
|
|
string full_page = get_full_page(rawkeyimgs_html);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
add_css_style(context);
|
|
|
|
add_css_style(context);
|
|
|
|
|
|
|
|
|
|
|
|
// render the page
|
|
|
|
// render the page
|
|
|
|
return mstch::render(full_page, context);
|
|
|
|
return mstch::render(template_file["rawkeyimgs"], context);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
string
|
|
|
|
string
|
|
|
@ -2547,16 +2526,10 @@ public:
|
|
|
|
{"have_custom_lmdb" , have_custom_lmdb}
|
|
|
|
{"have_custom_lmdb" , have_custom_lmdb}
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// read rawoutputkeys.html
|
|
|
|
|
|
|
|
string rawoutputkeys_html = xmreg::read(TMPL_MY_RAWOUTPUTKEYS);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// add header and footer
|
|
|
|
|
|
|
|
string full_page = get_full_page(rawoutputkeys_html);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
add_css_style(context);
|
|
|
|
add_css_style(context);
|
|
|
|
|
|
|
|
|
|
|
|
// render the page
|
|
|
|
// render the page
|
|
|
|
return mstch::render(full_page, context);
|
|
|
|
return mstch::render(template_file["rawoutputkeys"], context);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
string
|
|
|
|
string
|
|
|
@ -2579,11 +2552,8 @@ public:
|
|
|
|
{"error_msg" , string{}},
|
|
|
|
{"error_msg" , string{}},
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// read page template
|
|
|
|
|
|
|
|
string checkrawkeyimgs_html = xmreg::read(TMPL_MY_CHECKRAWKEYIMGS);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// add header and footer
|
|
|
|
// add header and footer
|
|
|
|
string full_page = get_full_page(checkrawkeyimgs_html);
|
|
|
|
string full_page = template_file["checkrawkeyimgs"];
|
|
|
|
|
|
|
|
|
|
|
|
add_css_style(context);
|
|
|
|
add_css_style(context);
|
|
|
|
|
|
|
|
|
|
|
@ -2942,12 +2912,8 @@ public:
|
|
|
|
{"error_msg" , string{}}
|
|
|
|
{"error_msg" , string{}}
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// read page template
|
|
|
|
|
|
|
|
string checkoutputkeys_html = xmreg::read(TMPL_MY_CHECKRAWOUTPUTKEYS);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// add header and footer
|
|
|
|
// add header and footer
|
|
|
|
string full_page = get_full_page(checkoutputkeys_html);
|
|
|
|
string full_page = template_file["checkoutputkeys"];
|
|
|
|
|
|
|
|
|
|
|
|
add_css_style(context);
|
|
|
|
add_css_style(context);
|
|
|
|
|
|
|
|
|
|
|
@ -3706,16 +3672,10 @@ public:
|
|
|
|
{"have_custom_lmdb" , have_custom_lmdb}
|
|
|
|
{"have_custom_lmdb" , have_custom_lmdb}
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// read address.html
|
|
|
|
|
|
|
|
string address_html = xmreg::read(TMPL_ADDRESS);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// add header and footer
|
|
|
|
|
|
|
|
string full_page = get_full_page(address_html);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
add_css_style(context);
|
|
|
|
add_css_style(context);
|
|
|
|
|
|
|
|
|
|
|
|
// render the page
|
|
|
|
// render the page
|
|
|
|
return mstch::render(full_page, context);
|
|
|
|
return mstch::render(template_file["address"], context);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// ;
|
|
|
|
// ;
|
|
|
@ -3740,16 +3700,10 @@ public:
|
|
|
|
{"have_custom_lmdb" , have_custom_lmdb}
|
|
|
|
{"have_custom_lmdb" , have_custom_lmdb}
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// read address.html
|
|
|
|
|
|
|
|
string address_html = xmreg::read(TMPL_ADDRESS);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
add_css_style(context);
|
|
|
|
add_css_style(context);
|
|
|
|
|
|
|
|
|
|
|
|
// add header and footer
|
|
|
|
|
|
|
|
string full_page = get_full_page(address_html);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// render the page
|
|
|
|
// render the page
|
|
|
|
return mstch::render(full_page, context);
|
|
|
|
return mstch::render(template_file["address"], context);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
map<string, vector<string>>
|
|
|
|
map<string, vector<string>>
|
|
|
@ -3951,11 +3905,8 @@ public:
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// read search_results.html
|
|
|
|
|
|
|
|
string search_results_html = xmreg::read(TMPL_SEARCH_RESULTS);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// add header and footer
|
|
|
|
// add header and footer
|
|
|
|
string full_page = get_full_page(search_results_html);
|
|
|
|
string full_page = template_file["search_results"];
|
|
|
|
|
|
|
|
|
|
|
|
// read partial for showing details of tx(s) found
|
|
|
|
// read partial for showing details of tx(s) found
|
|
|
|
map<string, string> partials {
|
|
|
|
map<string, string> partials {
|
|
|
@ -4695,11 +4646,11 @@ private:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
string
|
|
|
|
string
|
|
|
|
get_full_page(string& middle)
|
|
|
|
get_full_page(const string& middle)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return xmreg::read(TMPL_HEADER)
|
|
|
|
return template_file["header"]
|
|
|
|
+ middle
|
|
|
|
+ middle
|
|
|
|
+ get_footer();
|
|
|
|
+ template_file["footer"];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
string
|
|
|
|
string
|
|
|
@ -4722,7 +4673,7 @@ private:
|
|
|
|
add_css_style(mstch::map& context)
|
|
|
|
add_css_style(mstch::map& context)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
context["css_styles"] = mstch::lambda{[&](const std::string& text) -> mstch::node {
|
|
|
|
context["css_styles"] = mstch::lambda{[&](const std::string& text) -> mstch::node {
|
|
|
|
return this->css_styles;
|
|
|
|
return template_file["css_styles"];
|
|
|
|
}};
|
|
|
|
}};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|