This commit is contained in:
Firstyear 2021-08-10 02:20:25 +00:00
parent c8970615fd
commit 69bdbe72dc
17 changed files with 76 additions and 74 deletions

View file

@ -1,6 +1,7 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `audit` mod in crate `kanidm`."><meta name="keywords" content="rust, rustlang, rust-lang, audit"><title>kanidm::audit - Rust</title><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><link rel="stylesheet" type="text/css" href="../../dark.css" disabled ><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled ><script id="default-settings"></script><script src="../../storage.js"></script><script src="../../crates.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="icon" type="image/svg+xml" href="../../favicon.svg">
<link rel="alternate icon" type="image/png" href="../../favicon-16x16.png">
<link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><style type="text/css">#crate-search{background-image:url("../../down-arrow.svg");}</style></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu" role="button">&#9776;</div><a href='../../kanidm/index.html'><div class='logo-container rust-logo'><img src='../../rust-logo.png' alt='logo'></div></a><h2 class="location">Module audit</h2><div class="sidebar-elems"><div class="block items"><ul><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#constants">Constants</a></li></ul></div><div id="sidebar-vars" data-name="audit" data-ty="mod" data-relpath="./"></div><script defer src="./sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img src="../../brush.svg" width="18" height="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img src="../../wheel.svg" width="18" height="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class="fqn"><span class="in-band">Module <a href="../index.html">kanidm</a>::<wbr><a class="mod" href="#">audit</a><button id="copy-path" onclick="copy_path(this)" title="copy path"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item import" title="Copy item import to clipboard"></button></span><span class="out-of-band"><span id="render-detail"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span><a class="srclink" href="../../src/kanidm/audit.rs.html#1-559" title="goto source code">[src]</a></span></h1><h2 id="structs" class="section-header"><a href="#structs">Structs</a></h2>
<table><tr class="module-item"><td><a class="struct" href="struct.AuditScope.html" title="kanidm::audit::AuditScope struct">AuditScope</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="struct" href="struct.PerfEvent.html" title="kanidm::audit::PerfEvent struct">PerfEvent</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="struct" href="struct.PerfProcessed.html" title="kanidm::audit::PerfProcessed struct">PerfProcessed</a></td><td class="docblock-short"></td></tr></table><h2 id="enums" class="section-header"><a href="#enums">Enums</a></h2>
<link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><style type="text/css">#crate-search{background-image:url("../../down-arrow.svg");}</style></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu" role="button">&#9776;</div><a href='../../kanidm/index.html'><div class='logo-container rust-logo'><img src='../../rust-logo.png' alt='logo'></div></a><h2 class="location">Module audit</h2><div class="sidebar-elems"><div class="block items"><ul><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#constants">Constants</a></li></ul></div><div id="sidebar-vars" data-name="audit" data-ty="mod" data-relpath="./"></div><script defer src="./sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img src="../../brush.svg" width="18" height="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img src="../../wheel.svg" width="18" height="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class="fqn"><span class="in-band">Module <a href="../index.html">kanidm</a>::<wbr><a class="mod" href="#">audit</a><button id="copy-path" onclick="copy_path(this)" title="copy path"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item import" title="Copy item import to clipboard"></button></span><span class="out-of-band"><span id="render-detail"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span><a class="srclink" href="../../src/kanidm/audit.rs.html#1-557" title="goto source code">[src]</a></span></h1><h2 id="structs" class="section-header"><a href="#structs">Structs</a></h2>
<table><tr class="module-item"><td><a class="struct" href="struct.AuditScope.html" title="kanidm::audit::AuditScope struct">AuditScope</a></td><td class="docblock-short"><p>This structure tracks and event lifecycle, and is eventually sent to the logging system where its structured and written out to the current logging BE.</p>
</td></tr><tr class="module-item"><td><a class="struct" href="struct.PerfEvent.html" title="kanidm::audit::PerfEvent struct">PerfEvent</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="struct" href="struct.PerfProcessed.html" title="kanidm::audit::PerfProcessed struct">PerfProcessed</a></td><td class="docblock-short"></td></tr></table><h2 id="enums" class="section-header"><a href="#enums">Enums</a></h2>
<table><tr class="module-item"><td><a class="enum" href="enum.LogLevel.html" title="kanidm::audit::LogLevel enum">LogLevel</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="enum" href="enum.LogTag.html" title="kanidm::audit::LogTag enum">LogTag</a></td><td class="docblock-short"></td></tr></table><h2 id="constants" class="section-header"><a href="#constants">Constants</a></h2>
<table><tr class="module-item"><td><a class="constant" href="constant.AUDIT_LINE_SIZE.html" title="kanidm::audit::AUDIT_LINE_SIZE constant">AUDIT_LINE_SIZE</a></td><td class="docblock-short"></td></tr></table></section><section id="search" class="content hidden"></section><div id="rustdoc-vars" data-root-path="../../" data-current-crate="kanidm" data-search-index-js="../../search-index.js" data-search-js="../../search.js"></div><script src="../../main.js"></script></body></html>

View file

@ -1 +1 @@
initSidebarItems({"constant":[["AUDIT_LINE_SIZE",""]],"enum":[["LogLevel",""],["LogTag",""]],"struct":[["AuditScope",""],["PerfEvent",""],["PerfProcessed",""]]});
initSidebarItems({"constant":[["AUDIT_LINE_SIZE",""]],"enum":[["LogLevel",""],["LogTag",""]],"struct":[["AuditScope","This structure tracks and event lifecycle, and is eventually sent to the logging system where its structured and written out to the current logging BE."],["PerfEvent",""],["PerfProcessed",""]]});

View file

@ -1,11 +1,12 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `AuditScope` struct in crate `kanidm`."><meta name="keywords" content="rust, rustlang, rust-lang, AuditScope"><title>AuditScope in kanidm::audit - Rust</title><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><link rel="stylesheet" type="text/css" href="../../dark.css" disabled ><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled ><script id="default-settings"></script><script src="../../storage.js"></script><script src="../../crates.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="icon" type="image/svg+xml" href="../../favicon.svg">
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="This structure tracks and event lifecycle, and is eventually sent to the logging system where its structured and written out to the current logging BE."><meta name="keywords" content="rust, rustlang, rust-lang, AuditScope"><title>AuditScope in kanidm::audit - Rust</title><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><link rel="stylesheet" type="text/css" href="../../dark.css" disabled ><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled ><script id="default-settings"></script><script src="../../storage.js"></script><script src="../../crates.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="icon" type="image/svg+xml" href="../../favicon.svg">
<link rel="alternate icon" type="image/png" href="../../favicon-16x16.png">
<link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><style type="text/css">#crate-search{background-image:url("../../down-arrow.svg");}</style></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu" role="button">&#9776;</div><a href='../../kanidm/index.html'><div class='logo-container rust-logo'><img src='../../rust-logo.png' alt='logo'></div></a><h2 class="location">Struct AuditScope</h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Fields</a></h3><div class="sidebar-links"><a href="#structfield.level">level</a><a href="#structfield.uuid">uuid</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.log_event">log_event</a><a href="#method.new">new</a><a href="#method.write_log">write_log</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Serialize">Serialize</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">!UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow&lt;T&gt;</a><a href="#impl-BorrowMut%3CT%3E">BorrowMut&lt;T&gt;</a><a href="#impl-From%3CT%3E">From&lt;T&gt;</a><a href="#impl-Into%3CU%3E">Into&lt;U&gt;</a><a href="#impl-Pointable">Pointable</a><a href="#impl-Same%3CT%3E">Same&lt;T&gt;</a><a href="#impl-TryFrom%3CU%3E">TryFrom&lt;U&gt;</a><a href="#impl-TryInto%3CU%3E">TryInto&lt;U&gt;</a><a href="#impl-VZip%3CV%3E">VZip&lt;V&gt;</a></div></div><h2 class="location">Other items in<br><a href="../index.html">kanidm</a>::<wbr><a href="index.html">audit</a></h2><div id="sidebar-vars" data-name="AuditScope" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img src="../../brush.svg" width="18" height="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img src="../../wheel.svg" width="18" height="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class="fqn"><span class="in-band">Struct <a href="../index.html">kanidm</a>::<wbr><a href="index.html">audit</a>::<wbr><a class="struct" href="#">AuditScope</a><button id="copy-path" onclick="copy_path(this)" title="copy path"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item import" title="Copy item import to clipboard"></button></span><span class="out-of-band"><span id="render-detail"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span><a class="srclink" href="../../src/kanidm/audit.rs.html#395-408" title="goto source code">[src]</a></span></h1><div class="docblock type-decl"><pre class="rust struct">pub struct AuditScope {
<link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><style type="text/css">#crate-search{background-image:url("../../down-arrow.svg");}</style></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu" role="button">&#9776;</div><a href='../../kanidm/index.html'><div class='logo-container rust-logo'><img src='../../rust-logo.png' alt='logo'></div></a><h2 class="location">Struct AuditScope</h2><div class="sidebar-elems"><div class="block items"><h3 class="sidebar-title"><a href="#fields">Fields</a></h3><div class="sidebar-links"><a href="#structfield.level">level</a><a href="#structfield.uuid">uuid</a></div><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><div class="sidebar-links"><a href="#method.log_event">log_event</a><a href="#method.new">new</a><a href="#method.write_log">write_log</a></div><h3 class="sidebar-title"><a href="#trait-implementations">Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-Serialize">Serialize</a></div><h3 class="sidebar-title"><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">!UnwindSafe</a></div><h3 class="sidebar-title"><a href="#blanket-implementations">Blanket Implementations</a></h3><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow&lt;T&gt;</a><a href="#impl-BorrowMut%3CT%3E">BorrowMut&lt;T&gt;</a><a href="#impl-From%3CT%3E">From&lt;T&gt;</a><a href="#impl-Into%3CU%3E">Into&lt;U&gt;</a><a href="#impl-Pointable">Pointable</a><a href="#impl-Same%3CT%3E">Same&lt;T&gt;</a><a href="#impl-TryFrom%3CU%3E">TryFrom&lt;U&gt;</a><a href="#impl-TryInto%3CU%3E">TryInto&lt;U&gt;</a><a href="#impl-VZip%3CV%3E">VZip&lt;V&gt;</a></div></div><h2 class="location">Other items in<br><a href="../index.html">kanidm</a>::<wbr><a href="index.html">audit</a></h2><div id="sidebar-vars" data-name="AuditScope" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img src="../../brush.svg" width="18" height="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img src="../../wheel.svg" width="18" height="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class="fqn"><span class="in-band">Struct <a href="../index.html">kanidm</a>::<wbr><a href="index.html">audit</a>::<wbr><a class="struct" href="#">AuditScope</a><button id="copy-path" onclick="copy_path(this)" title="copy path"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item import" title="Copy item import to clipboard"></button></span><span class="out-of-band"><span id="render-detail"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span><a class="srclink" href="../../src/kanidm/audit.rs.html#393-406" title="goto source code">[src]</a></span></h1><div class="docblock type-decl"><pre class="rust struct">pub struct AuditScope {
pub level: <a class="primitive" href="https://doc.rust-lang.org/1.54.0/std/primitive.u32.html">u32</a>,
pub uuid: <a class="struct" href="../prelude/struct.Uuid.html" title="struct kanidm::prelude::Uuid">Uuid</a>,
// some fields omitted
}</pre></div><h2 id="fields" class="fields small-section-header">
Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.level" class="structfield small-section-header"><a href="#structfield.level" class="anchor field"></a><code>level: <a class="primitive" href="https://doc.rust-lang.org/1.54.0/std/primitive.u32.html">u32</a></code></span><span id="structfield.uuid" class="structfield small-section-header"><a href="#structfield.uuid" class="anchor field"></a><code>uuid: <a class="struct" href="../prelude/struct.Uuid.html" title="struct kanidm::prelude::Uuid">Uuid</a></code></span><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><h3 class="code-header in-band">impl <a class="struct" href="struct.AuditScope.html" title="struct kanidm::audit::AuditScope">AuditScope</a></h3><a href="#impl" class="anchor"></a><a class="srclink" href="../../src/kanidm/audit.rs.html#410-546" title="goto source code">[src]</a></div></summary><div class="impl-items"><div id="method.new" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.new" class="fnname">new</a>(name: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.54.0/std/primitive.str.html">str</a>, eventid: <a class="struct" href="../prelude/struct.Uuid.html" title="struct kanidm::prelude::Uuid">Uuid</a>, level: <a class="enum" href="https://doc.rust-lang.org/1.54.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.54.0/std/primitive.u32.html">u32</a>&gt;) -&gt; Self</h4><a href="#method.new" class="anchor"></a><a class="srclink" href="../../src/kanidm/audit.rs.html#411-451" title="goto source code">[src]</a></div><div id="method.write_log" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.write_log" class="fnname">write_log</a>(self)</h4><a href="#method.write_log" class="anchor"></a><a class="srclink" href="../../src/kanidm/audit.rs.html#453-473" title="goto source code">[src]</a></div><div id="method.log_event" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.log_event" class="fnname">log_event</a>(&amp;mut self, tag: <a class="enum" href="enum.LogTag.html" title="enum kanidm::audit::LogTag">LogTag</a>, data: <a class="struct" href="https://doc.rust-lang.org/1.54.0/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>)</h4><a href="#method.log_event" class="anchor"></a><a class="srclink" href="../../src/kanidm/audit.rs.html#475-484" title="goto source code">[src]</a></div></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-Serialize" class="impl has-srclink"><h3 class="code-header in-band">impl <a class="trait" href="https://docs.rs/serde/1.0.126/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.AuditScope.html" title="struct kanidm::audit::AuditScope">AuditScope</a></h3><a href="#impl-Serialize" class="anchor"></a><a class="srclink" href="../../src/kanidm/audit.rs.html#394" title="goto source code">[src]</a></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.serialize" class="method trait-impl has-srclink"><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.126/serde/ser/trait.Serialize.html#tymethod.serialize" class="fnname">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.54.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="type" href="https://docs.rs/serde/1.0.126/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="type" href="https://docs.rs/serde/1.0.126/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;__S: <a class="trait" href="https://docs.rs/serde/1.0.126/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,&nbsp;</span></h4><a href="#method.serialize" class="anchor"></a><a class="srclink" href="../../src/kanidm/audit.rs.html#394" title="goto source code">[src]</a></div></summary><div class='docblock'><p>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.126/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></p>
}</pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>This structure tracks and event lifecycle, and is eventually sent to the logging system where its structured and written out to the current logging BE.</p>
</div></details><h2 id="fields" class="fields small-section-header">
Fields<a href="#fields" class="anchor"></a></h2><span id="structfield.level" class="structfield small-section-header"><a href="#structfield.level" class="anchor field"></a><code>level: <a class="primitive" href="https://doc.rust-lang.org/1.54.0/std/primitive.u32.html">u32</a></code></span><span id="structfield.uuid" class="structfield small-section-header"><a href="#structfield.uuid" class="anchor field"></a><code>uuid: <a class="struct" href="../prelude/struct.Uuid.html" title="struct kanidm::prelude::Uuid">Uuid</a></code></span><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><details class="rustdoc-toggle implementors-toggle" open><summary><div id="impl" class="impl has-srclink"><h3 class="code-header in-band">impl <a class="struct" href="struct.AuditScope.html" title="struct kanidm::audit::AuditScope">AuditScope</a></h3><a href="#impl" class="anchor"></a><a class="srclink" href="../../src/kanidm/audit.rs.html#408-544" title="goto source code">[src]</a></div></summary><div class="impl-items"><div id="method.new" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.new" class="fnname">new</a>(name: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.54.0/std/primitive.str.html">str</a>, eventid: <a class="struct" href="../prelude/struct.Uuid.html" title="struct kanidm::prelude::Uuid">Uuid</a>, level: <a class="enum" href="https://doc.rust-lang.org/1.54.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.54.0/std/primitive.u32.html">u32</a>&gt;) -&gt; Self</h4><a href="#method.new" class="anchor"></a><a class="srclink" href="../../src/kanidm/audit.rs.html#409-449" title="goto source code">[src]</a></div><div id="method.write_log" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.write_log" class="fnname">write_log</a>(self)</h4><a href="#method.write_log" class="anchor"></a><a class="srclink" href="../../src/kanidm/audit.rs.html#451-471" title="goto source code">[src]</a></div><div id="method.log_event" class="method has-srclink"><h4 class="code-header">pub fn <a href="#method.log_event" class="fnname">log_event</a>(&amp;mut self, tag: <a class="enum" href="enum.LogTag.html" title="enum kanidm::audit::LogTag">LogTag</a>, data: <a class="struct" href="https://doc.rust-lang.org/1.54.0/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>)</h4><a href="#method.log_event" class="anchor"></a><a class="srclink" href="../../src/kanidm/audit.rs.html#473-482" title="goto source code">[src]</a></div></div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-Serialize" class="impl has-srclink"><h3 class="code-header in-band">impl <a class="trait" href="https://docs.rs/serde/1.0.126/serde/ser/trait.Serialize.html" title="trait serde::ser::Serialize">Serialize</a> for <a class="struct" href="struct.AuditScope.html" title="struct kanidm::audit::AuditScope">AuditScope</a></h3><a href="#impl-Serialize" class="anchor"></a><a class="srclink" href="../../src/kanidm/audit.rs.html#392" title="goto source code">[src]</a></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.serialize" class="method trait-impl has-srclink"><h4 class="code-header">fn <a href="https://docs.rs/serde/1.0.126/serde/ser/trait.Serialize.html#tymethod.serialize" class="fnname">serialize</a>&lt;__S&gt;(&amp;self, __serializer: __S) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.54.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;__S::<a class="type" href="https://docs.rs/serde/1.0.126/serde/ser/trait.Serializer.html#associatedtype.Ok" title="type serde::ser::Serializer::Ok">Ok</a>, __S::<a class="type" href="https://docs.rs/serde/1.0.126/serde/ser/trait.Serializer.html#associatedtype.Error" title="type serde::ser::Serializer::Error">Error</a>&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;__S: <a class="trait" href="https://docs.rs/serde/1.0.126/serde/ser/trait.Serializer.html" title="trait serde::ser::Serializer">Serializer</a>,&nbsp;</span></h4><a href="#method.serialize" class="anchor"></a><a class="srclink" href="../../src/kanidm/audit.rs.html#392" title="goto source code">[src]</a></div></summary><div class='docblock'><p>Serialize this value into the given Serde serializer. <a href="https://docs.rs/serde/1.0.126/serde/ser/trait.Serialize.html#tymethod.serialize">Read more</a></p>
</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><div id="impl-RefUnwindSafe" class="impl has-srclink"><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/1.54.0/std/panic/trait.RefUnwindSafe.html" title="trait std::panic::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.AuditScope.html" title="struct kanidm::audit::AuditScope">AuditScope</a></h3><a href="#impl-RefUnwindSafe" class="anchor"></a></div><div id="impl-Send" class="impl has-srclink"><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/1.54.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.AuditScope.html" title="struct kanidm::audit::AuditScope">AuditScope</a></h3><a href="#impl-Send" class="anchor"></a></div><div id="impl-Sync" class="impl has-srclink"><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/1.54.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.AuditScope.html" title="struct kanidm::audit::AuditScope">AuditScope</a></h3><a href="#impl-Sync" class="anchor"></a></div><div id="impl-Unpin" class="impl has-srclink"><h3 class="code-header in-band">impl <a class="trait" href="https://doc.rust-lang.org/1.54.0/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.AuditScope.html" title="struct kanidm::audit::AuditScope">AuditScope</a></h3><a href="#impl-Unpin" class="anchor"></a></div><div id="impl-UnwindSafe" class="impl has-srclink"><h3 class="code-header in-band">impl !<a class="trait" href="https://doc.rust-lang.org/1.54.0/std/panic/trait.UnwindSafe.html" title="trait std::panic::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.AuditScope.html" title="struct kanidm::audit::AuditScope">AuditScope</a></h3><a href="#impl-UnwindSafe" class="anchor"></a></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-Any" class="impl has-srclink"><h3 class="code-header in-band">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.54.0/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.54.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,&nbsp;</span></h3><a href="#impl-Any" class="anchor"></a><a class="srclink" href="https://doc.rust-lang.org/1.54.0/src/core/any.rs.html#131-135" title="goto source code">[src]</a></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.type_id" class="method trait-impl has-srclink"><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/1.54.0/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.54.0/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4><a href="#method.type_id" class="anchor"></a><a class="srclink" href="https://doc.rust-lang.org/1.54.0/src/core/any.rs.html#132" title="goto source code">[src]</a></div></summary><div class='docblock'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/1.54.0/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-Borrow%3CT%3E" class="impl has-srclink"><h3 class="code-header in-band">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.54.0/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: ?<a class="trait" href="https://doc.rust-lang.org/1.54.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,&nbsp;</span></h3><a href="#impl-Borrow%3CT%3E" class="anchor"></a><a class="srclink" href="https://doc.rust-lang.org/1.54.0/src/core/borrow.rs.html#208-213" title="goto source code">[src]</a></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow" class="method trait-impl has-srclink"><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/1.54.0/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.54.0/std/primitive.reference.html">&amp;</a>T</h4><a href="#method.borrow" class="anchor"></a><a class="srclink" href="https://doc.rust-lang.org/1.54.0/src/core/borrow.rs.html#210" title="goto source code">[src]</a></div></summary><div class='docblock'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/1.54.0/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><div id="impl-BorrowMut%3CT%3E" class="impl has-srclink"><h3 class="code-header in-band">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.54.0/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: ?<a class="trait" href="https://doc.rust-lang.org/1.54.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,&nbsp;</span></h3><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><a class="srclink" href="https://doc.rust-lang.org/1.54.0/src/core/borrow.rs.html#216-220" title="goto source code">[src]</a></div></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><div id="method.borrow_mut" class="method trait-impl has-srclink"><h4 class="code-header">pub fn <a href="https://doc.rust-lang.org/1.54.0/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.54.0/std/primitive.reference.html">&amp;mut </a>T</h4><a href="#method.borrow_mut" class="anchor"></a><a class="srclink" href="https://doc.rust-lang.org/1.54.0/src/core/borrow.rs.html#217" title="goto source code">[src]</a></div></summary><div class='docblock'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/1.54.0/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>

View file

@ -1,5 +1,7 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `server` mod in crate `kanidm`."><meta name="keywords" content="rust, rustlang, rust-lang, server"><title>kanidm::idm::server - Rust</title><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled ><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled ><script id="default-settings"></script><script src="../../../storage.js"></script><script src="../../../crates.js"></script><noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="icon" type="image/svg+xml" href="../../../favicon.svg">
<link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png">
<link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><style type="text/css">#crate-search{background-image:url("../../../down-arrow.svg");}</style></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu" role="button">&#9776;</div><a href='../../../kanidm/index.html'><div class='logo-container rust-logo'><img src='../../../rust-logo.png' alt='logo'></div></a><h2 class="location">Module server</h2><div class="sidebar-elems"><div class="block items"><ul><li><a href="#structs">Structs</a></li><li><a href="#traits">Traits</a></li></ul></div><div id="sidebar-vars" data-name="server" data-ty="mod" data-relpath="./"></div><script defer src="./sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img src="../../../brush.svg" width="18" height="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img src="../../../wheel.svg" width="18" height="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class="fqn"><span class="in-band">Module <a href="../../index.html">kanidm</a>::<wbr><a href="../index.html">idm</a>::<wbr><a class="mod" href="#">server</a><button id="copy-path" onclick="copy_path(this)" title="copy path"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item import" title="Copy item import to clipboard"></button></span><span class="out-of-band"><span id="render-detail"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span><a class="srclink" href="../../../src/kanidm/idm/server.rs.html#1-3910" title="goto source code">[src]</a></span></h1><h2 id="structs" class="section-header"><a href="#structs">Structs</a></h2>
<table><tr class="module-item"><td><a class="struct" href="struct.IdmServer.html" title="kanidm::idm::server::IdmServer struct">IdmServer</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="struct" href="struct.IdmServerAuthTransaction.html" title="kanidm::idm::server::IdmServerAuthTransaction struct">IdmServerAuthTransaction</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="struct" href="struct.IdmServerDelayed.html" title="kanidm::idm::server::IdmServerDelayed struct">IdmServerDelayed</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="struct" href="struct.IdmServerProxyReadTransaction.html" title="kanidm::idm::server::IdmServerProxyReadTransaction struct">IdmServerProxyReadTransaction</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="struct" href="struct.IdmServerProxyWriteTransaction.html" title="kanidm::idm::server::IdmServerProxyWriteTransaction struct">IdmServerProxyWriteTransaction</a></td><td class="docblock-short"></td></tr></table><h2 id="traits" class="section-header"><a href="#traits">Traits</a></h2>
<link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><style type="text/css">#crate-search{background-image:url("../../../down-arrow.svg");}</style></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu" role="button">&#9776;</div><a href='../../../kanidm/index.html'><div class='logo-container rust-logo'><img src='../../../rust-logo.png' alt='logo'></div></a><h2 class="location">Module server</h2><div class="sidebar-elems"><div class="block items"><ul><li><a href="#structs">Structs</a></li><li><a href="#traits">Traits</a></li></ul></div><div id="sidebar-vars" data-name="server" data-ty="mod" data-relpath="./"></div><script defer src="./sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img src="../../../brush.svg" width="18" height="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../../settings.html" title="settings"><img src="../../../wheel.svg" width="18" height="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class="fqn"><span class="in-band">Module <a href="../../index.html">kanidm</a>::<wbr><a href="../index.html">idm</a>::<wbr><a class="mod" href="#">server</a><button id="copy-path" onclick="copy_path(this)" title="copy path"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item import" title="Copy item import to clipboard"></button></span><span class="out-of-band"><span id="render-detail"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span><a class="srclink" href="../../../src/kanidm/idm/server.rs.html#1-3905" title="goto source code">[src]</a></span></h1><h2 id="structs" class="section-header"><a href="#structs">Structs</a></h2>
<table><tr class="module-item"><td><a class="struct" href="struct.IdmServer.html" title="kanidm::idm::server::IdmServer struct">IdmServer</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="struct" href="struct.IdmServerAuthTransaction.html" title="kanidm::idm::server::IdmServerAuthTransaction struct">IdmServerAuthTransaction</a></td><td class="docblock-short"><p>Contains methods that require writes, but in the context of writing to the idm in memory structures (maybe the query server too). This is things like authentication.</p>
</td></tr><tr class="module-item"><td><a class="struct" href="struct.IdmServerDelayed.html" title="kanidm::idm::server::IdmServerDelayed struct">IdmServerDelayed</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="struct" href="struct.IdmServerProxyReadTransaction.html" title="kanidm::idm::server::IdmServerProxyReadTransaction struct">IdmServerProxyReadTransaction</a></td><td class="docblock-short"><p>This contains read-only methods, like getting users, groups and other structured content.</p>
</td></tr><tr class="module-item"><td><a class="struct" href="struct.IdmServerProxyWriteTransaction.html" title="kanidm::idm::server::IdmServerProxyWriteTransaction struct">IdmServerProxyWriteTransaction</a></td><td class="docblock-short"></td></tr></table><h2 id="traits" class="section-header"><a href="#traits">Traits</a></h2>
<table><tr class="module-item"><td><a class="trait" href="trait.IdmServerTransaction.html" title="kanidm::idm::server::IdmServerTransaction trait">IdmServerTransaction</a></td><td class="docblock-short"></td></tr></table></section><section id="search" class="content hidden"></section><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="kanidm" data-search-index-js="../../../search-index.js" data-search-js="../../../search.js"></div><script src="../../../main.js"></script></body></html>

View file

@ -1 +1 @@
initSidebarItems({"struct":[["IdmServer",""],["IdmServerAuthTransaction",""],["IdmServerDelayed",""],["IdmServerProxyReadTransaction",""],["IdmServerProxyWriteTransaction",""]],"trait":[["IdmServerTransaction",""]]});
initSidebarItems({"struct":[["IdmServer",""],["IdmServerAuthTransaction","Contains methods that require writes, but in the context of writing to the idm in memory structures (maybe the query server too). This is things like authentication."],["IdmServerDelayed",""],["IdmServerProxyReadTransaction","This contains read-only methods, like getting users, groups and other structured content."],["IdmServerProxyWriteTransaction",""]],"trait":[["IdmServerTransaction",""]]});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,4 +1,4 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Settings of Rustdoc"><meta name="keywords" content="rust, rustlang, rust-lang"><title>Rustdoc settings</title><link rel="stylesheet" type="text/css" href="./normalize.css"><link rel="stylesheet" type="text/css" href="./rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="./light.css" id="themeStyle"><link rel="stylesheet" type="text/css" href="./dark.css" disabled ><link rel="stylesheet" type="text/css" href="./ayu.css" disabled ><link rel="stylesheet" type="text/css" href="./settings.css" ><script id="default-settings"></script><script src="./storage.js"></script><script src="./crates.js"></script><noscript><link rel="stylesheet" href="./noscript.css"></noscript><link rel="icon" type="image/svg+xml" href="./favicon.svg">
<link rel="alternate icon" type="image/png" href="./favicon-16x16.png">
<link rel="alternate icon" type="image/png" href="./favicon-32x32.png"><style type="text/css">#crate-search{background-image:url("./down-arrow.svg");}</style></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu" role="button">&#9776;</div><a href='./pam_kanidm/index.html'><div class='logo-container rust-logo'><img src='./rust-logo.png' alt='logo'></div></a><h2 class="location">Settings</h2><div class="sidebar-elems"></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img src="./brush.svg" width="18" height="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="./settings.html" title="settings"><img src="./wheel.svg" width="18" height="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class="fqn"><span class="in-band">Rustdoc settings</span></h1><div class="settings"><div class="setting-line"><div class="title">Theme preferences</div><div class="sub-settings"><div class="setting-line"><label class="toggle"><input type="checkbox" id="use-system-theme" checked><span class="slider"></span></label><div>Use system theme</div></div><div class="setting-line"><div>Preferred dark theme</div><label class="select-wrapper"><select id="preferred-dark-theme" autocomplete="off"><option value="light" >light</option><option value="dark" selected>dark</option><option value="ayu" >ayu</option></select><img src="./down-arrow.svg" alt="Select item"></label></div><div class="setting-line"><div>Preferred light theme</div><label class="select-wrapper"><select id="preferred-light-theme" autocomplete="off"><option value="light" selected>light</option><option value="dark" >dark</option><option value="ayu" >ayu</option></select><img src="./down-arrow.svg" alt="Select item"></label></div></div>
</div><div class="setting-line"><label class="toggle"><input type="checkbox" id="auto-hide-large-items" checked><span class="slider"></span></label><div>Auto-hide item contents for large items.</div></div><div class="setting-line"><label class="toggle"><input type="checkbox" id="auto-hide-method-docs" ><span class="slider"></span></label><div>Auto-hide item methods' documentation</div></div><div class="setting-line"><label class="toggle"><input type="checkbox" id="auto-hide-trait-implementations" checked><span class="slider"></span></label><div>Auto-hide trait implementation documentation</div></div><div class="setting-line"><label class="toggle"><input type="checkbox" id="auto-collapse-implementors" checked><span class="slider"></span></label><div>Auto-hide implementors of a trait</div></div><div class="setting-line"><label class="toggle"><input type="checkbox" id="go-to-only-result" ><span class="slider"></span></label><div>Directly go to item in search if there is only one result</div></div><div class="setting-line"><label class="toggle"><input type="checkbox" id="line-numbers" ><span class="slider"></span></label><div>Show line numbers on code examples</div></div><div class="setting-line"><label class="toggle"><input type="checkbox" id="disable-shortcuts" ><span class="slider"></span></label><div>Disable keyboard shortcuts</div></div></div><script src="./settings.js"></script></section><section id="search" class="content hidden"></section><div id="rustdoc-vars" data-root-path="./" data-current-crate="pam_kanidm" data-search-index-js="./search-index.js" data-search-js="./search.js"></div><script src="./main.js"></script></body></html>
<link rel="alternate icon" type="image/png" href="./favicon-32x32.png"><style type="text/css">#crate-search{background-image:url("./down-arrow.svg");}</style></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu" role="button">&#9776;</div><a href='./nss_kanidm/index.html'><div class='logo-container rust-logo'><img src='./rust-logo.png' alt='logo'></div></a><h2 class="location">Settings</h2><div class="sidebar-elems"></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img src="./brush.svg" width="18" height="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="./settings.html" title="settings"><img src="./wheel.svg" width="18" height="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class="fqn"><span class="in-band">Rustdoc settings</span></h1><div class="settings"><div class="setting-line"><div class="title">Theme preferences</div><div class="sub-settings"><div class="setting-line"><label class="toggle"><input type="checkbox" id="use-system-theme" checked><span class="slider"></span></label><div>Use system theme</div></div><div class="setting-line"><div>Preferred dark theme</div><label class="select-wrapper"><select id="preferred-dark-theme" autocomplete="off"><option value="light" >light</option><option value="dark" selected>dark</option><option value="ayu" >ayu</option></select><img src="./down-arrow.svg" alt="Select item"></label></div><div class="setting-line"><div>Preferred light theme</div><label class="select-wrapper"><select id="preferred-light-theme" autocomplete="off"><option value="light" selected>light</option><option value="dark" >dark</option><option value="ayu" >ayu</option></select><img src="./down-arrow.svg" alt="Select item"></label></div></div>
</div><div class="setting-line"><label class="toggle"><input type="checkbox" id="auto-hide-large-items" checked><span class="slider"></span></label><div>Auto-hide item contents for large items.</div></div><div class="setting-line"><label class="toggle"><input type="checkbox" id="auto-hide-method-docs" ><span class="slider"></span></label><div>Auto-hide item methods' documentation</div></div><div class="setting-line"><label class="toggle"><input type="checkbox" id="auto-hide-trait-implementations" checked><span class="slider"></span></label><div>Auto-hide trait implementation documentation</div></div><div class="setting-line"><label class="toggle"><input type="checkbox" id="auto-collapse-implementors" checked><span class="slider"></span></label><div>Auto-hide implementors of a trait</div></div><div class="setting-line"><label class="toggle"><input type="checkbox" id="go-to-only-result" ><span class="slider"></span></label><div>Directly go to item in search if there is only one result</div></div><div class="setting-line"><label class="toggle"><input type="checkbox" id="line-numbers" ><span class="slider"></span></label><div>Show line numbers on code examples</div></div><div class="setting-line"><label class="toggle"><input type="checkbox" id="disable-shortcuts" ><span class="slider"></span></label><div>Disable keyboard shortcuts</div></div></div><script src="./settings.js"></script></section><section id="search" class="content hidden"></section><div id="rustdoc-vars" data-root-path="./" data-current-crate="nss_kanidm" data-search-index-js="./search-index.js" data-search-js="./search.js"></div><script src="./main.js"></script></body></html>

View file

@ -1216,7 +1216,6 @@
<span id="1214">1214</span>
<span id="1215">1215</span>
<span id="1216">1216</span>
<span id="1217">1217</span>
</pre><pre class="rust">
<span class="kw">use</span> <span class="ident">tokio::sync::mpsc::UnboundedSender</span> <span class="kw">as</span> <span class="ident">Sender</span>;
@ -1263,7 +1262,7 @@
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">QueryServerReadV1</span> {
<span class="ident">log</span>: <span class="ident">Sender</span><span class="op">&lt;</span><span class="ident">AuditScope</span><span class="op">&gt;</span>,
<span class="ident">log_level</span>: <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">u32</span><span class="op">&gt;</span>,
<span class="kw">pub</span> <span class="ident">log_level</span>: <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">u32</span><span class="op">&gt;</span>,
<span class="ident">idms</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">IdmServer</span><span class="op">&gt;</span>,
<span class="ident">ldap</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">LdapServer</span><span class="op">&gt;</span>,
}
@ -2392,11 +2391,10 @@
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">handle_ldaprequest</span>(
<span class="kw-2">&amp;</span><span class="self">self</span>,
<span class="ident">eventid</span>: <span class="ident">Uuid</span>,
<span class="kw-2">mut</span> <span class="ident">audit</span>: <span class="ident">AuditScope</span>,
<span class="ident">protomsg</span>: <span class="ident">LdapMsg</span>,
<span class="ident">uat</span>: <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">LdapBoundToken</span><span class="op">&gt;</span>,
) <span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">LdapResponseState</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">audit</span> <span class="op">=</span> <span class="ident">AuditScope::new</span>(<span class="string">&quot;ldap_request_message&quot;</span>, <span class="ident">eventid</span>, <span class="self">self</span>.<span class="ident">log_level</span>);
<span class="comment">/*
let res = lperf_op_segment!(
&amp;mut audit,

View file

@ -557,8 +557,6 @@
<span id="555">555</span>
<span id="556">556</span>
<span id="557">557</span>
<span id="558">558</span>
<span id="559">559</span>
</pre><pre class="rust">
<span class="kw">use</span> <span class="ident">std::fmt</span>;
<span class="comment">// use std::ptr;</span>
@ -950,9 +948,7 @@ macro_rules! try_audit {
}
}
<span class="comment">// This structure tracks and event lifecycle, and is eventually</span>
<span class="comment">// sent to the logging system where it&#39;s structured and written</span>
<span class="comment">// out to the current logging BE.</span>
<span class="doccomment">/// This structure tracks and event lifecycle, and is eventually sent to the logging system where it&#39;s structured and written out to the current logging BE.</span>
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Serialize</span>)]</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">AuditScope</span> {
<span class="comment">// vec of start/end points of various parts of the event?</span>

View file

@ -185,7 +185,15 @@
<span id="183">183</span>
<span id="184">184</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>
</pre><pre class="rust">
<span class="kw">use</span> <span class="kw">crate</span><span class="ident">::prelude::AuditScope</span>;
<span class="kw">use</span> <span class="kw">crate</span><span class="ident">::actors::v1_read::QueryServerReadV1</span>;
<span class="kw">use</span> <span class="kw">crate</span><span class="ident">::ldap</span>::{<span class="ident">LdapBoundToken</span>, <span class="ident">LdapResponseState</span>};
<span class="kw">use</span> <span class="ident">core::pin::Pin</span>;
@ -194,16 +202,12 @@
<span class="kw">use</span> <span class="ident">futures_util::sink::SinkExt</span>;
<span class="kw">use</span> <span class="ident">futures_util::stream::StreamExt</span>;
<span class="comment">// use ldap3_server::simple::*;</span>
<span class="comment">// use ldap3_server::proto::LdapMsg;</span>
<span class="kw">use</span> <span class="ident">ldap3_server::LdapCodec</span>;
<span class="comment">// use std::convert::TryFrom;</span>
<span class="kw">use</span> <span class="ident">std::marker::Unpin</span>;
<span class="kw">use</span> <span class="ident">std::net</span>;
<span class="kw">use</span> <span class="ident">std::str::FromStr</span>;
<span class="kw">use</span> <span class="ident">tokio::io</span>::{<span class="ident">AsyncRead</span>, <span class="ident">AsyncWrite</span>};
<span class="kw">use</span> <span class="ident">tokio::net::TcpListener</span>;
<span class="comment">// use tokio::sync::mpsc::{channel, Receiver, Sender};</span>
<span class="kw">use</span> <span class="ident">tokio_util::codec</span>::{<span class="ident">FramedRead</span>, <span class="ident">FramedWrite</span>};
<span class="kw">use</span> <span class="ident">uuid::Uuid</span>;
@ -223,19 +227,27 @@
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">client_process</span><span class="op">&lt;</span><span class="ident">W</span>: <span class="ident">AsyncWrite</span> <span class="op">+</span> <span class="ident">Unpin</span>, <span class="ident">R</span>: <span class="ident">AsyncRead</span> <span class="op">+</span> <span class="ident">Unpin</span><span class="op">&gt;</span>(
<span class="kw-2">mut</span> <span class="ident">r</span>: <span class="ident">FramedRead</span><span class="op">&lt;</span><span class="ident">R</span>, <span class="ident">LdapCodec</span><span class="op">&gt;</span>,
<span class="kw-2">mut</span> <span class="ident">w</span>: <span class="ident">FramedWrite</span><span class="op">&lt;</span><span class="ident">W</span>, <span class="ident">LdapCodec</span><span class="op">&gt;</span>,
<span class="ident">_paddr</span>: <span class="ident">net::SocketAddr</span>,
<span class="ident">client_address</span>: <span class="ident">net::SocketAddr</span>,
<span class="ident">qe_r_ref</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;static</span> <span class="ident">QueryServerReadV1</span>,
) {
<span class="comment">// This is a connected client session. we need to associate some state to the</span>
<span class="comment">// session</span>
<span class="comment">// This is a connected client session. we need to associate some state to the session</span>
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">session</span> <span class="op">=</span> <span class="ident">LdapSession::new</span>();
<span class="comment">// Now that we have the session we begin an event loop to process input OR</span>
<span class="comment">// we return.</span>
<span class="comment">// Now that we have the session we begin an event loop to process input OR we return.</span>
<span class="kw">while</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="prelude-val">Ok</span>(<span class="ident">protomsg</span>)) <span class="op">=</span> <span class="ident">r</span>.<span class="ident">next</span>().<span class="kw">await</span> {
<span class="comment">// Start the event</span>
<span class="kw">let</span> <span class="ident">eventid</span> <span class="op">=</span> <span class="ident">Uuid::new_v4</span>();
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">audit</span> <span class="op">=</span> <span class="ident">AuditScope::new</span>(<span class="string">&quot;ldap_request_message&quot;</span>, <span class="ident">eventid</span>, <span class="ident">qe_r_ref</span>.<span class="ident">log_level</span>);
<span class="kw">let</span> <span class="ident">uat</span> <span class="op">=</span> <span class="ident">session</span>.<span class="ident">uat</span>.<span class="ident">clone</span>();
<span class="kw">let</span> <span class="ident">qs_result</span> <span class="op">=</span> <span class="ident">qe_r_ref</span>.<span class="ident">handle_ldaprequest</span>(<span class="ident">eventid</span>, <span class="ident">protomsg</span>, <span class="ident">uat</span>).<span class="kw">await</span>;
<span class="comment">// I&#39;d really have liked to have put this near the [LdapResponseState::Bind] but due to the handing of `audit` it isn&#39;t possible due to borrows, etc.</span>
<span class="macro">lsecurity!</span>(
<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">audit</span>,
<span class="string">&quot;LDAP client: {}:{}&quot;</span>,
<span class="ident">client_address</span>.<span class="ident">ip</span>(),
<span class="ident">client_address</span>.<span class="ident">port</span>()
);
<span class="kw">let</span> <span class="ident">qs_result</span> <span class="op">=</span> <span class="ident">qe_r_ref</span>
.<span class="ident">handle_ldaprequest</span>(<span class="ident">eventid</span>, <span class="ident">audit</span>, <span class="ident">protomsg</span>, <span class="ident">uat</span>)
.<span class="kw">await</span>;
<span class="kw">match</span> <span class="ident">qs_result</span> {
<span class="prelude-val">Some</span>(<span class="ident">LdapResponseState::Unbind</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="kw">return</span>,
@ -279,6 +291,7 @@
}
}
<span class="doccomment">/// TLS LDAP Listener, hands off to [client_process]</span>
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">tls_acceptor</span>(
<span class="ident">listener</span>: <span class="ident">TcpListener</span>,
<span class="ident">tls_parms</span>: <span class="ident">SslAcceptor</span>,
@ -288,19 +301,18 @@
<span class="kw">match</span> <span class="ident">listener</span>.<span class="ident">accept</span>().<span class="kw">await</span> {
<span class="prelude-val">Ok</span>((<span class="ident">tcpstream</span>, <span class="ident">client_socket_addr</span>)) <span class="op">=</span><span class="op">&gt;</span> {
<span class="comment">// Start the event</span>
<span class="macro">info!</span>(<span class="string">&quot;LDAPS Connection from {:?}&quot;</span>, <span class="kw-2">&amp;</span><span class="ident">client_socket_addr</span>.<span class="ident">ip</span>());
<span class="comment">// From the parms we need to create an SslContext.</span>
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">tlsstream</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">Ssl::new</span>(<span class="ident">tls_parms</span>.<span class="ident">context</span>())
.<span class="ident">and_then</span>(<span class="op">|</span><span class="ident">tls_obj</span><span class="op">|</span> <span class="ident">SslStream::new</span>(<span class="ident">tls_obj</span>, <span class="ident">tcpstream</span>))
{
<span class="prelude-val">Ok</span>(<span class="ident">ta</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">ta</span>,
<span class="prelude-val">Err</span>(<span class="ident">e</span>) <span class="op">=</span><span class="op">&gt;</span> {
<span class="macro">error!</span>(<span class="string">&quot;tls setup error, continuing -&gt; {:?}&quot;</span>, <span class="ident">e</span>);
<span class="macro">error!</span>(<span class="string">&quot;LDAP TLS setup error, continuing -&gt; {:?}&quot;</span>, <span class="ident">e</span>);
<span class="kw">continue</span>;
}
};
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Err</span>(<span class="ident">e</span>) <span class="op">=</span> <span class="ident">SslStream::accept</span>(<span class="ident">Pin::new</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">tlsstream</span>)).<span class="kw">await</span> {
<span class="macro">error!</span>(<span class="string">&quot;tls accept error, continuing -&gt; {:?}&quot;</span>, <span class="ident">e</span>);
<span class="macro">error!</span>(<span class="string">&quot;LDAP TLS accept error, continuing -&gt; {:?}&quot;</span>, <span class="ident">e</span>);
<span class="kw">continue</span>;
};
<span class="kw">let</span> (<span class="ident">r</span>, <span class="ident">w</span>) <span class="op">=</span> <span class="ident">tokio::io::split</span>(<span class="ident">tlsstream</span>);
@ -309,18 +321,18 @@
<span class="ident">tokio::spawn</span>(<span class="ident">client_process</span>(<span class="ident">r</span>, <span class="ident">w</span>, <span class="ident">client_socket_addr</span>, <span class="ident">qe_r_ref</span>));
}
<span class="prelude-val">Err</span>(<span class="ident">e</span>) <span class="op">=</span><span class="op">&gt;</span> {
<span class="macro">error!</span>(<span class="string">&quot;acceptor error, continuing -&gt; {:?}&quot;</span>, <span class="ident">e</span>);
<span class="macro">error!</span>(<span class="string">&quot;LDAP acceptor error, continuing -&gt; {:?}&quot;</span>, <span class="ident">e</span>);
}
}
}
}
<span class="doccomment">/// Plain TCP LDAP Listener, hands off to [client_process]</span>
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">acceptor</span>(<span class="ident">listener</span>: <span class="ident">TcpListener</span>, <span class="ident">qe_r_ref</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;static</span> <span class="ident">QueryServerReadV1</span>) {
<span class="kw">loop</span> {
<span class="kw">match</span> <span class="ident">listener</span>.<span class="ident">accept</span>().<span class="kw">await</span> {
<span class="prelude-val">Ok</span>((<span class="ident">tcpstream</span>, <span class="ident">client_socket_addr</span>)) <span class="op">=</span><span class="op">&gt;</span> {
<span class="comment">// Start the event</span>
<span class="macro">info!</span>(<span class="string">&quot;LDAP Connection from {:?}&quot;</span>, <span class="kw-2">&amp;</span><span class="ident">client_socket_addr</span>.<span class="ident">ip</span>());
<span class="kw">let</span> (<span class="ident">r</span>, <span class="ident">w</span>) <span class="op">=</span> <span class="ident">tokio::io::split</span>(<span class="ident">tcpstream</span>);
<span class="kw">let</span> <span class="ident">r</span> <span class="op">=</span> <span class="ident">FramedRead::new</span>(<span class="ident">r</span>, <span class="ident">LdapCodec</span>);
<span class="kw">let</span> <span class="ident">w</span> <span class="op">=</span> <span class="ident">FramedWrite::new</span>(<span class="ident">w</span>, <span class="ident">LdapCodec</span>);
@ -328,7 +340,7 @@
<span class="ident">tokio::spawn</span>(<span class="ident">client_process</span>(<span class="ident">r</span>, <span class="ident">w</span>, <span class="ident">client_socket_addr</span>, <span class="ident">qe_r_ref</span>));
}
<span class="prelude-val">Err</span>(<span class="ident">e</span>) <span class="op">=</span><span class="op">&gt;</span> {
<span class="macro">error!</span>(<span class="string">&quot;acceptor error, continuing -&gt; {:?}&quot;</span>, <span class="ident">e</span>);
<span class="macro">error!</span>(<span class="string">&quot;LDAP acceptor error, continuing -&gt; {:?}&quot;</span>, <span class="ident">e</span>);
}
}
}
@ -358,12 +370,12 @@
<span class="kw">match</span> <span class="ident">opt_tls_params</span> {
<span class="prelude-val">Some</span>(<span class="ident">tls_params</span>) <span class="op">=</span><span class="op">&gt;</span> {
<span class="macro">info!</span>(<span class="string">&quot;Starting LDAPS interface ldaps://{} ...&quot;</span>, <span class="ident">address</span>);
<span class="macro">eprintln!</span>(<span class="string">&quot;Starting LDAPS interface ldaps://{} ...&quot;</span>, <span class="ident">address</span>);
<span class="kw">let</span> <span class="ident">tls_parms</span> <span class="op">=</span> <span class="ident">tls_params</span>.<span class="ident">build</span>();
<span class="ident">tokio::spawn</span>(<span class="ident">tls_acceptor</span>(<span class="ident">listener</span>, <span class="ident">tls_parms</span>, <span class="ident">qe_r_ref</span>));
}
<span class="prelude-val">None</span> <span class="op">=</span><span class="op">&gt;</span> {
<span class="macro">info!</span>(<span class="string">&quot;Starting LDAP interface ldap://{} ...&quot;</span>, <span class="ident">address</span>);
<span class="macro">eprintln!</span>(<span class="string">&quot;Starting LDAP interface ldap://{} ...&quot;</span>, <span class="ident">address</span>);
<span class="ident">tokio::spawn</span>(<span class="ident">acceptor</span>(<span class="ident">listener</span>, <span class="ident">qe_r_ref</span>));
}
}

View file

@ -3905,11 +3905,6 @@
<span id="3903">3903</span>
<span id="3904">3904</span>
<span id="3905">3905</span>
<span id="3906">3906</span>
<span id="3907">3907</span>
<span id="3908">3908</span>
<span id="3909">3909</span>
<span id="3910">3910</span>
</pre><pre class="rust">
<span class="kw">use</span> <span class="kw">crate</span><span class="ident">::credential::policy::CryptoPolicy</span>;
<span class="kw">use</span> <span class="kw">crate</span><span class="ident">::credential::softlock::CredSoftLock</span>;
@ -3994,32 +3989,29 @@
<span class="comment">// Do we need a softlock ticket?</span>
<span class="ident">softlock_ticket</span>: <span class="ident">Semaphore</span>,
<span class="ident">softlocks</span>: <span class="ident">HashMap</span><span class="op">&lt;</span><span class="ident">Uuid</span>, <span class="ident">CredSoftLock</span><span class="op">&gt;</span>,
<span class="comment">// Keep a set of inprogress mfa registrations</span>
<span class="doccomment">/// A set of in progress MFA registrations</span>
<span class="ident">mfareg_sessions</span>: <span class="ident">BptreeMap</span><span class="op">&lt;</span><span class="ident">Uuid</span>, <span class="ident">MfaRegSession</span><span class="op">&gt;</span>,
<span class="comment">// Need a reference to the query server.</span>
<span class="doccomment">/// Reference to the query server.</span>
<span class="ident">qs</span>: <span class="ident">QueryServer</span>,
<span class="comment">// The configured crypto policy for the IDM server. Later this could be transactional</span>
<span class="comment">// and loaded from the db similar to access. But today it&#39;s just to allow dynamic pbkdf2rounds</span>
<span class="doccomment">/// The configured crypto policy for the IDM server. Later this could be transactional and loaded from the db similar to access. But today it&#39;s just to allow dynamic pbkdf2rounds</span>
<span class="ident">crypto_policy</span>: <span class="ident">CryptoPolicy</span>,
<span class="ident">async_tx</span>: <span class="ident">Sender</span><span class="op">&lt;</span><span class="ident">DelayedAction</span><span class="op">&gt;</span>,
<span class="comment">// Our webauthn verifier/config</span>
<span class="doccomment">/// [Webauthn] verifier/config</span>
<span class="ident">webauthn</span>: <span class="ident">Webauthn</span><span class="op">&lt;</span><span class="ident">WebauthnDomainConfig</span><span class="op">&gt;</span>,
<span class="ident">pw_badlist_cache</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CowCell</span><span class="op">&lt;</span><span class="ident">HashSet</span><span class="op">&lt;</span><span class="ident">String</span><span class="op">&gt;</span><span class="op">&gt;</span><span class="op">&gt;</span>,
<span class="ident">oauth2rs</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">Oauth2ResourceServers</span><span class="op">&gt;</span>,
<span class="ident">uat_bundy_hmac</span>: <span class="ident">Arc</span><span class="op">&lt;</span><span class="ident">CowCell</span><span class="op">&lt;</span><span class="ident">HS512</span><span class="op">&gt;</span><span class="op">&gt;</span>,
}
<span class="doccomment">/// Contains methods that require writes, but in the context of writing to the idm in memory structures (maybe the query server too). This is things like authentication.</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">IdmServerAuthTransaction</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> {
<span class="comment">// Contains methods that require writes, but in the context of writing to</span>
<span class="comment">// the idm in memory structures (maybe the query server too). This is</span>
<span class="comment">// things like authentication</span>
<span class="ident">session_ticket</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">Semaphore</span>,
<span class="ident">sessions</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">BptreeMap</span><span class="op">&lt;</span><span class="ident">Uuid</span>, <span class="ident">AuthSession</span><span class="op">&gt;</span>,
<span class="ident">softlock_ticket</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">Semaphore</span>,
<span class="ident">softlocks</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">HashMap</span><span class="op">&lt;</span><span class="ident">Uuid</span>, <span class="ident">CredSoftLock</span><span class="op">&gt;</span>,
<span class="kw">pub</span> <span class="ident">qs_read</span>: <span class="ident">QueryServerReadTransaction</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span>,
<span class="comment">// thread/server id</span>
<span class="doccomment">/// Thread/Server ID</span>
<span class="ident">sid</span>: <span class="ident">Sid</span>,
<span class="comment">// For flagging eventual actions.</span>
<span class="ident">async_tx</span>: <span class="ident">Sender</span><span class="op">&lt;</span><span class="ident">DelayedAction</span><span class="op">&gt;</span>,
@ -4028,9 +4020,8 @@
<span class="ident">uat_bundy_hmac</span>: <span class="ident">CowCellReadTxn</span><span class="op">&lt;</span><span class="ident">HS512</span><span class="op">&gt;</span>,
}
<span class="doccomment">/// This contains read-only methods, like getting users, groups and other structured content.</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">IdmServerProxyReadTransaction</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> {
<span class="comment">// This contains read-only methods, like getting users, groups</span>
<span class="comment">// and other structured content.</span>
<span class="kw">pub</span> <span class="ident">qs_read</span>: <span class="ident">QueryServerReadTransaction</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span>,
<span class="ident">uat_bundy_hmac</span>: <span class="ident">CowCellReadTxn</span><span class="op">&lt;</span><span class="ident">HS512</span><span class="op">&gt;</span>,
<span class="ident">oauth2rs</span>: <span class="ident">Oauth2ResourceServersReadTransaction</span>,
@ -4040,7 +4031,7 @@
<span class="comment">// This does NOT take any read to the memory content, allowing safe</span>
<span class="comment">// qs operations to occur through this interface.</span>
<span class="kw">pub</span> <span class="ident">qs_write</span>: <span class="ident">QueryServerWriteTransaction</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span>,
<span class="comment">// Associate to an event origin ID, which has a TS and a UUID instead</span>
<span class="doccomment">/// Associate to an event origin ID, which has a TS and a UUID instead</span>
<span class="ident">mfareg_sessions</span>: <span class="ident">BptreeMapWriteTxn</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span>, <span class="ident">Uuid</span>, <span class="ident">MfaRegSession</span><span class="op">&gt;</span>,
<span class="ident">sid</span>: <span class="ident">Sid</span>,
<span class="ident">crypto_policy</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">CryptoPolicy</span>,
@ -7729,8 +7720,7 @@
.<span class="ident">target_to_account</span>(<span class="ident">audit</span>, <span class="kw-2">&amp;</span><span class="ident">UUID_ADMIN</span>)
.<span class="ident">expect</span>(<span class="string">&quot;account must exist&quot;</span>);
<span class="comment">// create some fake uats</span>
<span class="comment">// process them and see what claims fall out :D</span>
<span class="comment">// Create some fake UATs, then process them and see what claims fall out 🥳</span>
<span class="kw">let</span> <span class="ident">session_id</span> <span class="op">=</span> <span class="ident">uuid::Uuid::new_v4</span>();
<span class="comment">// For the different auth types, check that we get the correct claims:</span>