Deploying to gh-pages from @ 3710c8f653 🚀

This commit is contained in:
realaravinth
2022-05-27 13:55:17 +00:00
parent d4575e7ebf
commit 0cad395013
608 changed files with 13753 additions and 4723 deletions

View File

@@ -133,39 +133,6 @@
<span id="128">128</span>
<span id="129">129</span>
<span id="130">130</span>
<span id="131">131</span>
<span id="132">132</span>
<span id="133">133</span>
<span id="134">134</span>
<span id="135">135</span>
<span id="136">136</span>
<span id="137">137</span>
<span id="138">138</span>
<span id="139">139</span>
<span id="140">140</span>
<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>
<span id="155">155</span>
<span id="156">156</span>
<span id="157">157</span>
<span id="158">158</span>
<span id="159">159</span>
<span id="160">160</span>
<span id="161">161</span>
<span id="162">162</span>
<span id="163">163</span>
</pre><pre class="rust"><code><span class="comment">/*
* Copyright (C) 2022 Aravinth Manivannan &lt;realaravinth@batsense.net&gt;
*
@@ -185,27 +152,17 @@
<span class="kw">use</span> <span class="ident">actix_identity::Identity</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">futures</span>::{<span class="ident">future::TryFutureExt</span>, <span class="ident">try_join</span>};
<span class="kw">use</span> <span class="ident">sailfish::TemplateOnce</span>;
<span class="kw">use</span> <span class="ident">db_core::Captcha</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>::errors</span>::<span class="kw-2">*</span>;
<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::stats::fetch::Stats</span>;
<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::stats::CaptchaStats</span>;
<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::AppData</span>;
<span class="kw">const</span> <span class="ident">PAGE</span>: <span class="kw-2">&amp;</span><span class="ident">str</span> <span class="op">=</span> <span class="string">&quot;SiteKeys&quot;</span>;
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>)]</span>
<span class="kw">struct</span> <span class="ident">McaptchaConfig</span> {
<span class="ident">config_id</span>: <span class="ident">i32</span>,
<span class="ident">duration</span>: <span class="ident">i32</span>,
<span class="ident">name</span>: <span class="ident">String</span>,
}
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>)]</span>
<span class="kw">struct</span> <span class="ident">Level</span> {
<span class="ident">difficulty_factor</span>: <span class="ident">i32</span>,
<span class="ident">visitor_threshold</span>: <span class="ident">i32</span>,
}
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">TemplateOnce</span>, <span class="ident">Clone</span>)]</span>
<span class="attribute">#[<span class="ident">template</span>(<span class="ident">path</span> <span class="op">=</span> <span class="string">&quot;panel/sitekey/view/index.html&quot;</span>)]</span>
<span class="kw">struct</span> <span class="ident">IndexPage</span> {
@@ -213,19 +170,19 @@
<span class="ident">name</span>: <span class="ident">String</span>,
<span class="ident">key</span>: <span class="ident">String</span>,
<span class="ident">levels</span>: <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">Level</span><span class="op">&gt;</span>,
<span class="ident">stats</span>: <span class="ident">Stats</span>,
<span class="ident">stats</span>: <span class="ident">CaptchaStats</span>,
}
<span class="kw">impl</span> <span class="ident">IndexPage</span> {
<span class="kw">fn</span> <span class="ident">new</span>(
<span class="ident">stats</span>: <span class="ident">Stats</span>,
<span class="ident">config</span>: <span class="ident">McaptchaConfig</span>,
<span class="ident">stats</span>: <span class="ident">CaptchaStats</span>,
<span class="ident">config</span>: <span class="ident">Captcha</span>,
<span class="ident">levels</span>: <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">Level</span><span class="op">&gt;</span>,
<span class="ident">key</span>: <span class="ident">String</span>,
) -&gt; <span class="self">Self</span> {
<span class="ident">IndexPage</span> {
<span class="ident">duration</span>: <span class="ident">config</span>.<span class="ident">duration</span> <span class="kw">as</span> <span class="ident">u32</span>,
<span class="ident">name</span>: <span class="ident">config</span>.<span class="ident">name</span>,
<span class="ident">name</span>: <span class="ident">config</span>.<span class="ident">description</span>,
<span class="ident">levels</span>,
<span class="ident">key</span>,
<span class="ident">stats</span>,
@@ -245,31 +202,9 @@
) -&gt; <span class="ident">PageResult</span><span class="op">&lt;</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">username</span> <span class="op">=</span> <span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">path</span>.<span class="ident">into_inner</span>();
<span class="kw">let</span> <span class="ident">config</span> <span class="op">=</span> <span class="macro">sqlx::query_as!</span>(
<span class="ident">McaptchaConfig</span>,
<span class="string">&quot;SELECT config_id, duration, name from mcaptcha_config WHERE
key = $1 AND
user_id = (SELECT ID FROM mcaptcha_users WHERE name = $2) &quot;</span>,
<span class="kw-2">&amp;</span><span class="ident">key</span>,
<span class="kw-2">&amp;</span><span class="ident">username</span>,
)
.<span class="ident">fetch_one</span>(<span class="kw-2">&amp;</span><span class="ident">data</span>.<span class="ident">db</span>)
.<span class="kw">await</span><span class="question-mark">?</span>;
<span class="kw">let</span> <span class="ident">levels_fut</span> <span class="op">=</span> <span class="macro">sqlx::query_as!</span>(
<span class="ident">Level</span>,
<span class="string">&quot;SELECT
difficulty_factor, visitor_threshold
FROM
mcaptcha_levels
WHERE config_id = $1 ORDER BY difficulty_factor ASC&quot;</span>,
<span class="kw-2">&amp;</span><span class="ident">config</span>.<span class="ident">config_id</span>
)
.<span class="ident">fetch_all</span>(<span class="kw-2">&amp;</span><span class="ident">data</span>.<span class="ident">db</span>)
.<span class="ident">err_into</span>();
<span class="kw">let</span> (<span class="ident">stats</span>, <span class="ident">levels</span>) <span class="op">=</span> <span class="macro">try_join!</span>(<span class="ident">Stats::new</span>(<span class="kw-2">&amp;</span><span class="ident">username</span>, <span class="kw-2">&amp;</span><span class="ident">key</span>, <span class="kw-2">&amp;</span><span class="ident">data</span>.<span class="ident">db</span>), <span class="ident">levels_fut</span>)<span class="question-mark">?</span>;
<span class="kw">let</span> <span class="ident">config</span> <span class="op">=</span> <span class="ident">data</span>.<span class="ident">db</span>.<span class="ident">get_captcha_config</span>(<span class="kw-2">&amp;</span><span class="ident">username</span>, <span class="kw-2">&amp;</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">Some</span>(<span class="kw-2">&amp;</span><span class="ident">username</span>), <span class="kw-2">&amp;</span><span class="ident">key</span>).<span class="kw">await</span><span class="question-mark">?</span>;
<span class="kw">let</span> <span class="ident">stats</span> <span class="op">=</span> <span class="ident">data</span>.<span class="ident">stats</span>.<span class="ident">fetch</span>(<span class="kw-2">&amp;</span><span class="ident">data</span>, <span class="kw-2">&amp;</span><span class="ident">username</span>, <span class="kw-2">&amp;</span><span class="ident">key</span>).<span class="kw">await</span><span class="question-mark">?</span>;
<span class="kw">let</span> <span class="ident">body</span> <span class="op">=</span> <span class="ident">IndexPage::new</span>(<span class="ident">stats</span>, <span class="ident">config</span>, <span class="ident">levels</span>, <span class="ident">key</span>)
.<span class="ident">render_once</span>()
@@ -294,13 +229,12 @@
<span class="kw">const</span> <span class="ident">PASSWORD</span>: <span class="kw-2">&amp;</span><span class="ident">str</span> <span class="op">=</span> <span class="string">&quot;longpassworddomain&quot;</span>;
<span class="kw">const</span> <span class="ident">EMAIL</span>: <span class="kw-2">&amp;</span><span class="ident">str</span> <span class="op">=</span> <span class="string">&quot;viewsitekeyuser@a.com&quot;</span>;
{
<span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="ident">Data::new</span>().<span class="kw">await</span>;
<span class="ident">delete_user</span>(<span class="ident">NAME</span>, <span class="kw-2">&amp;</span><span class="ident">data</span>).<span class="kw">await</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">&amp;</span><span class="ident">data</span>;
<span class="ident">delete_user</span>(<span class="ident">data</span>, <span class="ident">NAME</span>).<span class="kw">await</span>;
<span class="ident">register_and_signin</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">data</span>, <span class="kw">_</span>, <span class="ident">signin_resp</span>, <span class="ident">key</span>) <span class="op">=</span> <span class="ident">add_levels_util</span>(<span class="ident">NAME</span>, <span class="ident">PASSWORD</span>).<span class="kw">await</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="kw">_</span>, <span class="ident">signin_resp</span>, <span class="ident">key</span>) <span class="op">=</span> <span class="ident">add_levels_util</span>(<span class="ident">data</span>, <span class="ident">NAME</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>;