kanidm/docs/v1.1.0-alpha/rustdoc/kanidmd_lib/index.html

43 lines
16 KiB
HTML
Raw Normal View History

<!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="The Kanidmd server library. This implements all of the internal components of the server which is used to process authentication, store identities and enforce access controls."><meta name="keywords" content="rust, rustlang, rust-lang, kanidmd_lib"><title>kanidmd_lib - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Semibold.ttf.woff2"><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="../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../dark.css" disabled><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../storage.js"></script><script defer src="../crates.js"></script><script defer src="../main.js"></script><noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../favicon.svg"></head><body class="rustdoc mod crate"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button><a class="sidebar-logo" href="../kanidmd_lib/index.html"><div class="logo-container"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></div></a><h2 class="location"></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../kanidmd_lib/index.html"><div class="logo-container"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></div></a><h2 class="location"><a href="#">Crate kanidmd_lib</a></h2><div class="sidebar-elems"><div class="block"><ul><li class="version">Version 1.1.0-alpha.11-dev</li><li><a id="all-types" href="all.html">All Items</a></li></ul></div><section><div class="block"><ul><li><a href="#modules">Modules</a></li><li><a href="#macros">Macros</a></li></ul></div></section></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../kanidmd_lib/index.html"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></a><nav class="sub"><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><button type="button">?</button></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../wheel.svg"></a></div></div></form></nav></div><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn"><span class="in-band">Crate <a class="mod" href="#">kanidmd_lib</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../src/kanidmd_lib/lib.rs.html#1-97">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></
which is used to process authentication, store identities and enforce access controls.</p>
</div></details><h2 id="modules" class="small-section-header"><a href="#modules">Modules</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="mod" href="be/index.html" title="kanidmd_lib::be mod">be</a></div><div class="item-right docblock-short"><p>The backend. This contains the “low level” storage and query code, which is
implemented as a json-like kv document database. This has no rules about content
of the server, which are all enforced at higher levels. The role of the backend
is to persist content safely to disk, load that content, and execute queries
utilising indexes in the most effective way possible.</p>
</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="constants/index.html" title="kanidmd_lib::constants mod">constants</a></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="credential/index.html" title="kanidmd_lib::credential mod">credential</a></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="entry/index.html" title="kanidmd_lib::entry mod">entry</a></div><div class="item-right docblock-short"><p>Entries are the base unit of object storage in the server. This is one of the three foundational
concepts along with <a href="../filter/index.html"><code>filter</code></a>s and <a href="../schema/index.html"><code>schema</code></a> that everything else builds upon.</p>
</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="event/index.html" title="kanidmd_lib::event mod">event</a></div><div class="item-right docblock-short"><p>An <code>event</code> is a self contained module of data, that contains all of the
required information for any operation to proceed. While there are many
types of potential events, they all eventually lower to one of:</p>
</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="filter/index.html" title="kanidmd_lib::filter mod">filter</a></div><div class="item-right docblock-short"><p><a href="struct.Filter.html"><code>Filter</code></a>s are one of the three foundational concepts of the design in kanidm.
They are used in nearly every aspect of the server to provide searching of
datasets and assertion of entry properties.</p>
</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="identity/index.html" title="kanidmd_lib::identity mod">identity</a></div><div class="item-right docblock-short"><p>Contains structures related to the Identity that initiated an <code>Event</code> in the
server. Generally this Identity is what will have access controls applied to
and this provides the set of <code>Limits</code> to confine how many resources that the
identity may consume during operations to prevent denial-of-service.</p>
</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="idm/index.html" title="kanidmd_lib::idm mod">idm</a></div><div class="item-right docblock-short"><p>The Identity Management components that are layered ontop of the <a href="server/struct.QueryServer.html">QueryServer</a>. These allow
rich and expressive events and transformations that are lowered into the correct/relevant
actions in the <a href="server/struct.QueryServer.html">QueryServer</a>. Generally this is where “Identity Management” policy and code
is implemented.</p>
</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="ldap/index.html" title="kanidmd_lib::ldap mod">ldap</a></div><div class="item-right docblock-short"><p>LDAP specific operations handling components. This is where LDAP operations
are sent to for processing.</p>
</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="macros/index.html" title="kanidmd_lib::macros mod">macros</a></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="modify/index.html" title="kanidmd_lib::modify mod">modify</a></div><div class="item-right docblock-short"><p>Modification expressions and validation. This is how <code>ModifyEvents</code> store and
express the series of Modifications that should be applied. These are expressed
as “states” on what attribute-values should appear as within the <code>Entry</code></p>
</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="prelude/index.html" title="kanidmd_lib::prelude mod">prelude</a></div><div class="item-right docblock-short"><p>A prelude of imports that should be imported by all other Kanidm modules to
help make imports cleaner.</p>
</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="schema/index.html" title="kanidmd_lib::schema mod">schema</a></div><div class="item-right docblock-short"><p><a href="struct.Schema.html"><code>Schema</code></a> is one of the foundational concepts of the server. It provides a
set of rules to enforce that <a href="../entry/index.html"><code>Entries</code></a> avas must be compliant to, to be
considered valid for commit to the database. This allows us to provide
requirements and structure as to what an <a href="../entry/index.html"><code>Entry</code></a> must have and may contain
which enables many other parts to function.</p>
</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="server/index.html" title="kanidmd_lib::server mod">server</a></div><div class="item-right docblock-short"><p><code>server</code> contains the query server, which is the main high level construction
to coordinate queries and operations in the server.</p>
</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="status/index.html" title="kanidmd_lib::status mod">status</a></div><div class="item-right docblock-short"><p>An actor that shows the servers current status and statistics. (TODO).</p>
</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="testkit/index.html" title="kanidmd_lib::testkit mod">testkit</a></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="utils/index.html" title="kanidmd_lib::utils mod">utils</a></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="value/index.html" title="kanidmd_lib::value mod">value</a></div><div class="item-right docblock-short"><p>Inside an entry, the key-value pairs are stored in these <a href="value/enum.Value.html" title="Value"><code>Value</code></a> types. The components of
the <a href="value/enum.Value.html" title="Value"><code>Value</code></a> module allow storage and transformation of various types of input into strongly
typed values, allows their comparison, filtering and more. It also has the code for serialising
these into a form for the backend that can be persistent into the <a href="be/struct.Backend.html"><code>Backend</code></a>.</p>
</div></div><div class="item-row"><div class="item-left module-item"><a class="mod" href="valueset/index.html" title="kanidmd_lib::valueset mod">valueset</a></div><div class="item-right docblock-short"></div></div></div><h2 id="macros" class="small-section-header"><a href="#macros">Macros</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="macro" href="macro.btreemap.html" title="kanidmd_lib::btreemap macro">btreemap</a></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left module-item"><a class="macro" href="macro.btreeset.html" title="kanidmd_lib::btreeset macro">btreeset</a></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left module-item"><a class="macro" href="macro.entry_init.html" title="kanidmd_lib::entry_init macro">entry_init</a></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left module-item"><a class="macro" href="macro.f_and.html" title="kanidmd_lib::f_and macro">f_and</a></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left module-item"><a class="macro" href="macro.f_inc.html" title="kanidmd_lib::f_inc macro">f_inc</a></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left module-item"><a class="macro" href="macro.f_or.html" title="kanidmd_lib::f_or macro">f_or</a></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left module-item"><a class="macro" href="macro.filter.html" title="kanidmd_lib::filter macro">filter</a></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left module-item"><a class="macro" href="macro.filter_all.html" title="kanidmd_lib::filter_all macro">filter_all</a></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left module-item"><a class="macro" href="macro.filter_rec.html" title="kanidmd_lib::filter_rec macro">filter_rec</a></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left module-item"><a class="macro" href="macro.mergemaps.html" title="kanidmd_lib::mergemaps macro">mergemaps</a></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left module-item"><a class="macro" href="macro.mergesets.html" title="kanidmd_lib::mergesets macro">mergesets</a></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left module-item"><a class="macro" href="macro.modlist.html" title="kanidmd_lib::modlist macro">modlist</a></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left module-item"><a class="macro" href="macro.smolset.html" title="kanidmd_lib::smolset macro">smolset</a></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left module-item"><a class="macro" href="macro.vs_bool.html" title="kanidmd_lib::vs_bool macro">vs_bool</a></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left module-item"><a class="macro" href="macro.vs_cid.html" title="kanidmd_lib::vs_cid macro">vs_cid</a></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left module-item"><a class="macro" href="macro.vs_iname.html" title="kanidmd_lib::vs_iname macro">vs_iname</a></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left module-item"><a class="macro" href="macro.vs_index.html" title="kanidmd_lib::vs_index macro">vs_index</a></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left module-item"><a class="macro" href="macro.vs_iutf8.html" title="kanidmd_lib::vs_iutf8 macro">vs_iutf8</a></div><div class="item-right docblock-short"></div></div><div class="item-row"><div class="item-left module-item"><a class="macro" href="macro.vs_ref