mirror of
https://github.com/mCaptcha/mCaptcha.git
synced 2026-02-11 18:15:39 +00:00
Deploying to gh-pages from @ b3d00c89a6 🚀
This commit is contained in:
@@ -146,6 +146,17 @@
|
||||
<span id="141">141</span>
|
||||
<span id="142">142</span>
|
||||
<span id="143">143</span>
|
||||
<span id="144">144</span>
|
||||
<span id="145">145</span>
|
||||
<span id="146">146</span>
|
||||
<span id="147">147</span>
|
||||
<span id="148">148</span>
|
||||
<span id="149">149</span>
|
||||
<span id="150">150</span>
|
||||
<span id="151">151</span>
|
||||
<span id="152">152</span>
|
||||
<span id="153">153</span>
|
||||
<span id="154">154</span>
|
||||
</pre><pre class="rust"><code><span class="comment">/*
|
||||
* Copyright (C) 2022 Aravinth Manivannan <realaravinth@batsense.net>
|
||||
*
|
||||
@@ -164,6 +175,7 @@
|
||||
*/</span>
|
||||
<span class="doccomment">//! PoW Verification module</span>
|
||||
|
||||
<span class="kw">use</span> <span class="ident">actix_web::HttpRequest</span>;
|
||||
<span class="kw">use</span> <span class="ident">actix_web</span>::{<span class="ident">web</span>, <span class="ident">HttpResponse</span>, <span class="ident">Responder</span>};
|
||||
<span class="kw">use</span> <span class="ident">libmcaptcha::pow::Work</span>;
|
||||
<span class="kw">use</span> <span class="ident">serde</span>::{<span class="ident">Deserialize</span>, <span class="ident">Serialize</span>};
|
||||
@@ -185,11 +197,21 @@
|
||||
<span class="doccomment">/// if verification is successful</span>
|
||||
<span class="attribute">#[<span class="ident">my_codegen::post</span>(<span class="ident">path</span> <span class="op">=</span> <span class="string">"V1_API_ROUTES.pow.verify_pow()"</span>)]</span>
|
||||
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">verify_pow</span>(
|
||||
<span class="ident">req</span>: <span class="ident">HttpRequest</span>,
|
||||
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op"><</span><span class="ident">Work</span><span class="op">></span>,
|
||||
<span class="ident">data</span>: <span class="ident">AppData</span>,
|
||||
) -> <span class="ident">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></span> {
|
||||
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">test</span>))]</span>
|
||||
<span class="kw">let</span> <span class="ident">ip</span> <span class="op">=</span> <span class="ident">req</span>.<span class="ident">connection_info</span>().<span class="ident">peer_addr</span>().<span class="ident">unwrap</span>().<span class="ident">to_string</span>();
|
||||
<span class="comment">// From actix-web docs:</span>
|
||||
<span class="comment">// Will only return None when called in unit tests unless TestRequest::peer_addr is used.</span>
|
||||
<span class="comment">//</span>
|
||||
<span class="comment">// ref: https://docs.rs/actix-web/latest/actix_web/struct.HttpRequest.html#method.peer_addr</span>
|
||||
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
|
||||
<span class="kw">let</span> <span class="ident">ip</span> <span class="op">=</span> <span class="string">"127.0.1.1"</span>.<span class="ident">into</span>();
|
||||
|
||||
<span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">payload</span>.<span class="ident">key</span>.<span class="ident">clone</span>();
|
||||
<span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">data</span>.<span class="ident">captcha</span>.<span class="ident">verify_pow</span>(<span class="ident">payload</span>.<span class="ident">into_inner</span>()).<span class="kw">await</span><span class="question-mark">?</span>;
|
||||
<span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">data</span>.<span class="ident">captcha</span>.<span class="ident">verify_pow</span>(<span class="ident">payload</span>.<span class="ident">into_inner</span>(), <span class="ident">ip</span>).<span class="kw">await</span><span class="question-mark">?</span>;
|
||||
<span class="ident">data</span>.<span class="ident">stats</span>.<span class="ident">record_solve</span>(<span class="kw-2">&</span><span class="ident">data</span>, <span class="kw-2">&</span><span class="ident">key</span>).<span class="kw">await</span><span class="question-mark">?</span>;
|
||||
<span class="kw">let</span> <span class="ident">payload</span> <span class="op">=</span> <span class="ident">ValidationToken</span> { <span class="ident">token</span>: <span class="ident">res</span> };
|
||||
<span class="prelude-val">Ok</span>(<span class="ident">HttpResponse::Ok</span>().<span class="ident">json</span>(<span class="ident">payload</span>))
|
||||
|
||||
@@ -241,6 +241,22 @@
|
||||
<span id="236">236</span>
|
||||
<span id="237">237</span>
|
||||
<span id="238">238</span>
|
||||
<span id="239">239</span>
|
||||
<span id="240">240</span>
|
||||
<span id="241">241</span>
|
||||
<span id="242">242</span>
|
||||
<span id="243">243</span>
|
||||
<span id="244">244</span>
|
||||
<span id="245">245</span>
|
||||
<span id="246">246</span>
|
||||
<span id="247">247</span>
|
||||
<span id="248">248</span>
|
||||
<span id="249">249</span>
|
||||
<span id="250">250</span>
|
||||
<span id="251">251</span>
|
||||
<span id="252">252</span>
|
||||
<span id="253">253</span>
|
||||
<span id="254">254</span>
|
||||
</pre><pre class="rust"><code><span class="comment">/*
|
||||
* Copyright (C) 2022 Aravinth Manivannan <realaravinth@batsense.net>
|
||||
*
|
||||
@@ -326,7 +342,12 @@
|
||||
<span class="macro">enum_system_wrapper!</span>(<span class="ident">get_pow</span>, <span class="ident">String</span>, <span class="ident">CaptchaResult</span><span class="op"><</span><span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">PoWConfig</span><span class="op">></span><span class="op">></span>);
|
||||
|
||||
<span class="comment">// utility function to verify [Work]</span>
|
||||
<span class="macro">enum_system_wrapper!</span>(<span class="ident">verify_pow</span>, <span class="ident">Work</span>, <span class="ident">CaptchaResult</span><span class="op"><</span><span class="ident">String</span><span class="op">></span>);
|
||||
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">verify_pow</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">msg</span>: <span class="ident">Work</span>, <span class="ident">ip</span>: <span class="ident">String</span>) -> <span class="ident">CaptchaResult</span><span class="op"><</span><span class="ident">String</span><span class="op">></span> {
|
||||
<span class="kw">match</span> <span class="self">self</span> {
|
||||
<span class="ident"><span class="self">Self</span>::Embedded</span>(<span class="ident">val</span>) => <span class="ident">val</span>.<span class="ident">verify_pow</span>(<span class="ident">msg</span>, <span class="ident">ip</span>).<span class="kw">await</span>,
|
||||
<span class="ident"><span class="self">Self</span>::Redis</span>(<span class="ident">val</span>) => <span class="ident">val</span>.<span class="ident">verify_pow</span>(<span class="ident">msg</span>, <span class="ident">ip</span>).<span class="kw">await</span>,
|
||||
}
|
||||
}
|
||||
|
||||
<span class="comment">// utility function to validate verification tokens</span>
|
||||
<span class="macro">enum_system_wrapper!</span>(
|
||||
@@ -354,7 +375,18 @@
|
||||
.<span class="ident">build</span>()
|
||||
.<span class="ident">unwrap</span>();
|
||||
|
||||
<span class="ident">SystemBuilder::default</span>().<span class="ident">pow</span>(<span class="ident">pow</span>).<span class="ident">cache</span>(<span class="ident">c</span>).<span class="ident">master</span>(<span class="ident">m</span>).<span class="ident">build</span>()
|
||||
<span class="kw">let</span> <span class="ident">runners</span> <span class="op">=</span> <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">runners</span>) <span class="op">=</span> <span class="ident">s</span>.<span class="ident">captcha</span>.<span class="ident">runners</span> {
|
||||
<span class="ident">runners</span>
|
||||
} <span class="kw">else</span> {
|
||||
<span class="ident">num_cpus::get_physical</span>()
|
||||
};
|
||||
<span class="ident">SystemBuilder::default</span>()
|
||||
.<span class="ident">pow</span>(<span class="ident">pow</span>)
|
||||
.<span class="ident">cache</span>(<span class="ident">c</span>)
|
||||
.<span class="ident">master</span>(<span class="ident">m</span>)
|
||||
.<span class="ident">runners</span>(<span class="ident">runners</span>)
|
||||
.<span class="ident">queue_length</span>(<span class="ident">s</span>.<span class="ident">captcha</span>.<span class="ident">queue_length</span>)
|
||||
.<span class="ident">build</span>()
|
||||
}
|
||||
|
||||
<span class="comment">// read settings, if Redis is configured then produce a Redis mCaptcha cache</span>
|
||||
|
||||
@@ -294,7 +294,7 @@
|
||||
<span class="kw">use</span> <span class="kw">super</span>::<span class="kw-2">*</span>;
|
||||
<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::tests</span>::<span class="kw-2">*</span>;
|
||||
|
||||
<span class="kw">const</span> <span class="ident">DURATION</span>: <span class="ident">u64</span> <span class="op">=</span> <span class="number">5</span>;
|
||||
<span class="kw">const</span> <span class="ident">DURATION</span>: <span class="ident">u64</span> <span class="op">=</span> <span class="number">25</span>;
|
||||
|
||||
<span class="attribute">#[<span class="ident">actix_rt::test</span>]</span>
|
||||
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">demo_account_works_pg</span>() {
|
||||
|
||||
@@ -254,6 +254,8 @@
|
||||
<span id="249">249</span>
|
||||
<span id="250">250</span>
|
||||
<span id="251">251</span>
|
||||
<span id="252">252</span>
|
||||
<span id="253">253</span>
|
||||
</pre><pre class="rust"><code><span class="comment">/*
|
||||
* Copyright (C) 2022 Aravinth Manivannan <realaravinth@batsense.net>
|
||||
*
|
||||
@@ -293,6 +295,8 @@
|
||||
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">Captcha</span> {
|
||||
<span class="kw">pub</span> <span class="ident">salt</span>: <span class="ident">String</span>,
|
||||
<span class="kw">pub</span> <span class="ident">gc</span>: <span class="ident">u64</span>,
|
||||
<span class="kw">pub</span> <span class="ident">runners</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">usize</span><span class="op">></span>,
|
||||
<span class="kw">pub</span> <span class="ident">queue_length</span>: <span class="ident">usize</span>,
|
||||
<span class="kw">pub</span> <span class="ident">enable_stats</span>: <span class="ident">bool</span>,
|
||||
<span class="kw">pub</span> <span class="ident">default_difficulty_strategy</span>: <span class="ident">DefaultDifficultyStrategy</span>,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user