mirror of
https://github.com/mCaptcha/mCaptcha.git
synced 2025-11-28 08:10:57 +00:00
Deploying to gh-pages from @ 5daeffd6fbd421b0bffa4111f62ae3ac8f663bff 🚀
This commit is contained in:
parent
9de338ce6d
commit
d12f02988d
@ -4,7 +4,7 @@
|
|||||||
</nav>
|
</nav>
|
||||||
<nav class="sidebar"><a class="sidebar-logo" href="../../../../../mcaptcha/index.html"><div class="logo-container"><img class="rust-logo" src="../../../../../rust-logo.svg" alt="logo"></div>
|
<nav class="sidebar"><a class="sidebar-logo" href="../../../../../mcaptcha/index.html"><div class="logo-container"><img class="rust-logo" src="../../../../../rust-logo.svg" alt="logo"></div>
|
||||||
</a><div class="sidebar-elems"><h2 class="location"><a href="index.html">In mcaptcha::api::v1::pow::get_config</a></h2><div id="sidebar-vars" data-name="init_mcaptcha" data-ty="fn" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../../../mcaptcha/index.html"><img class="rust-logo" src="../../../../../rust-logo.svg" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
|
</a><div class="sidebar-elems"><h2 class="location"><a href="index.html">In mcaptcha::api::v1::pow::get_config</a></h2><div id="sidebar-vars" data-name="init_mcaptcha" data-ty="fn" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../../../mcaptcha/index.html"><img class="rust-logo" src="../../../../../rust-logo.svg" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
|
||||||
<h1 class="fqn"><span class="in-band">Function <a href="../../../../index.html">mcaptcha</a>::<wbr><a href="../../../index.html">api</a>::<wbr><a href="../../index.html">v1</a>::<wbr><a href="../index.html">pow</a>::<wbr><a href="index.html">get_config</a>::<wbr><a class="fn" href="#">init_mcaptcha</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../../../src/mcaptcha/api/v1/pow/get_config.rs.html#101-140">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust fn"><code>async fn init_mcaptcha(data: &<a class="type" href="../../../../type.AppData.html" title="type mcaptcha::AppData">AppData</a>, key: &<a class="primitive" href="https://doc.rust-lang.org/1.61.0/std/primitive.str.html">str</a>) -> <a class="enum" href="https://doc.rust-lang.org/1.61.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/1.61.0/std/primitive.unit.html">()</a>, <a class="enum" href="../../../../errors/enum.ServiceError.html" title="enum mcaptcha::errors::ServiceError">ServiceError</a>></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Call this when [MCaptcha][libmcaptcha::MCaptcha] is not in master.</p>
|
<h1 class="fqn"><span class="in-band">Function <a href="../../../../index.html">mcaptcha</a>::<wbr><a href="../../../index.html">api</a>::<wbr><a href="../../index.html">v1</a>::<wbr><a href="../index.html">pow</a>::<wbr><a href="index.html">get_config</a>::<wbr><a class="fn" href="#">init_mcaptcha</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../../../src/mcaptcha/api/v1/pow/get_config.rs.html#101-142">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust fn"><code>pub async fn init_mcaptcha(<br> data: &<a class="type" href="../../../../type.AppData.html" title="type mcaptcha::AppData">AppData</a>, <br> key: &<a class="primitive" href="https://doc.rust-lang.org/1.61.0/std/primitive.str.html">str</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/1.61.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/1.61.0/std/primitive.unit.html">()</a>, <a class="enum" href="../../../../errors/enum.ServiceError.html" title="enum mcaptcha::errors::ServiceError">ServiceError</a>></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Call this when [MCaptcha][libmcaptcha::MCaptcha] is not in master.</p>
|
||||||
<p>This fn gets mcaptcha config from database, builds [Defense][libmcaptcha::Defense],
|
<p>This fn gets mcaptcha config from database, builds [Defense][libmcaptcha::Defense],
|
||||||
creates [MCaptcha][libmcaptcha::MCaptcha] and adds it to [Master][libmcaptcha::Defense]</p>
|
creates [MCaptcha][libmcaptcha::MCaptcha] and adds it to [Master][libmcaptcha::Defense]</p>
|
||||||
</div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../../../" data-current-crate="mcaptcha" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.61.0 (fe5b13d68 2022-05-18)" ></div>
|
</div></details></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../../../" data-current-crate="mcaptcha" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.61.0 (fe5b13d68 2022-05-18)" ></div>
|
||||||
|
|||||||
@ -4,9 +4,9 @@
|
|||||||
</nav>
|
</nav>
|
||||||
<nav class="sidebar"><a class="sidebar-logo" href="../../../../../mcaptcha/index.html"><div class="logo-container"><img class="rust-logo" src="../../../../../rust-logo.svg" alt="logo"></div>
|
<nav class="sidebar"><a class="sidebar-logo" href="../../../../../mcaptcha/index.html"><div class="logo-container"><img class="rust-logo" src="../../../../../rust-logo.svg" alt="logo"></div>
|
||||||
</a><h2 class="location"><a href="#">Module get_config</a></h2><div class="sidebar-elems"><section><div class="block"><ul><li><a href="#structs">Structs</a></li><li><a href="#functions">Functions</a></li></ul></div></section><div id="sidebar-vars" data-name="get_config" data-ty="mod" data-relpath="./"></div><script defer src="./sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../../../mcaptcha/index.html"><img class="rust-logo" src="../../../../../rust-logo.svg" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
|
</a><h2 class="location"><a href="#">Module get_config</a></h2><div class="sidebar-elems"><section><div class="block"><ul><li><a href="#structs">Structs</a></li><li><a href="#functions">Functions</a></li></ul></div></section><div id="sidebar-vars" data-name="get_config" data-ty="mod" data-relpath="./"></div><script defer src="./sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../../../mcaptcha/index.html"><img class="rust-logo" src="../../../../../rust-logo.svg" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../../../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
|
||||||
<h1 class="fqn"><span class="in-band">Module <a href="../../../../index.html">mcaptcha</a>::<wbr><a href="../../../index.html">api</a>::<wbr><a href="../../index.html">v1</a>::<wbr><a href="../index.html">pow</a>::<wbr><a class="mod" href="#">get_config</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../../../src/mcaptcha/api/v1/pow/get_config.rs.html#19-185">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2>
|
<h1 class="fqn"><span class="in-band">Module <a href="../../../../index.html">mcaptcha</a>::<wbr><a href="../../../index.html">api</a>::<wbr><a href="../../index.html">v1</a>::<wbr><a href="../index.html">pow</a>::<wbr><a class="mod" href="#">get_config</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../../../src/mcaptcha/api/v1/pow/get_config.rs.html#19-281">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2>
|
||||||
<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.GetConfigPayload.html" title="mcaptcha::api::v1::pow::get_config::GetConfigPayload struct">GetConfigPayload</a></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.get_config.html" title="mcaptcha::api::v1::pow::get_config::get_config struct">get_config</a></div><div class="item-right docblock-short"><p>get PoW configuration for an mcaptcha key</p>
|
<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.GetConfigPayload.html" title="mcaptcha::api::v1::pow::get_config::GetConfigPayload struct">GetConfigPayload</a></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.get_config.html" title="mcaptcha::api::v1::pow::get_config::get_config struct">get_config</a></div><div class="item-right docblock-short"><p>get PoW configuration for an mcaptcha key</p>
|
||||||
</div></div></div><h2 id="functions" class="small-section-header"><a href="#functions">Functions</a></h2>
|
</div></div></div><h2 id="functions" class="small-section-header"><a href="#functions">Functions</a></h2>
|
||||||
<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.init_mcaptcha.html" title="mcaptcha::api::v1::pow::get_config::init_mcaptcha fn">init_mcaptcha</a><span title="Restricted Visibility"> 🔒</span> </div><div class="item-right docblock-short"><p>Call this when [MCaptcha][libmcaptcha::MCaptcha] is not in master.</p>
|
<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.init_mcaptcha.html" title="mcaptcha::api::v1::pow::get_config::init_mcaptcha fn">init_mcaptcha</a></div><div class="item-right docblock-short"><p>Call this when [MCaptcha][libmcaptcha::MCaptcha] is not in master.</p>
|
||||||
</div></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../../../" data-current-crate="mcaptcha" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.61.0 (fe5b13d68 2022-05-18)" ></div>
|
</div></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../../../" data-current-crate="mcaptcha" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.61.0 (fe5b13d68 2022-05-18)" ></div>
|
||||||
</body></html>
|
</body></html>
|
||||||
@ -4,5 +4,5 @@
|
|||||||
</nav>
|
</nav>
|
||||||
<nav class="sidebar"><a class="sidebar-logo" href="../mcaptcha/index.html"><div class="logo-container"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></div>
|
<nav class="sidebar"><a class="sidebar-logo" href="../mcaptcha/index.html"><div class="logo-container"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></div>
|
||||||
</a><div class="sidebar-elems"><h2 class="location"><a href="index.html">In mcaptcha</a></h2><div id="sidebar-vars" data-name="COMPILED_DATE" data-ty="constant" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../mcaptcha/index.html"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
|
</a><div class="sidebar-elems"><h2 class="location"><a href="index.html">In mcaptcha</a></h2><div id="sidebar-vars" data-name="COMPILED_DATE" data-ty="constant" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../mcaptcha/index.html"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
|
||||||
<h1 class="fqn"><span class="in-band">Constant <a href="index.html">mcaptcha</a>::<wbr><a class="constant" href="#">COMPILED_DATE</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../src/mcaptcha/main.rs.html#88">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust const"><code>pub const COMPILED_DATE: &<a class="primitive" href="https://doc.rust-lang.org/1.61.0/std/primitive.str.html">str</a> = "22-05-30";</code></pre></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../" data-current-crate="mcaptcha" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.61.0 (fe5b13d68 2022-05-18)" ></div>
|
<h1 class="fqn"><span class="in-band">Constant <a href="index.html">mcaptcha</a>::<wbr><a class="constant" href="#">COMPILED_DATE</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../src/mcaptcha/main.rs.html#88">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust const"><code>pub const COMPILED_DATE: &<a class="primitive" href="https://doc.rust-lang.org/1.61.0/std/primitive.str.html">str</a> = "22-05-31";</code></pre></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../" data-current-crate="mcaptcha" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.61.0 (fe5b13d68 2022-05-18)" ></div>
|
||||||
</body></html>
|
</body></html>
|
||||||
@ -4,5 +4,5 @@
|
|||||||
</nav>
|
</nav>
|
||||||
<nav class="sidebar"><a class="sidebar-logo" href="../mcaptcha/index.html"><div class="logo-container"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></div>
|
<nav class="sidebar"><a class="sidebar-logo" href="../mcaptcha/index.html"><div class="logo-container"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></div>
|
||||||
</a><div class="sidebar-elems"><h2 class="location"><a href="index.html">In mcaptcha</a></h2><div id="sidebar-vars" data-name="GIT_COMMIT_HASH" data-ty="constant" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../mcaptcha/index.html"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
|
</a><div class="sidebar-elems"><h2 class="location"><a href="index.html">In mcaptcha</a></h2><div id="sidebar-vars" data-name="GIT_COMMIT_HASH" data-ty="constant" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../mcaptcha/index.html"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
|
||||||
<h1 class="fqn"><span class="in-band">Constant <a href="index.html">mcaptcha</a>::<wbr><a class="constant" href="#">GIT_COMMIT_HASH</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../src/mcaptcha/main.rs.html#89">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust const"><code>pub const GIT_COMMIT_HASH: &<a class="primitive" href="https://doc.rust-lang.org/1.61.0/std/primitive.str.html">str</a> = "be9c6b757e3fe85bc7ba859eec00caa43d03ec04";</code></pre></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../" data-current-crate="mcaptcha" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.61.0 (fe5b13d68 2022-05-18)" ></div>
|
<h1 class="fqn"><span class="in-band">Constant <a href="index.html">mcaptcha</a>::<wbr><a class="constant" href="#">GIT_COMMIT_HASH</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../src/mcaptcha/main.rs.html#89">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust const"><code>pub const GIT_COMMIT_HASH: &<a class="primitive" href="https://doc.rust-lang.org/1.61.0/std/primitive.str.html">str</a> = "5daeffd6fbd421b0bffa4111f62ae3ac8f663bff";</code></pre></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../" data-current-crate="mcaptcha" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.61.0 (fe5b13d68 2022-05-18)" ></div>
|
||||||
</body></html>
|
</body></html>
|
||||||
@ -188,6 +188,102 @@
|
|||||||
<span id="183">183</span>
|
<span id="183">183</span>
|
||||||
<span id="184">184</span>
|
<span id="184">184</span>
|
||||||
<span id="185">185</span>
|
<span id="185">185</span>
|
||||||
|
<span id="186">186</span>
|
||||||
|
<span id="187">187</span>
|
||||||
|
<span id="188">188</span>
|
||||||
|
<span id="189">189</span>
|
||||||
|
<span id="190">190</span>
|
||||||
|
<span id="191">191</span>
|
||||||
|
<span id="192">192</span>
|
||||||
|
<span id="193">193</span>
|
||||||
|
<span id="194">194</span>
|
||||||
|
<span id="195">195</span>
|
||||||
|
<span id="196">196</span>
|
||||||
|
<span id="197">197</span>
|
||||||
|
<span id="198">198</span>
|
||||||
|
<span id="199">199</span>
|
||||||
|
<span id="200">200</span>
|
||||||
|
<span id="201">201</span>
|
||||||
|
<span id="202">202</span>
|
||||||
|
<span id="203">203</span>
|
||||||
|
<span id="204">204</span>
|
||||||
|
<span id="205">205</span>
|
||||||
|
<span id="206">206</span>
|
||||||
|
<span id="207">207</span>
|
||||||
|
<span id="208">208</span>
|
||||||
|
<span id="209">209</span>
|
||||||
|
<span id="210">210</span>
|
||||||
|
<span id="211">211</span>
|
||||||
|
<span id="212">212</span>
|
||||||
|
<span id="213">213</span>
|
||||||
|
<span id="214">214</span>
|
||||||
|
<span id="215">215</span>
|
||||||
|
<span id="216">216</span>
|
||||||
|
<span id="217">217</span>
|
||||||
|
<span id="218">218</span>
|
||||||
|
<span id="219">219</span>
|
||||||
|
<span id="220">220</span>
|
||||||
|
<span id="221">221</span>
|
||||||
|
<span id="222">222</span>
|
||||||
|
<span id="223">223</span>
|
||||||
|
<span id="224">224</span>
|
||||||
|
<span id="225">225</span>
|
||||||
|
<span id="226">226</span>
|
||||||
|
<span id="227">227</span>
|
||||||
|
<span id="228">228</span>
|
||||||
|
<span id="229">229</span>
|
||||||
|
<span id="230">230</span>
|
||||||
|
<span id="231">231</span>
|
||||||
|
<span id="232">232</span>
|
||||||
|
<span id="233">233</span>
|
||||||
|
<span id="234">234</span>
|
||||||
|
<span id="235">235</span>
|
||||||
|
<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>
|
||||||
|
<span id="255">255</span>
|
||||||
|
<span id="256">256</span>
|
||||||
|
<span id="257">257</span>
|
||||||
|
<span id="258">258</span>
|
||||||
|
<span id="259">259</span>
|
||||||
|
<span id="260">260</span>
|
||||||
|
<span id="261">261</span>
|
||||||
|
<span id="262">262</span>
|
||||||
|
<span id="263">263</span>
|
||||||
|
<span id="264">264</span>
|
||||||
|
<span id="265">265</span>
|
||||||
|
<span id="266">266</span>
|
||||||
|
<span id="267">267</span>
|
||||||
|
<span id="268">268</span>
|
||||||
|
<span id="269">269</span>
|
||||||
|
<span id="270">270</span>
|
||||||
|
<span id="271">271</span>
|
||||||
|
<span id="272">272</span>
|
||||||
|
<span id="273">273</span>
|
||||||
|
<span id="274">274</span>
|
||||||
|
<span id="275">275</span>
|
||||||
|
<span id="276">276</span>
|
||||||
|
<span id="277">277</span>
|
||||||
|
<span id="278">278</span>
|
||||||
|
<span id="279">279</span>
|
||||||
|
<span id="280">280</span>
|
||||||
|
<span id="281">281</span>
|
||||||
</pre><pre class="rust"><code><span class="comment">/*
|
</pre><pre class="rust"><code><span class="comment">/*
|
||||||
* Copyright (C) 2022 Aravinth Manivannan <realaravinth@batsense.net>
|
* Copyright (C) 2022 Aravinth Manivannan <realaravinth@batsense.net>
|
||||||
*
|
*
|
||||||
@ -288,7 +384,8 @@
|
|||||||
<span class="doccomment">///</span>
|
<span class="doccomment">///</span>
|
||||||
<span class="doccomment">/// This fn gets mcaptcha config from database, builds [Defense][libmcaptcha::Defense],</span>
|
<span class="doccomment">/// This fn gets mcaptcha config from database, builds [Defense][libmcaptcha::Defense],</span>
|
||||||
<span class="doccomment">/// creates [MCaptcha][libmcaptcha::MCaptcha] and adds it to [Master][libmcaptcha::Defense]</span>
|
<span class="doccomment">/// creates [MCaptcha][libmcaptcha::MCaptcha] and adds it to [Master][libmcaptcha::Defense]</span>
|
||||||
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">init_mcaptcha</span>(<span class="ident">data</span>: <span class="kw-2">&</span><span class="ident">AppData</span>, <span class="ident">key</span>: <span class="kw-2">&</span><span class="ident">str</span>) -> <span class="ident">ServiceResult</span><span class="op"><</span>()<span class="op">></span> {
|
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">init_mcaptcha</span>(<span class="ident">data</span>: <span class="kw-2">&</span><span class="ident">AppData</span>, <span class="ident">key</span>: <span class="kw-2">&</span><span class="ident">str</span>) -> <span class="ident">ServiceResult</span><span class="op"><</span>()<span class="op">></span> {
|
||||||
|
<span class="macro">println!</span>(<span class="string">"Initializing captcha"</span>);
|
||||||
<span class="comment">// get levels</span>
|
<span class="comment">// get levels</span>
|
||||||
<span class="kw">let</span> <span class="ident">levels</span> <span class="op">=</span> <span class="ident">data</span>.<span class="ident">db</span>.<span class="ident">get_captcha_levels</span>(<span class="prelude-val">None</span>, <span class="ident">key</span>).<span class="kw">await</span><span class="question-mark">?</span>;
|
<span class="kw">let</span> <span class="ident">levels</span> <span class="op">=</span> <span class="ident">data</span>.<span class="ident">db</span>.<span class="ident">get_captcha_levels</span>(<span class="prelude-val">None</span>, <span class="ident">key</span>).<span class="kw">await</span><span class="question-mark">?</span>;
|
||||||
<span class="kw">let</span> <span class="ident">duration</span> <span class="op">=</span> <span class="ident">data</span>.<span class="ident">db</span>.<span class="ident">get_captcha_cooldown</span>(<span class="ident">key</span>).<span class="kw">await</span><span class="question-mark">?</span>;
|
<span class="kw">let</span> <span class="ident">duration</span> <span class="op">=</span> <span class="ident">data</span>.<span class="ident">db</span>.<span class="ident">get_captcha_cooldown</span>(<span class="ident">key</span>).<span class="kw">await</span><span class="question-mark">?</span>;
|
||||||
@ -307,6 +404,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
<span class="kw">let</span> <span class="ident">defense</span> <span class="op">=</span> <span class="ident">defense</span>.<span class="ident">build</span>()<span class="question-mark">?</span>;
|
<span class="kw">let</span> <span class="ident">defense</span> <span class="op">=</span> <span class="ident">defense</span>.<span class="ident">build</span>()<span class="question-mark">?</span>;
|
||||||
|
<span class="macro">println!</span>(<span class="string">"{:?}"</span>, <span class="ident">defense</span>);
|
||||||
|
|
||||||
<span class="comment">// create captcha</span>
|
<span class="comment">// create captcha</span>
|
||||||
<span class="kw">let</span> <span class="ident">mcaptcha</span> <span class="op">=</span> <span class="ident">MCaptchaBuilder::default</span>()
|
<span class="kw">let</span> <span class="ident">mcaptcha</span> <span class="op">=</span> <span class="ident">MCaptchaBuilder::default</span>()
|
||||||
@ -372,6 +470,100 @@
|
|||||||
<span class="kw">let</span> <span class="ident">config</span>: <span class="ident">PoWConfig</span> <span class="op">=</span> <span class="ident">test::read_body_json</span>(<span class="ident">get_config_resp</span>).<span class="kw">await</span>;
|
<span class="kw">let</span> <span class="ident">config</span>: <span class="ident">PoWConfig</span> <span class="op">=</span> <span class="ident">test::read_body_json</span>(<span class="ident">get_config_resp</span>).<span class="kw">await</span>;
|
||||||
<span class="macro">assert_eq!</span>(<span class="ident">config</span>.<span class="ident">difficulty_factor</span>, <span class="ident">L1</span>.<span class="ident">difficulty_factor</span>);
|
<span class="macro">assert_eq!</span>(<span class="ident">config</span>.<span class="ident">difficulty_factor</span>, <span class="ident">L1</span>.<span class="ident">difficulty_factor</span>);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
<span class="attribute">#[<span class="ident">actix_rt::test</span>]</span>
|
||||||
|
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">pow_difficulty_factor_increases_on_visitor_count_increase</span>() {
|
||||||
|
<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">use</span> <span class="kw">crate</span>::<span class="kw-2">*</span>;
|
||||||
|
<span class="kw">use</span> <span class="ident">actix_web::test</span>;
|
||||||
|
|
||||||
|
<span class="kw">use</span> <span class="ident">libmcaptcha::defense::Level</span>;
|
||||||
|
|
||||||
|
<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::api::v1::mcaptcha::create::CreateCaptcha</span>;
|
||||||
|
<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::api::v1::mcaptcha::create::MCaptchaDetails</span>;
|
||||||
|
|
||||||
|
<span class="kw">const</span> <span class="ident">NAME</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"powusrworks2"</span>;
|
||||||
|
<span class="kw">const</span> <span class="ident">PASSWORD</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"testingpas"</span>;
|
||||||
|
<span class="kw">const</span> <span class="ident">EMAIL</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"randomuser2@a.com"</span>;
|
||||||
|
<span class="kw">pub</span> <span class="kw">const</span> <span class="ident">L1</span>: <span class="ident">Level</span> <span class="op">=</span> <span class="ident">Level</span> {
|
||||||
|
<span class="ident">difficulty_factor</span>: <span class="number">10</span>,
|
||||||
|
<span class="ident">visitor_threshold</span>: <span class="number">10</span>,
|
||||||
|
};
|
||||||
|
<span class="kw">pub</span> <span class="kw">const</span> <span class="ident">L2</span>: <span class="ident">Level</span> <span class="op">=</span> <span class="ident">Level</span> {
|
||||||
|
<span class="ident">difficulty_factor</span>: <span class="number">20</span>,
|
||||||
|
<span class="ident">visitor_threshold</span>: <span class="number">20</span>,
|
||||||
|
};
|
||||||
|
|
||||||
|
<span class="kw">pub</span> <span class="kw">const</span> <span class="ident">L3</span>: <span class="ident">Level</span> <span class="op">=</span> <span class="ident">Level</span> {
|
||||||
|
<span class="ident">difficulty_factor</span>: <span class="number">30</span>,
|
||||||
|
<span class="ident">visitor_threshold</span>: <span class="number">30</span>,
|
||||||
|
};
|
||||||
|
|
||||||
|
<span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="ident">get_data</span>().<span class="kw">await</span>;
|
||||||
|
<span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="kw-2">&</span><span class="ident">data</span>;
|
||||||
|
<span class="kw">let</span> <span class="ident">levels</span> <span class="op">=</span> [<span class="ident">L1</span>, <span class="ident">L2</span>, <span class="ident">L3</span>];
|
||||||
|
|
||||||
|
<span class="ident">delete_user</span>(<span class="ident">data</span>, <span class="ident">NAME</span>).<span class="kw">await</span>;
|
||||||
|
|
||||||
|
<span class="kw">let</span> (<span class="kw">_</span>, <span class="ident">signin_resp</span>) <span class="op">=</span> <span class="ident">register_and_signin</span>(<span class="ident">data</span>, <span class="ident">NAME</span>, <span class="ident">EMAIL</span>, <span class="ident">PASSWORD</span>).<span class="kw">await</span>;
|
||||||
|
<span class="kw">let</span> <span class="ident">cookies</span> <span class="op">=</span> <span class="macro">get_cookie!</span>(<span class="ident">signin_resp</span>);
|
||||||
|
<span class="kw">let</span> <span class="ident">app</span> <span class="op">=</span> <span class="macro">get_app!</span>(<span class="ident">data</span>).<span class="kw">await</span>;
|
||||||
|
|
||||||
|
<span class="kw">let</span> <span class="ident">create_captcha</span> <span class="op">=</span> <span class="ident">CreateCaptcha</span> {
|
||||||
|
<span class="ident">levels</span>: <span class="ident">levels</span>.<span class="ident">into</span>(),
|
||||||
|
<span class="ident">duration</span>: <span class="number">30</span>,
|
||||||
|
<span class="ident">description</span>: <span class="string">"dummy"</span>.<span class="ident">into</span>(),
|
||||||
|
};
|
||||||
|
|
||||||
|
<span class="comment">// 1. add level</span>
|
||||||
|
<span class="kw">let</span> <span class="ident">add_token_resp</span> <span class="op">=</span> <span class="ident">test::call_service</span>(
|
||||||
|
<span class="kw-2">&</span><span class="ident">app</span>,
|
||||||
|
<span class="macro">post_request!</span>(<span class="kw-2">&</span><span class="ident">create_captcha</span>, <span class="ident">V1_API_ROUTES</span>.<span class="ident">captcha</span>.<span class="ident">create</span>)
|
||||||
|
.<span class="ident">cookie</span>(<span class="ident">cookies</span>.<span class="ident">clone</span>())
|
||||||
|
.<span class="ident">to_request</span>(),
|
||||||
|
)
|
||||||
|
.<span class="kw">await</span>;
|
||||||
|
<span class="macro">assert_eq!</span>(<span class="ident">add_token_resp</span>.<span class="ident">status</span>(), <span class="ident">StatusCode::OK</span>);
|
||||||
|
<span class="kw">let</span> <span class="ident">token_key</span>: <span class="ident">MCaptchaDetails</span> <span class="op">=</span> <span class="ident">test::read_body_json</span>(<span class="ident">add_token_resp</span>).<span class="kw">await</span>;
|
||||||
|
|
||||||
|
<span class="kw">let</span> <span class="ident">get_config_payload</span> <span class="op">=</span> <span class="ident">GetConfigPayload</span> {
|
||||||
|
<span class="ident">key</span>: <span class="ident">token_key</span>.<span class="ident">key</span>.<span class="ident">clone</span>(),
|
||||||
|
};
|
||||||
|
|
||||||
|
<span class="kw">let</span> <span class="ident">url</span> <span class="op">=</span> <span class="ident">V1_API_ROUTES</span>.<span class="ident">pow</span>.<span class="ident">get_config</span>;
|
||||||
|
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">prev</span> <span class="op">=</span> <span class="number">0</span>;
|
||||||
|
<span class="kw">for</span> (<span class="ident">count</span>, <span class="ident">l</span>) <span class="kw">in</span> <span class="ident">levels</span>.<span class="ident">iter</span>().<span class="ident">enumerate</span>() {
|
||||||
|
<span class="kw">for</span> <span class="ident">l</span> <span class="kw">in</span> <span class="ident">prev</span>..<span class="ident">l</span>.<span class="ident">visitor_threshold</span> <span class="op">*</span> <span class="number">2</span> {
|
||||||
|
<span class="kw">let</span> <span class="ident">get_config_resp</span> <span class="op">=</span> <span class="ident">test::call_service</span>(
|
||||||
|
<span class="kw-2">&</span><span class="ident">app</span>,
|
||||||
|
<span class="macro">post_request!</span>(<span class="kw-2">&</span><span class="ident">get_config_payload</span>, <span class="ident">V1_API_ROUTES</span>.<span class="ident">pow</span>.<span class="ident">get_config</span>)
|
||||||
|
.<span class="ident">to_request</span>(),
|
||||||
|
)
|
||||||
|
.<span class="kw">await</span>;
|
||||||
|
}
|
||||||
|
|
||||||
|
<span class="kw">let</span> <span class="ident">get_config_resp</span> <span class="op">=</span> <span class="ident">test::call_service</span>(
|
||||||
|
<span class="kw-2">&</span><span class="ident">app</span>,
|
||||||
|
<span class="macro">post_request!</span>(<span class="kw-2">&</span><span class="ident">get_config_payload</span>, <span class="ident">V1_API_ROUTES</span>.<span class="ident">pow</span>.<span class="ident">get_config</span>)
|
||||||
|
.<span class="ident">to_request</span>(),
|
||||||
|
)
|
||||||
|
.<span class="kw">await</span>;
|
||||||
|
|
||||||
|
<span class="kw">let</span> <span class="ident">config</span>: <span class="ident">PoWConfig</span> <span class="op">=</span> <span class="ident">test::read_body_json</span>(<span class="ident">get_config_resp</span>).<span class="kw">await</span>;
|
||||||
|
<span class="macro">println!</span>(
|
||||||
|
<span class="string">"[{count}] received difficulty_factor: {} prev difficulty_factor {}"</span>,
|
||||||
|
<span class="ident">config</span>.<span class="ident">difficulty_factor</span>, <span class="ident">prev</span>
|
||||||
|
);
|
||||||
|
<span class="kw">if</span> <span class="ident">count</span> <span class="op">==</span> <span class="ident">levels</span>.<span class="ident">len</span>() <span class="op">-</span> <span class="number">1</span> {
|
||||||
|
<span class="macro">assert!</span>(<span class="ident">config</span>.<span class="ident">difficulty_factor</span> <span class="op">==</span> <span class="ident">prev</span>);
|
||||||
|
} <span class="kw">else</span> {
|
||||||
|
<span class="macro">assert!</span>(<span class="ident">config</span>.<span class="ident">difficulty_factor</span> <span class="op">></span> <span class="ident">prev</span>);
|
||||||
|
}
|
||||||
|
<span class="ident">prev</span> <span class="op">=</span> <span class="ident">config</span>.<span class="ident">difficulty_factor</span>;
|
||||||
|
}
|
||||||
|
<span class="comment">// update and check changes</span>
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</code></pre></div>
|
</code></pre></div>
|
||||||
</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../../../" data-current-crate="mcaptcha" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.61.0 (fe5b13d68 2022-05-18)" ></div>
|
</section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../../../../" data-current-crate="mcaptcha" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.61.0 (fe5b13d68 2022-05-18)" ></div>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user