mirror of
https://github.com/mCaptcha/mCaptcha.git
synced 2026-02-12 18:45:41 +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>))
|
||||
|
||||
Reference in New Issue
Block a user