mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-26 05:55:51 +00:00
deploy: 83faf43140
This commit is contained in:
@@ -940,352 +940,366 @@ $(function() {
|
||||
<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  params,</div>
|
||||
<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  {user, <a class="code" href="namespaceripple.html#a8fdfc19db800245e87ac4f66f0304092">forwardedFor</a>}};</div>
|
||||
<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  <a class="code" href="classJson_1_1Value.html">Json::Value</a> result;</div>
|
||||
<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  <span class="keyword">auto</span> start = <a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/system_clock/now.html">std::chrono::system_clock::now</a>();</div>
|
||||
<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  <a class="code" href="namespaceripple_1_1RPC.html#a84827a1d9b56ad8201671ff77c2ddf2e">RPC::doCommand</a>(context, result);</div>
|
||||
<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  <span class="keyword">auto</span> end = <a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/system_clock/now.html">std::chrono::system_clock::now</a>();</div>
|
||||
<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  <a class="code" href="namespaceripple.html#a9ed448ddcb5b36998c6d084f942b7173">logDuration</a>(params, end - start, <a class="code" href="classripple_1_1ServerHandlerImp.html#a28a9242621ceed7801e20f4fc5beb8ea">m_journal</a>);</div>
|
||||
<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  </div>
|
||||
<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  usage.<a class="code" href="classripple_1_1Resource_1_1Consumer.html#a65d4f295e044ae0bf1e5ef1e4e6df539">charge</a>(loadType);</div>
|
||||
<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  <span class="keywordflow">if</span> (usage.<a class="code" href="classripple_1_1Resource_1_1Consumer.html#a27db21f6a4965d2ade4ba1761e3d8ccd">warn</a>())</div>
|
||||
<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  result[jss::warning] = jss::load;</div>
|
||||
<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  </div>
|
||||
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  <a class="code" href="classJson_1_1Value.html">Json::Value</a> r(<a class="code" href="namespaceJson.html#a7d654b75c16a57007925868e38212b4eae8386dcfc36d1ae897745f7b4f77a1f6">Json::objectValue</a>);</div>
|
||||
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  <span class="keywordflow">if</span> (ripplerpc >= <span class="stringliteral">"2.0"</span>)</div>
|
||||
<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  {</div>
|
||||
<div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  <span class="keywordflow">if</span> (result.<a class="code" href="classJson_1_1Value.html#ad6d4df2227321bab05e86667609a7fad">isMember</a>(jss::error))</div>
|
||||
<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  {</div>
|
||||
<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  result[jss::status] = jss::error;</div>
|
||||
<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  result[<span class="stringliteral">"code"</span>] = result[jss::error_code];</div>
|
||||
<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  result[<span class="stringliteral">"message"</span>] = result[jss::error_message];</div>
|
||||
<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  result.<a class="code" href="classJson_1_1Value.html#aa52f7873b95d29627d6e83ba96f69aaa">removeMember</a>(jss::error_message);</div>
|
||||
<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  JLOG(<a class="code" href="classripple_1_1ServerHandlerImp.html#a28a9242621ceed7801e20f4fc5beb8ea">m_journal</a>.<a class="code" href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">debug</a>()) << <span class="stringliteral">"rpcError: "</span> << result[jss::error]</div>
|
||||
<div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  << <span class="stringliteral">": "</span> << result[jss::error_message];</div>
|
||||
<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  r[jss::error] = std::move(result);</div>
|
||||
<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  }</div>
|
||||
<div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  {</div>
|
||||
<div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  result[jss::status] = jss::success;</div>
|
||||
<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  r[jss::result] = std::move(result);</div>
|
||||
<div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  }</div>
|
||||
<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  }</div>
|
||||
<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  {</div>
|
||||
<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  <span class="comment">// Always report "status". On an error report the request as</span></div>
|
||||
<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  <span class="comment">// received.</span></div>
|
||||
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  <span class="keywordflow">if</span> (result.<a class="code" href="classJson_1_1Value.html#ad6d4df2227321bab05e86667609a7fad">isMember</a>(jss::error))</div>
|
||||
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  {</div>
|
||||
<div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  <span class="keyword">auto</span> rq = params;</div>
|
||||
<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  </div>
|
||||
<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  <span class="keywordflow">if</span> (rq.isObject())</div>
|
||||
<div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  { <span class="comment">// But mask potentially sensitive information.</span></div>
|
||||
<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  <span class="keywordflow">if</span> (rq.isMember(jss::passphrase.c_str()))</div>
|
||||
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  rq[jss::passphrase.c_str()] = <span class="stringliteral">"<masked>"</span>;</div>
|
||||
<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  <span class="keywordflow">if</span> (rq.isMember(jss::secret.c_str()))</div>
|
||||
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  rq[jss::secret.c_str()] = <span class="stringliteral">"<masked>"</span>;</div>
|
||||
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  <span class="keywordflow">if</span> (rq.isMember(jss::seed.c_str()))</div>
|
||||
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  rq[jss::seed.c_str()] = <span class="stringliteral">"<masked>"</span>;</div>
|
||||
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  <span class="keywordflow">if</span> (rq.isMember(jss::seed_hex.c_str()))</div>
|
||||
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  rq[jss::seed_hex.c_str()] = <span class="stringliteral">"<masked>"</span>;</div>
|
||||
<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  }</div>
|
||||
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  </div>
|
||||
<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  result[jss::status] = jss::error;</div>
|
||||
<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  result[jss::request] = rq;</div>
|
||||
<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  </div>
|
||||
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  JLOG(<a class="code" href="classripple_1_1ServerHandlerImp.html#a28a9242621ceed7801e20f4fc5beb8ea">m_journal</a>.<a class="code" href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">debug</a>()) << <span class="stringliteral">"rpcError: "</span> << result[jss::error]</div>
|
||||
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  << <span class="stringliteral">": "</span> << result[jss::error_message];</div>
|
||||
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  }</div>
|
||||
<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  {</div>
|
||||
<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  result[jss::status] = jss::success;</div>
|
||||
<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  }</div>
|
||||
<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  r[jss::result] = std::move(result);</div>
|
||||
<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  }</div>
|
||||
<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  </div>
|
||||
<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  <span class="keywordflow">if</span> (params.isMember(jss::jsonrpc))</div>
|
||||
<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  r[jss::jsonrpc] = params[jss::jsonrpc];</div>
|
||||
<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  <span class="keywordflow">if</span> (params.isMember(jss::ripplerpc))</div>
|
||||
<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  r[jss::ripplerpc] = params[jss::ripplerpc];</div>
|
||||
<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  <span class="keywordflow">if</span> (params.isMember(jss::id))</div>
|
||||
<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  r[jss::id] = params[jss::id];</div>
|
||||
<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  <span class="keywordflow">if</span> (batch)</div>
|
||||
<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  reply.<a class="code" href="classJson_1_1Value.html#a7e49ac977e4bcf59745a09d426669f75">append</a>(std::move(r));</div>
|
||||
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  reply = std::move(r);</div>
|
||||
<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  </div>
|
||||
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  <span class="keywordflow">if</span> (reply.<a class="code" href="classJson_1_1Value.html#ad6d4df2227321bab05e86667609a7fad">isMember</a>(jss::result) &&</div>
|
||||
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  reply[jss::result].<a class="code" href="classJson_1_1Value.html#ad6d4df2227321bab05e86667609a7fad">isMember</a>(jss::result))</div>
|
||||
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  {</div>
|
||||
<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  reply = reply[jss::result];</div>
|
||||
<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  <span class="keywordflow">if</span> (reply.<a class="code" href="classJson_1_1Value.html#ad6d4df2227321bab05e86667609a7fad">isMember</a>(jss::status))</div>
|
||||
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  {</div>
|
||||
<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  reply[jss::result][jss::status] = reply[jss::status];</div>
|
||||
<div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  reply.<a class="code" href="classJson_1_1Value.html#aa52f7873b95d29627d6e83ba96f69aaa">removeMember</a>(jss::status);</div>
|
||||
<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>  }</div>
|
||||
<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  }</div>
|
||||
<div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  }</div>
|
||||
<div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  <span class="keyword">auto</span> response = <a class="code" href="namespaceripple.html#af9776f187d3686a7fba4c2d2fbeebdf4">to_string</a>(reply);</div>
|
||||
<div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  </div>
|
||||
<div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  <a class="code" href="classripple_1_1ServerHandlerImp.html#adc58b4538fc24ffa1a0563256e958a78">rpc_time_</a>.<a class="code" href="classbeast_1_1insight_1_1Event.html#af25d64d42a95d26832e7354f07059245">notify</a>(std::chrono::duration_cast<std::chrono::milliseconds>(</div>
|
||||
<div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/high_resolution_clock/now.html">std::chrono::high_resolution_clock::now</a>() - start));</div>
|
||||
<div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  ++<a class="code" href="classripple_1_1ServerHandlerImp.html#a54cdcb3c477eb5adb0891bd324735c93">rpc_requests_</a>;</div>
|
||||
<div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  <a class="code" href="classripple_1_1ServerHandlerImp.html#ab3b7ba5d821b2a8868377c4b746cf5d6">rpc_size_</a>.<a class="code" href="classbeast_1_1insight_1_1Event.html#af25d64d42a95d26832e7354f07059245">notify</a>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/duration.html">beast::insight::Event::value_type</a>{response.size()});</div>
|
||||
<div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  </div>
|
||||
<div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  response += <span class="charliteral">'\n'</span>;</div>
|
||||
<div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  </div>
|
||||
<div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  <span class="keywordflow">if</span> (<span class="keyword">auto</span> stream = <a class="code" href="classripple_1_1ServerHandlerImp.html#a28a9242621ceed7801e20f4fc5beb8ea">m_journal</a>.<a class="code" href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">debug</a>())</div>
|
||||
<div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  {</div>
|
||||
<div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> maxSize = 10000;</div>
|
||||
<div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  <span class="keywordflow">if</span> (response.size() <= maxSize)</div>
|
||||
<div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  stream << <span class="stringliteral">"Reply: "</span> << response;</div>
|
||||
<div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  stream << <span class="stringliteral">"Reply: "</span> << response.substr(0, maxSize);</div>
|
||||
<div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  }</div>
|
||||
<div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  </div>
|
||||
<div class="line"><a name="l00977"></a><span class="lineno"> 977</span>  <a class="code" href="namespaceripple.html#af9d0577f0b4ced1d08e8cba3ba14e45a">HTTPReply</a>(200, response, output, rpcJ);</div>
|
||||
<div class="line"><a name="l00978"></a><span class="lineno"> 978</span> }</div>
|
||||
<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  </div>
|
||||
<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  <span class="keyword">auto</span> start = <a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/system_clock/now.html">std::chrono::system_clock::now</a>();</div>
|
||||
<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  </div>
|
||||
<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  <span class="keywordflow">try</span></div>
|
||||
<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  {</div>
|
||||
<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  <a class="code" href="namespaceripple_1_1RPC.html#a84827a1d9b56ad8201671ff77c2ddf2e">RPC::doCommand</a>(context, result);</div>
|
||||
<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  }</div>
|
||||
<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  <span class="keywordflow">catch</span> (<a class="codeRef" href="http://en.cppreference.com/w/cpp/error/exception.html">std::exception</a> <span class="keyword">const</span>& ex)</div>
|
||||
<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  {</div>
|
||||
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  result = <a class="code" href="namespaceripple_1_1RPC.html#a2cd6200f6709780fcf1dd26ec9cd2866">RPC::make_error</a>(<a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a839833d48b635d8df6a9176274ae922f">rpcINTERNAL</a>);</div>
|
||||
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  JLOG(<a class="code" href="classripple_1_1ServerHandlerImp.html#a28a9242621ceed7801e20f4fc5beb8ea">m_journal</a>.<a class="code" href="classbeast_1_1Journal.html#a49b0713e65bb8e2c51b76fbf16252afe">error</a>()) << <span class="stringliteral">"Internal error : "</span> << ex.<a class="codeRef" href="http://en.cppreference.com/w/cpp/error/exception/what.html">what</a>()</div>
|
||||
<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  << <span class="stringliteral">" when processing request: "</span></div>
|
||||
<div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  << <a class="code" href="classJson_1_1Compact.html">Json::Compact</a>{<a class="code" href="classJson_1_1Value.html">Json::Value</a>{params}};</div>
|
||||
<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  }</div>
|
||||
<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  </div>
|
||||
<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  <span class="keyword">auto</span> end = <a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/system_clock/now.html">std::chrono::system_clock::now</a>();</div>
|
||||
<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  </div>
|
||||
<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  <a class="code" href="namespaceripple.html#a9ed448ddcb5b36998c6d084f942b7173">logDuration</a>(params, end - start, <a class="code" href="classripple_1_1ServerHandlerImp.html#a28a9242621ceed7801e20f4fc5beb8ea">m_journal</a>);</div>
|
||||
<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  </div>
|
||||
<div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  usage.<a class="code" href="classripple_1_1Resource_1_1Consumer.html#a65d4f295e044ae0bf1e5ef1e4e6df539">charge</a>(loadType);</div>
|
||||
<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  <span class="keywordflow">if</span> (usage.<a class="code" href="classripple_1_1Resource_1_1Consumer.html#a27db21f6a4965d2ade4ba1761e3d8ccd">warn</a>())</div>
|
||||
<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  result[jss::warning] = jss::load;</div>
|
||||
<div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  </div>
|
||||
<div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  <a class="code" href="classJson_1_1Value.html">Json::Value</a> r(<a class="code" href="namespaceJson.html#a7d654b75c16a57007925868e38212b4eae8386dcfc36d1ae897745f7b4f77a1f6">Json::objectValue</a>);</div>
|
||||
<div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  <span class="keywordflow">if</span> (ripplerpc >= <span class="stringliteral">"2.0"</span>)</div>
|
||||
<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  {</div>
|
||||
<div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  <span class="keywordflow">if</span> (result.<a class="code" href="classJson_1_1Value.html#ad6d4df2227321bab05e86667609a7fad">isMember</a>(jss::error))</div>
|
||||
<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  {</div>
|
||||
<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  result[jss::status] = jss::error;</div>
|
||||
<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  result[<span class="stringliteral">"code"</span>] = result[jss::error_code];</div>
|
||||
<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  result[<span class="stringliteral">"message"</span>] = result[jss::error_message];</div>
|
||||
<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  result.<a class="code" href="classJson_1_1Value.html#aa52f7873b95d29627d6e83ba96f69aaa">removeMember</a>(jss::error_message);</div>
|
||||
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  JLOG(<a class="code" href="classripple_1_1ServerHandlerImp.html#a28a9242621ceed7801e20f4fc5beb8ea">m_journal</a>.<a class="code" href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">debug</a>()) << <span class="stringliteral">"rpcError: "</span> << result[jss::error]</div>
|
||||
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  << <span class="stringliteral">": "</span> << result[jss::error_message];</div>
|
||||
<div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  r[jss::error] = std::move(result);</div>
|
||||
<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  }</div>
|
||||
<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  {</div>
|
||||
<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  result[jss::status] = jss::success;</div>
|
||||
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  r[jss::result] = std::move(result);</div>
|
||||
<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  }</div>
|
||||
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  }</div>
|
||||
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  {</div>
|
||||
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  <span class="comment">// Always report "status". On an error report the request as</span></div>
|
||||
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  <span class="comment">// received.</span></div>
|
||||
<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  <span class="keywordflow">if</span> (result.<a class="code" href="classJson_1_1Value.html#ad6d4df2227321bab05e86667609a7fad">isMember</a>(jss::error))</div>
|
||||
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  {</div>
|
||||
<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  <span class="keyword">auto</span> rq = params;</div>
|
||||
<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  </div>
|
||||
<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  <span class="keywordflow">if</span> (rq.isObject())</div>
|
||||
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  { <span class="comment">// But mask potentially sensitive information.</span></div>
|
||||
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  <span class="keywordflow">if</span> (rq.isMember(jss::passphrase.c_str()))</div>
|
||||
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  rq[jss::passphrase.c_str()] = <span class="stringliteral">"<masked>"</span>;</div>
|
||||
<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  <span class="keywordflow">if</span> (rq.isMember(jss::secret.c_str()))</div>
|
||||
<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  rq[jss::secret.c_str()] = <span class="stringliteral">"<masked>"</span>;</div>
|
||||
<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <span class="keywordflow">if</span> (rq.isMember(jss::seed.c_str()))</div>
|
||||
<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  rq[jss::seed.c_str()] = <span class="stringliteral">"<masked>"</span>;</div>
|
||||
<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  <span class="keywordflow">if</span> (rq.isMember(jss::seed_hex.c_str()))</div>
|
||||
<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  rq[jss::seed_hex.c_str()] = <span class="stringliteral">"<masked>"</span>;</div>
|
||||
<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  }</div>
|
||||
<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  </div>
|
||||
<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  result[jss::status] = jss::error;</div>
|
||||
<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  result[jss::request] = rq;</div>
|
||||
<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  </div>
|
||||
<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  JLOG(<a class="code" href="classripple_1_1ServerHandlerImp.html#a28a9242621ceed7801e20f4fc5beb8ea">m_journal</a>.<a class="code" href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">debug</a>()) << <span class="stringliteral">"rpcError: "</span> << result[jss::error]</div>
|
||||
<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  << <span class="stringliteral">": "</span> << result[jss::error_message];</div>
|
||||
<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  }</div>
|
||||
<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  {</div>
|
||||
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  result[jss::status] = jss::success;</div>
|
||||
<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  }</div>
|
||||
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  r[jss::result] = std::move(result);</div>
|
||||
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  }</div>
|
||||
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  </div>
|
||||
<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  <span class="keywordflow">if</span> (params.isMember(jss::jsonrpc))</div>
|
||||
<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  r[jss::jsonrpc] = params[jss::jsonrpc];</div>
|
||||
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  <span class="keywordflow">if</span> (params.isMember(jss::ripplerpc))</div>
|
||||
<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  r[jss::ripplerpc] = params[jss::ripplerpc];</div>
|
||||
<div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  <span class="keywordflow">if</span> (params.isMember(jss::id))</div>
|
||||
<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>  r[jss::id] = params[jss::id];</div>
|
||||
<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  <span class="keywordflow">if</span> (batch)</div>
|
||||
<div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  reply.<a class="code" href="classJson_1_1Value.html#a7e49ac977e4bcf59745a09d426669f75">append</a>(std::move(r));</div>
|
||||
<div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  reply = std::move(r);</div>
|
||||
<div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  </div>
|
||||
<div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  <span class="keywordflow">if</span> (reply.<a class="code" href="classJson_1_1Value.html#ad6d4df2227321bab05e86667609a7fad">isMember</a>(jss::result) &&</div>
|
||||
<div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  reply[jss::result].<a class="code" href="classJson_1_1Value.html#ad6d4df2227321bab05e86667609a7fad">isMember</a>(jss::result))</div>
|
||||
<div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  {</div>
|
||||
<div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  reply = reply[jss::result];</div>
|
||||
<div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  <span class="keywordflow">if</span> (reply.<a class="code" href="classJson_1_1Value.html#ad6d4df2227321bab05e86667609a7fad">isMember</a>(jss::status))</div>
|
||||
<div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  {</div>
|
||||
<div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  reply[jss::result][jss::status] = reply[jss::status];</div>
|
||||
<div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  reply.<a class="code" href="classJson_1_1Value.html#aa52f7873b95d29627d6e83ba96f69aaa">removeMember</a>(jss::status);</div>
|
||||
<div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  }</div>
|
||||
<div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  }</div>
|
||||
<div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  }</div>
|
||||
<div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  <span class="keyword">auto</span> response = <a class="code" href="namespaceripple.html#af9776f187d3686a7fba4c2d2fbeebdf4">to_string</a>(reply);</div>
|
||||
<div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  </div>
|
||||
<div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  <a class="code" href="classripple_1_1ServerHandlerImp.html#adc58b4538fc24ffa1a0563256e958a78">rpc_time_</a>.<a class="code" href="classbeast_1_1insight_1_1Event.html#af25d64d42a95d26832e7354f07059245">notify</a>(std::chrono::duration_cast<std::chrono::milliseconds>(</div>
|
||||
<div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/high_resolution_clock/now.html">std::chrono::high_resolution_clock::now</a>() - start));</div>
|
||||
<div class="line"><a name="l00977"></a><span class="lineno"> 977</span>  ++<a class="code" href="classripple_1_1ServerHandlerImp.html#a54cdcb3c477eb5adb0891bd324735c93">rpc_requests_</a>;</div>
|
||||
<div class="line"><a name="l00978"></a><span class="lineno"> 978</span>  <a class="code" href="classripple_1_1ServerHandlerImp.html#ab3b7ba5d821b2a8868377c4b746cf5d6">rpc_size_</a>.<a class="code" href="classbeast_1_1insight_1_1Event.html#af25d64d42a95d26832e7354f07059245">notify</a>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/duration.html">beast::insight::Event::value_type</a>{response.size()});</div>
|
||||
<div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  </div>
|
||||
<div class="line"><a name="l00980"></a><span class="lineno"> 980</span> <span class="comment">//------------------------------------------------------------------------------</span></div>
|
||||
<div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  response += <span class="charliteral">'\n'</span>;</div>
|
||||
<div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  </div>
|
||||
<div class="line"><a name="l00982"></a><span class="lineno"> 982</span> <span class="comment">/* This response is used with load balancing.</span></div>
|
||||
<div class="line"><a name="l00983"></a><span class="lineno"> 983</span> <span class="comment"> If the server is overloaded, status 500 is reported. Otherwise status 200</span></div>
|
||||
<div class="line"><a name="l00984"></a><span class="lineno"> 984</span> <span class="comment"> is reported, meaning the server can accept more connections.</span></div>
|
||||
<div class="line"><a name="l00985"></a><span class="lineno"> 985</span> <span class="comment">*/</span></div>
|
||||
<div class="line"><a name="l00986"></a><span class="lineno"> 986</span> <a class="code" href="structripple_1_1Handoff.html">Handoff</a></div>
|
||||
<div class="line"><a name="l00987"></a><span class="lineno"><a class="line" href="classripple_1_1ServerHandlerImp.html#ad75e744ed8a9fda6d46bcc8d87b33a38"> 987</a></span> <a class="code" href="classripple_1_1ServerHandlerImp.html#ad75e744ed8a9fda6d46bcc8d87b33a38">ServerHandlerImp::statusResponse</a>(<a class="code" href="namespaceripple.html#aa265217edeb8282e636c78b50049f4c0">http_request_type</a> <span class="keyword">const</span>& request)<span class="keyword"> const</span></div>
|
||||
<div class="line"><a name="l00988"></a><span class="lineno"> 988</span> <span class="keyword"></span>{</div>
|
||||
<div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  <span class="keyword">using namespace </span>boost::beast::http;</div>
|
||||
<div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  <a class="code" href="structripple_1_1Handoff.html">Handoff</a> handoff;</div>
|
||||
<div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  response<string_body> msg;</div>
|
||||
<div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> reason;</div>
|
||||
<div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  <span class="keywordflow">if</span> (<a class="code" href="classripple_1_1ServerHandlerImp.html#a01566fadecc66a62be87713cc84a4197">app_</a>.<a class="code" href="classripple_1_1Application.html#a0005228a2b40d12b6985ac48bd768940">serverOkay</a>(reason))</div>
|
||||
<div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  {</div>
|
||||
<div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  msg.result(boost::beast::http::status::ok);</div>
|
||||
<div class="line"><a name="l00996"></a><span class="lineno"> 996</span>  msg.body() = <span class="stringliteral">"<!DOCTYPE html><html><head><title>"</span> + <a class="code" href="namespaceripple.html#aca32bc5eec87c90ce71880dbba08b93e">systemName</a>() +</div>
|
||||
<div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  <span class="stringliteral">" Test page for rippled</title></head><body><h1>"</span> + <a class="code" href="namespaceripple.html#aca32bc5eec87c90ce71880dbba08b93e">systemName</a>() +</div>
|
||||
<div class="line"><a name="l00998"></a><span class="lineno"> 998</span>  <span class="stringliteral">" Test</h1><p>This page shows rippled http(s) "</span></div>
|
||||
<div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  <span class="stringliteral">"connectivity is working.</p></body></html>"</span>;</div>
|
||||
<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  }</div>
|
||||
<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>  {</div>
|
||||
<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  msg.result(boost::beast::http::status::internal_server_error);</div>
|
||||
<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  msg.body() = <span class="stringliteral">"<HTML><BODY>Server cannot accept clients: "</span> + reason +</div>
|
||||
<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  <span class="stringliteral">"</BODY></HTML>"</span>;</div>
|
||||
<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  }</div>
|
||||
<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  msg.version(request.version());</div>
|
||||
<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>  msg.<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/insert.html">insert</a>(<span class="stringliteral">"Server"</span>, <a class="code" href="namespaceripple_1_1BuildInfo.html#a1e2b1646cf948c1c19ff190903c3e789">BuildInfo::getFullVersionString</a>());</div>
|
||||
<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  msg.insert(<span class="stringliteral">"Content-Type"</span>, <span class="stringliteral">"text/html"</span>);</div>
|
||||
<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  msg.insert(<span class="stringliteral">"Connection"</span>, <span class="stringliteral">"close"</span>);</div>
|
||||
<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  msg.prepare_payload();</div>
|
||||
<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  handoff.<a class="code" href="structripple_1_1Handoff.html#a808daa7fd8b0b6f64aec56b83ce5fe85">response</a> = std::make_shared<SimpleWriter>(msg);</div>
|
||||
<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  <span class="keywordflow">return</span> handoff;</div>
|
||||
<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span> }</div>
|
||||
<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>  </div>
|
||||
<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span> <span class="comment">//------------------------------------------------------------------------------</span></div>
|
||||
<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  </div>
|
||||
<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span> <span class="keywordtype">void</span></div>
|
||||
<div class="line"><a name="l01019"></a><span class="lineno"><a class="line" href="structripple_1_1ServerHandlerImp_1_1Setup.html#acf2e4a0b32981ef7eb945aad361bafd2"> 1019</a></span> <a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#acf2e4a0b32981ef7eb945aad361bafd2">ServerHandler::Setup::makeContexts</a>()</div>
|
||||
<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span> {</div>
|
||||
<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span>& p : <a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#ac610f2dee7d9f1e1b4716ef0ec477125">ports</a>)</div>
|
||||
<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  {</div>
|
||||
<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>  <span class="keywordflow">if</span> (p.secure())</div>
|
||||
<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  {</div>
|
||||
<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>  <span class="keywordflow">if</span> (p.ssl_key.empty() && p.ssl_cert.empty() && p.ssl_chain.empty())</div>
|
||||
<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>  p.context = <a class="code" href="namespaceripple.html#a4d435c32e5733f8d57bf0562c25e0f3b">make_SSLContext</a>(p.ssl_ciphers);</div>
|
||||
<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  p.context = <a class="code" href="namespaceripple.html#ae8b021ae4b350b66b5e9e39f4a32c844">make_SSLContextAuthed</a>(</div>
|
||||
<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  p.ssl_key, p.ssl_cert, p.ssl_chain, p.ssl_ciphers);</div>
|
||||
<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  }</div>
|
||||
<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  {</div>
|
||||
<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  p.context = std::make_shared<boost::asio::ssl::context>(</div>
|
||||
<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>  boost::asio::ssl::context::sslv23);</div>
|
||||
<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  }</div>
|
||||
<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  }</div>
|
||||
<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span> }</div>
|
||||
<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  </div>
|
||||
<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span> <span class="keyword">static</span> <a class="code" href="structripple_1_1Port.html">Port</a></div>
|
||||
<div class="line"><a name="l01040"></a><span class="lineno"><a class="line" href="namespaceripple.html#a1657c1d18a31190f61b59652b4184b3b"> 1040</a></span> <a class="code" href="namespaceripple.html#a1657c1d18a31190f61b59652b4184b3b">to_Port</a>(<a class="code" href="structripple_1_1ParsedPort.html">ParsedPort</a> <span class="keyword">const</span>& parsed, <a class="codeRef" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::ostream</a>& log)</div>
|
||||
<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span> {</div>
|
||||
<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>  <a class="code" href="structripple_1_1Port.html">Port</a> p;</div>
|
||||
<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  p.<a class="code" href="structripple_1_1Port.html#af27390c27984b98c5590b88ee78313a2">name</a> = parsed.<a class="code" href="structripple_1_1ParsedPort.html#a7e18473959ba367d022b923434241324">name</a>;</div>
|
||||
<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  </div>
|
||||
<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  <span class="keywordflow">if</span> (!parsed.<a class="code" href="structripple_1_1ParsedPort.html#ae32c2f5693e35df49944be81a716f2c3">ip</a>)</div>
|
||||
<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  {</div>
|
||||
<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>  log << <span class="stringliteral">"Missing 'ip' in ["</span> << p.<a class="code" href="structripple_1_1Port.html#af27390c27984b98c5590b88ee78313a2">name</a> << <span class="stringliteral">"]"</span>;</div>
|
||||
<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>  Throw<std::exception>();</div>
|
||||
<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>  }</div>
|
||||
<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  p.<a class="code" href="structripple_1_1Port.html#ae1ba6b8a6edf8c2544ebe903fffef178">ip</a> = *parsed.<a class="code" href="structripple_1_1ParsedPort.html#ae32c2f5693e35df49944be81a716f2c3">ip</a>;</div>
|
||||
<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  </div>
|
||||
<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  <span class="keywordflow">if</span> (!parsed.<a class="code" href="structripple_1_1ParsedPort.html#a379a41d37bcc5806794320915b6d151e">port</a>)</div>
|
||||
<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>  {</div>
|
||||
<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  log << <span class="stringliteral">"Missing 'port' in ["</span> << p.<a class="code" href="structripple_1_1Port.html#af27390c27984b98c5590b88ee78313a2">name</a> << <span class="stringliteral">"]"</span>;</div>
|
||||
<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  Throw<std::exception>();</div>
|
||||
<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  }</div>
|
||||
<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*parsed.<a class="code" href="structripple_1_1ParsedPort.html#a379a41d37bcc5806794320915b6d151e">port</a> == 0)</div>
|
||||
<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  {</div>
|
||||
<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  log << <span class="stringliteral">"Port "</span> << *parsed.<a class="code" href="structripple_1_1ParsedPort.html#a379a41d37bcc5806794320915b6d151e">port</a> << <span class="stringliteral">"in ["</span> << p.<a class="code" href="structripple_1_1Port.html#af27390c27984b98c5590b88ee78313a2">name</a> << <span class="stringliteral">"] is invalid"</span>;</div>
|
||||
<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  Throw<std::exception>();</div>
|
||||
<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  }</div>
|
||||
<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  p.<a class="code" href="structripple_1_1Port.html#a0c5ce3306e741211ad5a08073f07ff29">port</a> = *parsed.<a class="code" href="structripple_1_1ParsedPort.html#a379a41d37bcc5806794320915b6d151e">port</a>;</div>
|
||||
<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  </div>
|
||||
<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  <span class="keywordflow">if</span> (parsed.<a class="code" href="structripple_1_1ParsedPort.html#a6f5cbe8976ce63af96dccfa383874ff8">protocol</a>.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/set/empty.html">empty</a>())</div>
|
||||
<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  {</div>
|
||||
<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  log << <span class="stringliteral">"Missing 'protocol' in ["</span> << p.<a class="code" href="structripple_1_1Port.html#af27390c27984b98c5590b88ee78313a2">name</a> << <span class="stringliteral">"]"</span>;</div>
|
||||
<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>  Throw<std::exception>();</div>
|
||||
<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>  }</div>
|
||||
<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  p.<a class="code" href="structripple_1_1Port.html#a41c843b31298cfa936f0d99e15bd843f">protocol</a> = parsed.<a class="code" href="structripple_1_1ParsedPort.html#a6f5cbe8976ce63af96dccfa383874ff8">protocol</a>;</div>
|
||||
<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>  </div>
|
||||
<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  p.<a class="code" href="structripple_1_1Port.html#acfff0cffb176d6ea929cdb82c68cf882">user</a> = parsed.<a class="code" href="structripple_1_1ParsedPort.html#a41912c012fa79bda189fb36041ba69be">user</a>;</div>
|
||||
<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>  p.<a class="code" href="structripple_1_1Port.html#a27d3bc7390a8f0d728bb00446353e95c">password</a> = parsed.<a class="code" href="structripple_1_1ParsedPort.html#ab2a7830b8107f09c88af6525f2746c18">password</a>;</div>
|
||||
<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  p.<a class="code" href="structripple_1_1Port.html#ab1245b88601b253a079502b602d35d6a">admin_user</a> = parsed.<a class="code" href="structripple_1_1ParsedPort.html#ae2634e2aa4f3f491bdbc8fc4a7bcbb85">admin_user</a>;</div>
|
||||
<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  p.<a class="code" href="structripple_1_1Port.html#aef3fd85511dc4d06046e84f4baa08063">admin_password</a> = parsed.<a class="code" href="structripple_1_1ParsedPort.html#a77a3490a5b883160ad79fc9a9465d01b">admin_password</a>;</div>
|
||||
<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  p.<a class="code" href="structripple_1_1Port.html#a94b5bfbc5b8b8c58cf15be92ffe7e4d8">ssl_key</a> = parsed.<a class="code" href="structripple_1_1ParsedPort.html#a4f5b226aeea7910ad9d8ed46d41c7600">ssl_key</a>;</div>
|
||||
<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  p.<a class="code" href="structripple_1_1Port.html#a8e80a833c4ee32124909c5842d3f504e">ssl_cert</a> = parsed.<a class="code" href="structripple_1_1ParsedPort.html#ac9fb4e80d5371867f17ca67ac2fa877e">ssl_cert</a>;</div>
|
||||
<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>  p.<a class="code" href="structripple_1_1Port.html#a15de8caf0aa37baa379bec53ba23362c">ssl_chain</a> = parsed.<a class="code" href="structripple_1_1ParsedPort.html#a85c9d257b0ac9158ced4c30fba44f211">ssl_chain</a>;</div>
|
||||
<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  p.<a class="code" href="structripple_1_1Port.html#ae5e84afe0fc12a5c33fa7ded231102a5">ssl_ciphers</a> = parsed.<a class="code" href="structripple_1_1ParsedPort.html#a23711e66cdaa65feaf3eaf67815b7ef8">ssl_ciphers</a>;</div>
|
||||
<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>  p.<a class="code" href="structripple_1_1Port.html#afa8100376068ed4e75e6074a76f0d85d">pmd_options</a> = parsed.<a class="code" href="structripple_1_1ParsedPort.html#a2ae919a80218f904b136a80093b718d5">pmd_options</a>;</div>
|
||||
<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  p.<a class="code" href="structripple_1_1Port.html#ae2db78e42b633d96af146c67543215e9">ws_queue_limit</a> = parsed.<a class="code" href="structripple_1_1ParsedPort.html#a509e4603be0b45a4c28ab6c2e6632142">ws_queue_limit</a>;</div>
|
||||
<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  p.<a class="code" href="structripple_1_1Port.html#a9000e3fcf242f5fc0e37924df80d0f8f">limit</a> = parsed.<a class="code" href="structripple_1_1ParsedPort.html#a2f73a7a8f938dba788ca358f2ef86170">limit</a>;</div>
|
||||
<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>  p.<a class="code" href="structripple_1_1Port.html#af662681da13f59b5784618916f4ee015">admin_nets_v4</a> = parsed.<a class="code" href="structripple_1_1ParsedPort.html#a3fe32f5a0b54244c90f6b7684f57775c">admin_nets_v4</a>;</div>
|
||||
<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>  p.<a class="code" href="structripple_1_1Port.html#a388b34fc701fabbdb91fa5e935e191b7">admin_nets_v6</a> = parsed.<a class="code" href="structripple_1_1ParsedPort.html#ab7f5cf9ef9920924eefb47f07e4bfbaf">admin_nets_v6</a>;</div>
|
||||
<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  p.<a class="code" href="structripple_1_1Port.html#ad58922a18221abf77c3f3937b21480fa">secure_gateway_nets_v4</a> = parsed.<a class="code" href="structripple_1_1ParsedPort.html#af6352ba8e1ca2026696d5f38447753da">secure_gateway_nets_v4</a>;</div>
|
||||
<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>  p.<a class="code" href="structripple_1_1Port.html#aa5b0b1ee9736658c12e97ae028c5f9bb">secure_gateway_nets_v6</a> = parsed.<a class="code" href="structripple_1_1ParsedPort.html#a616ba634f3c33ee5612c0d0c3968cc4d">secure_gateway_nets_v6</a>;</div>
|
||||
<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  </div>
|
||||
<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>  <span class="keywordflow">return</span> p;</div>
|
||||
<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span> }</div>
|
||||
<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  </div>
|
||||
<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span> <span class="keyword">static</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector<Port></a></div>
|
||||
<div class="line"><a name="l01091"></a><span class="lineno"><a class="line" href="namespaceripple.html#a1f1695344e39dbde3cc619f8256000f0"> 1091</a></span> <a class="code" href="namespaceripple.html#a1f1695344e39dbde3cc619f8256000f0">parse_Ports</a>(<a class="code" href="classripple_1_1Config.html">Config</a> <span class="keyword">const</span>& config, <a class="codeRef" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::ostream</a>& log)</div>
|
||||
<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span> {</div>
|
||||
<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector<Port></a> result;</div>
|
||||
<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  </div>
|
||||
<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  <span class="keywordflow">if</span> (!config.<a class="code" href="classripple_1_1BasicConfig.html#a09b31b8ed3c769b4c23b040c3d4798ed">exists</a>(<span class="stringliteral">"server"</span>))</div>
|
||||
<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  {</div>
|
||||
<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>  log << <span class="stringliteral">"Required section [server] is missing"</span>;</div>
|
||||
<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>  Throw<std::exception>();</div>
|
||||
<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  }</div>
|
||||
<div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  <span class="keywordflow">if</span> (<span class="keyword">auto</span> stream = <a class="code" href="classripple_1_1ServerHandlerImp.html#a28a9242621ceed7801e20f4fc5beb8ea">m_journal</a>.<a class="code" href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">debug</a>())</div>
|
||||
<div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  {</div>
|
||||
<div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> maxSize = 10000;</div>
|
||||
<div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  <span class="keywordflow">if</span> (response.size() <= maxSize)</div>
|
||||
<div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  stream << <span class="stringliteral">"Reply: "</span> << response;</div>
|
||||
<div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  stream << <span class="stringliteral">"Reply: "</span> << response.substr(0, maxSize);</div>
|
||||
<div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  }</div>
|
||||
<div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  </div>
|
||||
<div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  <a class="code" href="namespaceripple.html#af9d0577f0b4ced1d08e8cba3ba14e45a">HTTPReply</a>(200, response, output, rpcJ);</div>
|
||||
<div class="line"><a name="l00992"></a><span class="lineno"> 992</span> }</div>
|
||||
<div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  </div>
|
||||
<div class="line"><a name="l00994"></a><span class="lineno"> 994</span> <span class="comment">//------------------------------------------------------------------------------</span></div>
|
||||
<div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  </div>
|
||||
<div class="line"><a name="l00996"></a><span class="lineno"> 996</span> <span class="comment">/* This response is used with load balancing.</span></div>
|
||||
<div class="line"><a name="l00997"></a><span class="lineno"> 997</span> <span class="comment"> If the server is overloaded, status 500 is reported. Otherwise status 200</span></div>
|
||||
<div class="line"><a name="l00998"></a><span class="lineno"> 998</span> <span class="comment"> is reported, meaning the server can accept more connections.</span></div>
|
||||
<div class="line"><a name="l00999"></a><span class="lineno"> 999</span> <span class="comment">*/</span></div>
|
||||
<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span> <a class="code" href="structripple_1_1Handoff.html">Handoff</a></div>
|
||||
<div class="line"><a name="l01001"></a><span class="lineno"><a class="line" href="classripple_1_1ServerHandlerImp.html#ad75e744ed8a9fda6d46bcc8d87b33a38"> 1001</a></span> <a class="code" href="classripple_1_1ServerHandlerImp.html#ad75e744ed8a9fda6d46bcc8d87b33a38">ServerHandlerImp::statusResponse</a>(<a class="code" href="namespaceripple.html#aa265217edeb8282e636c78b50049f4c0">http_request_type</a> <span class="keyword">const</span>& request)<span class="keyword"> const</span></div>
|
||||
<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span> <span class="keyword"></span>{</div>
|
||||
<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  <span class="keyword">using namespace </span>boost::beast::http;</div>
|
||||
<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  <a class="code" href="structripple_1_1Handoff.html">Handoff</a> handoff;</div>
|
||||
<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  response<string_body> msg;</div>
|
||||
<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> reason;</div>
|
||||
<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  <span class="keywordflow">if</span> (<a class="code" href="classripple_1_1ServerHandlerImp.html#a01566fadecc66a62be87713cc84a4197">app_</a>.<a class="code" href="classripple_1_1Application.html#a0005228a2b40d12b6985ac48bd768940">serverOkay</a>(reason))</div>
|
||||
<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>  {</div>
|
||||
<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  msg.result(boost::beast::http::status::ok);</div>
|
||||
<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  msg.body() = <span class="stringliteral">"<!DOCTYPE html><html><head><title>"</span> + <a class="code" href="namespaceripple.html#aca32bc5eec87c90ce71880dbba08b93e">systemName</a>() +</div>
|
||||
<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  <span class="stringliteral">" Test page for rippled</title></head><body><h1>"</span> + <a class="code" href="namespaceripple.html#aca32bc5eec87c90ce71880dbba08b93e">systemName</a>() +</div>
|
||||
<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  <span class="stringliteral">" Test</h1><p>This page shows rippled http(s) "</span></div>
|
||||
<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  <span class="stringliteral">"connectivity is working.</p></body></html>"</span>;</div>
|
||||
<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  }</div>
|
||||
<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  {</div>
|
||||
<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  msg.result(boost::beast::http::status::internal_server_error);</div>
|
||||
<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  msg.body() = <span class="stringliteral">"<HTML><BODY>Server cannot accept clients: "</span> + reason +</div>
|
||||
<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  <span class="stringliteral">"</BODY></HTML>"</span>;</div>
|
||||
<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  }</div>
|
||||
<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  msg.version(request.version());</div>
|
||||
<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  msg.<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/insert.html">insert</a>(<span class="stringliteral">"Server"</span>, <a class="code" href="namespaceripple_1_1BuildInfo.html#a1e2b1646cf948c1c19ff190903c3e789">BuildInfo::getFullVersionString</a>());</div>
|
||||
<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>  msg.insert(<span class="stringliteral">"Content-Type"</span>, <span class="stringliteral">"text/html"</span>);</div>
|
||||
<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  msg.insert(<span class="stringliteral">"Connection"</span>, <span class="stringliteral">"close"</span>);</div>
|
||||
<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>  msg.prepare_payload();</div>
|
||||
<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>  handoff.<a class="code" href="structripple_1_1Handoff.html#a808daa7fd8b0b6f64aec56b83ce5fe85">response</a> = std::make_shared<SimpleWriter>(msg);</div>
|
||||
<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  <span class="keywordflow">return</span> handoff;</div>
|
||||
<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span> }</div>
|
||||
<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  </div>
|
||||
<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span> <span class="comment">//------------------------------------------------------------------------------</span></div>
|
||||
<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  </div>
|
||||
<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span> <span class="keywordtype">void</span></div>
|
||||
<div class="line"><a name="l01033"></a><span class="lineno"><a class="line" href="structripple_1_1ServerHandlerImp_1_1Setup.html#acf2e4a0b32981ef7eb945aad361bafd2"> 1033</a></span> <a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#acf2e4a0b32981ef7eb945aad361bafd2">ServerHandler::Setup::makeContexts</a>()</div>
|
||||
<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> {</div>
|
||||
<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span>& p : <a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#ac610f2dee7d9f1e1b4716ef0ec477125">ports</a>)</div>
|
||||
<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  {</div>
|
||||
<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>  <span class="keywordflow">if</span> (p.secure())</div>
|
||||
<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  {</div>
|
||||
<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  <span class="keywordflow">if</span> (p.ssl_key.empty() && p.ssl_cert.empty() && p.ssl_chain.empty())</div>
|
||||
<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>  p.context = <a class="code" href="namespaceripple.html#a4d435c32e5733f8d57bf0562c25e0f3b">make_SSLContext</a>(p.ssl_ciphers);</div>
|
||||
<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>  p.context = <a class="code" href="namespaceripple.html#ae8b021ae4b350b66b5e9e39f4a32c844">make_SSLContextAuthed</a>(</div>
|
||||
<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  p.ssl_key, p.ssl_cert, p.ssl_chain, p.ssl_ciphers);</div>
|
||||
<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  }</div>
|
||||
<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  {</div>
|
||||
<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>  p.context = std::make_shared<boost::asio::ssl::context>(</div>
|
||||
<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>  boost::asio::ssl::context::sslv23);</div>
|
||||
<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>  }</div>
|
||||
<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  }</div>
|
||||
<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span> }</div>
|
||||
<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  </div>
|
||||
<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span> <span class="keyword">static</span> <a class="code" href="structripple_1_1Port.html">Port</a></div>
|
||||
<div class="line"><a name="l01054"></a><span class="lineno"><a class="line" href="namespaceripple.html#a1657c1d18a31190f61b59652b4184b3b"> 1054</a></span> <a class="code" href="namespaceripple.html#a1657c1d18a31190f61b59652b4184b3b">to_Port</a>(<a class="code" href="structripple_1_1ParsedPort.html">ParsedPort</a> <span class="keyword">const</span>& parsed, <a class="codeRef" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::ostream</a>& log)</div>
|
||||
<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span> {</div>
|
||||
<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  <a class="code" href="structripple_1_1Port.html">Port</a> p;</div>
|
||||
<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  p.<a class="code" href="structripple_1_1Port.html#af27390c27984b98c5590b88ee78313a2">name</a> = parsed.<a class="code" href="structripple_1_1ParsedPort.html#a7e18473959ba367d022b923434241324">name</a>;</div>
|
||||
<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  </div>
|
||||
<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  <span class="keywordflow">if</span> (!parsed.<a class="code" href="structripple_1_1ParsedPort.html#ae32c2f5693e35df49944be81a716f2c3">ip</a>)</div>
|
||||
<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  {</div>
|
||||
<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  log << <span class="stringliteral">"Missing 'ip' in ["</span> << p.<a class="code" href="structripple_1_1Port.html#af27390c27984b98c5590b88ee78313a2">name</a> << <span class="stringliteral">"]"</span>;</div>
|
||||
<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  Throw<std::exception>();</div>
|
||||
<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  }</div>
|
||||
<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  p.<a class="code" href="structripple_1_1Port.html#ae1ba6b8a6edf8c2544ebe903fffef178">ip</a> = *parsed.<a class="code" href="structripple_1_1ParsedPort.html#ae32c2f5693e35df49944be81a716f2c3">ip</a>;</div>
|
||||
<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  </div>
|
||||
<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  <span class="keywordflow">if</span> (!parsed.<a class="code" href="structripple_1_1ParsedPort.html#a379a41d37bcc5806794320915b6d151e">port</a>)</div>
|
||||
<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>  {</div>
|
||||
<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>  log << <span class="stringliteral">"Missing 'port' in ["</span> << p.<a class="code" href="structripple_1_1Port.html#af27390c27984b98c5590b88ee78313a2">name</a> << <span class="stringliteral">"]"</span>;</div>
|
||||
<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  Throw<std::exception>();</div>
|
||||
<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>  }</div>
|
||||
<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*parsed.<a class="code" href="structripple_1_1ParsedPort.html#a379a41d37bcc5806794320915b6d151e">port</a> == 0)</div>
|
||||
<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>  {</div>
|
||||
<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  log << <span class="stringliteral">"Port "</span> << *parsed.<a class="code" href="structripple_1_1ParsedPort.html#a379a41d37bcc5806794320915b6d151e">port</a> << <span class="stringliteral">"in ["</span> << p.<a class="code" href="structripple_1_1Port.html#af27390c27984b98c5590b88ee78313a2">name</a> << <span class="stringliteral">"] is invalid"</span>;</div>
|
||||
<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  Throw<std::exception>();</div>
|
||||
<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  }</div>
|
||||
<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  p.<a class="code" href="structripple_1_1Port.html#a0c5ce3306e741211ad5a08073f07ff29">port</a> = *parsed.<a class="code" href="structripple_1_1ParsedPort.html#a379a41d37bcc5806794320915b6d151e">port</a>;</div>
|
||||
<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>  </div>
|
||||
<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  <span class="keywordflow">if</span> (parsed.<a class="code" href="structripple_1_1ParsedPort.html#a6f5cbe8976ce63af96dccfa383874ff8">protocol</a>.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/set/empty.html">empty</a>())</div>
|
||||
<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>  {</div>
|
||||
<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  log << <span class="stringliteral">"Missing 'protocol' in ["</span> << p.<a class="code" href="structripple_1_1Port.html#af27390c27984b98c5590b88ee78313a2">name</a> << <span class="stringliteral">"]"</span>;</div>
|
||||
<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  Throw<std::exception>();</div>
|
||||
<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>  }</div>
|
||||
<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>  p.<a class="code" href="structripple_1_1Port.html#a41c843b31298cfa936f0d99e15bd843f">protocol</a> = parsed.<a class="code" href="structripple_1_1ParsedPort.html#a6f5cbe8976ce63af96dccfa383874ff8">protocol</a>;</div>
|
||||
<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  </div>
|
||||
<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>  p.<a class="code" href="structripple_1_1Port.html#acfff0cffb176d6ea929cdb82c68cf882">user</a> = parsed.<a class="code" href="structripple_1_1ParsedPort.html#a41912c012fa79bda189fb36041ba69be">user</a>;</div>
|
||||
<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  p.<a class="code" href="structripple_1_1Port.html#a27d3bc7390a8f0d728bb00446353e95c">password</a> = parsed.<a class="code" href="structripple_1_1ParsedPort.html#ab2a7830b8107f09c88af6525f2746c18">password</a>;</div>
|
||||
<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>  p.<a class="code" href="structripple_1_1Port.html#ab1245b88601b253a079502b602d35d6a">admin_user</a> = parsed.<a class="code" href="structripple_1_1ParsedPort.html#ae2634e2aa4f3f491bdbc8fc4a7bcbb85">admin_user</a>;</div>
|
||||
<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>  p.<a class="code" href="structripple_1_1Port.html#aef3fd85511dc4d06046e84f4baa08063">admin_password</a> = parsed.<a class="code" href="structripple_1_1ParsedPort.html#a77a3490a5b883160ad79fc9a9465d01b">admin_password</a>;</div>
|
||||
<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  p.<a class="code" href="structripple_1_1Port.html#a94b5bfbc5b8b8c58cf15be92ffe7e4d8">ssl_key</a> = parsed.<a class="code" href="structripple_1_1ParsedPort.html#a4f5b226aeea7910ad9d8ed46d41c7600">ssl_key</a>;</div>
|
||||
<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  p.<a class="code" href="structripple_1_1Port.html#a8e80a833c4ee32124909c5842d3f504e">ssl_cert</a> = parsed.<a class="code" href="structripple_1_1ParsedPort.html#ac9fb4e80d5371867f17ca67ac2fa877e">ssl_cert</a>;</div>
|
||||
<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  p.<a class="code" href="structripple_1_1Port.html#a15de8caf0aa37baa379bec53ba23362c">ssl_chain</a> = parsed.<a class="code" href="structripple_1_1ParsedPort.html#a85c9d257b0ac9158ced4c30fba44f211">ssl_chain</a>;</div>
|
||||
<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  p.<a class="code" href="structripple_1_1Port.html#ae5e84afe0fc12a5c33fa7ded231102a5">ssl_ciphers</a> = parsed.<a class="code" href="structripple_1_1ParsedPort.html#a23711e66cdaa65feaf3eaf67815b7ef8">ssl_ciphers</a>;</div>
|
||||
<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  p.<a class="code" href="structripple_1_1Port.html#afa8100376068ed4e75e6074a76f0d85d">pmd_options</a> = parsed.<a class="code" href="structripple_1_1ParsedPort.html#a2ae919a80218f904b136a80093b718d5">pmd_options</a>;</div>
|
||||
<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  p.<a class="code" href="structripple_1_1Port.html#ae2db78e42b633d96af146c67543215e9">ws_queue_limit</a> = parsed.<a class="code" href="structripple_1_1ParsedPort.html#a509e4603be0b45a4c28ab6c2e6632142">ws_queue_limit</a>;</div>
|
||||
<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  p.<a class="code" href="structripple_1_1Port.html#a9000e3fcf242f5fc0e37924df80d0f8f">limit</a> = parsed.<a class="code" href="structripple_1_1ParsedPort.html#a2f73a7a8f938dba788ca358f2ef86170">limit</a>;</div>
|
||||
<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  p.<a class="code" href="structripple_1_1Port.html#af662681da13f59b5784618916f4ee015">admin_nets_v4</a> = parsed.<a class="code" href="structripple_1_1ParsedPort.html#a3fe32f5a0b54244c90f6b7684f57775c">admin_nets_v4</a>;</div>
|
||||
<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>  p.<a class="code" href="structripple_1_1Port.html#a388b34fc701fabbdb91fa5e935e191b7">admin_nets_v6</a> = parsed.<a class="code" href="structripple_1_1ParsedPort.html#ab7f5cf9ef9920924eefb47f07e4bfbaf">admin_nets_v6</a>;</div>
|
||||
<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>  p.<a class="code" href="structripple_1_1Port.html#ad58922a18221abf77c3f3937b21480fa">secure_gateway_nets_v4</a> = parsed.<a class="code" href="structripple_1_1ParsedPort.html#af6352ba8e1ca2026696d5f38447753da">secure_gateway_nets_v4</a>;</div>
|
||||
<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  p.<a class="code" href="structripple_1_1Port.html#aa5b0b1ee9736658c12e97ae028c5f9bb">secure_gateway_nets_v6</a> = parsed.<a class="code" href="structripple_1_1ParsedPort.html#a616ba634f3c33ee5612c0d0c3968cc4d">secure_gateway_nets_v6</a>;</div>
|
||||
<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>  </div>
|
||||
<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  <a class="code" href="structripple_1_1ParsedPort.html">ParsedPort</a> common;</div>
|
||||
<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  <a class="code" href="namespaceripple.html#a5b67e65f60cd241099149dc88f1e4bfd">parse_Port</a>(common, config[<span class="stringliteral">"server"</span>], log);</div>
|
||||
<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  <span class="keywordflow">return</span> p;</div>
|
||||
<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span> }</div>
|
||||
<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>  </div>
|
||||
<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>  <span class="keyword">auto</span> <span class="keyword">const</span>& names = config.<a class="code" href="classripple_1_1BasicConfig.html#a60aca585d76b1121dd4f72b358729456">section</a>(<span class="stringliteral">"server"</span>).<a class="code" href="classripple_1_1Section.html#a320f911d1e931b45b71a50c25561ecf7">values</a>();</div>
|
||||
<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  result.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/reserve.html">reserve</a>(names.size());</div>
|
||||
<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span>& name : names)</div>
|
||||
<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>  {</div>
|
||||
<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>  <span class="keywordflow">if</span> (!config.<a class="code" href="classripple_1_1BasicConfig.html#a09b31b8ed3c769b4c23b040c3d4798ed">exists</a>(name))</div>
|
||||
<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  {</div>
|
||||
<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  log << <span class="stringliteral">"Missing section: ["</span> << name << <span class="stringliteral">"]"</span>;</div>
|
||||
<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  Throw<std::exception>();</div>
|
||||
<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  }</div>
|
||||
<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>  <a class="code" href="structripple_1_1ParsedPort.html">ParsedPort</a> parsed = common;</div>
|
||||
<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  parsed.<a class="code" href="structripple_1_1ParsedPort.html#a7e18473959ba367d022b923434241324">name</a> = name;</div>
|
||||
<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  <a class="code" href="namespaceripple.html#a5b67e65f60cd241099149dc88f1e4bfd">parse_Port</a>(parsed, config[name], log);</div>
|
||||
<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>  result.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(<a class="code" href="namespaceripple.html#a1657c1d18a31190f61b59652b4184b3b">to_Port</a>(parsed, log));</div>
|
||||
<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>  }</div>
|
||||
<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>  </div>
|
||||
<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>  <span class="keywordflow">if</span> (config.<a class="code" href="classripple_1_1Config.html#a55cd8ef67ffbf6a137e0dd71bc8151c6">standalone</a>())</div>
|
||||
<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>  {</div>
|
||||
<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>  <span class="keyword">auto</span> it = result.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/begin.html">begin</a>();</div>
|
||||
<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>  </div>
|
||||
<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>  <span class="keywordflow">while</span> (it != result.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/end.html">end</a>())</div>
|
||||
<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  {</div>
|
||||
<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>  <span class="keyword">auto</span>& p = it->protocol;</div>
|
||||
<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  </div>
|
||||
<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>  <span class="comment">// Remove the peer protocol, and if that would</span></div>
|
||||
<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>  <span class="comment">// leave the port empty, remove the port as well</span></div>
|
||||
<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>  <span class="keywordflow">if</span> (p.erase(<span class="stringliteral">"peer"</span>) && p.empty())</div>
|
||||
<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>  it = result.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/erase.html">erase</a>(it);</div>
|
||||
<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>  ++it;</div>
|
||||
<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>  }</div>
|
||||
<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>  }</div>
|
||||
<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>  {</div>
|
||||
<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>  <span class="keyword">auto</span> <span class="keyword">const</span> count =</div>
|
||||
<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/algorithm/count.html">std::count_if</a>(result.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/begin.html">cbegin</a>(), result.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/end.html">cend</a>(), [](<a class="code" href="structripple_1_1Port.html">Port</a> <span class="keyword">const</span>& p) {</div>
|
||||
<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>  return p.protocol.count(<span class="stringliteral">"peer"</span>) != 0;</div>
|
||||
<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>  });</div>
|
||||
<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>  </div>
|
||||
<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>  <span class="keywordflow">if</span> (count > 1)</div>
|
||||
<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>  {</div>
|
||||
<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>  log << <span class="stringliteral">"Error: More than one peer protocol configured in [server]"</span>;</div>
|
||||
<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>  Throw<std::exception>();</div>
|
||||
<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>  }</div>
|
||||
<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>  </div>
|
||||
<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>  <span class="keywordflow">if</span> (count == 0)</div>
|
||||
<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  log << <span class="stringliteral">"Warning: No peer protocol configured"</span>;</div>
|
||||
<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>  }</div>
|
||||
<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>  </div>
|
||||
<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>  <span class="keywordflow">return</span> result;</div>
|
||||
<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span> }</div>
|
||||
<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>  </div>
|
||||
<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span> <span class="comment">// Fill out the client portion of the Setup</span></div>
|
||||
<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span> <span class="keyword">static</span> <span class="keywordtype">void</span></div>
|
||||
<div class="line"><a name="l01157"></a><span class="lineno"><a class="line" href="namespaceripple.html#ad3f4a8a0213ea07fa9802d10ee6a4d79"> 1157</a></span> <a class="code" href="namespaceripple.html#ad3f4a8a0213ea07fa9802d10ee6a4d79">setup_Client</a>(<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html">ServerHandler::Setup</a>& <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>)</div>
|
||||
<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span> {</div>
|
||||
<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>  decltype(<a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#ac610f2dee7d9f1e1b4716ef0ec477125">ports</a>)::<a class="code" href="classripple_1_1Dir_1_1const__iterator.html">const_iterator</a> iter;</div>
|
||||
<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>  <span class="keywordflow">for</span> (iter = <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#ac610f2dee7d9f1e1b4716ef0ec477125">ports</a>.cbegin(); iter != <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#ac610f2dee7d9f1e1b4716ef0ec477125">ports</a>.cend(); ++iter)</div>
|
||||
<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>  <span class="keywordflow">if</span> (iter->protocol.count(<span class="stringliteral">"http"</span>) > 0 ||</div>
|
||||
<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>  iter->protocol.count(<span class="stringliteral">"https"</span>) > 0)</div>
|
||||
<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>  <span class="keywordflow">break</span>;</div>
|
||||
<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>  <span class="keywordflow">if</span> (iter == <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#ac610f2dee7d9f1e1b4716ef0ec477125">ports</a>.cend())</div>
|
||||
<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>  <span class="keywordflow">return</span>;</div>
|
||||
<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>  <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#a44fccc2b575144cf16688e0510446bd4">secure</a> = iter->protocol.count(<span class="stringliteral">"https"</span>) > 0;</div>
|
||||
<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>  <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#a1cfba82de3995bc70e297f18eee2dcef">ip</a> = <a class="code" href="namespacebeast_1_1IP.html#ab294c32a52d800b61d2fbe6f6d130faa">beast::IP::is_unspecified</a>(iter->ip)</div>
|
||||
<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>  ?</div>
|
||||
<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>  <span class="comment">// VFALCO HACK! to make localhost work</span></div>
|
||||
<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  (iter->ip.is_v6() ? <span class="stringliteral">"::1"</span> : <span class="stringliteral">"127.0.0.1"</span>)</div>
|
||||
<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>  : iter->ip.to_string();</div>
|
||||
<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>  <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#a71b103879153f77cac77ef88f3d3fb81">port</a> = iter->port;</div>
|
||||
<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>  <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#a5bb3e4c3f647d26ffc9bdeb011c776f8">user</a> = iter->user;</div>
|
||||
<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>  <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#adae7271497ad30628f2c5d7ffbca9672">password</a> = iter->password;</div>
|
||||
<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>  <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#a407fa705ff2453644d66ff9236124043">admin_user</a> = iter->admin_user;</div>
|
||||
<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>  <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#a34a533292e151fe67b0daa142369841f">admin_password</a> = iter->admin_password;</div>
|
||||
<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span> }</div>
|
||||
<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>  </div>
|
||||
<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span> <span class="comment">// Fill out the overlay portion of the Setup</span></div>
|
||||
<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span> <span class="keyword">static</span> <span class="keywordtype">void</span></div>
|
||||
<div class="line"><a name="l01181"></a><span class="lineno"><a class="line" href="namespaceripple.html#ab2ca61e1324164fc5b731835c119b0b1"> 1181</a></span> <a class="code" href="namespaceripple.html#adc117aa1e40c420ae8c34dea1f2f1bf1">setup_Overlay</a>(<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html">ServerHandler::Setup</a>& <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>)</div>
|
||||
<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span> {</div>
|
||||
<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>  <span class="keyword">auto</span> <span class="keyword">const</span> iter = <a class="codeRef" href="http://en.cppreference.com/w/cpp/algorithm/find.html">std::find_if</a>(</div>
|
||||
<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>  <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#ac610f2dee7d9f1e1b4716ef0ec477125">ports</a>.cbegin(), <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#ac610f2dee7d9f1e1b4716ef0ec477125">ports</a>.cend(), [](<a class="code" href="structripple_1_1Port.html">Port</a> <span class="keyword">const</span>& port) {</div>
|
||||
<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>  return port.protocol.count(<span class="stringliteral">"peer"</span>) != 0;</div>
|
||||
<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>  });</div>
|
||||
<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>  <span class="keywordflow">if</span> (iter == <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#ac610f2dee7d9f1e1b4716ef0ec477125">ports</a>.cend())</div>
|
||||
<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>  {</div>
|
||||
<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>  <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a581fef76b080ebf0e1a7f604cf81df72">overlay</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1overlay__t.html#a96eb29d239d6960eafc2e189b8086a03">port</a> = 0;</div>
|
||||
<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>  <span class="keywordflow">return</span>;</div>
|
||||
<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>  }</div>
|
||||
<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>  <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a581fef76b080ebf0e1a7f604cf81df72">overlay</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1overlay__t.html#a981c3f48f0dd80a0ac78bc22f59c3b2d">ip</a> = iter->ip;</div>
|
||||
<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>  <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a581fef76b080ebf0e1a7f604cf81df72">overlay</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1overlay__t.html#a96eb29d239d6960eafc2e189b8086a03">port</a> = iter->port;</div>
|
||||
<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span> }</div>
|
||||
<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>  </div>
|
||||
<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span> ServerHandler::Setup</div>
|
||||
<div class="line"><a name="l01197"></a><span class="lineno"><a class="line" href="namespaceripple.html#a9717a8236d67d262b4e5273712ac545c"> 1197</a></span> <a class="code" href="namespaceripple.html#a9717a8236d67d262b4e5273712ac545c">setup_ServerHandler</a>(<a class="code" href="classripple_1_1Config.html">Config</a> <span class="keyword">const</span>& config, <a class="codeRef" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::ostream</a>&& log)</div>
|
||||
<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span> {</div>
|
||||
<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>  <a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html">ServerHandler::Setup</a> <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>;</div>
|
||||
<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>  <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#ac610f2dee7d9f1e1b4716ef0ec477125">ports</a> = <a class="code" href="namespaceripple.html#a1f1695344e39dbde3cc619f8256000f0">parse_Ports</a>(config, log);</div>
|
||||
<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>  </div>
|
||||
<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>  <a class="code" href="namespaceripple.html#ad3f4a8a0213ea07fa9802d10ee6a4d79">setup_Client</a>(<a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>);</div>
|
||||
<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>  <a class="code" href="namespaceripple.html#adc117aa1e40c420ae8c34dea1f2f1bf1">setup_Overlay</a>(<a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>);</div>
|
||||
<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>  </div>
|
||||
<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>  <span class="keywordflow">return</span> <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>;</div>
|
||||
<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span> }</div>
|
||||
<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>  </div>
|
||||
<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/unique_ptr.html">std::unique_ptr<ServerHandler></a></div>
|
||||
<div class="line"><a name="l01209"></a><span class="lineno"><a class="line" href="namespaceripple.html#a44d8c60c9f62e56bb5ad95874dfa9eba"> 1209</a></span> <a class="code" href="namespaceripple.html#a44d8c60c9f62e56bb5ad95874dfa9eba">make_ServerHandler</a>(</div>
|
||||
<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>  <a class="code" href="classripple_1_1Application.html">Application</a>& app,</div>
|
||||
<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>  boost::asio::io_service& io_service,</div>
|
||||
<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>  <a class="code" href="classripple_1_1JobQueue.html">JobQueue</a>& jobQueue,</div>
|
||||
<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>  <a class="code" href="classripple_1_1NetworkOPs.html">NetworkOPs</a>& networkOPs,</div>
|
||||
<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>  <a class="code" href="classripple_1_1Resource_1_1Manager.html">Resource::Manager</a>& resourceManager,</div>
|
||||
<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>  <a class="code" href="classripple_1_1CollectorManager.html">CollectorManager</a>& cm)</div>
|
||||
<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span> {</div>
|
||||
<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>  <span class="keywordflow">return</span> std::make_unique<ServerHandlerImp>(</div>
|
||||
<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>  app, io_service, jobQueue, networkOPs, resourceManager, cm);</div>
|
||||
<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span> }</div>
|
||||
<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>  </div>
|
||||
<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span> } <span class="comment">// namespace ripple</span></div>
|
||||
<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span> <span class="keyword">static</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector<Port></a></div>
|
||||
<div class="line"><a name="l01105"></a><span class="lineno"><a class="line" href="namespaceripple.html#a1f1695344e39dbde3cc619f8256000f0"> 1105</a></span> <a class="code" href="namespaceripple.html#a1f1695344e39dbde3cc619f8256000f0">parse_Ports</a>(<a class="code" href="classripple_1_1Config.html">Config</a> <span class="keyword">const</span>& config, <a class="codeRef" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::ostream</a>& log)</div>
|
||||
<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span> {</div>
|
||||
<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector<Port></a> result;</div>
|
||||
<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>  </div>
|
||||
<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  <span class="keywordflow">if</span> (!config.<a class="code" href="classripple_1_1BasicConfig.html#a09b31b8ed3c769b4c23b040c3d4798ed">exists</a>(<span class="stringliteral">"server"</span>))</div>
|
||||
<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  {</div>
|
||||
<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  log << <span class="stringliteral">"Required section [server] is missing"</span>;</div>
|
||||
<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  Throw<std::exception>();</div>
|
||||
<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>  }</div>
|
||||
<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  </div>
|
||||
<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  <a class="code" href="structripple_1_1ParsedPort.html">ParsedPort</a> common;</div>
|
||||
<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>  <a class="code" href="namespaceripple.html#a5b67e65f60cd241099149dc88f1e4bfd">parse_Port</a>(common, config[<span class="stringliteral">"server"</span>], log);</div>
|
||||
<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>  </div>
|
||||
<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>  <span class="keyword">auto</span> <span class="keyword">const</span>& names = config.<a class="code" href="classripple_1_1BasicConfig.html#a60aca585d76b1121dd4f72b358729456">section</a>(<span class="stringliteral">"server"</span>).<a class="code" href="classripple_1_1Section.html#a320f911d1e931b45b71a50c25561ecf7">values</a>();</div>
|
||||
<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>  result.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/reserve.html">reserve</a>(names.size());</div>
|
||||
<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> <span class="keyword">const</span>& name : names)</div>
|
||||
<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>  {</div>
|
||||
<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>  <span class="keywordflow">if</span> (!config.<a class="code" href="classripple_1_1BasicConfig.html#a09b31b8ed3c769b4c23b040c3d4798ed">exists</a>(name))</div>
|
||||
<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>  {</div>
|
||||
<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  log << <span class="stringliteral">"Missing section: ["</span> << name << <span class="stringliteral">"]"</span>;</div>
|
||||
<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>  Throw<std::exception>();</div>
|
||||
<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  }</div>
|
||||
<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>  <a class="code" href="structripple_1_1ParsedPort.html">ParsedPort</a> parsed = common;</div>
|
||||
<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>  parsed.<a class="code" href="structripple_1_1ParsedPort.html#a7e18473959ba367d022b923434241324">name</a> = name;</div>
|
||||
<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>  <a class="code" href="namespaceripple.html#a5b67e65f60cd241099149dc88f1e4bfd">parse_Port</a>(parsed, config[name], log);</div>
|
||||
<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>  result.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(<a class="code" href="namespaceripple.html#a1657c1d18a31190f61b59652b4184b3b">to_Port</a>(parsed, log));</div>
|
||||
<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>  }</div>
|
||||
<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>  </div>
|
||||
<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>  <span class="keywordflow">if</span> (config.<a class="code" href="classripple_1_1Config.html#a55cd8ef67ffbf6a137e0dd71bc8151c6">standalone</a>())</div>
|
||||
<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>  {</div>
|
||||
<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>  <span class="keyword">auto</span> it = result.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/begin.html">begin</a>();</div>
|
||||
<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>  </div>
|
||||
<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>  <span class="keywordflow">while</span> (it != result.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/end.html">end</a>())</div>
|
||||
<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>  {</div>
|
||||
<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>  <span class="keyword">auto</span>& p = it->protocol;</div>
|
||||
<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>  </div>
|
||||
<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>  <span class="comment">// Remove the peer protocol, and if that would</span></div>
|
||||
<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>  <span class="comment">// leave the port empty, remove the port as well</span></div>
|
||||
<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>  <span class="keywordflow">if</span> (p.erase(<span class="stringliteral">"peer"</span>) && p.empty())</div>
|
||||
<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>  it = result.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/erase.html">erase</a>(it);</div>
|
||||
<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>  ++it;</div>
|
||||
<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>  }</div>
|
||||
<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>  }</div>
|
||||
<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>  {</div>
|
||||
<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>  <span class="keyword">auto</span> <span class="keyword">const</span> count =</div>
|
||||
<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/algorithm/count.html">std::count_if</a>(result.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/begin.html">cbegin</a>(), result.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/end.html">cend</a>(), [](<a class="code" href="structripple_1_1Port.html">Port</a> <span class="keyword">const</span>& p) {</div>
|
||||
<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>  return p.protocol.count(<span class="stringliteral">"peer"</span>) != 0;</div>
|
||||
<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>  });</div>
|
||||
<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>  </div>
|
||||
<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>  <span class="keywordflow">if</span> (count > 1)</div>
|
||||
<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>  {</div>
|
||||
<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>  log << <span class="stringliteral">"Error: More than one peer protocol configured in [server]"</span>;</div>
|
||||
<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>  Throw<std::exception>();</div>
|
||||
<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>  }</div>
|
||||
<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>  </div>
|
||||
<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>  <span class="keywordflow">if</span> (count == 0)</div>
|
||||
<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>  log << <span class="stringliteral">"Warning: No peer protocol configured"</span>;</div>
|
||||
<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>  }</div>
|
||||
<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>  </div>
|
||||
<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>  <span class="keywordflow">return</span> result;</div>
|
||||
<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span> }</div>
|
||||
<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>  </div>
|
||||
<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span> <span class="comment">// Fill out the client portion of the Setup</span></div>
|
||||
<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span> <span class="keyword">static</span> <span class="keywordtype">void</span></div>
|
||||
<div class="line"><a name="l01171"></a><span class="lineno"><a class="line" href="namespaceripple.html#ad3f4a8a0213ea07fa9802d10ee6a4d79"> 1171</a></span> <a class="code" href="namespaceripple.html#ad3f4a8a0213ea07fa9802d10ee6a4d79">setup_Client</a>(<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html">ServerHandler::Setup</a>& <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>)</div>
|
||||
<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span> {</div>
|
||||
<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>  decltype(<a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#ac610f2dee7d9f1e1b4716ef0ec477125">ports</a>)::<a class="code" href="classripple_1_1Dir_1_1const__iterator.html">const_iterator</a> iter;</div>
|
||||
<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>  <span class="keywordflow">for</span> (iter = <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#ac610f2dee7d9f1e1b4716ef0ec477125">ports</a>.cbegin(); iter != <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#ac610f2dee7d9f1e1b4716ef0ec477125">ports</a>.cend(); ++iter)</div>
|
||||
<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>  <span class="keywordflow">if</span> (iter->protocol.count(<span class="stringliteral">"http"</span>) > 0 ||</div>
|
||||
<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>  iter->protocol.count(<span class="stringliteral">"https"</span>) > 0)</div>
|
||||
<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>  <span class="keywordflow">break</span>;</div>
|
||||
<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>  <span class="keywordflow">if</span> (iter == <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#ac610f2dee7d9f1e1b4716ef0ec477125">ports</a>.cend())</div>
|
||||
<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>  <span class="keywordflow">return</span>;</div>
|
||||
<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>  <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#a44fccc2b575144cf16688e0510446bd4">secure</a> = iter->protocol.count(<span class="stringliteral">"https"</span>) > 0;</div>
|
||||
<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#a1cfba82de3995bc70e297f18eee2dcef">ip</a> = <a class="code" href="namespacebeast_1_1IP.html#ab294c32a52d800b61d2fbe6f6d130faa">beast::IP::is_unspecified</a>(iter->ip)</div>
|
||||
<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>  ?</div>
|
||||
<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>  <span class="comment">// VFALCO HACK! to make localhost work</span></div>
|
||||
<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>  (iter->ip.is_v6() ? <span class="stringliteral">"::1"</span> : <span class="stringliteral">"127.0.0.1"</span>)</div>
|
||||
<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>  : iter->ip.to_string();</div>
|
||||
<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>  <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#a71b103879153f77cac77ef88f3d3fb81">port</a> = iter->port;</div>
|
||||
<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>  <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#a5bb3e4c3f647d26ffc9bdeb011c776f8">user</a> = iter->user;</div>
|
||||
<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>  <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#adae7271497ad30628f2c5d7ffbca9672">password</a> = iter->password;</div>
|
||||
<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>  <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#a407fa705ff2453644d66ff9236124043">admin_user</a> = iter->admin_user;</div>
|
||||
<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>  <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#a34a533292e151fe67b0daa142369841f">admin_password</a> = iter->admin_password;</div>
|
||||
<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span> }</div>
|
||||
<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>  </div>
|
||||
<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span> <span class="comment">// Fill out the overlay portion of the Setup</span></div>
|
||||
<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span> <span class="keyword">static</span> <span class="keywordtype">void</span></div>
|
||||
<div class="line"><a name="l01195"></a><span class="lineno"><a class="line" href="namespaceripple.html#ab2ca61e1324164fc5b731835c119b0b1"> 1195</a></span> <a class="code" href="namespaceripple.html#adc117aa1e40c420ae8c34dea1f2f1bf1">setup_Overlay</a>(<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html">ServerHandler::Setup</a>& <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>)</div>
|
||||
<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span> {</div>
|
||||
<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>  <span class="keyword">auto</span> <span class="keyword">const</span> iter = <a class="codeRef" href="http://en.cppreference.com/w/cpp/algorithm/find.html">std::find_if</a>(</div>
|
||||
<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>  <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#ac610f2dee7d9f1e1b4716ef0ec477125">ports</a>.cbegin(), <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#ac610f2dee7d9f1e1b4716ef0ec477125">ports</a>.cend(), [](<a class="code" href="structripple_1_1Port.html">Port</a> <span class="keyword">const</span>& port) {</div>
|
||||
<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>  return port.protocol.count(<span class="stringliteral">"peer"</span>) != 0;</div>
|
||||
<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>  });</div>
|
||||
<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>  <span class="keywordflow">if</span> (iter == <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#ac610f2dee7d9f1e1b4716ef0ec477125">ports</a>.cend())</div>
|
||||
<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>  {</div>
|
||||
<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>  <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a581fef76b080ebf0e1a7f604cf81df72">overlay</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1overlay__t.html#a96eb29d239d6960eafc2e189b8086a03">port</a> = 0;</div>
|
||||
<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>  <span class="keywordflow">return</span>;</div>
|
||||
<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>  }</div>
|
||||
<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>  <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a581fef76b080ebf0e1a7f604cf81df72">overlay</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1overlay__t.html#a981c3f48f0dd80a0ac78bc22f59c3b2d">ip</a> = iter->ip;</div>
|
||||
<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>  <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a581fef76b080ebf0e1a7f604cf81df72">overlay</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1overlay__t.html#a96eb29d239d6960eafc2e189b8086a03">port</a> = iter->port;</div>
|
||||
<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span> }</div>
|
||||
<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>  </div>
|
||||
<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span> ServerHandler::Setup</div>
|
||||
<div class="line"><a name="l01211"></a><span class="lineno"><a class="line" href="namespaceripple.html#a9717a8236d67d262b4e5273712ac545c"> 1211</a></span> <a class="code" href="namespaceripple.html#a9717a8236d67d262b4e5273712ac545c">setup_ServerHandler</a>(<a class="code" href="classripple_1_1Config.html">Config</a> <span class="keyword">const</span>& config, <a class="codeRef" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::ostream</a>&& log)</div>
|
||||
<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span> {</div>
|
||||
<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>  <a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html">ServerHandler::Setup</a> <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>;</div>
|
||||
<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>  <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#ac610f2dee7d9f1e1b4716ef0ec477125">ports</a> = <a class="code" href="namespaceripple.html#a1f1695344e39dbde3cc619f8256000f0">parse_Ports</a>(config, log);</div>
|
||||
<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>  </div>
|
||||
<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>  <a class="code" href="namespaceripple.html#ad3f4a8a0213ea07fa9802d10ee6a4d79">setup_Client</a>(<a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>);</div>
|
||||
<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>  <a class="code" href="namespaceripple.html#adc117aa1e40c420ae8c34dea1f2f1bf1">setup_Overlay</a>(<a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>);</div>
|
||||
<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>  </div>
|
||||
<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>  <span class="keywordflow">return</span> <a class="code" href="classripple_1_1ServerHandlerImp.html#a125b89a61f26cc65f54ac062881d96f0">setup</a>;</div>
|
||||
<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span> }</div>
|
||||
<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>  </div>
|
||||
<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/unique_ptr.html">std::unique_ptr<ServerHandler></a></div>
|
||||
<div class="line"><a name="l01223"></a><span class="lineno"><a class="line" href="namespaceripple.html#a44d8c60c9f62e56bb5ad95874dfa9eba"> 1223</a></span> <a class="code" href="namespaceripple.html#a44d8c60c9f62e56bb5ad95874dfa9eba">make_ServerHandler</a>(</div>
|
||||
<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>  <a class="code" href="classripple_1_1Application.html">Application</a>& app,</div>
|
||||
<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>  boost::asio::io_service& io_service,</div>
|
||||
<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>  <a class="code" href="classripple_1_1JobQueue.html">JobQueue</a>& jobQueue,</div>
|
||||
<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>  <a class="code" href="classripple_1_1NetworkOPs.html">NetworkOPs</a>& networkOPs,</div>
|
||||
<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>  <a class="code" href="classripple_1_1Resource_1_1Manager.html">Resource::Manager</a>& resourceManager,</div>
|
||||
<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>  <a class="code" href="classripple_1_1CollectorManager.html">CollectorManager</a>& cm)</div>
|
||||
<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span> {</div>
|
||||
<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>  <span class="keywordflow">return</span> std::make_unique<ServerHandlerImp>(</div>
|
||||
<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>  app, io_service, jobQueue, networkOPs, resourceManager, cm);</div>
|
||||
<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span> }</div>
|
||||
<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>  </div>
|
||||
<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span> } <span class="comment">// namespace ripple</span></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<div class="ttc" id="aclassripple_1_1Resource_1_1Manager_html_a031c6f28346713cb93ea3ff9018f6a9a"><div class="ttname"><a href="classripple_1_1Resource_1_1Manager.html#a031c6f28346713cb93ea3ff9018f6a9a">ripple::Resource::Manager::newInboundEndpoint</a></div><div class="ttdeci">virtual Consumer newInboundEndpoint(beast::IP::Endpoint const &address)=0</div><div class="ttdoc">Create a new endpoint keyed by inbound IP address or the forwarded IP if proxied.</div></div>
|
||||
<div class="ttc" id="aclassripple_1_1NetworkOPs_html"><div class="ttname"><a href="classripple_1_1NetworkOPs.html">ripple::NetworkOPs</a></div><div class="ttdoc">Provides server functionality for clients.</div><div class="ttdef"><b>Definition:</b> <a href="NetworkOPs_8h_source.html#l00086">NetworkOPs.h:86</a></div></div>
|
||||
@@ -1363,9 +1377,9 @@ $(function() {
|
||||
<div class="ttc" id="astructripple_1_1Port_html_a0c5ce3306e741211ad5a08073f07ff29"><div class="ttname"><a href="structripple_1_1Port.html#a0c5ce3306e741211ad5a08073f07ff29">ripple::Port::port</a></div><div class="ttdeci">std::uint16_t port</div><div class="ttdef"><b>Definition:</b> <a href="Port_8h_source.html#l00054">Port.h:54</a></div></div>
|
||||
<div class="ttc" id="astructripple_1_1ParsedPort_html"><div class="ttname"><a href="structripple_1_1ParsedPort.html">ripple::ParsedPort</a></div><div class="ttdef"><b>Definition:</b> <a href="Port_8h_source.html#l00096">Port.h:96</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1ServerHandlerImp_html_a6292a075e2699dcbfe6a38265b93e0d3"><div class="ttname"><a href="classripple_1_1ServerHandlerImp.html#a6292a075e2699dcbfe6a38265b93e0d3">ripple::ServerHandlerImp::onRequest</a></div><div class="ttdeci">void onRequest(Session &session)</div><div class="ttdef"><b>Definition:</b> <a href="ServerHandlerImp_8cpp_source.html#l00274">ServerHandlerImp.cpp:274</a></div></div>
|
||||
<div class="ttc" id="astructripple_1_1ServerHandlerImp_1_1Setup_html_acf2e4a0b32981ef7eb945aad361bafd2"><div class="ttname"><a href="structripple_1_1ServerHandlerImp_1_1Setup.html#acf2e4a0b32981ef7eb945aad361bafd2">ripple::ServerHandlerImp::Setup::makeContexts</a></div><div class="ttdeci">void makeContexts()</div><div class="ttdef"><b>Definition:</b> <a href="ServerHandlerImp_8cpp_source.html#l01019">ServerHandlerImp.cpp:1019</a></div></div>
|
||||
<div class="ttc" id="astructripple_1_1ServerHandlerImp_1_1Setup_html_acf2e4a0b32981ef7eb945aad361bafd2"><div class="ttname"><a href="structripple_1_1ServerHandlerImp_1_1Setup.html#acf2e4a0b32981ef7eb945aad361bafd2">ripple::ServerHandlerImp::Setup::makeContexts</a></div><div class="ttdeci">void makeContexts()</div><div class="ttdef"><b>Definition:</b> <a href="ServerHandlerImp_8cpp_source.html#l01033">ServerHandlerImp.cpp:1033</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_ae0f54f8ce649d639bf3e2b295347e17aa08b32fb23bf7f80fdc6ae53812f5c6ac"><div class="ttname"><a href="namespaceripple.html#ae0f54f8ce649d639bf3e2b295347e17aa08b32fb23bf7f80fdc6ae53812f5c6ac">ripple::jtCLIENT_RPC</a></div><div class="ttdeci">@ jtCLIENT_RPC</div><div class="ttdef"><b>Definition:</b> <a href="Job_8h_source.html#l00051">Job.h:51</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1ServerHandlerImp_html_ad75e744ed8a9fda6d46bcc8d87b33a38"><div class="ttname"><a href="classripple_1_1ServerHandlerImp.html#ad75e744ed8a9fda6d46bcc8d87b33a38">ripple::ServerHandlerImp::statusResponse</a></div><div class="ttdeci">Handoff statusResponse(http_request_type const &request) const</div><div class="ttdef"><b>Definition:</b> <a href="ServerHandlerImp_8cpp_source.html#l00987">ServerHandlerImp.cpp:987</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1ServerHandlerImp_html_ad75e744ed8a9fda6d46bcc8d87b33a38"><div class="ttname"><a href="classripple_1_1ServerHandlerImp.html#ad75e744ed8a9fda6d46bcc8d87b33a38">ripple::ServerHandlerImp::statusResponse</a></div><div class="ttdeci">Handoff statusResponse(http_request_type const &request) const</div><div class="ttdef"><b>Definition:</b> <a href="ServerHandlerImp_8cpp_source.html#l01001">ServerHandlerImp.cpp:1001</a></div></div>
|
||||
<div class="ttc" id="astructripple_1_1Port_html_a41c843b31298cfa936f0d99e15bd843f"><div class="ttname"><a href="structripple_1_1Port.html#a41c843b31298cfa936f0d99e15bd843f">ripple::Port::protocol</a></div><div class="ttdeci">std::set< std::string, boost::beast::iless > protocol</div><div class="ttdef"><b>Definition:</b> <a href="Port_8h_source.html#l00055">Port.h:55</a></div></div>
|
||||
<div class="ttc" id="aalgorithm_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/algorithm.html">algorithm</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_ae7d1335ce20e70be939ceea8a8f6945f"><div class="ttname"><a href="namespaceripple.html#ae7d1335ce20e70be939ceea8a8f6945f">ripple::isStatusRequest</a></div><div class="ttdeci">static bool isStatusRequest(http_request_type const &request)</div><div class="ttdef"><b>Definition:</b> <a href="ServerHandlerImp_8cpp_source.html#l00056">ServerHandlerImp.cpp:56</a></div></div>
|
||||
@@ -1380,7 +1394,7 @@ $(function() {
|
||||
<div class="ttc" id="apush_back_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">std::vector::push_back</a></div><div class="ttdeci">T push_back(T... args)</div></div>
|
||||
<div class="ttc" id="astructbeast_1_1IPAddressConversion_html_a5e02e604b7d4a590f7ceb14a26a6947b"><div class="ttname"><a href="structbeast_1_1IPAddressConversion.html#a5e02e604b7d4a590f7ceb14a26a6947b">beast::IPAddressConversion::from_asio</a></div><div class="ttdeci">static IP::Endpoint from_asio(boost::asio::ip::address const &address)</div><div class="ttdef"><b>Definition:</b> <a href="IPAddressConversion_8h_source.html#l00063">IPAddressConversion.h:63</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1ServerHandlerImp_html_adc58b4538fc24ffa1a0563256e958a78"><div class="ttname"><a href="classripple_1_1ServerHandlerImp.html#adc58b4538fc24ffa1a0563256e958a78">ripple::ServerHandlerImp::rpc_time_</a></div><div class="ttdeci">beast::insight::Event rpc_time_</div><div class="ttdef"><b>Definition:</b> <a href="ServerHandlerImp_8h_source.html#l00101">ServerHandlerImp.h:101</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a9717a8236d67d262b4e5273712ac545c"><div class="ttname"><a href="namespaceripple.html#a9717a8236d67d262b4e5273712ac545c">ripple::setup_ServerHandler</a></div><div class="ttdeci">ServerHandler::Setup setup_ServerHandler(Config const &config, std::ostream &&log)</div><div class="ttdef"><b>Definition:</b> <a href="ServerHandlerImp_8cpp_source.html#l01197">ServerHandlerImp.cpp:1197</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a9717a8236d67d262b4e5273712ac545c"><div class="ttname"><a href="namespaceripple.html#a9717a8236d67d262b4e5273712ac545c">ripple::setup_ServerHandler</a></div><div class="ttdeci">ServerHandler::Setup setup_ServerHandler(Config const &config, std::ostream &&log)</div><div class="ttdef"><b>Definition:</b> <a href="ServerHandlerImp_8cpp_source.html#l01211">ServerHandlerImp.cpp:1211</a></div></div>
|
||||
<div class="ttc" id="astdexcept_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/stdexcept.html">stdexcept</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_ae0f54f8ce649d639bf3e2b295347e17aaf73ecc1ab3356b01068bf5532d80d483"><div class="ttname"><a href="namespaceripple.html#ae0f54f8ce649d639bf3e2b295347e17aaf73ecc1ab3356b01068bf5532d80d483">ripple::jtCLIENT_WEBSOCKET</a></div><div class="ttdeci">@ jtCLIENT_WEBSOCKET</div><div class="ttdef"><b>Definition:</b> <a href="Job_8h_source.html#l00052">Job.h:52</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1CollectorManager_html_a5f94c050333714bcb4eaed94a5f04b71"><div class="ttname"><a href="classripple_1_1CollectorManager.html#a5f94c050333714bcb4eaed94a5f04b71">ripple::CollectorManager::group</a></div><div class="ttdeci">virtual beast::insight::Group::ptr const & group(std::string const &name)=0</div></div>
|
||||
@@ -1393,7 +1407,7 @@ $(function() {
|
||||
<div class="ttc" id="anamespaceripple_html_a32d6d3ce1a48272b677d2c88b1d30932a55a275d2d3a5e83d075c30650592949d"><div class="ttname"><a href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a55a275d2d3a5e83d075c30650592949d">ripple::rpcSLOW_DOWN</a></div><div class="ttdeci">@ rpcSLOW_DOWN</div><div class="ttdef"><b>Definition:</b> <a href="ErrorCodes_8h_source.html#l00057">ErrorCodes.h:57</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1ServerHandlerImp_html_ae81dd23e516c70546341ea65b54859d2"><div class="ttname"><a href="classripple_1_1ServerHandlerImp.html#ae81dd23e516c70546341ea65b54859d2">ripple::ServerHandlerImp::mutex_</a></div><div class="ttdeci">std::mutex mutex_</div><div class="ttdef"><b>Definition:</b> <a href="ServerHandlerImp_8h_source.html#l00102">ServerHandlerImp.h:102</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_ac597446213f304f13375429394c69909"><div class="ttname"><a href="namespaceripple.html#ac597446213f304f13375429394c69909">ripple::statusRequestResponse</a></div><div class="ttdeci">static Handoff statusRequestResponse(http_request_type const &request, boost::beast::http::status status)</div><div class="ttdef"><b>Definition:</b> <a href="ServerHandlerImp_8cpp_source.html#l00064">ServerHandlerImp.cpp:64</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a44d8c60c9f62e56bb5ad95874dfa9eba"><div class="ttname"><a href="namespaceripple.html#a44d8c60c9f62e56bb5ad95874dfa9eba">ripple::make_ServerHandler</a></div><div class="ttdeci">std::unique_ptr< ServerHandler > make_ServerHandler(Application &app, boost::asio::io_service &io_service, JobQueue &jobQueue, NetworkOPs &networkOPs, Resource::Manager &resourceManager, CollectorManager &cm)</div><div class="ttdef"><b>Definition:</b> <a href="ServerHandlerImp_8cpp_source.html#l01209">ServerHandlerImp.cpp:1209</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a44d8c60c9f62e56bb5ad95874dfa9eba"><div class="ttname"><a href="namespaceripple.html#a44d8c60c9f62e56bb5ad95874dfa9eba">ripple::make_ServerHandler</a></div><div class="ttdeci">std::unique_ptr< ServerHandler > make_ServerHandler(Application &app, boost::asio::io_service &io_service, JobQueue &jobQueue, NetworkOPs &networkOPs, Resource::Manager &resourceManager, CollectorManager &cm)</div><div class="ttdef"><b>Definition:</b> <a href="ServerHandlerImp_8cpp_source.html#l01223">ServerHandlerImp.cpp:1223</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1Application_html_a0005228a2b40d12b6985ac48bd768940"><div class="ttname"><a href="classripple_1_1Application.html#a0005228a2b40d12b6985ac48bd768940">ripple::Application::serverOkay</a></div><div class="ttdeci">virtual bool serverOkay(std::string &reason)=0</div></div>
|
||||
<div class="ttc" id="astructripple_1_1Port_html_a388b34fc701fabbdb91fa5e935e191b7"><div class="ttname"><a href="structripple_1_1Port.html#a388b34fc701fabbdb91fa5e935e191b7">ripple::Port::admin_nets_v6</a></div><div class="ttdeci">std::vector< boost::asio::ip::network_v6 > admin_nets_v6</div><div class="ttdef"><b>Definition:</b> <a href="Port_8h_source.html#l00057">Port.h:57</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1ServerHandlerImp_html_abdc517639e239157dbb5565a5a6ffbb5"><div class="ttname"><a href="classripple_1_1ServerHandlerImp.html#abdc517639e239157dbb5565a5a6ffbb5">ripple::ServerHandlerImp::processRequest</a></div><div class="ttdeci">void processRequest(Port const &port, std::string const &request, beast::IP::Endpoint const &remoteIPAddress, Output &&, std::shared_ptr< JobQueue::Coro > coro, boost::string_view forwardedFor, boost::string_view user)</div><div class="ttdef"><b>Definition:</b> <a href="ServerHandlerImp_8cpp_source.html#l00588">ServerHandlerImp.cpp:588</a></div></div>
|
||||
@@ -1446,7 +1460,7 @@ $(function() {
|
||||
<div class="ttc" id="astructripple_1_1Handoff_html_aaa0aa2a937dec4a692870365b7a4ad3d"><div class="ttname"><a href="structripple_1_1Handoff.html#aaa0aa2a937dec4a692870365b7a4ad3d">ripple::Handoff::moved</a></div><div class="ttdeci">bool moved</div><div class="ttdef"><b>Definition:</b> <a href="Handoff_8h_source.html#l00041">Handoff.h:41</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1ServerHandlerImp_html_a0c17eba93b95e41b4e897383fbbf9a6d"><div class="ttname"><a href="classripple_1_1ServerHandlerImp.html#a0c17eba93b95e41b4e897383fbbf9a6d">ripple::ServerHandlerImp::m_resourceManager</a></div><div class="ttdeci">Resource::Manager & m_resourceManager</div><div class="ttdef"><b>Definition:</b> <a href="ServerHandlerImp_8h_source.html#l00093">ServerHandlerImp.h:93</a></div></div>
|
||||
<div class="ttc" id="aappend_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/string/basic_string/append.html">std::string::append</a></div><div class="ttdeci">T append(T... args)</div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a1657c1d18a31190f61b59652b4184b3b"><div class="ttname"><a href="namespaceripple.html#a1657c1d18a31190f61b59652b4184b3b">ripple::to_Port</a></div><div class="ttdeci">static Port to_Port(ParsedPort const &parsed, std::ostream &log)</div><div class="ttdef"><b>Definition:</b> <a href="ServerHandlerImp_8cpp_source.html#l01040">ServerHandlerImp.cpp:1040</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a1657c1d18a31190f61b59652b4184b3b"><div class="ttname"><a href="namespaceripple.html#a1657c1d18a31190f61b59652b4184b3b">ripple::to_Port</a></div><div class="ttdeci">static Port to_Port(ParsedPort const &parsed, std::ostream &log)</div><div class="ttdef"><b>Definition:</b> <a href="ServerHandlerImp_8cpp_source.html#l01054">ServerHandlerImp.cpp:1054</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1StreambufWSMsg_html"><div class="ttname"><a href="classripple_1_1StreambufWSMsg.html">ripple::StreambufWSMsg</a></div><div class="ttdef"><b>Definition:</b> <a href="WSSession_8h_source.html#l00072">WSSession.h:72</a></div></div>
|
||||
<div class="ttc" id="astructripple_1_1Port_html_afa8100376068ed4e75e6074a76f0d85d"><div class="ttname"><a href="structripple_1_1Port.html#afa8100376068ed4e75e6074a76f0d85d">ripple::Port::pmd_options</a></div><div class="ttdeci">boost::beast::websocket::permessage_deflate pmd_options</div><div class="ttdef"><b>Definition:</b> <a href="Port_8h_source.html#l00068">Port.h:68</a></div></div>
|
||||
<div class="ttc" id="astructripple_1_1ParsedPort_html_a85c9d257b0ac9158ced4c30fba44f211"><div class="ttname"><a href="structripple_1_1ParsedPort.html#a85c9d257b0ac9158ced4c30fba44f211">ripple::ParsedPort::ssl_chain</a></div><div class="ttdeci">std::string ssl_chain</div><div class="ttdef"><b>Definition:</b> <a href="Port_8h_source.html#l00108">Port.h:108</a></div></div>
|
||||
@@ -1482,7 +1496,7 @@ $(function() {
|
||||
<div class="ttc" id="aclassripple_1_1Resource_1_1Consumer_html"><div class="ttname"><a href="classripple_1_1Resource_1_1Consumer.html">ripple::Resource::Consumer</a></div><div class="ttdoc">An endpoint that consumes resources.</div><div class="ttdef"><b>Definition:</b> <a href="Consumer_8h_source.html#l00034">Consumer.h:34</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1Resource_1_1Charge_html"><div class="ttname"><a href="classripple_1_1Resource_1_1Charge.html">ripple::Resource::Charge</a></div><div class="ttdoc">A consumption charge.</div><div class="ttdef"><b>Definition:</b> <a href="Charge_8h_source.html#l00030">Charge.h:30</a></div></div>
|
||||
<div class="ttc" id="astructripple_1_1ParsedPort_html_a509e4603be0b45a4c28ab6c2e6632142"><div class="ttname"><a href="structripple_1_1ParsedPort.html#a509e4603be0b45a4c28ab6c2e6632142">ripple::ParsedPort::ws_queue_limit</a></div><div class="ttdeci">std::uint16_t ws_queue_limit</div><div class="ttdef"><b>Definition:</b> <a href="Port_8h_source.html#l00112">Port.h:112</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_ad3f4a8a0213ea07fa9802d10ee6a4d79"><div class="ttname"><a href="namespaceripple.html#ad3f4a8a0213ea07fa9802d10ee6a4d79">ripple::setup_Client</a></div><div class="ttdeci">static void setup_Client(ServerHandler::Setup &setup)</div><div class="ttdef"><b>Definition:</b> <a href="ServerHandlerImp_8cpp_source.html#l01157">ServerHandlerImp.cpp:1157</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_ad3f4a8a0213ea07fa9802d10ee6a4d79"><div class="ttname"><a href="namespaceripple.html#ad3f4a8a0213ea07fa9802d10ee6a4d79">ripple::setup_Client</a></div><div class="ttdeci">static void setup_Client(ServerHandler::Setup &setup)</div><div class="ttdef"><b>Definition:</b> <a href="ServerHandlerImp_8cpp_source.html#l01171">ServerHandlerImp.cpp:1171</a></div></div>
|
||||
<div class="ttc" id="astructripple_1_1Port_html_a27d3bc7390a8f0d728bb00446353e95c"><div class="ttname"><a href="structripple_1_1Port.html#a27d3bc7390a8f0d728bb00446353e95c">ripple::Port::password</a></div><div class="ttdeci">std::string password</div><div class="ttdef"><b>Definition:</b> <a href="Port_8h_source.html#l00061">Port.h:61</a></div></div>
|
||||
<div class="ttc" id="aclassJson_1_1Reader_html_a269793929575f925b629460c9c744da1"><div class="ttname"><a href="classJson_1_1Reader.html#a269793929575f925b629460c9c744da1">Json::Reader::getFormatedErrorMessages</a></div><div class="ttdeci">std::string getFormatedErrorMessages() const</div><div class="ttdoc">Returns a user friendly string that list errors in the parsed document.</div><div class="ttdef"><b>Definition:</b> <a href="json__reader_8cpp_source.html#l00931">json_reader.cpp:931</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1Application_html_a0511c5e849c6735036d4667a72ff01ee"><div class="ttname"><a href="classripple_1_1Application.html#a0511c5e849c6735036d4667a72ff01ee">ripple::Application::overlay</a></div><div class="ttdeci">virtual Overlay & overlay()=0</div></div>
|
||||
@@ -1520,7 +1534,7 @@ $(function() {
|
||||
<div class="ttc" id="aclassripple_1_1BasicConfig_html_a09b31b8ed3c769b4c23b040c3d4798ed"><div class="ttname"><a href="classripple_1_1BasicConfig.html#a09b31b8ed3c769b4c23b040c3d4798ed">ripple::BasicConfig::exists</a></div><div class="ttdeci">bool exists(std::string const &name) const</div><div class="ttdoc">Returns true if a section with the given name exists.</div><div class="ttdef"><b>Definition:</b> <a href="BasicConfig_8cpp_source.html#l00121">BasicConfig.cpp:121</a></div></div>
|
||||
<div class="ttc" id="aclassJson_1_1Value_html"><div class="ttname"><a href="classJson_1_1Value.html">Json::Value</a></div><div class="ttdoc">Represents a JSON value.</div><div class="ttdef"><b>Definition:</b> <a href="json__value_8h_source.html#l00145">json_value.h:145</a></div></div>
|
||||
<div class="ttc" id="aclassbeast_1_1insight_1_1Event_html_af25d64d42a95d26832e7354f07059245"><div class="ttname"><a href="classbeast_1_1insight_1_1Event.html#af25d64d42a95d26832e7354f07059245">beast::insight::Event::notify</a></div><div class="ttdeci">void notify(std::chrono::duration< Rep, Period > const &value) const</div><div class="ttdoc">Push an event notification.</div><div class="ttdef"><b>Definition:</b> <a href="Event_8h_source.html#l00064">Event.h:64</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a1f1695344e39dbde3cc619f8256000f0"><div class="ttname"><a href="namespaceripple.html#a1f1695344e39dbde3cc619f8256000f0">ripple::parse_Ports</a></div><div class="ttdeci">static std::vector< Port > parse_Ports(Config const &config, std::ostream &log)</div><div class="ttdef"><b>Definition:</b> <a href="ServerHandlerImp_8cpp_source.html#l01091">ServerHandlerImp.cpp:1091</a></div></div>
|
||||
<div class="ttc" id="anamespaceripple_html_a1f1695344e39dbde3cc619f8256000f0"><div class="ttname"><a href="namespaceripple.html#a1f1695344e39dbde3cc619f8256000f0">ripple::parse_Ports</a></div><div class="ttdeci">static std::vector< Port > parse_Ports(Config const &config, std::ostream &log)</div><div class="ttdef"><b>Definition:</b> <a href="ServerHandlerImp_8cpp_source.html#l01105">ServerHandlerImp.cpp:1105</a></div></div>
|
||||
<div class="ttc" id="aclassripple_1_1BasicConfig_html_a60aca585d76b1121dd4f72b358729456"><div class="ttname"><a href="classripple_1_1BasicConfig.html#a60aca585d76b1121dd4f72b358729456">ripple::BasicConfig::section</a></div><div class="ttdeci">Section & section(std::string const &name)</div><div class="ttdoc">Returns the section with the given name.</div><div class="ttdef"><b>Definition:</b> <a href="BasicConfig_8cpp_source.html#l00127">BasicConfig.cpp:127</a></div></div>
|
||||
<div class="ttc" id="astructripple_1_1ParsedPort_html_a3fe32f5a0b54244c90f6b7684f57775c"><div class="ttname"><a href="structripple_1_1ParsedPort.html#a3fe32f5a0b54244c90f6b7684f57775c">ripple::ParsedPort::admin_nets_v4</a></div><div class="ttdeci">std::vector< boost::asio::ip::network_v4 > admin_nets_v4</div><div class="ttdef"><b>Definition:</b> <a href="Port_8h_source.html#l00116">Port.h:116</a></div></div>
|
||||
<div class="ttc" id="aclassJson_1_1Value_html_ab0d86bf425efefd03513e8dbfaca317b"><div class="ttname"><a href="classJson_1_1Value.html#ab0d86bf425efefd03513e8dbfaca317b">Json::Value::asString</a></div><div class="ttdeci">std::string asString() const</div><div class="ttdoc">Returns the unquoted string value.</div><div class="ttdef"><b>Definition:</b> <a href="json__value_8cpp_source.html#l00469">json_value.cpp:469</a></div></div>
|
||||
|
||||
Reference in New Issue
Block a user