From 8d0b76f4592be0708af3cea57eb3cf193f5a3169 Mon Sep 17 00:00:00 2001
From: "Hahn Axel (hahn)" <axel.hahn@unibe.ch>
Date: Wed, 8 Jan 2025 12:04:58 +0100
Subject: [PATCH] update docs

---
 docs/30_Usage.md | 137 +++++++++++++++++++++++-----------------
 docs/style.css   | 161 +++++++++++++++++++++++++++++++++--------------
 2 files changed, 193 insertions(+), 105 deletions(-)

diff --git a/docs/30_Usage.md b/docs/30_Usage.md
index e998df7..f172c21 100644
--- a/docs/30_Usage.md
+++ b/docs/30_Usage.md
@@ -6,94 +6,113 @@ Verify a new setup (or changes in the config) with `./cm.sh selftest`.
 
 ## Show help
 
-Without any parameter it shows a help.
+Without -h or --help it shows a help.
 
 ```text
 
-./cm.sh 
+./cm.sh -h
 _______________________________________________________________________________
 
 
-                - - - ---===>>> CERT MANAGER <<<===--- - - -
+                - - - ---===>>> CERT MANAGER - v2025-01-08 <<<===--- - - -
 
 _______________________________________________________________________________
 
-DEBUG: Using Let's Encrypt STAGE environment ...
-DEBUG: You can test and mess around. Do not use certs in production.
-
 
 HELP
 
-The basic syntax is
-cm.sh [--trace] ACTION [FQDN] [ALIAS_1 [.. ALIAS_N]]
+Wrapper script for acme.sh to handle certificates.
+For automation you should use the "ensure" action that detects if a 
+certificate must be created, renewed or re-created.
 
-The ACTIONs for SINGLE certificate handlings are:
+📄 Source: <https://git-repo.iml.unibe.ch/iml-open-source/iml-certman>
+📜 License: GNU GPL 3.0
+📗 Docs: <https://os-docs.iml.unibe.ch/iml-certman/>
 
-        add FQDN [.. FQDN-N] 
-                create new certificate
-                The first FQDN is a hostname to generate the certificate for. 
-                Following multiple hostnames will be used as DNS aliases in the 
-                same certificate.
-                It updates files in ./certs
+SYNTAX:
 
-        ensure FQDN [.. FQDN-N] 
-                It ensures that a certificate with given aliases exists and is up to date.
-                This param is for simple usage in automation tools like Ansible or Puppet.
-                It is required to add all aliases as parameters what is unhandy for
-                direct usage on cli.
+    dev_cm.sh [OPTIONS] ACTION <FQDN> [<ALIASES>]
 
-                If the cert does not exist it will be created (see "add").
-                If fqdn and aliases are the same like in the certificate it performs a renew.
-                If fqdn and aliases differ:
-                - the current certificate will be rejected + deleted (see "delete")
-                - a new certificate will be added ()
+OPTIONS:
 
-        delete FQDN
-                delete all files of a given certificate
+    -a|--alias
+        Use http challenge with existing http server on port 80
+        Challenge file will be written into ../alias-dir/
 
-        renew FQDN
-                renew (an already added) certificate
-                and update files in ./certs
+    -f|--force
+        Force renew of certificate even if it is not due yet.
+        Use it carefully - remember the execution limits on Let's Encrypt.
 
-        show FQDN
-                show place of certificate data and show basic certificate data
-                (issuer, subject, aliases, ending date)
+    -t|--trace
+        the output additionally will be written into a tracelog file 
+        below ./log.
 
-        transfer FQDN
-                Transfer cert from acme.sh internal cache to our output dir again.
-                It is done during add or renew. With transfer command you can repeat it.
+    -v|--verbose
+        show debug infos on console.
+        Remark: for permanent usage set CM_showdebug=1 in inc_config.sh
 
-ACTIONs for ALL certs
+    -w|--webroot <DIR>
+        Use http challenge with existing http server on port 80
+        Challenge file will be written into given directory
 
-        list
-                list all certificates including creation and renew date
+The ACTIONs for SINGLE certificate handlings are:
 
-        list-old
-                list all certificates older 65 and older 90 days and exit.
-                Exitcodes:
-                  0 - all certs are up to date.
-                  1 - certificates to renew were found
-                  2 - outdatedt certificates were found
+    add <FQDN> [.. <FQDN-N>] 
+        create new certificate
+        The first FQDN is a hostname to generate the certificate for. 
+        Following multiple hostnames will be used as DNS aliases in the 
+        same certificate.
+        It updates files in 
 
-        renew-all
-                renew all certificates (fast mode - without --force)
-                and update files in ./certs
-                It is useful for a cronjob.
+    ensure <FQDN> [.. <FQDN-N>] 
+        It ensures that a certificate with given aliases exists and is up to date.
+        This param is for simple usage in automation tools like Ansible or Puppet.
+        It is required to add all aliases as parameters what is unhandy for
+        direct usage on cli.
 
-other ACTIONs
+        If the cert does not exist it will be created (see "add").
+        If fqdn and aliases are the same like in the certificate it performs a renew.
+        If fqdn and aliases differ:
+        - the current certificate will be rejected + deleted (see "delete")
+        - a new certificate will be added ()
+
+    delete <FQDN>
+        delete all files of a given certificate
+
+    renew <FQDN>
+        renew (an already added) certificate
+        and update files in 
 
-        selftest
-                check of health with current setup and requirements.
-                This command is helpful for initial setups.
+    show <FQDN>
+        show place of certificate data and show basic certificate data
+        (issuer, subject, aliases, ending date)
 
-OPTIONS
-        --trace (it must be the 1st parameter) 
-                the output additionally will be written into a tracelog file 
-                below ./log.
+    transfer <FQDN>
+        Transfer cert from acme.sh internal cache to our output dir again.
+        It is done during add or renew. With transfer command you can repeat it.
 
+ACTIONs for ALL certs
+
+    list
+        list all certificates including creation and renew date
+
+    list-old
+        list all certificates older 65 and older 90 days and exit.
+        Exitcodes:
+            0 - all certs are up to date.
+            1 - certificates to renew were found
+            2 - outdatedt certificates were found
+
+    renew-all
+        renew all certificates (fast mode - without --force)
+        and update files in 
+        It is useful for a cronjob.
+
+other ACTIONs
 
-DEBUG: Using Let's Encrypt STAGE environment ...
-DEBUG: You can test and mess around. Do not use certs in production.
+    selftest
+        check of health with current setup and requirements.
+        This command is helpful for initial setups.
 
 ```
 
diff --git a/docs/style.css b/docs/style.css
index 18463c7..90a0bc9 100644
--- a/docs/style.css
+++ b/docs/style.css
@@ -1,52 +1,59 @@
 /*
     override css elements of daux.io blue theme
-    version 2022-11-30
+    version 2024-10-31
 */
 :root {
     /* Axels Overrides */
-    --color-text: #222;
-    --link-color: #822;
-    --brand-color: var(--color-secondary);
+    --color-text: #234;
+    --link-color: #228;
+    --brand-color: var(--color-text);
     --brand-background: var(--body-background);
+    --code-tag-background-color: #f0f3f3;
+    --code-tag-border-color: #dee;
+    --code-tag-box-shadow: none;
     --hr-color: none;
+    --pager-background-color: #f8fafa;
+    --pager-border-color: none;
     --search-field-background: none;
     --search-field-border-color: none;
     --sidebar-background: var(--body-background);
     --sidebar-border-color: none;
-    --sidebar-link-active-background: #e8f4f6;
-    --sidebar-link-active-background: #eee;
+    --sidebar-link-active-background: #f0f4f6;
+    --toc--inner-border-color: none;
     /* Axels custom values */
-    --axel_bg-toc: var(--body-background);
+    --axel_bg-toc: #f8fafa;
     --axel_bg-toc-head: #f8f8f8;
     --axel_brand-background: none;
     --axel_brand-pre-background: rgb(255, 0, 51);
-    ;
     --axel_brand-pre-background-hover: rgb(255, 0, 51);
-    ;
     --axel_h1_header: none;
-    --axel_h1: #345;
+    --axel_h1: #111;
     --axel_h1-bg: none;
     --axel_h1-bottom: 3px solid none;
-    --axel_h2: #156;
-    --axel_h2-bg: #f8fafb;
-    --axel_h2-bottom: 2px solid #467;
+    --axel_h2: #222;
+    --axel_h2-bg: none;
+    --axel_h2-bottom: 0px solid #467;
     --axel_h2-hero-bottom: 2px solid #912;
-    --axel_h3: #278;
-    --axel_h3-bottom: 1px solid #ddd;
-    --axel_hero_bg: #f8f8f8;
+    --axel_h3: #333;
+    --axel_h3-bottom: 0px solid #ddd;
+    --axel_h4: #666;
+    --axel_h5: #888;
+    --axel_hero_bg: #faf8f6;
+    --axel_img-border: 2px dashed #ccc;
     --axel_nav-bg: #fcfcfc;
     --axel_nav-buttomborder: #ddd;
-    --axel_pre-background: #f8f8f8;
-    --axel-th-background: #d0e0e8;
+    --axel_pre-background: #faf8f6;
+    --axel-th-background: #e0e4e8;
     --axel-article-nav-border-top: 0px dotted #ddd;
 }
 
 .dark {
     /* Axels Overrides */
     --color-text: #c0c0c0;
-    --link-color: #b44;
+    --link-color: #88e;
     --brand-color: var(--color-text);
     --brand-background: var(--body-background);
+    --body-background: #101418;
     --hr-color: none;
     --code-tag-background-color_: #bcc;
     --search-field-background: none;
@@ -54,6 +61,7 @@
     --sidebar-background: var(--body-background);
     --sidebar-border-color: none;
     --sidebar-link-active-background: #333;
+    --sidebar-link-color: var(--link-color);
     /* Axels custom values */
     --axel_bg-toc: var(--body-background);
     --axel_bg-toc-head: #333;
@@ -63,16 +71,19 @@
     --axel_brand-pre-background-hover: rgb(255, 0, 51);
     ;
     --axel_h1_header: none;
-    --axel_h1: #777;
+    --axel_h1: #578;
     --axel_h1-bg: none;
     --axel_h1-bottom: none;
     --axel_h2: #467;
-    --axel_h2-bg: #202020;
-    --axel_h2-bottom: 2px solid #256;
+    --axel_h2-bg: none;
+    --axel_h2-bottom: 0px solid #256;
     --axel_h2-hero-bottom: 2px solid #712;
     --axel_h3: #589;
-    --axel_h3-bottom: 1px solid #333;
+    --axel_h3-bottom: 0px solid #333;
+    --axel_h4: #478;
+    --axel_h5: #278;
     --axel_hero_bg: #242424;
+    --axel_img-border: 2px dashed #555;
     --axel_nav-bg: #242424;
     --axel_nav-buttomborder: #555;
     --axel_pre-background: #bcc;
@@ -117,7 +128,25 @@ a.Brand {
 
 /* ---------- page content ---------- */
 .s-content {
-    padding-top: 1em;
+    padding-top: 6em;
+}
+
+/**
+h1::before{color: #aaa;content: 'h1: ';}
+h2::before{color: #aaa;content: 'h2: ';}
+h3::before{color: #aaa;content: 'h3: ';}
+h4::before{color: #aaa;content: 'h4: ';}
+h5::before{color: #aaa;content: 'h5: ';}
+h6::before{color: #aaa;content: 'h6: ';}
+*/
+h2::before{color: #888;content: ': : ';}
+h3::before{color: #ccc;content: '> ';}
+h4::before{color: #ccc;content: '_ ';}
+
+.s-content h1::before{
+    color: #f00;
+    content: 'FEHLER: Keine Überschrift 1 in einer Markdown-Datei für Daux verwenden! Mit H2 beginnen!';
+    content: '!! h1 !! ';
 }
 
 .s-content h1 {
@@ -133,20 +162,32 @@ a.Brand {
 .s-content h2 {
     background: var(--axel_h2-bg);
     color: var(--axel_h2);
-    font-size: 180%;
+    font-size: 190%;
     font-weight: bold;
     margin-top: 4em;
     border-bottom: var(--axel_h2-bottom);
 }
 
-h1:first-of-type {
+.Page__header > h1:first-of-type {
     margin-top: 0em;
+    margin-left: -1em;
+    padding-left: 1em;
+    position: fixed;
+    min-width: 100%;
+    background: var(--body-background);
+    box-shadow: 0 2em 1em var(--body-background);
 }
 
 h2:first-of-type {
     margin-top: 0em;
 }
 
+img{
+    border: var(--axel_img-border);
+    border-radius: 1.5em;
+    padding: 0.7em;
+}
+
 .s-content h3 {
     background: var(--axel_h3-bg);
     color: var(--axel_h3);
@@ -156,16 +197,37 @@ h2:first-of-type {
     border-bottom: var(--axel_h3-bottom);
 }
 
-.s-content h4 {
-    margin: 0;
-    font-size: 100%;
+
+.s-content > h4 {
+    color: var(--axel_h4);
+    font-size: 140%;
+    font-weight: bold;
+    margin: 2em 0;
+}
+
+.s-content > h5 {
+    color: var(--axel_h5);
+    font-size: 135%;
+    font-weight: bold;
+    margin: 2em 0;
+}
+
+.s-content .TableOfContentsContainer h4 {
+    margin: 1em 0;
+    font-size: 110%;
     text-align: center;
-    background-color: rgba(0, 0, 0, 0.05);
+    background-color: rgba(0, 0, 0, 0.1);
     padding: 0.3em;
+    font-weight: bold;
+    font-family: Arial;
+}
+ul.TableOfContents a{
+    color: var(--color-text);
 }
-
 .s-content pre {
     background: var(--axel_pre-background);
+    border-radius: 0.5em;
+    padding: 1rem;
 }
 
 /* FIX smaller fnt size in tables */
@@ -217,13 +279,6 @@ div.hero h2 {
 }
 
 /* ---------- TOC ---------- */
-@media(min-width:1700px) {
-    .TableOfContentsContainer {
-        position: fixed;
-        right: 2em;
-        top: 1em;
-    }
-}
 
 .TableOfContentsContainer {
     background-color: var(--axel_bg-toc);
@@ -233,14 +288,18 @@ div.hero h2 {
 .s-content .TableOfContentsContainer h4 {
     background-color: var(--axel_bg-toc-head);
     border-top-left-radius: 1em;
+    border-bottom: 2px solid var(--axel_bg-toc-bottom-border);
     font-size: 1.1em;
     margin: 0;
-    padding: 0;
+    padding: 0.3em;
+    display: none;
 }
 
 .TableOfContentsContainer__content {
-    border-width: 1px;
+    border-width: 0px;
     font-size: 0.5em;
+    height: inherit; 
+    overflow: auto;
 }
 
 ul.TableOfContents ul {
@@ -248,20 +307,30 @@ ul.TableOfContents ul {
     padding-left: 1em;
 }
 
+.TableOfContents a:hover{
+    text-decoration: underline;
+}
+
+@media(min-width:1700px) {
+    .TableOfContentsContainer {
+        background: none;
+        position: fixed;
+        right: 2em;
+        top: 4em;
+        height: 90%;
+    }
+}
+
 /* ----- Icons on links --- */
 
 .EditOn a::before{
     content: '✏️ ';
 }
 
-.Links a[href^="https://github.com/"]::before {
-    content: '🌐 ';
-}
-
-.Links a[href^="https://git-repo.iml.unibe.ch/"]::before {
+.Links a::before {
     content: '🌐 ';
 }
 
 .Links a[href^="https://os-docs.iml.unibe.ch"]::before {
     content: '📗 ';
-}
\ No newline at end of file
+}
-- 
GitLab