Compare commits
No commits in common. "stage" and "dist-prod" have entirely different histories.
|
|
@ -1,63 +0,0 @@
|
|||
on:
|
||||
push:
|
||||
branches:
|
||||
- stage
|
||||
- prod
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: docker
|
||||
#environment: ${{ env.FORGEJO_REF_NAME }}
|
||||
|
||||
container:
|
||||
image: node:22
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Cache node modules
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ~/.npm
|
||||
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-node-
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Build Astro project
|
||||
run: npm run build
|
||||
|
||||
- name: Deploy dist to dist-${{ env.FORGEJO_REF_NAME }}
|
||||
run: |
|
||||
git config user.name "forgejo-actions[bot]"
|
||||
git config user.email "forgejo-actions[bot]@users.noreply.local"
|
||||
|
||||
git checkout --orphan temp
|
||||
git rm -rf .
|
||||
|
||||
git add dist
|
||||
git commit -m "Update dist for ${{ env.FORGEJO_REF_NAME }}"
|
||||
|
||||
git push \
|
||||
"https://x-access-token:${{ secrets.FORGEJO_TOKEN }}@git.workaround.org/${{ github.repository }}.git" \
|
||||
temp:dist-${{ env.FORGEJO_REF_NAME }} \
|
||||
--force
|
||||
|
||||
- name: Trigger deployment webhook
|
||||
env:
|
||||
DEPLOY_WEBHOOK: ${{ secrets.COOLIFY_DEPLOY_WEBHOOK }}
|
||||
DEPLOY_TOKEN: ${{ secrets.COOLIFY_DEPLOY_TOKEN }}
|
||||
run: |
|
||||
if [ "${{ env.FORGEJO_REF_NAME }}" = "stage" ]; then
|
||||
DEPLOY_WEBHOOK="${{ secrets.COOLIFY_DEPLOY_WEBHOOK_STAGE }}"
|
||||
DEPLOY_TOKEN="${{ secrets.COOLIFY_DEPLOY_TOKEN_STAGE }}"
|
||||
else
|
||||
DEPLOY_WEBHOOK="${{ secrets.COOLIFY_DEPLOY_WEBHOOK_PROD }}"
|
||||
DEPLOY_TOKEN="${{ secrets.COOLIFY_DEPLOY_TOKEN_PROD }}"
|
||||
fi
|
||||
|
||||
curl -v "$DEPLOY_WEBHOOK" \
|
||||
--header "Authorization: Bearer $DEPLOY_TOKEN"
|
||||
22
.gitignore
vendored
|
|
@ -1,22 +0,0 @@
|
|||
# build output
|
||||
dist/
|
||||
# generated types
|
||||
.astro/
|
||||
|
||||
# dependencies
|
||||
node_modules/
|
||||
|
||||
# logs
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
|
||||
|
||||
# environment variables
|
||||
.env
|
||||
.env.production
|
||||
|
||||
# macOS-specific files
|
||||
.DS_Store
|
||||
drawio/.$big-picture.drawio.bkp
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
{
|
||||
"tabWidth": 2,
|
||||
"useTabs": false,
|
||||
"printWidth": 120,
|
||||
"proseWrap": "always"
|
||||
}
|
||||
4
.vscode/extensions.json
vendored
|
|
@ -1,4 +0,0 @@
|
|||
{
|
||||
"recommendations": ["astro-build.astro-vscode"],
|
||||
"unwantedRecommendations": []
|
||||
}
|
||||
11
.vscode/launch.json
vendored
|
|
@ -1,11 +0,0 @@
|
|||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"command": "./node_modules/.bin/astro dev",
|
||||
"name": "Development server",
|
||||
"request": "launch",
|
||||
"type": "node-terminal"
|
||||
}
|
||||
]
|
||||
}
|
||||
9
.vscode/settings.json
vendored
|
|
@ -1,9 +0,0 @@
|
|||
{
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||
"[javascript]": {
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||
},
|
||||
"[astro]": {
|
||||
"editor.defaultFormatter": "astro-build.astro-vscode"
|
||||
}
|
||||
}
|
||||
30
README.md
|
|
@ -1,30 +0,0 @@
|
|||
# ISPmail guide
|
||||
|
||||
This repository contains the ISPmail guide as found on workaround.org.
|
||||
|
||||
The web site is built the static site generator [Starlight](https://starlight.astro.build) which creates beautiful
|
||||
documentation with table of contents, a search function and customizable widgets.
|
||||
|
||||
The illustrations were created using DrawIO. The flip-book-style diagrams on the _big picture_ page were created using:
|
||||
|
||||
- https://github.com/pascal-brand38/astro-splide
|
||||
- https://pascal-brand38.github.io/astro-dev/packages/astro-splide/
|
||||
- https://splidejs.com/guides/options/
|
||||
|
||||
## Contributing
|
||||
|
||||
Feel free to clone this repository (the _prod_ branch) and make changes. You will need NodeJS to create the HTML from
|
||||
the sources:
|
||||
|
||||
```sh
|
||||
apt install nodejs
|
||||
npm i
|
||||
npm run dev
|
||||
```
|
||||
|
||||
Merge requests are always welcome. Typo fixes and rephrasing are always welcome because I am not a native english
|
||||
speaker. If you want to contribute or change larger sections please talk to me first.
|
||||
|
||||
Or just create an _issue_ here on Github so that I know what needs fixing.
|
||||
|
||||
…[Christoph](mailto:ispmail@christoph-haas.de)
|
||||
|
|
@ -1,84 +0,0 @@
|
|||
// @ts-check
|
||||
import { defineConfig } from "astro/config";
|
||||
import starlight from "@astrojs/starlight";
|
||||
import sitemap from "@astrojs/sitemap";
|
||||
import remarkSmartypants from "remark-smartypants";
|
||||
|
||||
// https://astro.build/config
|
||||
export default defineConfig({
|
||||
site: "https://workaround.org",
|
||||
redirects: {
|
||||
"/ispmail-trxie/imap/": "/ispmail-trixie/imap/",
|
||||
"/ispmail-trxie/anti-spoofing-dkim-spf": "/ispmail-trixie/anti-spoofing-dkim-spf",
|
||||
"/ispmail-trxie/catch-all": "/ispmail-trixie/catch-all",
|
||||
"/ispmail-trxie/quotas": "/ispmail-trixie/quotas",
|
||||
"/ispmail-trxie/going-live": "/ispmail-trixie/going-live",
|
||||
},
|
||||
integrations: [
|
||||
starlight({
|
||||
head: [
|
||||
{
|
||||
tag: "script",
|
||||
attrs: {
|
||||
src: "https://rybbit.workaround.org/api/script.js",
|
||||
"data-site-id": "1",
|
||||
async: true,
|
||||
defer: true,
|
||||
},
|
||||
},
|
||||
],
|
||||
expressiveCode: {
|
||||
frames: {
|
||||
removeCommentsWhenCopyingTerminalFrames: false, // keep the commented lines when copying shell snippets
|
||||
},
|
||||
},
|
||||
lastUpdated: true,
|
||||
title: "ISPmail Guide",
|
||||
social: [
|
||||
{ icon: "seti:git", label: "Git", href: "https://git.workaround.org/chaas/ispmail-workaround-org" },
|
||||
{ icon: "matrix", label: "Matrix", href: "https://riot.im/app/#/room/#ispmail:matrix.org" },
|
||||
{
|
||||
icon: "rss",
|
||||
label: "Feed",
|
||||
href: "https://comentario.workaround.org/api/rss/comments?domain=0f111a27-fbfa-48af-8beb-ab12e612d92f",
|
||||
},
|
||||
],
|
||||
// https://expressive-code.com/key-features/word-wrap/#configuration
|
||||
components: {
|
||||
Footer: "./src/components/Footer.astro",
|
||||
Banner: "./src/components/Banner.astro",
|
||||
},
|
||||
customCss: ["./src/styles/custom.css"],
|
||||
sidebar: [
|
||||
{
|
||||
label: "ISPmail for Debian 13",
|
||||
// slug: "ispmail-trixie",
|
||||
autogenerate: { directory: "ispmail-trixie" },
|
||||
},
|
||||
{
|
||||
label: "ISPmail for Debian 12",
|
||||
// slug: "ispmail-bookworm",
|
||||
autogenerate: { directory: "ispmail-bookworm" },
|
||||
},
|
||||
{
|
||||
label: "Misc articles",
|
||||
autogenerate: { directory: "articles" },
|
||||
},
|
||||
],
|
||||
logo: {
|
||||
light: "./src/assets/logo.svg",
|
||||
dark: "./src/assets/logo-dark.svg",
|
||||
replacesTitle: true,
|
||||
},
|
||||
}),
|
||||
sitemap(),
|
||||
],
|
||||
|
||||
markdown: {
|
||||
remarkPlugins: [
|
||||
// remove the substitution of -- to –
|
||||
// @ts-ignore
|
||||
[remarkSmartypants, { dashes: false }],
|
||||
],
|
||||
},
|
||||
});
|
||||
56
dist/404.html
vendored
Normal file
1
dist/_astro/MobileTableOfContents.astro_astro_type_script_index_0_lang.C181hMzK.js
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
import{S as r}from"./TableOfContents.astro_astro_type_script_index_0_lang.CKWWgpjV.js";class c extends r{set current(e){super.current=e;const t=this.querySelector(".display-current");t&&(t.textContent=e.textContent)}constructor(){super();const e=this.querySelector("details");if(!e)return;const t=()=>{e.open=!1};e.querySelectorAll("a").forEach(s=>{s.addEventListener("click",t)}),window.addEventListener("click",s=>{e.contains(s.target)||t()}),window.addEventListener("keydown",s=>{if(s.key==="Escape"&&e.open){const o=e.contains(document.activeElement);if(t(),o){const n=e.querySelector("summary");n&&n.focus()}}})}}customElements.define("mobile-starlight-toc",c);
|
||||
1
dist/_astro/Search.astro_astro_type_script_index_0_lang.cjYDvRdi.js
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
const y="modulepreload",w=function(f){return"/"+f},g={},S=function(m,l,c){let h=Promise.resolve();if(l&&l.length>0){let o=function(n){return Promise.all(n.map(a=>Promise.resolve(a).then(r=>({status:"fulfilled",value:r}),r=>({status:"rejected",reason:r}))))};document.getElementsByTagName("link");const t=document.querySelector("meta[property=csp-nonce]"),u=t?.nonce||t?.getAttribute("nonce");h=o(l.map(n=>{if(n=w(n),n in g)return;g[n]=!0;const a=n.endsWith(".css"),r=a?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${n}"]${r}`))return;const e=document.createElement("link");if(e.rel=a?"stylesheet":y,a||(e.as="script"),e.crossOrigin="",e.href=n,u&&e.setAttribute("nonce",u),document.head.appendChild(e),a)return new Promise((i,s)=>{e.addEventListener("load",i),e.addEventListener("error",()=>s(new Error(`Unable to preload CSS for ${n}`)))})}))}function d(o){const t=new Event("vite:preloadError",{cancelable:!0});if(t.payload=o,window.dispatchEvent(t),!t.defaultPrevented)throw o}return h.then(o=>{for(const t of o||[])t.status==="rejected"&&d(t.reason);return m().catch(d)})},E={ranking:{pageLength:.1,termFrequency:.1,termSaturation:2,termSimilarity:9}};class v extends HTMLElement{constructor(){super();const m=this.querySelector("button[data-open-modal]"),l=this.querySelector("button[data-close-modal]"),c=this.querySelector("dialog"),h=this.querySelector(".dialog-frame"),d=e=>{("href"in(e.target||{})||document.body.contains(e.target)&&!h.contains(e.target))&&t()},o=e=>{c.showModal(),document.body.toggleAttribute("data-search-modal-open",!0),this.querySelector("input")?.focus(),e?.stopPropagation(),window.addEventListener("click",d)},t=()=>c.close();m.addEventListener("click",o),m.disabled=!1,l.addEventListener("click",t),c.addEventListener("close",()=>{document.body.toggleAttribute("data-search-modal-open",!1),window.removeEventListener("click",d)}),window.addEventListener("keydown",e=>{(e.metaKey===!0||e.ctrlKey===!0)&&e.key==="k"&&(c.open?t():o(),e.preventDefault())});let u={};try{u=JSON.parse(this.dataset.translations||"{}")}catch{}const r=this.dataset.stripTrailingSlash!==void 0?e=>e.replace(/(.)\/(#.*)?$/,"$1$2"):e=>e;window.addEventListener("DOMContentLoaded",()=>{(window.requestIdleCallback||(i=>setTimeout(i,1)))(async()=>{const{PagefindUI:i}=await S(async()=>{const{PagefindUI:s}=await import("./ui-core.D_Lfcn_I.js");return{PagefindUI:s}},[]);new i({...E,element:"#starlight__search",baseUrl:"/",bundlePath:"/".replace(/\/$/,"")+"/pagefind/",showImages:!1,translations:u,showSubResults:!0,processResult:s=>{s.url=r(s.url),s.sub_results=s.sub_results.map(p=>(p.url=r(p.url),p))}})})})}}customElements.define("site-search",v);export{S as _};
|
||||
6
dist/_astro/Splide.astro_astro_type_script_index_0_lang.Ci91lVEa.js
vendored
Normal file
1
dist/_astro/TableOfContents.astro_astro_type_script_index_0_lang.CKWWgpjV.js
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
const g="_top";class f extends HTMLElement{constructor(){super(),this._current=this.querySelector('a[aria-current="true"]'),this.minH=parseInt(this.dataset.minH||"2",10),this.maxH=parseInt(this.dataset.maxH||"3",10),this.onIdle=e=>(window.requestIdleCallback||(o=>setTimeout(o,1)))(e),this.init=()=>{const e=[...this.querySelectorAll("a")],o=t=>{if(t instanceof HTMLHeadingElement){if(t.id===g)return!0;const s=t.tagName[1];if(s){const n=parseInt(s,10);if(n>=this.minH&&n<=this.maxH)return!0}}return!1},i=t=>{if(!t)return null;const s=t;for(;t;){if(o(t))return t;for(t=t.previousElementSibling;t?.lastElementChild;)t=t.lastElementChild;const n=i(t);if(n)return n}return i(s.parentElement)},c=t=>{for(const{isIntersecting:s,target:n}of t){if(!s)continue;const l=i(n);if(!l)continue;const m=e.find(d=>d.hash==="#"+encodeURIComponent(l.id));if(m){this.current=m;break}}},a=document.querySelectorAll("main [id], main [id] ~ *, main .content > *");let r;const u=()=>{r||(r=new IntersectionObserver(c,{rootMargin:this.getRootMargin()}),a.forEach(t=>r.observe(t)))};u();let h;window.addEventListener("resize",()=>{r&&(r.disconnect(),r=void 0),clearTimeout(h),h=setTimeout(()=>this.onIdle(u),200)})},this.onIdle(()=>this.init())}set current(e){e!==this._current&&(this._current&&this._current.removeAttribute("aria-current"),e.setAttribute("aria-current","true"),this._current=e)}getRootMargin(){const e=document.querySelector("header")?.getBoundingClientRect().height||0,o=this.querySelector("summary")?.getBoundingClientRect().height||0,i=e+o+32,c=i+53,a=document.documentElement.clientHeight;return`-${i}px 0% ${c-a}px`}}customElements.define("starlight-toc",f);export{f as S};
|
||||
BIN
dist/_astro/adminer-login.C4T6LB13_11qlyK.webp
vendored
Normal file
|
After Width: | Height: | Size: 7.7 KiB |
BIN
dist/_astro/adminer-main.CZ4pvrKT_Z29utJV.webp
vendored
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
dist/_astro/big-picture-relaying.eF0nKwB__2tQxza.webp
vendored
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
dist/_astro/big-picture-user-connects-imap.DyhbQIdO_2fqzBW.webp
vendored
Normal file
|
After Width: | Height: | Size: 9.9 KiB |
BIN
dist/_astro/big-picture-user-connects-webmail.CIQwpfDL_ZixA2A.webp
vendored
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
dist/_astro/catching-spam-rspamd-dashboard.D8rZNTOO_oLqvg.webp
vendored
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
dist/_astro/catching-spam-rspamd-dashboard.DTy1Y_zE_2jRE5g.webp
vendored
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
dist/_astro/debian-packages-too-old-pdo.exqzDQPK_JEBOy.webp
vendored
Normal file
|
After Width: | Height: | Size: 40 KiB |
3
dist/_astro/ec.0vx5m.js
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
try{(()=>{function a(e){if(!e)return;let t=e.getAttribute("tabindex")!==null,r=e.scrollWidth>e.clientWidth;r&&!t?(e.setAttribute("tabindex","0"),e.setAttribute("role","region")):!r&&t&&(e.removeAttribute("tabindex"),e.removeAttribute("role"))}var u=window.requestIdleCallback||(e=>setTimeout(e,1)),s=window.cancelIdleCallback||clearTimeout;function l(e){let t=new Set,r,n;return new ResizeObserver(c=>{c.forEach(o=>t.add(o.target)),r&&clearTimeout(r),n&&s(n),r=setTimeout(()=>{n&&s(n),n=u(()=>{t.forEach(o=>e(o)),t.clear()})},250)})}function i(e,t){e.querySelectorAll?.(".expressive-code pre > code").forEach(r=>{let n=r.parentElement;n&&t.observe(n)})}var d=l(a);i(document,d);var b=new MutationObserver(e=>e.forEach(t=>t.addedNodes.forEach(r=>{i(r,d)})));b.observe(document.body,{childList:!0,subtree:!0});document.addEventListener("astro:page-load",()=>{i(document,d)});})();}catch(e){console.error("[EC] tabindex-js-module failed:",e)}
|
||||
try{(()=>{function l(o){let e=document.createElement("pre");Object.assign(e.style,{opacity:"0",pointerEvents:"none",position:"absolute",overflow:"hidden",left:"0",top:"0",width:"20px",height:"20px",webkitUserSelect:"auto",userSelect:"all"}),e.ariaHidden="true",e.textContent=o,document.body.appendChild(e);let a=document.createRange();a.selectNode(e);let n=getSelection();if(!n)return!1;n.removeAllRanges(),n.addRange(a);let r=!1;try{r=document.execCommand("copy")}finally{n.removeAllRanges(),document.body.removeChild(e)}return r}async function u(o){let e=o.currentTarget,a=e.dataset,n=!1,r=a.code.replace(/\u007f/g,`
|
||||
`);try{await navigator.clipboard.writeText(r),n=!0}catch{n=l(r)}if(!n||e.parentNode?.querySelector(".feedback"))return;let c=e.parentNode?.querySelector("[aria-live]"),t=document.createElement("div");t.classList.add("feedback"),t.append(a.copied),c.append(t),t.offsetWidth,requestAnimationFrame(()=>t?.classList.add("show"));let s=()=>!t||t.classList.remove("show"),d=()=>{!t||parseFloat(getComputedStyle(t).opacity)>0||(t.remove(),t=void 0)};setTimeout(s,1500),setTimeout(d,2500),e.addEventListener("blur",s),t.addEventListener("transitioncancel",d),t.addEventListener("transitionend",d)}function i(o){o.querySelectorAll?.(".expressive-code .copy button").forEach(e=>e.addEventListener("click",u))}i(document);var m=new MutationObserver(o=>o.forEach(e=>e.addedNodes.forEach(a=>{i(a)})));m.observe(document.body,{childList:!0,subtree:!0});document.addEventListener("astro:page-load",()=>{i(document)});})();}catch(e){console.error("[EC] copy-js-module failed:",e)}
|
||||
1
dist/_astro/ec.v4551.css
vendored
Normal file
BIN
dist/_astro/imap-thunderbird-account-setup.Dewox1Al_lehT3.webp
vendored
Normal file
|
After Width: | Height: | Size: 22 KiB |
1
dist/_astro/index.DpSp7KkT.css
vendored
Normal file
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
BIN
dist/_astro/large-pingu.DNBynEPa_26vQty.webp
vendored
Normal file
|
After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 4.5 KiB |
BIN
dist/_astro/lvm-diagram.Nevr3lkR_Z2rxy4U.webp
vendored
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
dist/_astro/managing-ima.CUdNEzFs_Z1q25WK.webp
vendored
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
dist/_astro/mutt-inbox.D8HRyATa_nTter.webp
vendored
Normal file
|
After Width: | Height: | Size: 16 KiB |
1
dist/_astro/page.B1D-nYk3.js
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
const v={},d=new Set,s=new WeakSet;let f=!0,h,l=!1;function g(e){l||(l=!0,f??=!1,h??="hover",p(),w(),y(),S())}function p(){for(const e of["touchstart","mousedown"])document.addEventListener(e,t=>{a(t.target,"tap")&&c(t.target.href,{ignoreSlowConnection:!0})},{passive:!0})}function w(){let e;document.body.addEventListener("focusin",n=>{a(n.target,"hover")&&t(n)},{passive:!0}),document.body.addEventListener("focusout",o,{passive:!0}),u(()=>{for(const n of document.getElementsByTagName("a"))s.has(n)||a(n,"hover")&&(s.add(n),n.addEventListener("mouseenter",t,{passive:!0}),n.addEventListener("mouseleave",o,{passive:!0}))});function t(n){const r=n.target.href;e&&clearTimeout(e),e=setTimeout(()=>{c(r)},80)}function o(){e&&(clearTimeout(e),e=0)}}function y(){let e;u(()=>{for(const t of document.getElementsByTagName("a"))s.has(t)||a(t,"viewport")&&(s.add(t),e??=L(),e.observe(t))})}function L(){const e=new WeakMap;return new IntersectionObserver((t,o)=>{for(const n of t){const r=n.target,i=e.get(r);n.isIntersecting?(i&&clearTimeout(i),e.set(r,setTimeout(()=>{o.unobserve(r),e.delete(r),c(r.href)},300))):i&&(clearTimeout(i),e.delete(r))}})}function S(){u(()=>{for(const e of document.getElementsByTagName("a"))a(e,"load")&&c(e.href)})}function c(e,t){e=e.replace(/#.*/,"");const o=t?.ignoreSlowConnection??!1;if(E(e,o))if(d.add(e),document.createElement("link").relList?.supports?.("prefetch")&&t?.with!=="fetch"){const n=document.createElement("link");n.rel="prefetch",n.setAttribute("href",e),document.head.append(n)}else{const n=new Headers;for(const[r,i]of Object.entries(v))n.set(r,i);fetch(e,{priority:"low",headers:n})}}function E(e,t){if(!navigator.onLine||!t&&m())return!1;try{const o=new URL(e,location.href);return location.origin===o.origin&&(location.pathname!==o.pathname||location.search!==o.search)&&!d.has(e)}catch{}return!1}function a(e,t){if(e?.tagName!=="A")return!1;const o=e.dataset.astroPrefetch;return o==="false"?!1:t==="tap"&&(o!=null||f)&&m()?!0:o==null&&f||o===""?t===h:o===t}function m(){if("connection"in navigator){const e=navigator.connection;return e.saveData||/2g/.test(e.effectiveType)}return!1}function u(e){e();let t=!1;document.addEventListener("astro:page-load",()=>{if(!t){t=!0;return}e()})}g();
|
||||
BIN
dist/_astro/prepare-database-adminer-login.01ShyyPj_Z2axosv.webp
vendored
Normal file
|
After Width: | Height: | Size: 7 KiB |
BIN
dist/_astro/prepare-database-adminer-mailserver-database.1f3EMpj4_Z152tht.webp
vendored
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
dist/_astro/prevent-spoofing-dkim-spoofing-dkim-validation-failed.D_c973hl_1NU9vT.webp
vendored
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
dist/_astro/prevent-spoofing-dkim-spoofing-without-dkim.BYdLtHn4_2llzdK.webp
vendored
Normal file
|
After Width: | Height: | Size: 5 KiB |
1
dist/_astro/print.DNXP8c50.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
@media print{:root{--sl-color-white: hsl(224, 10%, 10%);--sl-color-gray-1: hsl(224, 14%, 16%);--sl-color-gray-2: hsl(224, 10%, 23%);--sl-color-gray-3: hsl(224, 7%, 36%);--sl-color-gray-4: hsl(224, 6%, 56%);--sl-color-gray-5: hsl(224, 6%, 77%);--sl-color-gray-6: hsl(224, 20%, 94%);--sl-color-gray-7: hsl(224, 19%, 97%);--sl-color-black: hsl(0, 0%, 100%);--sl-color-orange-high: hsl(var(--sl-hue-orange), 80%, 25%);--sl-color-orange: hsl(var(--sl-hue-orange), 90%, 60%);--sl-color-orange-low: hsl(var(--sl-hue-orange), 90%, 88%);--sl-color-green-high: hsl(var(--sl-hue-green), 80%, 22%);--sl-color-green: hsl(var(--sl-hue-green), 90%, 46%);--sl-color-green-low: hsl(var(--sl-hue-green), 85%, 90%);--sl-color-blue-high: hsl(var(--sl-hue-blue), 80%, 30%);--sl-color-blue: hsl(var(--sl-hue-blue), 90%, 60%);--sl-color-blue-low: hsl(var(--sl-hue-blue), 88%, 90%);--sl-color-purple-high: hsl(var(--sl-hue-purple), 90%, 30%);--sl-color-purple: hsl(var(--sl-hue-purple), 90%, 60%);--sl-color-purple-low: hsl(var(--sl-hue-purple), 80%, 90%);--sl-color-red-high: hsl(var(--sl-hue-red), 80%, 30%);--sl-color-red: hsl(var(--sl-hue-red), 90%, 60%);--sl-color-red-low: hsl(var(--sl-hue-red), 80%, 90%);--sl-color-accent-high: hsl(234, 80%, 30%);--sl-color-accent: hsl(234, 90%, 60%);--sl-color-accent-low: hsl(234, 88%, 90%);--sl-color-text-accent: var(--sl-color-accent);--sl-color-text-invert: var(--sl-color-black);--sl-color-bg-nav: var(--sl-color-gray-7);--sl-color-bg-sidebar: var(--sl-color-bg);--sl-color-bg-inline-code: var(--sl-color-gray-6);--sl-color-bg-accent: var(--sl-color-accent);--sl-color-hairline-light: var(--sl-color-gray-6);--sl-color-hairline-shade: var(--sl-color-gray-6);--sl-color-backdrop-overlay: hsla(225, 9%, 36%, .66);--sl-shadow-sm: none;--sl-shadow-md: none;--sl-shadow-lg: none}.print\:hidden{display:none}.print\:flex{display:flex}.print\:block{display:block}main{padding-bottom:0}main>.content-panel{padding-block-start:0}.content-panel+.content-panel{border:0}.page>header{position:relative}.page>.main-frame{padding-top:0;padding-inline-start:0}.main-pane{--sl-sidebar-width: 0px;--sl-content-width: 100%}.sl-banner{--sl-color-banner-text: var(--sl-color-white);background-color:transparent}.sl-markdown-content :is(h1,h2,h3,h4,h5,h6){break-after:avoid}.sl-markdown-content :is(p,li){orphans:2;widows:2}.sl-markdown-content pre{overflow-x:hidden;white-space:pre-wrap}.sl-markdown-content .expressive-code,.sl-markdown-content figure,.sl-markdown-content pre{break-inside:avoid}.expressive-code .frame.is-terminal .header:before{box-shadow:inset 99rem 99rem var(--sl-color-gray-5)}.expressive-code .frame.has-title:not(.is-terminal) .header{background:transparent;border-bottom:1px solid var(--sl-color-gray-6)}.expressive-code .frame.has-title:not(.is-terminal) .title{background:transparent}.expressive-code .frame.has-title:not(.is-terminal) .title:after{border-top:0}.expressive-code .copy{display:none}.sl-markdown-content code:not(:where(.not-content *)){background-color:transparent;padding:0;margin-block:unset;font-size:.9375em}.sl-badge{background:transparent;color:var(--sl-color-white)}starlight-file-tree{break-inside:avoid}starlight-file-tree .highlight{outline:3px solid var(--sl-color-accent-low);color:var(--sl-color-text);background-color:transparent}.starlight-aside{break-inside:avoid}.sl-link-button.primary{background:transparent;border-color:var(--sl-color-white);color:var(--sl-color-white)}starlight-tabs{break-inside:avoid}.sl-steps>li:after{box-shadow:inset 99rem 99rem var(--sl-color-hairline-light)}}
|
||||
BIN
dist/_astro/relaying-authenticated-relaying.D-QXvHmY_ZDn7Cs.webp
vendored
Normal file
|
After Width: | Height: | Size: 8.4 KiB |
BIN
dist/_astro/relaying-incoming-email.DZJIOHqZ_29Vv5S.webp
vendored
Normal file
|
After Width: | Height: | Size: 8.8 KiB |
BIN
dist/_astro/relaying-roundcube-selecting-identity.DAlNSaQW_kYpJu.webp
vendored
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
BIN
dist/_astro/relaying-unauthenticated-relaying-denied.Luyv3w4j_2eyNO1.webp
vendored
Normal file
|
After Width: | Height: | Size: 6.2 KiB |
BIN
dist/_astro/roundcube-login-dialog.BP0-utAA_ZXQDm2.webp
vendored
Normal file
|
After Width: | Height: | Size: 4.3 KiB |
BIN
dist/_astro/roundcube-login.Dvep_9wD_Bo6mk.webp
vendored
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
BIN
dist/_astro/roundcube-password.BOBXKVth_Z2sCal6.webp
vendored
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
dist/_astro/setting-dns-records-mx-big-picture.y_PGYrNz_2lkkbj.webp
vendored
Normal file
|
After Width: | Height: | Size: 16 KiB |
1
dist/_astro/splide_min.BRKXMWAJ.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.splide__container{box-sizing:border-box;position:relative}.splide__list{backface-visibility:hidden;display:-ms-flexbox;display:flex;height:100%;margin:0!important;padding:0!important}.splide.is-initialized:not(.is-active) .splide__list{display:block}.splide__pagination{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;justify-content:center;margin:0;pointer-events:none}.splide__pagination li{display:inline-block;line-height:1;list-style-type:none;margin:0;pointer-events:auto}.splide:not(.is-overflow) .splide__pagination{display:none}.splide__progress__bar{width:0}.splide{position:relative;visibility:hidden}.splide.is-initialized,.splide.is-rendered{visibility:visible}.splide__slide{backface-visibility:hidden;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0;list-style-type:none!important;margin:0;position:relative}.splide__slide img{vertical-align:bottom}.splide__spinner{animation:splide-loading 1s linear infinite;border:2px solid #999;border-left-color:transparent;border-radius:50%;contain:strict;display:inline-block;height:20px;inset:0;margin:auto;position:absolute;width:20px}.splide__sr{clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.splide__toggle.is-active .splide__toggle__play,.splide__toggle__pause{display:none}.splide__toggle.is-active .splide__toggle__pause{display:inline}.splide__track{overflow:hidden;position:relative;z-index:0}@keyframes splide-loading{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.splide__track--draggable{-webkit-touch-callout:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.splide__track--fade>.splide__list>.splide__slide{margin:0!important;opacity:0;z-index:0}.splide__track--fade>.splide__list>.splide__slide.is-active{opacity:1;z-index:1}.splide--rtl{direction:rtl}.splide__track--ttb>.splide__list{display:block}.splide__arrow{-ms-flex-align:center;align-items:center;background:#ccc;border:0;border-radius:50%;cursor:pointer;display:-ms-flexbox;display:flex;height:2em;-ms-flex-pack:center;justify-content:center;opacity:.7;padding:0;position:absolute;top:50%;transform:translateY(-50%);width:2em;z-index:1}.splide__arrow svg{fill:#000;height:1.2em;width:1.2em}.splide__arrow:hover:not(:disabled){opacity:.9}.splide__arrow:disabled{opacity:.3}.splide__arrow:focus-visible{outline:3px solid #0bf;outline-offset:3px}.splide__arrow--prev{left:1em}.splide__arrow--prev svg{transform:scaleX(-1)}.splide__arrow--next{right:1em}.splide.is-focus-in .splide__arrow:focus{outline:3px solid #0bf;outline-offset:3px}.splide__pagination{bottom:.5em;left:0;padding:0 1em;position:absolute;right:0;z-index:1}.splide__pagination__page{background:#ccc;border:0;border-radius:50%;display:inline-block;height:8px;margin:3px;opacity:.7;padding:0;position:relative;transition:transform .2s linear;width:8px}.splide__pagination__page.is-active{background:#fff;transform:scale(1.4);z-index:1}.splide__pagination__page:hover{cursor:pointer;opacity:.9}.splide__pagination__page:focus-visible{outline:3px solid #0bf;outline-offset:3px}.splide.is-focus-in .splide__pagination__page:focus{outline:3px solid #0bf;outline-offset:3px}.splide__progress__bar{background:#ccc;height:3px}.splide__slide{-webkit-tap-highlight-color:rgba(0,0,0,0)}.splide__slide:focus{outline:0}@supports (outline-offset:-3px){.splide__slide:focus-visible{outline:3px solid #0bf;outline-offset:-3px}}@media screen and (-ms-high-contrast:none){.splide__slide:focus-visible{border:3px solid #0bf}}@supports (outline-offset:-3px){.splide.is-focus-in .splide__slide:focus{outline:3px solid #0bf;outline-offset:-3px}}@media screen and (-ms-high-contrast:none){.splide.is-focus-in .splide__slide:focus{border:3px solid #0bf}.splide.is-focus-in .splide__track>.splide__list>.splide__slide:focus{border-color:#0bf}}.splide__toggle{cursor:pointer}.splide__toggle:focus-visible{outline:3px solid #0bf;outline-offset:3px}.splide.is-focus-in .splide__toggle:focus{outline:3px solid #0bf;outline-offset:3px}.splide__track--nav>.splide__list>.splide__slide{border:3px solid transparent;cursor:pointer}.splide__track--nav>.splide__list>.splide__slide.is-active{border:3px solid #000}.splide__arrows--rtl .splide__arrow--prev{left:auto;right:1em}.splide__arrows--rtl .splide__arrow--prev svg{transform:scaleX(1)}.splide__arrows--rtl .splide__arrow--next{left:1em;right:auto}.splide__arrows--rtl .splide__arrow--next svg{transform:scaleX(-1)}.splide__arrows--ttb .splide__arrow{left:50%;transform:translate(-50%)}.splide__arrows--ttb .splide__arrow--prev{top:1em}.splide__arrows--ttb .splide__arrow--prev svg{transform:rotate(-90deg)}.splide__arrows--ttb .splide__arrow--next{bottom:1em;top:auto}.splide__arrows--ttb .splide__arrow--next svg{transform:rotate(90deg)}.splide__pagination--ttb{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;inset:0 .5em 0 auto;padding:1em 0}
|
||||
BIN
dist/_astro/stdinouterr.D_fTYlSf_ZgmOAW.webp
vendored
Normal file
|
After Width: | Height: | Size: 7.3 KiB |
BIN
dist/_astro/testing-email-delivery-mutt-one-email.j1wHExqE_Z2kGLUj.webp
vendored
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
dist/_astro/testing-email-delivery-roundcube-one-email.e2rvRGU4_LgfWT.webp
vendored
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
dist/_astro/testing-imap-mutt-empty-inbox.oBHkPD7U_27Uutu.webp
vendored
Normal file
|
After Width: | Height: | Size: 8.7 KiB |
BIN
dist/_astro/testing-imap-mutt-inbox-quota-mails.ZumKAfWA_1SYpAq.webp
vendored
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
dist/_astro/tls-browser-bar.Czwy_9Iz_Z1DnMs5.webp
vendored
Normal file
|
After Width: | Height: | Size: 14 KiB |
2
dist/_astro/ui-core.D_Lfcn_I.js
vendored
Normal file
BIN
dist/_astro/webmail-roundcube-db-setup1.Cb-g6XRP_1FOiAw.webp
vendored
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
dist/_astro/webmail-roundcube-db-setup2.CrtFh7Aq_Z25abMs.webp
vendored
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
dist/_astro/webmail-roundcube-sieve-editor.CsDSURc3_1MiegR.webp
vendored
Normal file
|
After Width: | Height: | Size: 12 KiB |
108
dist/article/updating-the-bios-on-lenovo-laptops-from-linux-using-a-usb-flash-stick/index.html
vendored
Normal file
184
dist/bacula-cheatsheet/index.html
vendored
Normal file
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
118
dist/debian-packages-are-so-old/index.html
vendored
Normal file
0
public/favicon.svg → dist/favicon.svg
vendored
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
137
dist/getting-help-on-irc/index.html
vendored
Normal file
|
Before Width: | Height: | Size: 284 KiB After Width: | Height: | Size: 284 KiB |