Initialer Upload MkDocs ETZ Dokumentation
12
Dockerfile
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
FROM pandoc/latex:latest
|
||||||
|
|
||||||
|
WORKDIR /data
|
||||||
|
|
||||||
|
## Eisvogel Template kopieren (lokal notwendig)
|
||||||
|
#COPY eisvogel.tex /data/eisvogel.tex
|
||||||
|
|
||||||
|
# Script kopieren und ausführbar machen
|
||||||
|
COPY mkdocs-to-pdf.sh /usr/local/bin/mkdocs-to-pdf.sh
|
||||||
|
RUN chmod +x /usr/local/bin/mkdocs-to-pdf.sh
|
||||||
|
|
||||||
|
ENTRYPOINT ["/usr/local/bin/mkdocs-to-pdf.sh"]
|
||||||
19
docker-compose.yml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
services:
|
||||||
|
mkdocs:
|
||||||
|
image: squidfunk/mkdocs-material:latest
|
||||||
|
volumes:
|
||||||
|
- ./mkdocs:/docs
|
||||||
|
ports:
|
||||||
|
- 80:8000
|
||||||
|
|
||||||
|
vscode:
|
||||||
|
image: linuxserver/code-server
|
||||||
|
environment:
|
||||||
|
- PUID=${UID}
|
||||||
|
- PGID=${GID}
|
||||||
|
- TZ=Europe/Berlin
|
||||||
|
volumes:
|
||||||
|
- ./workspace:/config/workspace
|
||||||
|
- ./mkdocs:/workspace/projects
|
||||||
|
ports:
|
||||||
|
- 8443:8443
|
||||||
1065
eisvogel.latex
Normal file
56
mkdocs-to-pdf-copy.sh
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
MKDOCS_DIR="mkdocs/docs"
|
||||||
|
|
||||||
|
# Einzelne Datei als Parameter übergeben
|
||||||
|
if [ $# -eq 0 ]; then
|
||||||
|
echo "Usage: $0 <pfad/zur/datei.md> [z.B. Linux_Unternehmen/nextcloud-ldap.md]"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
md_file="$MKDOCS_DIR/$1"
|
||||||
|
|
||||||
|
if [[ ! -f "$md_file" ]]; then
|
||||||
|
echo "Fehler: $md_file nicht gefunden!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Verarbeite einzeln: $md_file"
|
||||||
|
|
||||||
|
base_name=$(basename "$md_file" .md | tr ' ' '_')
|
||||||
|
dir_name=$(dirname "$md_file")
|
||||||
|
pdf_path="${dir_name}/${base_name}.pdf"
|
||||||
|
pdf_link="\n\n[PDF herunterladen](${base_name}.pdf){ .md-button }"
|
||||||
|
|
||||||
|
# PDF neu erzeugen
|
||||||
|
rm -f "$pdf_path"
|
||||||
|
|
||||||
|
md_dir=$(dirname "$md_file")
|
||||||
|
|
||||||
|
docker run --rm \
|
||||||
|
--volume "$(pwd)":/data \
|
||||||
|
--user $(id -u):$(id -g) \
|
||||||
|
--workdir "/data/$md_dir" \
|
||||||
|
pandoc/extra \
|
||||||
|
"./$(basename "$md_file")" \
|
||||||
|
-o "./${base_name}.pdf" \
|
||||||
|
--template /data/eisvogel.latex \
|
||||||
|
--syntax-highlighting=idiomatic
|
||||||
|
|
||||||
|
echo " → PDF erstellt: $pdf_path"
|
||||||
|
|
||||||
|
# PDF-Link nur einmal hinzufügen
|
||||||
|
if ! tail -n 10 "$md_file" | grep -q "PDF herunterladen"; then
|
||||||
|
echo -e "$pdf_link" >> "$md_file"
|
||||||
|
echo " → PDF-Link hinzugefügt"
|
||||||
|
else
|
||||||
|
echo " → PDF-Link bereits vorhanden"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Fertig: $pdf_path"
|
||||||
|
|
||||||
|
echo "mkdocs wird neu gebaut"
|
||||||
|
|
||||||
|
docker compose -f ./docker-compose.yml run --rm mkdocs build
|
||||||
|
docker compose -f ./docker-compose.yml restart mkdocs
|
||||||
|
echo "Fertig: mkdocs neu gebaut."
|
||||||
46
mkdocs-to-pdf.sh
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
MKDOCS_DIR="mkdocs/docs"
|
||||||
|
|
||||||
|
find "$MKDOCS_DIR" -name "*.md" | while read -r md_file; do
|
||||||
|
# Überspringe index.md
|
||||||
|
if [[ "$(basename "$md_file")" == "index.md" ]]; then
|
||||||
|
echo "Überspringe: $md_file"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Verarbeite: $md_file"
|
||||||
|
|
||||||
|
base_name=$(basename "$md_file" .md | tr ' ' '_')
|
||||||
|
dir_name=$(dirname "$md_file")
|
||||||
|
|
||||||
|
pdf_path="${dir_name}/${base_name}.pdf"
|
||||||
|
pdf_link="\n\n[PDF herunterladen](${base_name}.pdf){ .md-button }"
|
||||||
|
|
||||||
|
rm -f "$pdf_path"
|
||||||
|
|
||||||
|
docker run --rm \
|
||||||
|
--volume "$(pwd)":/data \
|
||||||
|
--user $(id -u):$(id -g) \
|
||||||
|
pandoc/extra \
|
||||||
|
"/data/$md_file" \
|
||||||
|
-o "/data/$pdf_path" \
|
||||||
|
--template eisvogel \
|
||||||
|
--lua-filter=/data/process_comments.lua \
|
||||||
|
--syntax-highlighting=idiomatic
|
||||||
|
|
||||||
|
# PDF-Link nur anhängen wenn noch nicht vorhanden
|
||||||
|
if ! tail -n 10 "$md_file" | grep -q "PDF herunterladen"; then
|
||||||
|
echo -e "$pdf_link" >> "$md_file"
|
||||||
|
echo " → PDF-Link hinzugefügt"
|
||||||
|
else
|
||||||
|
echo " → PDF-Link bereits vorhanden"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Fertig: PDF Dateien erstellt und Links aktualisiert."
|
||||||
|
echo "mkdocs wird neu gebaut"
|
||||||
|
|
||||||
|
docker compose -f ./docker-compose.yml run --rm mkdocs build
|
||||||
|
docker compose -f ./docker-compose.yml restart mkdocs
|
||||||
|
echo "Fertig: mkdocs neu gebaut."
|
||||||
BIN
mkdocs/docs/Linux_Unternehmen/Nextcloud_Design/Login_Image.jpg
Normal file
|
After Width: | Height: | Size: 375 KiB |
BIN
mkdocs/docs/Linux_Unternehmen/Nextcloud_Design/Logo.png
Normal file
|
After Width: | Height: | Size: 9.8 KiB |
BIN
mkdocs/docs/Linux_Unternehmen/Nextcloud_Design/background.jpg
Normal file
|
After Width: | Height: | Size: 93 KiB |
|
After Width: | Height: | Size: 250 KiB |
|
After Width: | Height: | Size: 433 KiB |
110
mkdocs/docs/Linux_Unternehmen/linux-als-ad-client.md
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
Ein Ubuntu Desktop-System lässt sich auch in eine Domäne einbinden.
|
||||||
|
Falls Sie sich fragen, wozu man Linux an ein Windows-Netzwerk anbinden
|
||||||
|
soll, ist einfach erklärt: Egal an welchen Computer Sie gehen, sei es
|
||||||
|
Linux oder Windows, Sie melden Sich mit ihren Benutzerdaten an und
|
||||||
|
erhalten auch ggf. die Administrationsrechte um Auf dem System Schalten
|
||||||
|
und Walten zu können, wie sie möchten. Im Augenblick sind Rechtevergaben
|
||||||
|
nur für Gruppen pro System anzuwenden, somit können Administratoren
|
||||||
|
Programme Installieren. Wenn Gruppenrichtlinien genutzt werden sollen,
|
||||||
|
müssen Sie Kostenpflichtige Tools wie Centrify DirectControl oder Ubuntu
|
||||||
|
Pro nutzen.
|
||||||
|
|
||||||
|
## Voraussetzungen prüfen
|
||||||
|
* Ubuntu ist installiert und einsatzbereit
|
||||||
|
* Netzwerkverbindung zum AD-Controller funktioniert
|
||||||
|
* DNS-Auflösung auf die Domäne und den AD-Controller ist sichergestellt
|
||||||
|
* Systemuhr ist synchron (z.B. via NTP)
|
||||||
|
* Ein AD-Benutzerkonto mit Join-Rechten ist vorhanden
|
||||||
|
## System aktualisieren
|
||||||
|
```bash
|
||||||
|
sudo apt update
|
||||||
|
sudo apt upgrade
|
||||||
|
```
|
||||||
|
## Notwendige Pakete installieren
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt install -y realmd sssd sssd-tools adcli samba-common-bin oddjob oddjob-mkhomedir packagekit libnss-sss libpam-sss krb5-user sssd-krb5
|
||||||
|
```
|
||||||
|
|
||||||
|
## Hostname setzen (FQDN)
|
||||||
|
|
||||||
|
Passe den Hostnamen an das AD-Schema an (z.B. rechnername.deinedomäne.de):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo hostnamectl set-hostname vbox.tnXX.ito
|
||||||
|
```
|
||||||
|
## Kerberos konfigurieren
|
||||||
|
|
||||||
|
Bearbeite die Datei ```/etc/krb5.conf``` und passe die Domain an:
|
||||||
|
|
||||||
|
```ini
|
||||||
|
[libdefaults]
|
||||||
|
udp_preference_limit = 0
|
||||||
|
default_realm = TNXX.ITO
|
||||||
|
rdns = false
|
||||||
|
```
|
||||||
|
>*Hinweis: Domänenname in Großbuchstaben eintragen*
|
||||||
|
|
||||||
|
## Funktionstest: Domäne entdecken
|
||||||
|
|
||||||
|
```bash
|
||||||
|
realm discover tnXX.ito
|
||||||
|
```
|
||||||
|
>Ergebnis prüfen: Die Domäne sollte mit Typ „active-directory" angezeigt werden.
|
||||||
|
|
||||||
|
## Kerberos-Ticket holen
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kinit deinbenutzername
|
||||||
|
```
|
||||||
|
>Passwort eingeben (AD-Benutzer mit Join-Rechten).
|
||||||
|
|
||||||
|
## System der Domäne beitreten
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo realm join -v -U deinbenutzername TNXX.ITO
|
||||||
|
```
|
||||||
|
>Passwort eingeben, wenn abgefragt.
|
||||||
|
|
||||||
|
## Home-Verzeichnisse für AD-Benutzer automatisch erstellen
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo pam-auth-update
|
||||||
|
```
|
||||||
|
„Create home directory on login" aktivieren falls deaktiviert und mit OK
|
||||||
|
bestätigen.
|
||||||
|
|
||||||
|
## Funktionstest: AD-Benutzer auflisten
|
||||||
|
|
||||||
|
```bash
|
||||||
|
id benutzer@TNXX.ITO
|
||||||
|
```
|
||||||
|
> Wenn die Benutzerinformationen angezeigt werden, war der Join erfolgreich.
|
||||||
|
|
||||||
|
## (Optional) Sudo-Rechte für AD-Gruppen vergeben
|
||||||
|
|
||||||
|
Datei anlegen:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo nano /etc/sudoers.d/adadmins
|
||||||
|
```
|
||||||
|
Eintragen (Beispiel):
|
||||||
|
|
||||||
|
```sudoers
|
||||||
|
%administratoren@TNXX.ITO ALL=(ALL) NOPASSWD:ALL
|
||||||
|
```
|
||||||
|
**Kontrollfragen**
|
||||||
|
|
||||||
|
1. Welche Pakete sind für den AD-Join notwendig?
|
||||||
|
2. Wie prüfen Sie, ob die Domäne erreichbar ist?
|
||||||
|
3. Wie testen Sie, ob ein AD-Benutzer korrekt erkannt wird?
|
||||||
|
4. Warum ist die DNS-Konfiguration so wichtig für den AD-Join?
|
||||||
|
|
||||||
|
|
||||||
|
**Hinweis:**\
|
||||||
|
Bei Fehlern prüfen Sie die Logdateien (/var/log/sssd/, /var/log/auth.log,
|
||||||
|
/var/log/syslog) und die Netzwerkkonfiguration.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[PDF herunterladen](linux-als-ad-client.pdf){ .md-button }
|
||||||
BIN
mkdocs/docs/Linux_Unternehmen/linux-als-ad-client.pdf
Normal file
BIN
mkdocs/docs/Linux_Unternehmen/nextcloud-ldap-media/image1.png
Normal file
|
After Width: | Height: | Size: 158 KiB |
BIN
mkdocs/docs/Linux_Unternehmen/nextcloud-ldap-media/image2.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
mkdocs/docs/Linux_Unternehmen/nextcloud-ldap-media/image3.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
mkdocs/docs/Linux_Unternehmen/nextcloud-ldap-media/image4.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
mkdocs/docs/Linux_Unternehmen/nextcloud-ldap-media/image5.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
mkdocs/docs/Linux_Unternehmen/nextcloud-ldap-media/image6.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
mkdocs/docs/Linux_Unternehmen/nextcloud-ldap-media/image7.png
Normal file
|
After Width: | Height: | Size: 78 KiB |
291
mkdocs/docs/Linux_Unternehmen/nextcloud-ldap.md
Normal file
@@ -0,0 +1,291 @@
|
|||||||
|
NextCloud bringt ihnen eine erweiterte Funktionalität der Bereitstellung
|
||||||
|
und Synchronisierung ihrer Daten für Mitarbeiter. NextCloud biete über
|
||||||
|
Erweiterungen und Plug-Ins die Möglichkeit auch in anderen Teilen ihres
|
||||||
|
Unternehmens Verbesserungen der Zusammenarbeit zu schaffen. Prinzipiell
|
||||||
|
ist NextCloud aber ihre Private Cloud - Sie wissen, wo die Daten liegen
|
||||||
|
und Sie wissen wer darauf zugreifen kann und darf.
|
||||||
|
|
||||||
|
## Vorbereitungen
|
||||||
|
|
||||||
|
NextCloud benötigt ergänzend zu dem evtl. massiven Speicherplatzbedarf
|
||||||
|
auch noch eine funktionierend SQL-Datenbank. Hierfür wird der reine
|
||||||
|
Open-Source mySQL Ableger MariaDB empfohlen.
|
||||||
|
|
||||||
|
## Installation Datenbank mit Webmanagement und weiterer benötigter Komponenten
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt install apache2 mariadb-server libapache2-mod-php php php-mysql php-xml php-gd php-curl php-zip php-mbstring php-intl php-bcmath php-gmp php-imagick php-redis redis-server php-ldap php-smbclient unzip phpmyadmin
|
||||||
|
```
|
||||||
|
|
||||||
|
Abfragen nach dem zu verwendenden Webserver: apache2
|
||||||
|
|
||||||
|
Konfiguriere phpmyadmin: Ja Datenbank Konfigurieren
|
||||||
|
|
||||||
|
Passwort setzen
|
||||||
|
|
||||||
|
Im Anschluss muss die Datenbank noch gesichert werden um etwaigen
|
||||||
|
Missbrauch zu unterbinden und auch das Root-Passwort wird hier gesetzt
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo mysql_secure_installation
|
||||||
|
```
|
||||||
|
1. Abfrage des aktuellen Passwortes NICHTS EINGEBEN NUR BESTÄTIGEN
|
||||||
|
|
||||||
|
2. Soll ein Root-Passwort gesetzt werden? Y
|
||||||
|
|
||||||
|
3. Passwort eingeben und wiederholen
|
||||||
|
|
||||||
|
4. Soll der Anonyme User entfernt werden? Y
|
||||||
|
|
||||||
|
5. Remote-Login für Root deaktivieren? Y
|
||||||
|
|
||||||
|
6. test-Datenbank entfernen? Y
|
||||||
|
|
||||||
|
7. Änderungen übernehmen? Y
|
||||||
|
|
||||||
|
Jetzt muss einmalig in die SQL-Datenbank der Login für root über das
|
||||||
|
Webinterface aktiviert werden:
|
||||||
|
|
||||||
|
````bash
|
||||||
|
sudo mysql -u root -p
|
||||||
|
````
|
||||||
|
|
||||||
|
````sql
|
||||||
|
use mysql;
|
||||||
|
update user set plugin='' where User='root';
|
||||||
|
flush privileges;
|
||||||
|
\q
|
||||||
|
````
|
||||||
|
|
||||||
|
Zugriff auf ihre Datebank per Webinterface:
|
||||||
|
|
||||||
|
http://IP/phpmyadmin
|
||||||
|
|
||||||
|
Legen Sie einen neuen Nutzer für NextCloud an und gewähren Sie dem Nutzer alle Rechte an seiner Datenbank „Nextcloud".
|
||||||
|
/newpage
|
||||||
|
|
||||||
|
## NextCloud installieren
|
||||||
|
|
||||||
|
NextCloud bietet derzeit keine externe Paketquellen an. Deshalb muss Nextcloud als Zip-Archiv heruntergeladen werden und im Anschluss passend entpackt werden.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
wget https://download.nextcloud.com/server/releases/latest.zip
|
||||||
|
unzip latest.zip
|
||||||
|
sudo cp -r nextcloud /var/www/
|
||||||
|
sudo chown -R www-data:www-data /var/www/nextcloud/
|
||||||
|
```
|
||||||
|
|
||||||
|
Jetzt legen wir noch ein Separates Datenverzeichnis an. Dies bringt den Vorteil, dass dieses sich auch auf einer separaten Partition befinden kann.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo mkdir /srv/cloud
|
||||||
|
sudo chown www-data:www-data -R /srv/cloud
|
||||||
|
```
|
||||||
|
|
||||||
|
erstellen ````/etc/apache2/sites-available/nextcloud.conf```` mit Inhalt:
|
||||||
|
```apacheconf
|
||||||
|
|
||||||
|
<VirtualHost *:80>
|
||||||
|
DocumentRoot "/var/www/nextcloud"
|
||||||
|
ServerName nextcloud.hensel.dom
|
||||||
|
ErrorLog ${APACHE_LOG_DIR}/error.log
|
||||||
|
CustomLog ${APACHE_LOG_DIR}/access.log combined
|
||||||
|
<Directory /var/www/nextcloud/>
|
||||||
|
Options +FollowSymlinks
|
||||||
|
AllowOverride All
|
||||||
|
<IfModule mod_dav.c>
|
||||||
|
Dav off
|
||||||
|
</IfModule>
|
||||||
|
SetEnv HOME /var/www/nextcloud
|
||||||
|
SetEnv HTTP_HOME /var/www/nextcloud
|
||||||
|
Satisfy Any
|
||||||
|
</Directory>
|
||||||
|
</VirtualHost>
|
||||||
|
|
||||||
|
```
|
||||||
|
Speichern und aktivieren mit
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo a2ensite nextcloud
|
||||||
|
sudo a2dissite 000-default.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
Aktivieren der benötigten Apache2-Module
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo a2enmod rewrite
|
||||||
|
sudo a2enmod headers
|
||||||
|
sudo a2enmod env
|
||||||
|
sudo a2enmod dir
|
||||||
|
sudo a2enmod mime
|
||||||
|
sudo a2enmod setenvif
|
||||||
|
sudo a2enmod ssl
|
||||||
|
sudo systemctl restart apache2
|
||||||
|
```
|
||||||
|
|
||||||
|
Nun können Sie per http auf den Webserver zugreifen
|
||||||
|
http://nextcloud.hensel.dom
|
||||||
|
|
||||||
|
{ align=left }
|
||||||
|
|
||||||
|
Hier legen Sie nun das Administrator-Konto ein, wobei natürlich Admin und ein schwaches Passwort hier Tabu sind.
|
||||||
|
|
||||||
|
Geben Sie als Datenverzeichnis das gerade angelegte Verzeichnis an und geben Sie die entsprechenden Daten die beim Anlagen der Datenbank gesetzt wurden ein.
|
||||||
|
|
||||||
|
Nach dem Klick auf Installation abschließen werden Sie auch schon ihr eigenes Datenverzeichnis befördert, wobei ihnen erst noch ein Hinweis angezeigt wird wie Sie Desktop- und Mobile-Apps nutzen können.
|
||||||
|
|
||||||
|
Wechseln Sie als nächstes in der rechten oberen Ecke in das Administrator-Menü.
|
||||||
|
|
||||||
|
Im oberen Bereich begrüßen Sie dabei gleich einige Konfigurationsfehler:
|
||||||
|
|
||||||
|
Wir nutzen noch kein SSL und keinen Cache.
|
||||||
|
|
||||||
|
Kümmern wir uns erst einmal um den Cache, wobei wir den Redis-Server bereits installiert haben. Somit muss nur noch die Nextcloud-Configuration angepasst werden:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo nano /var/www/nextcloud/config/config.php
|
||||||
|
```
|
||||||
|
Fügen Sie eine weitere Zeile vor der schließenden Klammer ein:
|
||||||
|
...
|
||||||
|
````php
|
||||||
|
'dbtype' => 'mysql',
|
||||||
|
'version' => '12.0.0.29',
|
||||||
|
'dbname' => 'NextCloud',
|
||||||
|
'dbhost' => 'localhost',
|
||||||
|
'dbport' => '',
|
||||||
|
'dbtableprefix' => 'oc_',
|
||||||
|
'dbuser' => 'NextCloud',
|
||||||
|
'dbpassword' => 'passw0rd#',
|
||||||
|
'logtimezone' => 'UTC',
|
||||||
|
'installed' => true,
|
||||||
|
'memcache.distributed' => '\OC\Memcache\Redis',
|
||||||
|
'memcache.local' => '\OC\Memcache\Redis',
|
||||||
|
'memcache.locking' => '\OC\Memcache\Redis',
|
||||||
|
'redis' => array(
|
||||||
|
'host' => 'localhost',
|
||||||
|
'port' => 6379,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
````
|
||||||
|
Laden Sie Sie Administrator-Seite neu -- Der Fehler sollte weg sein.
|
||||||
|
|
||||||
|
## SSL-Zertifikat
|
||||||
|
|
||||||
|
Für die https / SSL Übertragung benötigen wir noch ein selbst-signiertes Zertifikat welches dem Browser übergeben werden kann.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo -s
|
||||||
|
openssl req -new -x509 -days 365 -nodes -out /etc/ssl/certs/NextCloud.pem -keyout /etc/ssl/private/NextCloud.key
|
||||||
|
```
|
||||||
|
### Konfiguration Apache für das SSL-Zertifikat
|
||||||
|
|
||||||
|
Konfiguration der Benötigten Module:
|
||||||
|
|
||||||
|
Bearbeiten der Datei ````/etc/apache2/sites-available/nextcloud.conf````
|
||||||
|
|
||||||
|
````apacheconf
|
||||||
|
<VirtualHost *:80>
|
||||||
|
Redirect permanent / https://nextcloud.hensel.dom
|
||||||
|
</VirtualHost>
|
||||||
|
|
||||||
|
<IfModule mod_ssl.c>
|
||||||
|
<VirtualHost *:443>
|
||||||
|
SSLEngine on
|
||||||
|
SSLCertificateFile /etc/ssl/certs/NextCloud.pem
|
||||||
|
SSLCertificateKeyFile /etc/ssl/private/NextCloud.key
|
||||||
|
|
||||||
|
<IfModule mod_headers.c>
|
||||||
|
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
DocumentRoot "/var/www/nextcloud"
|
||||||
|
ServerName nextcloud.hensel.dom
|
||||||
|
ServerAlias www.nextcloud.hensel.dom
|
||||||
|
|
||||||
|
ErrorLog ${APACHE_LOG_DIR}/error.log
|
||||||
|
CustomLog ${APACHE_LOG_DIR}/access.log combined
|
||||||
|
|
||||||
|
<Directory /var/www/nextcloud/>
|
||||||
|
Options +FollowSymlinks
|
||||||
|
AllowOverride All
|
||||||
|
<IfModule mod_dav.c>
|
||||||
|
Dav off
|
||||||
|
</IfModule>
|
||||||
|
SetEnv HOME /var/www/nextcloud
|
||||||
|
SetEnv HTTP_HOME /var/www/nextcloud
|
||||||
|
Satisfy Any
|
||||||
|
</Directory>
|
||||||
|
</VirtualHost>
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
````
|
||||||
|
Aktivieren:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo a2ensite default-ssl.conf
|
||||||
|
sudo systemctl restart apache2
|
||||||
|
```
|
||||||
|
|
||||||
|
Apache Neustarten und Fertig
|
||||||
|
|
||||||
|
## CronJob für regelmäßige Aktualisierung der Datenbank
|
||||||
|
|
||||||
|
NextCloud aktualisiert bei jedem Zugriff auf das Webinterface die Datenbank, allerdings kostet dies wertvolle Sekunden bei einem „Wohlfühl-Interface" daher aktivieren Wir einen [CronJob](../basics/Automatisierung mit cron und systemd.md)
|
||||||
|
|
||||||
|
Die Aktion soll vom User www-data ausgeführt werden
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo crontab -u www-data -e
|
||||||
|
```
|
||||||
|
nun können wir einen neuen Job einfügen:
|
||||||
|
|
||||||
|
```
|
||||||
|
\*/15 \* \* \* \* php -f /var/www/nextcloud/cron.php
|
||||||
|
```
|
||||||
|
Wählen Sie nun im Administrations-Bereich von NextCloud bei Cron entsprechend auch cron aus.
|
||||||
|
|
||||||
|
Im Anschluss am besten einmal reboot
|
||||||
|
|
||||||
|
## LDAP
|
||||||
|
|
||||||
|
Konfiguration smb.conf bei einem Samba AD-DC
|
||||||
|
````ini
|
||||||
|
[global]
|
||||||
|
ldap server require strong auth = no
|
||||||
|
````
|
||||||
|
````bash
|
||||||
|
sudo systemctl restart samba-ad-dc
|
||||||
|
````
|
||||||
|
Im Anschluss daran suchen wir in den NextCloud-Apps nach dem LDAP user and group backend:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Aktivieren Sie die App und wechseln Sie wieder in den Administrationsbereich. Dort finden Sie einen neuen Bereich LDAP.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Die benötigten Informationen finden Sie in ihrer Serverkonfiguration. In diesem Beispiel:
|
||||||
|
|
||||||
|
* FQDN + Port des AD
|
||||||
|
* Nutzer,Gruppe,Domäne Dieser Account muss keine Admin-Rechte haben sollte aber eigener Account sein.
|
||||||
|
* Passwort
|
||||||
|
* Der Ort in der Domäne an der die User zu suchen sind
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Welcher Typ soll abgefragt werden? Hier empfiehlt sich eine Separate Gruppe für Nutzer anzulegen welche NextCloud nutzen sollen. Klicken Sie am unteren Rand auf „Einstellungen prüfen und Benutzer zählen" um ihre Konfiguration zu überprüfen.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Hier definieren Sie mit welchen Möglichkeiten sich der Nutzer Authentifizieren kann. Wählen Sie die sAMAccountName aus, um dem Nutzer zu ermöglichen Sich direkt mit seinem Windows-Login anzumelden.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Hier definieren Sie welche Gruppen ihres Servers in NextCloud übernommen werden sollen um ihre Nutzer auch in NextCloud passend sortieren zu können und auch Gruppenspezifische Externe Laufwerke einzubinden.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
In der Benutzerübersicht sollen alle Nutzer mit ihrem Benutzernamen und nicht mit der UUID angezeigt werden. Somit ist es auch für die Nutzer einfacher, sich gegenseitig zu finden.
|
||||||
|
|
||||||
|
|
||||||
|
[PDF herunterladen](nextcloud-ldap.pdf){ .md-button }
|
||||||
BIN
mkdocs/docs/Linux_Unternehmen/nextcloud-ldap.pdf
Normal file
508
mkdocs/docs/Linux_Unternehmen/ubuntu-ad-dc.md
Normal file
@@ -0,0 +1,508 @@
|
|||||||
|
# Installation Ubuntu Server 24.04 LTS
|
||||||
|
|
||||||
|
Die Installation des Ubuntu Servers Erfolgt in Virtualbox. Achten Sie
|
||||||
|
bei der Einrichtung der VM darauf, dass die unbeaufsichtigte
|
||||||
|
Installation nicht durchgeführt wird, da einzelne Schritte relevant
|
||||||
|
sind.
|
||||||
|
|
||||||
|
Beim Bootvorgang wählen Sie „Try or Install" um das Setup zu starten.
|
||||||
|
Wählen Sie im nächsten Schritt Deutsch als Installations- und
|
||||||
|
Systemsprache. Bei Der Wahl der Tastatur setzen Sie ebenfalls auf German
|
||||||
|
und German.
|
||||||
|
|
||||||
|
Die Installationsart sollte Standard sein. Minimal führt dazu, dass
|
||||||
|
viele „übliche" Programme wie `PING` nicht installiert werden.
|
||||||
|
Üblicherweise benötigen Sie den unteren teil der Third-Party-Driver
|
||||||
|
nicht, wenn Sie nicht auf echter Hardware arbeiten. Hier werden dann
|
||||||
|
RAID-Controller oder WLAN-Karten ergänzt.
|
||||||
|
|
||||||
|
Die Netzwerkkonfiguration belassen wir auf DHCP, da später die
|
||||||
|
Konfigurationsdatei manuell angepasst werden soll. Üblicherweise würde
|
||||||
|
aber hier eine feste IP für einen Server vergeben werden, wobei darauf
|
||||||
|
zu achten ist, die Subnetzmaske als CIDR anzuhängen. Proxy bleibt leer.
|
||||||
|
|
||||||
|
Nach der Bestätigung der Netzwerkkonfiguration testet der Server
|
||||||
|
automatisch den schnellsten/nächsten Updateserver.
|
||||||
|
|
||||||
|
Die Festplattenpartitionierung kann auf Default belassen werden. Die
|
||||||
|
Verwendung von LVM ist mittlerweile Standard. LVM steht für Logical
|
||||||
|
Volume Manager und ist eine Variante Software-RAID um auch nachträglich
|
||||||
|
Erweiterungen oder Redundanzen hinzuzufügen. Bestätigen Sie ihre Wahl.
|
||||||
|
|
||||||
|
Setzen Sie Ihren user-account und ihren Hostname dc1.
|
||||||
|
|
||||||
|
Im nächsten Schritt können Sie sich für Ubuntu Pro anmelden, einen
|
||||||
|
Dienst, welcher ihnen erweiterten Support und Features wie
|
||||||
|
Kernel-Live-Patches und längeren Support.
|
||||||
|
|
||||||
|
Aktivieren Sie auf jeden Fall die Installation des openSSH-Servers.
|
||||||
|
Unten könnten Sie SSH-Keys aus z.B. github importieren, um sie später
|
||||||
|
ohne Passwort per SSH auf den Server zu verbinden.
|
||||||
|
|
||||||
|
Die nachfolgenden Features sind „snaps" von Ubuntu und sollen im Rahmen
|
||||||
|
der Meisterausbildung nicht genutzt werden, da diese nicht auf
|
||||||
|
„Nicht-Ubuntu" Systemen funktionieren. Hierbei handelt es sich um
|
||||||
|
vorkonfektionierte Programmpakete.
|
||||||
|
|
||||||
|
Nun läuft die Installation durch. Am Ende steht nichts im Log, sondern
|
||||||
|
darunter entsteht ein Button zum Neustarten des Systems.
|
||||||
|
|
||||||
|
Denken Sie nach dem Neustart daran, dass Sie innerhalb des etz wieder den Cache-Server verwenden:
|
||||||
|
```bash
|
||||||
|
echo 'Acquire::http::Proxy "http://10.10.224.119:3142";' | sudo tee /etc/apt/apt.conf.d/02proxy
|
||||||
|
```
|
||||||
|
\newpage
|
||||||
|
## Ein Linux-Server als Active Directory Domain Controller
|
||||||
|
|
||||||
|
Ein Linux-Server der Active Directory beherrscht, ist eine Möglichkeit,
|
||||||
|
um auf den Einsatz eines MS-Servers zu verzichten. Es existieren ein
|
||||||
|
paar Einschränkungen aber das Projekt Samba ist im stetigen Wachstum und
|
||||||
|
entwickelt immer neue Funktionen hinzu. In dieser Arbeitsanweisung
|
||||||
|
werden Sie einen Samba4 Active Directory Server installieren und im
|
||||||
|
Anschluss Diesen mit den MS-Remote Server Administration Tools
|
||||||
|
verwalten. Die Funktionalität dieses Servers enthält: DNS, Kerberos,
|
||||||
|
Benutzer und Gruppen, Netzlaufwerke und Gruppenrichtlinien.
|
||||||
|
|
||||||
|
Vorgaben die in dieser Anleitung genutzt werden.
|
||||||
|
```conf
|
||||||
|
DNS-Server:
|
||||||
|
Name: dc1.tnXX.ito
|
||||||
|
Server Type: Authoritative.
|
||||||
|
Forward Lookup Zone: tnXX.ito
|
||||||
|
Reverse Lookup Zone: 2XX.168.192.in-addr.arpa.
|
||||||
|
|
||||||
|
DC-Server
|
||||||
|
AD DC Hostname: DC1
|
||||||
|
AD DNS Domain Name: tnXX.ito
|
||||||
|
Kerberos Realm: tnXX.ito
|
||||||
|
NT4 Domain Name: tnXX
|
||||||
|
IP Adresse 192.168.2XX.250
|
||||||
|
Server Role: Domain Controller
|
||||||
|
DNS Forwarder: 192.168.2XX.1
|
||||||
|
|
||||||
|
DHCP Server
|
||||||
|
Subnet: 192.168.2XX.0 255.255.255.0
|
||||||
|
Range: 192.168.2XX.100 192.168.2XX.200
|
||||||
|
```
|
||||||
|
|
||||||
|
\newpage
|
||||||
|
|
||||||
|
## Einrichtung der festen IP inklusive DNS-Anpassung
|
||||||
|
|
||||||
|
In der aktuellen Version von Ubuntu Server wird bei der
|
||||||
|
Netzwerkkonfiguration auf netplan gesetzt. Hierbei wird eine .yaml Datei
|
||||||
|
angelegt, welche in der MAAS-Installation (Cloud-Config) automatisch dem
|
||||||
|
Rechner zugewiesen würde.
|
||||||
|
|
||||||
|
Als erstes legen wir eine neue Datei an:
|
||||||
|
```shellscript
|
||||||
|
sudo nano /etc/netplan/01-tnXX-netz.yaml
|
||||||
|
```
|
||||||
|
```yaml
|
||||||
|
# This file describes the network interfaces available on your system
|
||||||
|
# For more information, see netplan(5).
|
||||||
|
network:
|
||||||
|
ethernets:
|
||||||
|
enp0s3:
|
||||||
|
addresses: [192.168.2XX.250/24]
|
||||||
|
routes:
|
||||||
|
- to: 0.0.0.0/0
|
||||||
|
via: 192.168.2XX.1
|
||||||
|
dhcp4: no
|
||||||
|
nameservers:
|
||||||
|
addresses: \[192.168.2.XX.250,1.1.1.1\]
|
||||||
|
search: \[tnXX.ito\]
|
||||||
|
optional: true
|
||||||
|
version: 2
|
||||||
|
```
|
||||||
|
Die Anpassung des Hostnamen wurde auch kompatibel mit der Cloud-Config
|
||||||
|
gemacht daher neuer Vorgehensweise:
|
||||||
|
```shellscript
|
||||||
|
sudo hostnamectl set-hostname dc1
|
||||||
|
sudo nano /etc/cloud/cloud.cfg
|
||||||
|
```
|
||||||
|
```shellscript
|
||||||
|
preserve_hostname: true # Erhält den Hostnamen nach dem Neustart
|
||||||
|
```
|
||||||
|
Erweitern der Hosts-Datei:
|
||||||
|
```shellscript
|
||||||
|
sudo nano /etc/hosts
|
||||||
|
```
|
||||||
|
```config
|
||||||
|
127.0.0.1 localhost
|
||||||
|
127.0.1.1 dc1.tnXX.ito dc1
|
||||||
|
```
|
||||||
|
Einagben Überprüfen:
|
||||||
|
```shellscript
|
||||||
|
sudo hostname
|
||||||
|
sudo nslookup dc1
|
||||||
|
```
|
||||||
|
Beides sollte den oberen Eingaben entsprechen.
|
||||||
|
|
||||||
|
## Installation der benötigten Komponenten
|
||||||
|
```bash
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install samba samba-dsdb-modules samba-vfs-modules krb5-config winbind libpam-winbind libnss-winbind acl dnsutils chrony isc-dhcp-server krb5-user smbclient
|
||||||
|
```
|
||||||
|
Während der Installation werden Sie nach dem Realm für Kerberos gefragt:
|
||||||
|
```INI
|
||||||
|
Realm = MKXX.ITO (Alles groß schreiben)
|
||||||
|
Server = DC1.MKXX.ITO
|
||||||
|
Administrator Server = DC1.MKXX.ITO
|
||||||
|
```
|
||||||
|
## Linux fit für ACL
|
||||||
|
|
||||||
|
Um mit Samba auch die vollen Windows ACL und Benutzer-Attribute zu unterstützen müssen diese ebenfalls im ext4 Dateisystem ihres Servers
|
||||||
|
aktiviert werden.
|
||||||
|
> Bevor Sie das tun wäre jetzt der Punkt einen Sicherungspunkt der VM zu machen Bei Tippfehlern werfen Sie sich selbst aus dem System.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo nano /etc/fstab
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
UUID=xxx / ext4 defaults 0 0
|
||||||
|
```
|
||||||
|
Wird zu:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
UUID=xxx / ext4 user_xattr,acl,barrier=1,errors=remount-ro,defaults 0 0
|
||||||
|
```
|
||||||
|
Speichern und Neustart
|
||||||
|
|
||||||
|
## Zeitserver Einrichten
|
||||||
|
|
||||||
|
Als Zeitserver verwenden wir den Dienst chrony.
|
||||||
|
|
||||||
|
```shellscript
|
||||||
|
sudo nano /etc/chrony/chrony.conf
|
||||||
|
```
|
||||||
|
Am Ende Anhängen:
|
||||||
|
|
||||||
|
```config
|
||||||
|
allow 0.0.0.0/24
|
||||||
|
```
|
||||||
|
Dienst neu starten:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo systemctl restart chrony
|
||||||
|
```
|
||||||
|
Testen ob der Dienst aktiv ist:
|
||||||
|
```bash
|
||||||
|
ss -tulpen:
|
||||||
|
```
|
||||||
|
> udp 0 0 0.0.0.0:123 0.0.0.0:\* 0 22432 1180/chronyd
|
||||||
|
|
||||||
|
## Samba Installation und Provisionierung
|
||||||
|
|
||||||
|
### Samba Installieren
|
||||||
|
Sichern der Orginalkonfiguration
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
|
||||||
|
```
|
||||||
|
### Provisionierung des Samba4 zu einem Active Directory Domain-Controller mit UNIX-Erweiterung:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo samba-tool domain provision --use-rfc2307 --interactive --dns-backend=SAMBA_INTERNAL
|
||||||
|
```
|
||||||
|
Fragen beantworten:
|
||||||
|
* Realm: TNXX.ITO
|
||||||
|
* Domain: TNXX
|
||||||
|
* Server Role: dc
|
||||||
|
* DNS backend: SAMBA_INTERNAL
|
||||||
|
* DNS forwarder: 1.1.1.1
|
||||||
|
* Administrator password: 3 von 4: klein, groß, Zahl Zeichen und mindestens 7 Zeichen lang!!!!!!!!!!!!!! zB. passw0rd#
|
||||||
|
|
||||||
|
Fertig.
|
||||||
|
|
||||||
|
## Startverhalten von Samba an AD-DC anpassen
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo systemctl enable --now samba-ad-dc
|
||||||
|
```
|
||||||
|
Samba nur auf den angegeben Netzwerkkarten starten, auf diese Weise gibt es keine Konflikte mit dem internen Nameserver edit in /etc/samba/smb.conf unter global
|
||||||
|
```bash
|
||||||
|
bind interfaces only = yes
|
||||||
|
interfaces = lo enp0s3
|
||||||
|
```
|
||||||
|
|
||||||
|
## Kerberos-Konfiguration von Samba übernehmen
|
||||||
|
|
||||||
|
Samba legt bei der Provisionierung eine vorgefertigte Konfigurationsdatei für Kerberos also dem Authentifizierungsdienst, welcher auch eine Synchrone Uhr braucht.
|
||||||
|
|
||||||
|
Original sichern:
|
||||||
|
```bash
|
||||||
|
sudo mv /etc/krb5.conf /etc/krb5.conf.bak
|
||||||
|
```
|
||||||
|
Link erstellen:
|
||||||
|
```bash
|
||||||
|
sudo cp -al /var/lib/samba/private/krb5.conf /etc/krb5.conf
|
||||||
|
```
|
||||||
|
## Anpassung der Netzwerkverbindung um DNS-Anfragen durch den Internen-DNS zu beantworten
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo nano /etc/netplan/01-tnXX-netz.yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
...
|
||||||
|
nameservers:
|
||||||
|
addresses: [192.168.2XX.250]
|
||||||
|
search: [tnXX.ito]
|
||||||
|
...
|
||||||
|
```
|
||||||
|
```bash
|
||||||
|
sudo rm /etc/netplan/50-cloud-init.yaml
|
||||||
|
sudo netplan apply
|
||||||
|
```
|
||||||
|
Internen Resolver übernehmen
|
||||||
|
```bash
|
||||||
|
sudo rm /etc/resolv.conf
|
||||||
|
echo -e \"nameserver 127.0.0.1\\nsearch TNXX.ITO\" \| sudo tee
|
||||||
|
/etc/resolv.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
## Überprüfen der DNS-Konfiguration
|
||||||
|
|
||||||
|
Testen des SRV record für ldap über TCP
|
||||||
|
|
||||||
|
```bash
|
||||||
|
host -t SRV \_ldap.\_tcp.tnXX.ito
|
||||||
|
```
|
||||||
|
> _ldap.\_tcp.tnXX.ito has SRV record 0 100 389 dc1.tnXX.ito.
|
||||||
|
|
||||||
|
Testen des SRV record für kerberos über UDP
|
||||||
|
|
||||||
|
```bash
|
||||||
|
host -t SRV \_kerberos.\_udp.tnXX.ito
|
||||||
|
```
|
||||||
|
> _kerberos.\_udp.mkXX.ito has SRV record 0 100 88 dc1.tnXX.ito.
|
||||||
|
|
||||||
|
Und die Namensauflösung des Servers
|
||||||
|
|
||||||
|
```bash
|
||||||
|
host -t A dc1.tnXX.ito
|
||||||
|
```
|
||||||
|
>dc1.tnXX.ito has address 127.0.0.1
|
||||||
|
|
||||||
|
Wenn hier Alles antwortet funktioniert der DNS
|
||||||
|
|
||||||
|
## Kerberos
|
||||||
|
|
||||||
|
Samba erzeugt eine passende Konfigurationsdatei für den Kerberos-Dienst
|
||||||
|
diese verlinken wir anstelle der Original-Datei die uns mitinstalliert
|
||||||
|
wurde.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo mv /etc/krb5.conf /etc/krb5.conf.orig
|
||||||
|
sudo cp -al /var/lib/samba/private/krb5.conf /etc/krb5.conf
|
||||||
|
sudo reboot
|
||||||
|
```
|
||||||
|
Login-Versuch mit Anlegung des Maschinenaccounts
|
||||||
|
```bash
|
||||||
|
kinit administrator@TNXX.ITO
|
||||||
|
```
|
||||||
|
> Es erfolgt eine Ausgabe ihres Passwort-Ablaufdatums
|
||||||
|
```bash
|
||||||
|
klist
|
||||||
|
```
|
||||||
|
> Das komplette Kerberos Ticket wird angezeigt
|
||||||
|
```bash
|
||||||
|
sudo smbclient -L localhost -U 'administrator'
|
||||||
|
```
|
||||||
|
> Sie sehen eine auflistung der Servereigenschaften, der Freigaben und der
|
||||||
|
Serverrolle
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo smbclient //localhost/netlogon -U 'administrator'
|
||||||
|
```
|
||||||
|
Sie sehen das leere netlogon Verzeichnis des Servers und raus geht es
|
||||||
|
mit „exit"
|
||||||
|
|
||||||
|
## DHCP-Server einrichten
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo nano /etc/dhcp/dhcpd.conf
|
||||||
|
```
|
||||||
|
suchen sie den auskommentierten Eintrag „authoritative;" und kommentieren Sie ihn ein. Weiter unten finden Sie ein Beispiel:
|
||||||
|
|
||||||
|
```conf
|
||||||
|
# A slightly different configuration for an internal subnet.
|
||||||
|
#subnet 10.5.5.0 netmask 255.255.255.224 {
|
||||||
|
# range 10.5.5.26 10.5.5.30;
|
||||||
|
# option domain-name-servers ns1.internal.example.org;
|
||||||
|
# option domain-name "internal.example.org";
|
||||||
|
# option subnet-mask 255.255.255.224;
|
||||||
|
# option routers 10.5.5.1;
|
||||||
|
# option broadcast-address 10.5.5.31;
|
||||||
|
# default-lease-time 600;
|
||||||
|
# max-lease-time 7200;
|
||||||
|
#}
|
||||||
|
```
|
||||||
|
welches wir anpassen:
|
||||||
|
|
||||||
|
```conf
|
||||||
|
# A slightly different configuration for an internal subnet.
|
||||||
|
Subnet 192.168.2XX.0 netmask 255.255.255.0 {
|
||||||
|
range 192.168.2XX.100 192.168.2XX.200;
|
||||||
|
option domain-name-servers 192.168.2XX.250;
|
||||||
|
option domain-name "tnXX.ito";
|
||||||
|
option subnet-mask 255.255.255.0;
|
||||||
|
option routers 192.168.2XX.1;
|
||||||
|
option broadcast-address 192.168.2XX.255;
|
||||||
|
default-lease-time 600;
|
||||||
|
max-lease-time 7200;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
speichern und den dienst neu starten mit:
|
||||||
|
```bash
|
||||||
|
sudo systemctl restart isc-dhcp-server
|
||||||
|
```
|
||||||
|
## Benutzer anlegen und Verwalten
|
||||||
|
|
||||||
|
Zur Verwaltung der Nutzer der Domäne haben sie (mindestens) 2
|
||||||
|
Möglichkeiten:
|
||||||
|
|
||||||
|
### RSAT
|
||||||
|
|
||||||
|
Nutzen Sie einen Windows PC, nehmen diesen in die Domäne auf, und nutzen die Remote Server Administration Tools von Microsoft.
|
||||||
|
<https://learn.microsoft.com/de-de/troubleshoot/windows-server/system-management-components/remote-server-administration-tools>
|
||||||
|
|
||||||
|
Diese werden über Features hinzugefügt. Prüfen Sie welcher
|
||||||
|
Installationsweg bei ihrer Windows Version passt. ( winver ausführen )
|
||||||
|
|
||||||
|
Hiermit können Sie Benutzer, Gruppen und auch Gruppenrichtlinien setzen.
|
||||||
|
|
||||||
|
### CLI
|
||||||
|
|
||||||
|
Über das samba-tool kann mit sudo-rechten ebenfalls das Management
|
||||||
|
erfolgen, allerdings Textbasiert:
|
||||||
|
|
||||||
|
Nutzer mit Vor und Nachnamen erstellen und ein Passwort vergeben:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo samba-tool user add dieterbecker 'passw0rd#' --given-name=Dieter --surname=Becker
|
||||||
|
```
|
||||||
|
Wenn auf das Passwort und die Genauen Namen verzichtet wird, erfolgt
|
||||||
|
trotzdem ein Passwort Abfrage Dialog.
|
||||||
|
|
||||||
|
Das Ganze erweitert um den Profilpfad:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo samba-tool user add dieterbecker 'passw0rd#' --given-name=Dieter --surname=Becker --profile-path='\\tnXX\profiles\dieterbecker'
|
||||||
|
```
|
||||||
|
und/oder mit Home-Verzeichnis
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo samba-tool user add dieterbecker 'passw0rd#' --given-name=Dieter --surname=Becker --home-drive=U --home-directory='\\tnXX\dieterbecker'
|
||||||
|
```
|
||||||
|
Nutzer anzeigen:
|
||||||
|
```bash
|
||||||
|
sudo samba-tool user list
|
||||||
|
```
|
||||||
|
Nutzer Löschen:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo samba-tool user delete dieterbecker
|
||||||
|
```
|
||||||
|
Passwort ändern:
|
||||||
|
```bash
|
||||||
|
sudo samba-tool user setpassword dieterbecker
|
||||||
|
```
|
||||||
|
Gruppe anlegen:
|
||||||
|
```bash
|
||||||
|
sudo samba-tool group add Geschaeftsleitung
|
||||||
|
```
|
||||||
|
Gruppe löschen:
|
||||||
|
```bash
|
||||||
|
sudo samba-tool group delete Geschaeftsleitung
|
||||||
|
```
|
||||||
|
Nutzer oder Gruppe zu Gruppe hinzufügen:
|
||||||
|
```bash
|
||||||
|
sudo samba-tool group addmembers \"Geschaeftsleitung\" dieterbecker
|
||||||
|
```
|
||||||
|
Nutzer aus Gruppe entfernen:
|
||||||
|
```bash
|
||||||
|
sudo samba-tool group removemembers \"Geschaeftsleitung\" dieterbecker
|
||||||
|
```
|
||||||
|
Gruppenmitglieder Anzeigen:
|
||||||
|
```bash
|
||||||
|
sudo samba-tool group listmembers \"Geschaeftsleitung\"
|
||||||
|
```
|
||||||
|
## User auf Ubuntu umsetzen
|
||||||
|
|
||||||
|
Damit die Nutzer auch unter Linux verfügbar werden, muss der winbind Dienst wissen, wie die AD-User mit ihren IDs am Server gemappt werden sollen. Daher anpassen der smb.conf:
|
||||||
|
|
||||||
|
Unter ```[Global]``` unter den vorhandenen Einträgen ergänzen:
|
||||||
|
|
||||||
|
```ini
|
||||||
|
password server = DC1.TNXX.ITO
|
||||||
|
idmap uid = 10000-20000
|
||||||
|
idmap gid = 10000-20000
|
||||||
|
winbind enum users = yes
|
||||||
|
winbind enum groups = yes
|
||||||
|
winbind cache time = 10
|
||||||
|
winbind use default domain = yes
|
||||||
|
winbind nss info = rfc2307
|
||||||
|
```
|
||||||
|
Zum übernehmen den Dienst neu starten:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo systemctl restart samba-ad-dc
|
||||||
|
```
|
||||||
|
User testen:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
getend passwd
|
||||||
|
```
|
||||||
|
Gruppen testen:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
getend group
|
||||||
|
```
|
||||||
|
> Es sollten Nutzer und Gruppen mit TNXX\ auftauchen. Sollte dem nicht der fall sein, bitte in der Datei ```/etc/nsswitch.conf``` alle Einträge mit ```sss``` durch ```winbind``` ersrtzen und dann nochmals versuchen.
|
||||||
|
|
||||||
|
## Freigaben für die Gruppen erstellen
|
||||||
|
|
||||||
|
Damit die Nutzer und Gruppen nun auch Laufwerke bekommen müssen die Verzeichnisse erstellt und Freigegeben werden:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo mkdir -p /srv/samba/projekte
|
||||||
|
```
|
||||||
|
Admins zugang geben:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo chown root:"TNXX\Domain Admins" /srv/samba/projekte
|
||||||
|
sudo chmod 0770 /srv/samba/projekte
|
||||||
|
```
|
||||||
|
ACL auf Domänenadmins erweitern:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo setfacl -m g:"TNXX\Domain Admins":rwx /srv/samba/projekte
|
||||||
|
sudo setfacl -d -m g:"TNXX\Domain Admins":rwx /srv/samba/projekte
|
||||||
|
```
|
||||||
|
|
||||||
|
Und damit die Rechte auch setzbar werden:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo samba-tool privilege grant "TNXX\Domain Admins" SeDiskOperatorPrivilege
|
||||||
|
```
|
||||||
|
Eintrag in der smb.conf dafür:
|
||||||
|
```ini
|
||||||
|
[Projekte]
|
||||||
|
path = /srv/samba/projekte
|
||||||
|
read only = no
|
||||||
|
vfs objects = acl_xattr
|
||||||
|
map acl inherit = yes
|
||||||
|
inherit acls = yes
|
||||||
|
inherit permissions = yes
|
||||||
|
nt acl support = yes
|
||||||
|
```
|
||||||
|
|
||||||
|
Jetzt kann die Freigabe vom Admin mit den Jeweiligen User-Gruppenrechten
|
||||||
|
gesetzt werden. Hierfür in einer Windows-Umgebung die Eigenschaften des Netzlaufwerkes anpassen.
|
||||||
|
|
||||||
|
|
||||||
|
[PDF herunterladen](ubuntu-ad-dc.pdf){ .md-button }
|
||||||
BIN
mkdocs/docs/Linux_Unternehmen/ubuntu-ad-dc.pdf
Normal file
BIN
mkdocs/docs/assets/Logo.png
Normal file
|
After Width: | Height: | Size: 9.8 KiB |
133
mkdocs/docs/basics/Automatisierung mit cron und systemd.md
Normal file
@@ -0,0 +1,133 @@
|
|||||||
|
# Automatisierung mit cron und systemd
|
||||||
|
|
||||||
|
Stellen Sie sich vor, Sie betreiben einen Server oder eine Anwendung, die rund um die Uhr laufen muss. Als IT-Meister möchten Sie jederzeit nachvollziehen können, ob Ihr System aktiv ist und wann es zuletzt gestartet wurde. Dafür können Sie zwei klassische Linux-Automatisierungswerkzeuge nutzen:
|
||||||
|
|
||||||
|
* **Cronjob:** Führt regelmäßig Aufgaben aus, z.B. jede Minute, jede Stunde oder einmal täglich.
|
||||||
|
* **systemd-Unit:** Startet Aufgaben beim Systemstart oder zu bestimmten Ereignissen.
|
||||||
|
|
||||||
|
Mit diesen Werkzeugen können Sie z.B. eine Datei anlegen oder aktualisieren, um so einen „Herzschlag" (Heartbeat) Ihres Systems zu dokumentieren.
|
||||||
|
|
||||||
|
# Cron-Job: Jede Minute eine Datei aktualisieren
|
||||||
|
|
||||||
|
> Praxisbeispiel: Heartbeat-File
|
||||||
|
|
||||||
|
Sie möchten, dass jede Minute der Zeitstempel einer Datei (/tmp/heartbeat.txt) aktualisiert wird. Das ist nützlich, um zu prüfen, ob Cron und das System laufen.
|
||||||
|
|
||||||
|
**So geht's:**
|
||||||
|
|
||||||
|
Öffnen Sie die Crontab des aktuellen Benutzers:
|
||||||
|
|
||||||
|
```
|
||||||
|
crontab -e
|
||||||
|
```
|
||||||
|
|
||||||
|
Fügen Sie folgende Zeile hinzu:
|
||||||
|
|
||||||
|
```
|
||||||
|
* * * * * /usr/bin/touch /tmp/heartbeat.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
Jetzt wird jede Minute die Datei /tmp/heartbeat.txt neu angelegt oder ihr Zeitstempel aktualisiert.
|
||||||
|
|
||||||
|
\newpage
|
||||||
|
|
||||||
|
# Crontab-Syntax erklärt:
|
||||||
|
|
||||||
|
| Feld | Bedeutung | Wert im Beispiel | Bedeutung |
|
||||||
|
| ----------- | --------------- | --------------------------------- | ------------------- |
|
||||||
|
| Minute | 0-59 | \* | jede Minute |
|
||||||
|
| Stunde | 0-23 | \* | jede Stunde |
|
||||||
|
| Tag (Monat) | 1-31 | \* | jeder Tag |
|
||||||
|
| Monat | 1-12 | \* | jeder Monat |
|
||||||
|
| Tag (Woche) | 0-7 (0/7 = Son) | \* | jeder Wochentag |
|
||||||
|
| Befehl | Befehl | /usr/bin/touch /tmp/heartbeat.txt | Was wird ausgeführt |
|
||||||
|
|
||||||
|
**Beispiel:**
|
||||||
|
|
||||||
|
```
|
||||||
|
* * * * * /usr/bin/touch /tmp/heartbeat.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
→ Jede Minute wird die Datei angefasst („touched").
|
||||||
|
|
||||||
|
**Weitere Beispiele:**
|
||||||
|
|
||||||
|
```
|
||||||
|
0 0 * * * /usr/bin/touch /tmp/midnight.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
*  jeden Tag um Mitternacht
|
||||||
|
|
||||||
|
```
|
||||||
|
1/5 * * * * /usr/bin/touch /tmp/every5min.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
* alle 5 Minuten beginnend 5 Minuten nach 1 also 6,11,16,...
|
||||||
|
|
||||||
|
# systemd-Unit: Datei beim Systemstart aktualisieren
|
||||||
|
|
||||||
|
## **Praxisbeispiel: Boot-Marker**
|
||||||
|
|
||||||
|
Sie möchten beim Systemstart eine Datei (/tmp/boot.txt) anlegen oder deren Zeitstempel aktualisieren, um den letzten Bootvorgang zu protokollieren.
|
||||||
|
|
||||||
|
**So geht's:**
|
||||||
|
|
||||||
|
Erstellen Sie eine neue systemd-Service-Datei:
|
||||||
|
|
||||||
|
```shellscript
|
||||||
|
sudo nano /etc/systemd/system/touch-at-boot.service
|
||||||
|
```
|
||||||
|
|
||||||
|
Fügen Sie folgenden Inhalt ein:
|
||||||
|
|
||||||
|
```ini
|
||||||
|
[Unit]
|
||||||
|
Description=Touch file at boot
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=/usr/bin/touch /tmp/boot.txt
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
```
|
||||||
|
|
||||||
|
1. Datei speichern und schließen.
|
||||||
|
2. Service aktivieren und testen:
|
||||||
|
|
||||||
|
```shellscript
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
sudo systemctl enable touch-at-boot.service
|
||||||
|
sudo systemctl start touch-at-boot.service
|
||||||
|
```
|
||||||
|
|
||||||
|
Nach jedem Neustart wird /tmp/boot.txt aktualisiert.
|
||||||
|
|
||||||
|
**systemd-Unit erklärt:**
|
||||||
|
|
||||||
|
```ini
|
||||||
|
[Unit]: Metadaten und Abhängigkeiten
|
||||||
|
Description: Kurze Beschreibung
|
||||||
|
[Service]: Was soll gemacht werden?
|
||||||
|
Type=oneshot: Einmaliger Befehl, kein dauerhafter Prozess der überwacht werden könnte
|
||||||
|
ExecStart: Der auszuführende Befehl
|
||||||
|
[Install]: Wann/wo soll der Service gestartet werden?
|
||||||
|
WantedBy=multi-user.target: Startet beim normalen Systemstart
|
||||||
|
```
|
||||||
|
|
||||||
|
**systemd-Kommandos:**
|
||||||
|
|
||||||
|
```shellscript
|
||||||
|
sudo systemctl start <service> # Service sofort starten
|
||||||
|
sudo systemctl enable <service> # Service beim Boot aktivieren
|
||||||
|
sudo systemctl status <service> # Status anzeigen
|
||||||
|
sudo systemctl stop <service> # Service stoppen
|
||||||
|
```
|
||||||
|
|
||||||
|
**Wann nutze ich was?**
|
||||||
|
|
||||||
|
* **Cronjob**: Für wiederkehrende Aufgaben (regelmäßig, z.B. jede Minute, stündlich, täglich)
|
||||||
|
* **systemd-Unit**: Für Aufgaben beim Systemstart, beim Herunterfahren oder bei bestimmten Ereignissen
|
||||||
|
|
||||||
|
|
||||||
|
[PDF herunterladen](Automatisierung_mit_cron_und_systemd.pdf){ .md-button }
|
||||||
BIN
mkdocs/docs/basics/Automatisierung_mit_cron_und_systemd.pdf
Normal file
78
mkdocs/docs/basics/Einstieg in Linux-Desktop.md
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
# Einstieg in Linux-Desktop
|
||||||
|
|
||||||
|
## Notieren Sie bei jedem Schritt:
|
||||||
|
|
||||||
|
* Welche Menüpunkte oder Symbole Sie verwendet haben.
|
||||||
|
* Was Ihnen besonders leicht oder schwer gefallen ist.
|
||||||
|
* Fragen oder Auffälligkeiten, die Ihnen beim Arbeiten begegnen.
|
||||||
|
|
||||||
|
## Benutzeroberfläche kennenlernen
|
||||||
|
|
||||||
|
* Erkunden Sie die Menüstruktur und das Anwendungsmenü.
|
||||||
|
* Passen Sie die Taskleiste an (z.B. Position ändern, Plugins wie CPU- oder Temperaturanzeige hinzufügen).
|
||||||
|
* Nutzen Sie die Systemtray-Symbole (Netzwerk, Bluetooth, Lautstärke).
|
||||||
|
* Öffnen Sie verschiedene Fenster und probieren Sie das Fenster-Management aus (Minimieren, Maximieren, Schließen, ausrichten am Seitenrand).
|
||||||
|
* Finden Sie heraus, wie Sie Programme an die Taskleiste oder das Startmenü anheften können.
|
||||||
|
|
||||||
|
## Tastatur-Layout und Sprache einstellen
|
||||||
|
|
||||||
|
* Öffnen Sie die Systemeinstellungen.
|
||||||
|
* Stellen Sie das Tastatur-Layout auf Deutsch (oder Ihr gewünschtes Layout) um.
|
||||||
|
* Passen Sie die Systemsprache an.
|
||||||
|
|
||||||
|
## Dateiverwaltung mit USB-Stick
|
||||||
|
|
||||||
|
* Stecken Sie Ihren USB-Stick ein und öffnen Sie ihn im Dateimanager.
|
||||||
|
* Erstellen Sie auf dem USB-Stick einen neuen Ordner mit Ihrem Namen.
|
||||||
|
* Kopieren Sie eine Datei von der VM auf den USB-Stick und umgekehrt.
|
||||||
|
* Entfernen Sie den USB-Stick sicher über die grafische Oberfläche.
|
||||||
|
|
||||||
|
## Sonderfall etz
|
||||||
|
|
||||||
|
> **Wichtiger Hinweis:**
|
||||||
|
|
||||||
|
> Damit alle Teilnehmer im Kurs effizient Updates und Software installieren können, wird im Schulungsnetzwerk ein lokaler Paket-Cache (Proxy) verwendet.
|
||||||
|
> **Diesen Schritt müssen Sie außerhalb der Schulungsstätte (z.B. zu Hause) nicht durchführen!**
|
||||||
|
|
||||||
|
So richten Sie den Proxy ein:
|
||||||
|
|
||||||
|
1. Öffnen Sie ein Terminal (z.B. über das Startmenü).
|
||||||
|
2. Geben Sie folgenden Befehl ein (ersetzen Sie ggf. die IP-Adresse, durch die im Kurs verwendete):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
echo 'Acquire::http::Proxy "http://10.10.224.119:3142";' | sudo tee /etc/apt/apt.conf.d/02proxy
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Fahren Sie anschließend wie gewohnt mit Updates und Installationen fort.
|
||||||
|
|
||||||
|
## VLC Media Player installieren (grafisch)
|
||||||
|
|
||||||
|
* Öffnen Sie den grafischen Paketmanager („Empfohlene Software“ oder „Add/Remove Software“).
|
||||||
|
* Suchen Sie nach „VLC“.
|
||||||
|
* Installieren Sie den VLC Media Player.
|
||||||
|
|
||||||
|
## System aktualisieren
|
||||||
|
|
||||||
|
* Öffnen Sie das grafische Update-Tool („Software Updater“ oder „Update Manager“).
|
||||||
|
* Starten Sie die Systemaktualisierung und folgen Sie den Anweisungen.
|
||||||
|
|
||||||
|
## Weiteren Benutzer anlegen und Rechte vergeben
|
||||||
|
|
||||||
|
* Öffnen Sie die Einstellungen für „Benutzer und Gruppen“.
|
||||||
|
* Erstellen Sie einen neuen Benutzer mit einem selbst gewählten Namen.
|
||||||
|
* Geben Sie diesem Benutzer Administratorrechte (Mitglied der Gruppe „sudo“ oder „Administratoren“).
|
||||||
|
|
||||||
|
## Remote-Zugriff einrichten und testen
|
||||||
|
|
||||||
|
* Aktivieren Sie „SSH“ und/oder „VNC“ und „RDP“ für den Fernzugriff. (VNC ist unter Ubuntu nicht mehr nativ vorhanden)
|
||||||
|
* Testen Sie den Remote-Zugriff auch von einem Windows-PC aus:
|
||||||
|
* Für SSH: Verwenden Sie z.B. das Programm „PuTTY“.
|
||||||
|
* Für VNC: Verwenden Sie z.B. „RealVNC Viewer“ (geht auch ohne Registrierung)
|
||||||
|
* Für RDP: Verwenden Sie Micrsoft Remotedesktopverbindung
|
||||||
|
* Melden Sie sich mit den Zugangsdaten Ihres Accounts an.
|
||||||
|
|
||||||
|
> *Viel Erfolg beim Erkunden und Einrichten Ihres Linux Desktops!*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[PDF herunterladen](Einstieg_in_Linux-Desktop.pdf){ .md-button }
|
||||||
BIN
mkdocs/docs/basics/Einstieg_in_Linux-Desktop.pdf
Normal file
143
mkdocs/docs/basics/Grundlagen der Konsole.md
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
# Grundlagen der Konsole
|
||||||
|
|
||||||
|
### Installation nützlicher Programme
|
||||||
|
|
||||||
|
Bevor Sie beginnen, installieren Sie bitte folgende Programme, die Sie im Kurs benötigen:
|
||||||
|
|
||||||
|
* nano: Einfache Textbearbeitung im Terminal
|
||||||
|
* tree: Anzeige von Ordnerstrukturen
|
||||||
|
* htop: Übersichtliche Systemüberwachung
|
||||||
|
|
||||||
|
Führen Sie diesen Befehl im Terminal aus:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install nano tree htop
|
||||||
|
```
|
||||||
|
|
||||||
|
### Wo befinden Sie sich?
|
||||||
|
|
||||||
|
Lassen Sie sich das aktuelle Verzeichnis anzeigen.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pwd
|
||||||
|
```
|
||||||
|
|
||||||
|
### Wechseln Sie in Ihr Home-Verzeichnis.
|
||||||
|
|
||||||
|
Tipp: Das Home-Verzeichnis erreichen Sie mit:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd ~
|
||||||
|
```
|
||||||
|
|
||||||
|
### Erstellen Sie im Home-Verzeichnis einen Ordner „projekt".
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir projekt
|
||||||
|
```
|
||||||
|
|
||||||
|
### Erstellen Sie darin zwei Unterordner „dokumente" und „bilder".
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir projekt/dokumente projekt/bilder
|
||||||
|
```
|
||||||
|
|
||||||
|
### Wechseln Sie in den Ordner „projekt".
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd projekt
|
||||||
|
```
|
||||||
|
|
||||||
|
### Erstellen Sie drei Textdateien: „notizen.txt", „aufgaben.txt", „ideen.txt".
|
||||||
|
|
||||||
|
```bash
|
||||||
|
touch notizen.txt aufgaben.txt ideen.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
### Erstellen Sie zwei Bilddateien (Platzhalter): „bild1.jpg" und „bild2.jpg".
|
||||||
|
|
||||||
|
```bash
|
||||||
|
touch bild1.jpg bild2.jpg
|
||||||
|
```
|
||||||
|
|
||||||
|
### Kopieren Sie „notizen.txt" und „aufgaben.txt" in den Ordner „dokumente".
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cp notizen.txt aufgaben.txt dokumente/
|
||||||
|
```
|
||||||
|
|
||||||
|
### Verschieben Sie „ideen.txt" in den Ordner „dokumente".
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mv ideen.txt dokumente/
|
||||||
|
```
|
||||||
|
|
||||||
|
### Verschieben Sie „bild1.jpg" und „bild2.jpg" in den Ordner „bilder".
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mv bild1.jpg bild2.jpg bilder/
|
||||||
|
```
|
||||||
|
|
||||||
|
### Zeigen Sie die Ordnerstruktur mit „tree" an.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
tree ~/projekt
|
||||||
|
```
|
||||||
|
|
||||||
|
### Öffnen Sie eine der Textdateien mit „nano" und schreiben Sie einen kurzen Text hinein.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
nano dokumente/notizen.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
> Speichern Sie mit Strg+O, beenden Sie mit Strg+X.
|
||||||
|
|
||||||
|
### Zeigen Sie Ihre aktuelle IP-Adresse an.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ip address
|
||||||
|
```
|
||||||
|
|
||||||
|
**oder**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
hostname -I
|
||||||
|
```
|
||||||
|
|
||||||
|
### Überwachen Sie Ihr System mit „htop".
|
||||||
|
|
||||||
|
```bash
|
||||||
|
htop
|
||||||
|
```
|
||||||
|
|
||||||
|
### Zeigen Sie die Speicherauslastung an.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
df -h
|
||||||
|
```
|
||||||
|
|
||||||
|
### Zeigen Sie die Arbeitsspeicher-Auslastung an.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
free -h
|
||||||
|
```
|
||||||
|
|
||||||
|
### 18. Wie finden Sie Hilfe zu einem Befehl?
|
||||||
|
|
||||||
|
```bash
|
||||||
|
man <Befehl>
|
||||||
|
```
|
||||||
|
|
||||||
|
Beispiel:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
man ls
|
||||||
|
```
|
||||||
|
|
||||||
|
**Zusatzaufgabe:****Erstellen Sie eine weitere Datei im Ordner „dokumente" und verschieben Sie diese anschließend in den Ordner „bilder". Zeigen Sie danach erneut die Struktur mit tree an.**
|
||||||
|
|
||||||
|
> Viel Erfolg beim Erkunden der Linux-Befehle und beim Organisieren Ihrer Dateien!
|
||||||
|
|
||||||
|
|
||||||
|
[PDF herunterladen](Grundlagen_der_Konsole.pdf){ .md-button }
|
||||||
BIN
mkdocs/docs/basics/Grundlagen_der_Konsole.pdf
Normal file
304
mkdocs/docs/basics/Windows-Freigabe mit Samba.md
Normal file
@@ -0,0 +1,304 @@
|
|||||||
|
# Windows-Freigabe mit Samba
|
||||||
|
|
||||||
|
Samba ist die Linux-Variante um SMB-Verbindungen zu Windows, Linux und OS X (macOS) herzustellen. Hierfür wird ein Serverdienst installiert und über eine übersichtliche Konfigurationsdatei entsprechend den Anforderungen eingestellt. Es existieren zwar auch Möglichkeiten diese Freigaben über GUI-Programme oder Webinterfaces zu konfigurieren allerdings sind deren Funktionsumfang meist auf Basis-Funktionen beschränkt. Samba bietet eine Überprüfungsmöglichkeit der Konfigurationsdatei, um Schreibfehler und deren Konsequenzen übersichtlich darzustellen.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
Für die Installation empfiehlt sich die Shell da hierüber sinnvoll beobachtet werden kann welche weiteren Abhängigkeiten installiert werden.
|
||||||
|
|
||||||
|
### Shell-Installation
|
||||||
|
|
||||||
|
Update der Paketdatenbank und der installierten Pakete
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt update && sudo apt-get upgrade -y
|
||||||
|
```
|
||||||
|
|
||||||
|
Installation des Samba-Dienstes
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt install samba
|
||||||
|
```
|
||||||
|
|
||||||
|
Nach der Installation des Dienstes kann dieser über die Konfigurationsdatei /etc/samba/smb.conf bearbeitet werden. Die von Ubuntu vorkonfigurierte Version ist nahezu vollständig selbsterklärend und mit entsprechenden Beispielen versehen.
|
||||||
|
|
||||||
|
## smb.conf
|
||||||
|
|
||||||
|
```ini
|
||||||
|
[global]
|
||||||
|
workgroup = WORKGROUP
|
||||||
|
```
|
||||||
|
|
||||||
|
Hier wird die Arbeitsgruppe bzw. die Domäne, in der der Samba-Server
|
||||||
|
betrieben werden soll definiert.
|
||||||
|
|
||||||
|
```ini
|
||||||
|
server string = %h server (Samba, Ubuntu)
|
||||||
|
```
|
||||||
|
|
||||||
|
Die Beschreibung des Servers (mouse-over) wobei für %h für der hostname
|
||||||
|
des Servers eingesetzt wird.
|
||||||
|
|
||||||
|
```ini
|
||||||
|
wins support = no
|
||||||
|
wins server = w.x.y.z
|
||||||
|
```
|
||||||
|
|
||||||
|
Kann geändert werden zu
|
||||||
|
|
||||||
|
```ini
|
||||||
|
wins support = yes
|
||||||
|
# wins server = w.x.y.z
|
||||||
|
```
|
||||||
|
|
||||||
|
Damit übernimmt der Samba-Server die [WINS](https://de.wikipedia.org/wiki/Windows_Internet_Naming_Service)-Aufgaben.
|
||||||
|
|
||||||
|
**In einem Netzwerk sollte immer nur ein WINS-Server aktiv laufen.**
|
||||||
|
|
||||||
|
```ini
|
||||||
|
dns proxy = no
|
||||||
|
```
|
||||||
|
|
||||||
|
Bei der Grundkonfiguration no wird kein DNS-Server für die Namensauflösung genutzt sondern nur die lokalen host Dateien, WINS-Server und Broadcasts. Wenn ein funktionierender DNS-Server im Netzwerk vorhanden ist kann dieser durch den Einsatz von yes ebenfalls genutzt werden.
|
||||||
|
|
||||||
|
```ini
|
||||||
|
interfaces = 127.0.0.0/8 eth0
|
||||||
|
bind interfaces only = yes
|
||||||
|
```
|
||||||
|
|
||||||
|
Hier kann konfiguriert werden ob der Samba-Server auf einer, mehreren oder allen Netzwerkkarten und IP-Adressen verfügbar ist. Wenn Sie hier nichts verändern ist der Server Grundsätzlich auf allen Netzwerkkarten und Subnetzen erreichbar.
|
||||||
|
|
||||||
|
```ini
|
||||||
|
server role =
|
||||||
|
```
|
||||||
|
|
||||||
|
standalone server: Die einfachste Variante, nur User die per smbpasswd hinzugefügt wurden können auf den Samba-Server zugreifen.
|
||||||
|
|
||||||
|
member server: Der Server ist Mitglied einer Domäne und hat ein Maschinenkonto auf dem ADDC an welchen auch die Benutzeranfragen weitergegegeben werden.
|
||||||
|
|
||||||
|
classic primary domain controller: Samba agiert als NT4 PDC
|
||||||
|
|
||||||
|
classic backup domain controller : Samba ist ein sekundärer NT4 DC
|
||||||
|
|
||||||
|
active directory domain controller: Samba agiert als ADDC und übernimmt die gesamte Benutzerauthentifizierung. Diese Einstellung sollte nicht von Hand genutzt werden da hierfür ein Provisionierungsscript genutzt wird.
|
||||||
|
|
||||||
|
```
|
||||||
|
map to guest = bad user
|
||||||
|
```
|
||||||
|
|
||||||
|
Was passiert mit unbekannten Nutzern.
|
||||||
|
|
||||||
|
## Freigaben
|
||||||
|
|
||||||
|
Freigaben werden je nach Funktionalität unterschiedlich beschrieben wobei es auch besondere Freigaben gibt, welche z.B. Drucker, Clientspezifisch oder Userspezifische Freigaben betreffen.
|
||||||
|
|
||||||
|
## Beispiel einer freien Freigabe z.B. Medienfreigabe im Privatbereich
|
||||||
|
|
||||||
|
```ini
|
||||||
|
[Musik]
|
||||||
|
comment = Musikfreigabe
|
||||||
|
path = /srv/samba/musik
|
||||||
|
read only = no
|
||||||
|
browseable = yes
|
||||||
|
```
|
||||||
|
|
||||||
|
Nach dem Speichern überprüfen Sie ob alle Funktionen, die sie definiert
|
||||||
|
haben korrekt übernommen werden konnten:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo samba-tool testparm
|
||||||
|
```
|
||||||
|
|
||||||
|
Sie werden feststellen, dass die Option browseable nicht angezeigt wird. Dies liegt daran, dass diese Kombination browseable = yes ein defaultwert ist und somit nicht angezeigt wird.
|
||||||
|
|
||||||
|
Damit diese Freigabe auch funktioniert, muss Sie auch auf dem System vorhanden sein, sowie die korrekte Rechtevergabe erfolgt sein.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo mkdir /srv/samba
|
||||||
|
sudo mkdir /srv/samba/musik
|
||||||
|
sudo chmod -R a+rw /srv/samba/musik
|
||||||
|
```
|
||||||
|
|
||||||
|
nach Abschluss dieser Aktion muss der Samba-Dienst und der NetBIOS-Nameserver neu gestartet werden.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo systemctl restart smbd.service nmbd.service
|
||||||
|
```
|
||||||
|
|
||||||
|
Alle vor der Installation von Samba vorhandenen User sind nicht in der Samba-Datenbank hinterlegt und müssen nachgepflegt werden. Hierbei geben sie ihren Usernamen und ihr Passwort erneut ein. Spätere Änderungen werden synchronisiert.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo smbpasswd -a USERNAME
|
||||||
|
```
|
||||||
|
|
||||||
|
Nun können Sie von einem beliebigen Client auf diese Freigabe zugreifen:
|
||||||
|
|
||||||
|
Windows:
|
||||||
|
|
||||||
|
Explorer öffnen und in der Adresszeile:
|
||||||
|
|
||||||
|
```
|
||||||
|
\\IP des Servers\Musik
|
||||||
|
```
|
||||||
|
|
||||||
|
eingeben oder direkt ein Netzlaufwerk verbinden
|
||||||
|
|
||||||
|
Linux und OSX:
|
||||||
|
|
||||||
|
Im Dateimanager in die Adresszeile:
|
||||||
|
|
||||||
|
```
|
||||||
|
smb://IP des Servers/Musik
|
||||||
|
```
|
||||||
|
|
||||||
|
## Beispiel eingeschränkte Freigabe z.B. Unterlagen für bestimmten Personenkreis.
|
||||||
|
|
||||||
|
Im Vorfeld solcher Freigaben müssen die betreffenden Benutzer zum einen auf dem System vorhanden sein und auch noch ergänzend in Samba bekannt gemacht werden. Dazu legen wir nun 2 neue Nutzer an, um später nachvollziehen zu können wer was darf. Dazu als Beispiel Hans Wurst aus der Produktion und Peter Lustig aus der Verwaltung.
|
||||||
|
|
||||||
|
Im folgenden werden Zugriffsgruppen definiert welche es ermöglichen die Lese- und Schreibrechte sauber Granuliert darzustellen:
|
||||||
|
|
||||||
|
| | Lesen
Angebote | Schreiben
Angebote | Lesen
Lieferscheine | Schreiben
Lieferscheine |
|
||||||
|
| ------------ | ------------------ | ---------------------- | ----------------------- | --------------------------- |
|
||||||
|
| Hans Wurst | X | | | X |
|
||||||
|
| Peter Lustig | | X | | X |
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo adduser hwurst
|
||||||
|
sudo adduser plustig
|
||||||
|
sudo addgroup angebote_l
|
||||||
|
sudo addgroup angebote_ae
|
||||||
|
sudo addgrouo lieferscheine_l
|
||||||
|
sudo addgroup lieferscheine_ae
|
||||||
|
sudo usermod -aG angebote_l hwurst
|
||||||
|
sudo usermod -aG lieferscheine_ae hwurst
|
||||||
|
sudo usermod -aG angebote_ae plustig
|
||||||
|
sudo usermod -aG lieferscheine_ae plustig
|
||||||
|
```
|
||||||
|
|
||||||
|
Bekanntgabe an Samba:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo smbpasswd -a hwurst
|
||||||
|
sudo smbpasswd -a plustig
|
||||||
|
```
|
||||||
|
|
||||||
|
Erstellen der Verzeichnisse:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo mkdir /srv/samba/angebote
|
||||||
|
sudo mkdir /srv/samba/lieferscheine
|
||||||
|
sudo chown -R nobody:angebote_ae /srv/samba/angebote
|
||||||
|
sudo chown -R nobody:lieferscheine_ae /srv/samba/lieferscheine
|
||||||
|
sudo chmod -R 0077 /srv/samba/angebote
|
||||||
|
sudo chmod -R 0077 /srv/samba/lieferscheine
|
||||||
|
sudo nano /etc/samba/smb.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
```ini
|
||||||
|
[Angebote]
|
||||||
|
comment = Angebote an Kunden
|
||||||
|
path = /srv/samba/angebote
|
||||||
|
guest ok = no
|
||||||
|
browseable = yes
|
||||||
|
readonly = yes
|
||||||
|
valid users = @angebote_l, @angebote_ae
|
||||||
|
write list = @angebote_ae
|
||||||
|
force create mode = 0775
|
||||||
|
force directory mask = 0775
|
||||||
|
force group = angebote_ae
|
||||||
|
|
||||||
|
[Lieferscheine]
|
||||||
|
copy = Angebote
|
||||||
|
comment = Lieferscheine von Lieferanten
|
||||||
|
path = /srv/samba/lieferscheine
|
||||||
|
valid users = @lieferscheine_l, @lieferscheine_ae
|
||||||
|
write list = @lieferscheine_ae
|
||||||
|
force group = lieferscheine_ae
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
## Userverzeichnis
|
||||||
|
|
||||||
|
> Jeder User der Zugriffsrechte auf Samba selbst hat kann durch eine spezielle Freigabe automatisch Zugriff auf sein eigenes Home-Verzeichnis erhalten. Diese ist in der Beispielkonfiguration der smb.conf bereits auskommentiert vorhanden und kann schlicht wieder ein kommentiert werden.
|
||||||
|
|
||||||
|
```ini
|
||||||
|
[homes]
|
||||||
|
comment = Privates Verzeichnis
|
||||||
|
browseable = no
|
||||||
|
read only = yes
|
||||||
|
create mask = 0700
|
||||||
|
directory mask = 0700
|
||||||
|
valid users = %S
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
„homes" ist hier nur ein Platzhalter dieser wird automatisch durch den jeweiligen Usernamen ersetzt und auch der Zugriff ist dann nur für diesen User verfügbar.
|
||||||
|
|
||||||
|
## Sonderfall Drucker
|
||||||
|
|
||||||
|
Für Drucker ist standartmäßig eine Freigabe aktiviert ähnlich wie dies auch Windows in einem Heimnetzwerk tut. Die Konfiguration können Sie der Beispielkonfiguration der smb.conf entnehmen es sind 2 Freigaben notwendig, um ALLE Drucker freizugeben.
|
||||||
|
|
||||||
|
```ini
|
||||||
|
[printers]
|
||||||
|
comment = Alle Drucker
|
||||||
|
browseable = no
|
||||||
|
path = /var/spool/samba
|
||||||
|
printable = yes
|
||||||
|
guest ok = no
|
||||||
|
read only = yes
|
||||||
|
create mask = 0700
|
||||||
|
```
|
||||||
|
|
||||||
|
Damit werden Alle Drucker, die am System eingerichtet sind mit jeweils einem eigenen Eintrag freigegeben.
|
||||||
|
|
||||||
|
```ini
|
||||||
|
[print$]
|
||||||
|
comment = Drucker Treiber
|
||||||
|
path /var/lib/samba/printers
|
||||||
|
browseable = yes
|
||||||
|
read only = yes
|
||||||
|
guest ok = no
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
Hier sucht Windows nach Druckertreibern. Die Treiber müssen entweder über andere Wege in dieses Verzeichnis gelegt werden oder es kann auch ein write list Eintrag hinzugefügt werden.
|
||||||
|
|
||||||
|
## Netzwerkpapierkorb
|
||||||
|
|
||||||
|
Auf einem Netzlaufwerk gelöschte Dateien können schnell mal verloren gehen, dafür lässt sich ein Netzwerkpapierkorb einsetzen. Entweder unter global für alle Freigaben oder pro Freigabe einmal einsetzen.
|
||||||
|
|
||||||
|
```ini
|
||||||
|
# Virtuelles File System "recycle" wird angelegt
|
||||||
|
vfs object = recycle
|
||||||
|
# Der Pfad zum Papierkorb relativ zur Freigabe (".recyclebin" ist
|
||||||
|
Default).
|
||||||
|
recycle:repository = .recyclebin
|
||||||
|
# Im Papierkorb bleiben Pfad-Angaben erhalten.
|
||||||
|
recycle:keeptree = Yes
|
||||||
|
# Beim Verschieben wird der Zeitstempel angepasst.
|
||||||
|
recycle:touch = Yes
|
||||||
|
# Gleichnamige Dateien werden nicht überschrieben.
|
||||||
|
recycle:versions = Yes
|
||||||
|
# Keine Begrenzung der Dateigröße pro gelöschter Datei.
|
||||||
|
recycle:maxsize = 0
|
||||||
|
```
|
||||||
|
|
||||||
|
Und wer leert den? Durch Cron wird jeden Tag der Papierkorb durchsucht
|
||||||
|
und alles, was älter als 14 Tage ist gelöscht.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo crontab -e
|
||||||
|
```
|
||||||
|
|
||||||
|
In einer Zeile:
|
||||||
|
|
||||||
|
```
|
||||||
|
0 12 * * * for path in $(grep path /etc/samba/smb.conf | cut -d= -f2 | sed -e 's/ //' -e 's/\%S/*/'); do if ; then find ${path}/.recycle -mindepth 1 -mtime +14 -exec rm -rf {} \;; fi; done
|
||||||
|
```
|
||||||
|
|
||||||
|
Was steht da nun drin:
|
||||||
|
|
||||||
|
Jeden Tag um 0:12 soll in der smb.conf nach Pfad-Angaben gesucht werden und innerhalb dieser die Pfade „.recycle" nach Dateien durchsucht werden die älter als 14 Tage sind. Diese werden gelöscht.
|
||||||
|
|
||||||
|
|
||||||
|
[PDF herunterladen](Windows-Freigabe_mit_Samba.pdf){ .md-button }
|
||||||
BIN
mkdocs/docs/basics/Windows-Freigabe_mit_Samba.pdf
Normal file
14
mkdocs/docs/index.md
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
# Herzlich willkommen zum Meisterkurs IT: Linux Grundlagen
|
||||||
|
|
||||||
|
Sehr geehrte Teilnehmende,
|
||||||
|
|
||||||
|
willkommen zur Kursübersicht rund um Linux für angehende IT-Meisterinnen und IT-Meister.
|
||||||
|
Diese Dokumentation bietet eine strukturierte Zusammenstellung der Arbeitsaufträge und Grundlagen, um praxisnah und fundiert in Linux und Unternehmensumgebungen einzusteigen.
|
||||||
|
|
||||||
|
Die Inhalte begleiten von den ersten Schritten am Desktop und in der Konsole über wichtige Automatisierungsthemen wie `cron` und `systemd` bis hin zu realen Einsatzszenarien im Unternehmen, etwa Active Directory, Samba-Freigaben und Nextcloud. Zusätzlich werden Bonuskapitel zu Docker angeboten, um containerbasierte Technologien kennenzulernen.
|
||||||
|
|
||||||
|
Die Navigation auf der linken Seite ermöglicht einen schnellen Zugriff auf die gewünschten Themen. Für den bestmöglichen Lernerfolg wünschen wir viel Erfolg und Freude.
|
||||||
|
|
||||||
|
Mit freundlichen Grüßen
|
||||||
|
|
||||||
|
**Florian Hensel**
|
||||||
BIN
mkdocs/docs/mkdocs/docs/index.pdf
Normal file
52
mkdocs/mkdocs.yml
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
site_name: Linux Grundlagen MK-IT
|
||||||
|
nav:
|
||||||
|
- Home: index.md
|
||||||
|
- Grundlagen:
|
||||||
|
- Einstieg in Linux-Desktop: basics/Einstieg in Linux-Desktop.md
|
||||||
|
- Grundlagen der Konsole: basics/Grundlagen der Konsole.md
|
||||||
|
- Windows-Freigabe mit Samba: basics/Windows-Freigabe mit Samba.md
|
||||||
|
- Automatisierung mit cron und systemd: basics/Automatisierung mit cron und systemd.md
|
||||||
|
- Linux im Unternehmen:
|
||||||
|
- Ubuntu Servr als Active Directory Domain Controller: Linux_Unternehmen/ubuntu-ad-dc.md
|
||||||
|
- Linux als Client in Active Directory: Linux_Unternehmen/linux-als-ad-client.md
|
||||||
|
- Nextcloud mit LDAP-Anbindung: Linux_Unternehmen/nextcloud-ldap.md
|
||||||
|
- Bonuskapitel:
|
||||||
|
- Docker-Grundlagen: bonus/docker-grundlagen.md
|
||||||
|
- Docker-Projekte:
|
||||||
|
- Pi-Hole: bonus/docker-pi-hole.md
|
||||||
|
- BackupPC: bonus/docker-backuppc.md
|
||||||
|
|
||||||
|
# Theme
|
||||||
|
theme:
|
||||||
|
logo: assets/Logo.png
|
||||||
|
name: material
|
||||||
|
features:
|
||||||
|
- navigation.sections
|
||||||
|
palette:
|
||||||
|
- media: "(prefers-color-scheme)"
|
||||||
|
toggle:
|
||||||
|
icon: material/brightness-auto
|
||||||
|
name: Switch to light mode
|
||||||
|
- media: "(prefers-color-scheme: light)"
|
||||||
|
scheme: default
|
||||||
|
primary: blue grey
|
||||||
|
accent: orange
|
||||||
|
toggle:
|
||||||
|
icon: material/brightness-7
|
||||||
|
name: Switch to dark mode
|
||||||
|
- media: "(prefers-color-scheme: dark)"
|
||||||
|
scheme: slate
|
||||||
|
primary: blue grey
|
||||||
|
accent: yellow
|
||||||
|
toggle:
|
||||||
|
icon: material/brightness-4
|
||||||
|
name: Switch to system preference
|
||||||
|
|
||||||
|
# Markdown extensions
|
||||||
|
markdown_extensions:
|
||||||
|
- attr_list
|
||||||
|
# - toc:
|
||||||
|
# permalink: true
|
||||||
|
- pymdownx.highlight
|
||||||
|
- pymdownx.superfences
|
||||||
|
|
||||||
842
mkdocs/site/404.html
Normal file
@@ -0,0 +1,842 @@
|
|||||||
|
|
||||||
|
<!doctype html>
|
||||||
|
<html lang="en" class="no-js">
|
||||||
|
<head>
|
||||||
|
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="icon" href="/assets/images/favicon.png">
|
||||||
|
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.0">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<title>Linux Grundlagen MK-IT</title>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="/assets/stylesheets/main.618322db.min.css">
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="/assets/stylesheets/palette.ab4e12ef.min.css">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
|
||||||
|
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>__md_scope=new URL("/",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
|
||||||
|
|
||||||
|
|
||||||
|
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
||||||
|
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
||||||
|
<label class="md-overlay" for="__drawer"></label>
|
||||||
|
<div data-md-component="skip">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div data-md-component="announce">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<header class="md-header md-header--shadow" data-md-component="header">
|
||||||
|
<nav class="md-header__inner md-grid" aria-label="Header">
|
||||||
|
<a href="/." title="Linux Grundlagen MK-IT" class="md-header__button md-logo" aria-label="Linux Grundlagen MK-IT" data-md-component="logo">
|
||||||
|
|
||||||
|
<img src="/assets/Logo.png" alt="logo">
|
||||||
|
|
||||||
|
</a>
|
||||||
|
<label class="md-header__button md-icon" for="__drawer">
|
||||||
|
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
|
||||||
|
</label>
|
||||||
|
<div class="md-header__title" data-md-component="header-title">
|
||||||
|
<div class="md-header__ellipsis">
|
||||||
|
<div class="md-header__topic">
|
||||||
|
<span class="md-ellipsis">
|
||||||
|
Linux Grundlagen MK-IT
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="md-header__topic" data-md-component="header-topic">
|
||||||
|
<span class="md-ellipsis">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<form class="md-header__option" data-md-component="palette">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<input class="md-option" data-md-color-media="(prefers-color-scheme)" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_0">
|
||||||
|
|
||||||
|
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m14.3 16-.7-2h-3.2l-.7 2H7.8L11 7h2l3.2 9zM20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12zm-9.15 3.96h2.3L12 9z"/></svg>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="blue-grey" data-md-color-accent="orange" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_1">
|
||||||
|
|
||||||
|
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_2" hidden>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="blue-grey" data-md-color-accent="yellow" aria-label="Switch to system preference" type="radio" name="__palette" id="__palette_2">
|
||||||
|
|
||||||
|
<label class="md-header__button md-icon" title="Switch to system preference" for="__palette_0" hidden>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<label class="md-header__button md-icon" for="__search">
|
||||||
|
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
|
||||||
|
</label>
|
||||||
|
<div class="md-search" data-md-component="search" role="dialog">
|
||||||
|
<label class="md-search__overlay" for="__search"></label>
|
||||||
|
<div class="md-search__inner" role="search">
|
||||||
|
<form class="md-search__form" name="search">
|
||||||
|
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
|
||||||
|
<label class="md-search__icon md-icon" for="__search">
|
||||||
|
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
|
||||||
|
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
|
||||||
|
</label>
|
||||||
|
<nav class="md-search__options" aria-label="Search">
|
||||||
|
|
||||||
|
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
|
||||||
|
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
|
||||||
|
</button>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
<div class="md-search__output">
|
||||||
|
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
|
||||||
|
<div class="md-search-result" data-md-component="search-result">
|
||||||
|
<div class="md-search-result__meta">
|
||||||
|
Initializing search
|
||||||
|
</div>
|
||||||
|
<ol class="md-search-result__list" role="presentation"></ol>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="md-container" data-md-component="container">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<main class="md-main" data-md-component="main">
|
||||||
|
<div class="md-main__inner md-grid">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
|
||||||
|
<div class="md-sidebar__scrollwrap">
|
||||||
|
<div class="md-sidebar__inner">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
|
||||||
|
<label class="md-nav__title" for="__drawer">
|
||||||
|
<a href="/." title="Linux Grundlagen MK-IT" class="md-nav__button md-logo" aria-label="Linux Grundlagen MK-IT" data-md-component="logo">
|
||||||
|
|
||||||
|
<img src="/assets/Logo.png" alt="logo">
|
||||||
|
|
||||||
|
</a>
|
||||||
|
Linux Grundlagen MK-IT
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<ul class="md-nav__list" data-md-scrollfix>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="/." class="md-nav__link">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="md-ellipsis">
|
||||||
|
|
||||||
|
|
||||||
|
Home
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" >
|
||||||
|
|
||||||
|
|
||||||
|
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="md-ellipsis">
|
||||||
|
|
||||||
|
|
||||||
|
Grundlagen
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="md-nav__icon md-icon"></span>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
|
||||||
|
<label class="md-nav__title" for="__nav_2">
|
||||||
|
<span class="md-nav__icon md-icon"></span>
|
||||||
|
|
||||||
|
|
||||||
|
Grundlagen
|
||||||
|
|
||||||
|
|
||||||
|
</label>
|
||||||
|
<ul class="md-nav__list" data-md-scrollfix>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="/basics/Einstieg%20in%20Linux-Desktop/" class="md-nav__link">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="md-ellipsis">
|
||||||
|
|
||||||
|
|
||||||
|
Einstieg in Linux-Desktop
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="/basics/Grundlagen%20der%20Konsole/" class="md-nav__link">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="md-ellipsis">
|
||||||
|
|
||||||
|
|
||||||
|
Grundlagen der Konsole
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="/basics/Windows-Freigabe%20mit%20Samba/" class="md-nav__link">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="md-ellipsis">
|
||||||
|
|
||||||
|
|
||||||
|
Windows-Freigabe mit Samba
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="/basics/Automatisierung%20mit%20cron%20und%20systemd/" class="md-nav__link">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="md-ellipsis">
|
||||||
|
|
||||||
|
|
||||||
|
Automatisierung mit cron und systemd
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
|
||||||
|
|
||||||
|
|
||||||
|
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="md-ellipsis">
|
||||||
|
|
||||||
|
|
||||||
|
Linux im Unternehmen
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="md-nav__icon md-icon"></span>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
|
||||||
|
<label class="md-nav__title" for="__nav_3">
|
||||||
|
<span class="md-nav__icon md-icon"></span>
|
||||||
|
|
||||||
|
|
||||||
|
Linux im Unternehmen
|
||||||
|
|
||||||
|
|
||||||
|
</label>
|
||||||
|
<ul class="md-nav__list" data-md-scrollfix>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="/Linux_Unternehmen/ubuntu-ad-dc/" class="md-nav__link">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="md-ellipsis">
|
||||||
|
|
||||||
|
|
||||||
|
Ubuntu Servr als Active Directory Domain Controller
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="/Linux_Unternehmen/linux-als-ad-client/" class="md-nav__link">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="md-ellipsis">
|
||||||
|
|
||||||
|
|
||||||
|
Linux als Client in Active Directory
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="/Linux_Unternehmen/nextcloud-ldap/" class="md-nav__link">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="md-ellipsis">
|
||||||
|
|
||||||
|
|
||||||
|
Nextcloud mit LDAP-Anbindung
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
|
||||||
|
|
||||||
|
|
||||||
|
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="md-ellipsis">
|
||||||
|
|
||||||
|
|
||||||
|
Bonuskapitel
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="md-nav__icon md-icon"></span>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
|
||||||
|
<label class="md-nav__title" for="__nav_4">
|
||||||
|
<span class="md-nav__icon md-icon"></span>
|
||||||
|
|
||||||
|
|
||||||
|
Bonuskapitel
|
||||||
|
|
||||||
|
|
||||||
|
</label>
|
||||||
|
<ul class="md-nav__list" data-md-scrollfix>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="/bonus/docker-grundlagen.md" class="md-nav__link">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="md-ellipsis">
|
||||||
|
|
||||||
|
|
||||||
|
Docker-Grundlagen
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item md-nav__item--nested">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_2" >
|
||||||
|
|
||||||
|
|
||||||
|
<label class="md-nav__link" for="__nav_4_2" id="__nav_4_2_label" tabindex="0">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="md-ellipsis">
|
||||||
|
|
||||||
|
|
||||||
|
Docker-Projekte
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="md-nav__icon md-icon"></span>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_2_label" aria-expanded="false">
|
||||||
|
<label class="md-nav__title" for="__nav_4_2">
|
||||||
|
<span class="md-nav__icon md-icon"></span>
|
||||||
|
|
||||||
|
|
||||||
|
Docker-Projekte
|
||||||
|
|
||||||
|
|
||||||
|
</label>
|
||||||
|
<ul class="md-nav__list" data-md-scrollfix>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="/bonus/docker-pi-hole.md" class="md-nav__link">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="md-ellipsis">
|
||||||
|
|
||||||
|
|
||||||
|
Pi-Hole
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="/bonus/docker-backuppc.md" class="md-nav__link">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="md-ellipsis">
|
||||||
|
|
||||||
|
|
||||||
|
BackupPC
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
|
||||||
|
<div class="md-sidebar__scrollwrap">
|
||||||
|
<div class="md-sidebar__inner">
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="md-content" data-md-component="content">
|
||||||
|
|
||||||
|
<article class="md-content__inner md-typeset">
|
||||||
|
|
||||||
|
<h1>404 - Not found</h1>
|
||||||
|
|
||||||
|
</article>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<footer class="md-footer">
|
||||||
|
|
||||||
|
<div class="md-footer-meta md-typeset">
|
||||||
|
<div class="md-footer-meta__inner md-grid">
|
||||||
|
<div class="md-copyright">
|
||||||
|
|
||||||
|
|
||||||
|
Made with
|
||||||
|
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
||||||
|
Material for MkDocs
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="md-dialog" data-md-component="dialog">
|
||||||
|
<div class="md-dialog__inner md-typeset"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script id="__config" type="application/json">{"annotate": null, "base": "/", "features": ["navigation.sections"], "search": "/assets/javascripts/workers/search.7a47a382.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
|
||||||
|
|
||||||
|
|
||||||
|
<script src="/assets/javascripts/bundle.e71a0d61.min.js"></script>
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
BIN
mkdocs/site/Linux_Unternehmen/Nextcloud_Design/Login_Image.jpg
Normal file
|
After Width: | Height: | Size: 375 KiB |
BIN
mkdocs/site/Linux_Unternehmen/Nextcloud_Design/Logo.png
Normal file
|
After Width: | Height: | Size: 9.8 KiB |
BIN
mkdocs/site/Linux_Unternehmen/Nextcloud_Design/background.jpg
Normal file
|
After Width: | Height: | Size: 93 KiB |
|
After Width: | Height: | Size: 250 KiB |
|
After Width: | Height: | Size: 433 KiB |
BIN
mkdocs/site/Linux_Unternehmen/linux-als-ad-client.pdf
Normal file
1249
mkdocs/site/Linux_Unternehmen/linux-als-ad-client/index.html
Normal file
BIN
mkdocs/site/Linux_Unternehmen/nextcloud-ldap-media/image1.png
Normal file
|
After Width: | Height: | Size: 158 KiB |
BIN
mkdocs/site/Linux_Unternehmen/nextcloud-ldap-media/image2.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
mkdocs/site/Linux_Unternehmen/nextcloud-ldap-media/image3.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
mkdocs/site/Linux_Unternehmen/nextcloud-ldap-media/image4.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
mkdocs/site/Linux_Unternehmen/nextcloud-ldap-media/image5.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
mkdocs/site/Linux_Unternehmen/nextcloud-ldap-media/image6.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
mkdocs/site/Linux_Unternehmen/nextcloud-ldap-media/image7.png
Normal file
|
After Width: | Height: | Size: 78 KiB |
BIN
mkdocs/site/Linux_Unternehmen/nextcloud-ldap.pdf
Normal file
1300
mkdocs/site/Linux_Unternehmen/nextcloud-ldap/index.html
Normal file
BIN
mkdocs/site/Linux_Unternehmen/ubuntu-ad-dc.pdf
Normal file
1743
mkdocs/site/Linux_Unternehmen/ubuntu-ad-dc/index.html
Normal file
BIN
mkdocs/site/assets/Logo.png
Normal file
|
After Width: | Height: | Size: 9.8 KiB |
BIN
mkdocs/site/assets/images/favicon.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
16
mkdocs/site/assets/javascripts/bundle.e71a0d61.min.js
vendored
Normal file
1
mkdocs/site/assets/javascripts/lunr/min/lunr.ar.min.js
vendored
Normal file
18
mkdocs/site/assets/javascripts/lunr/min/lunr.da.min.js
vendored
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
/*!
|
||||||
|
* Lunr languages, `Danish` language
|
||||||
|
* https://github.com/MihaiValentin/lunr-languages
|
||||||
|
*
|
||||||
|
* Copyright 2014, Mihai Valentin
|
||||||
|
* http://www.mozilla.org/MPL/
|
||||||
|
*/
|
||||||
|
/*!
|
||||||
|
* based on
|
||||||
|
* Snowball JavaScript Library v0.3
|
||||||
|
* http://code.google.com/p/urim/
|
||||||
|
* http://snowball.tartarus.org/
|
||||||
|
*
|
||||||
|
* Copyright 2010, Oleg Mazko
|
||||||
|
* http://www.mozilla.org/MPL/
|
||||||
|
*/
|
||||||
|
|
||||||
|
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.da=function(){this.pipeline.reset(),this.pipeline.add(e.da.trimmer,e.da.stopWordFilter,e.da.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.da.stemmer))},e.da.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.da.trimmer=e.trimmerSupport.generateTrimmer(e.da.wordCharacters),e.Pipeline.registerFunction(e.da.trimmer,"trimmer-da"),e.da.stemmer=function(){var r=e.stemmerSupport.Among,i=e.stemmerSupport.SnowballProgram,n=new function(){function e(){var e,r=f.cursor+3;if(d=f.limit,0<=r&&r<=f.limit){for(a=r;;){if(e=f.cursor,f.in_grouping(w,97,248)){f.cursor=e;break}if(f.cursor=e,e>=f.limit)return;f.cursor++}for(;!f.out_grouping(w,97,248);){if(f.cursor>=f.limit)return;f.cursor++}d=f.cursor,d<a&&(d=a)}}function n(){var e,r;if(f.cursor>=d&&(r=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,e=f.find_among_b(c,32),f.limit_backward=r,e))switch(f.bra=f.cursor,e){case 1:f.slice_del();break;case 2:f.in_grouping_b(p,97,229)&&f.slice_del()}}function t(){var e,r=f.limit-f.cursor;f.cursor>=d&&(e=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,f.find_among_b(l,4)?(f.bra=f.cursor,f.limit_backward=e,f.cursor=f.limit-r,f.cursor>f.limit_backward&&(f.cursor--,f.bra=f.cursor,f.slice_del())):f.limit_backward=e)}function s(){var e,r,i,n=f.limit-f.cursor;if(f.ket=f.cursor,f.eq_s_b(2,"st")&&(f.bra=f.cursor,f.eq_s_b(2,"ig")&&f.slice_del()),f.cursor=f.limit-n,f.cursor>=d&&(r=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,e=f.find_among_b(m,5),f.limit_backward=r,e))switch(f.bra=f.cursor,e){case 1:f.slice_del(),i=f.limit-f.cursor,t(),f.cursor=f.limit-i;break;case 2:f.slice_from("løs")}}function o(){var e;f.cursor>=d&&(e=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,f.out_grouping_b(w,97,248)?(f.bra=f.cursor,u=f.slice_to(u),f.limit_backward=e,f.eq_v_b(u)&&f.slice_del()):f.limit_backward=e)}var a,d,u,c=[new r("hed",-1,1),new r("ethed",0,1),new r("ered",-1,1),new r("e",-1,1),new r("erede",3,1),new r("ende",3,1),new r("erende",5,1),new r("ene",3,1),new r("erne",3,1),new r("ere",3,1),new r("en",-1,1),new r("heden",10,1),new r("eren",10,1),new r("er",-1,1),new r("heder",13,1),new r("erer",13,1),new r("s",-1,2),new r("heds",16,1),new r("es",16,1),new r("endes",18,1),new r("erendes",19,1),new r("enes",18,1),new r("ernes",18,1),new r("eres",18,1),new r("ens",16,1),new r("hedens",24,1),new r("erens",24,1),new r("ers",16,1),new r("ets",16,1),new r("erets",28,1),new r("et",-1,1),new r("eret",30,1)],l=[new r("gd",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1)],m=[new r("ig",-1,1),new r("lig",0,1),new r("elig",1,1),new r("els",-1,1),new r("løst",-1,2)],w=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],p=[239,254,42,3,0,0,0,0,0,0,0,0,0,0,0,0,16],f=new i;this.setCurrent=function(e){f.setCurrent(e)},this.getCurrent=function(){return f.getCurrent()},this.stem=function(){var r=f.cursor;return e(),f.limit_backward=r,f.cursor=f.limit,n(),f.cursor=f.limit,t(),f.cursor=f.limit,s(),f.cursor=f.limit,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}}(),e.Pipeline.registerFunction(e.da.stemmer,"stemmer-da"),e.da.stopWordFilter=e.generateStopWordFilter("ad af alle alt anden at blev blive bliver da de dem den denne der deres det dette dig din disse dog du efter eller en end er et for fra ham han hans har havde have hende hendes her hos hun hvad hvis hvor i ikke ind jeg jer jo kunne man mange med meget men mig min mine mit mod ned noget nogle nu når og også om op os over på selv sig sin sine sit skal skulle som sådan thi til ud under var vi vil ville vor være været".split(" ")),e.Pipeline.registerFunction(e.da.stopWordFilter,"stopWordFilter-da")}});
|
||||||
18
mkdocs/site/assets/javascripts/lunr/min/lunr.de.min.js
vendored
Normal file
18
mkdocs/site/assets/javascripts/lunr/min/lunr.du.min.js
vendored
Normal file
1
mkdocs/site/assets/javascripts/lunr/min/lunr.el.min.js
vendored
Normal file
18
mkdocs/site/assets/javascripts/lunr/min/lunr.es.min.js
vendored
Normal file
18
mkdocs/site/assets/javascripts/lunr/min/lunr.fi.min.js
vendored
Normal file
18
mkdocs/site/assets/javascripts/lunr/min/lunr.fr.min.js
vendored
Normal file
1
mkdocs/site/assets/javascripts/lunr/min/lunr.he.min.js
vendored
Normal file
1
mkdocs/site/assets/javascripts/lunr/min/lunr.hi.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.hi=function(){this.pipeline.reset(),this.pipeline.add(e.hi.trimmer,e.hi.stopWordFilter,e.hi.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.hi.stemmer))},e.hi.wordCharacters="ऀ-ःऄ-एऐ-टठ-यर-िी-ॏॐ-य़ॠ-९॰-ॿa-zA-Za-zA-Z0-90-9",e.hi.trimmer=e.trimmerSupport.generateTrimmer(e.hi.wordCharacters),e.Pipeline.registerFunction(e.hi.trimmer,"trimmer-hi"),e.hi.stopWordFilter=e.generateStopWordFilter("अत अपना अपनी अपने अभी अंदर आदि आप इत्यादि इन इनका इन्हीं इन्हें इन्हों इस इसका इसकी इसके इसमें इसी इसे उन उनका उनकी उनके उनको उन्हीं उन्हें उन्हों उस उसके उसी उसे एक एवं एस ऐसे और कई कर करता करते करना करने करें कहते कहा का काफ़ी कि कितना किन्हें किन्हों किया किर किस किसी किसे की कुछ कुल के को कोई कौन कौनसा गया घर जब जहाँ जा जितना जिन जिन्हें जिन्हों जिस जिसे जीधर जैसा जैसे जो तक तब तरह तिन तिन्हें तिन्हों तिस तिसे तो था थी थे दबारा दिया दुसरा दूसरे दो द्वारा न नके नहीं ना निहायत नीचे ने पर पहले पूरा पे फिर बनी बही बहुत बाद बाला बिलकुल भी भीतर मगर मानो मे में यदि यह यहाँ यही या यिह ये रखें रहा रहे ऱ्वासा लिए लिये लेकिन व वग़ैरह वर्ग वह वहाँ वहीं वाले वुह वे वो सकता सकते सबसे सभी साथ साबुत साभ सारा से सो संग ही हुआ हुई हुए है हैं हो होता होती होते होना होने".split(" ")),e.hi.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}();var r=e.wordcut;r.init(),e.hi.tokenizer=function(i){if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(r){return isLunr2?new e.Token(r.toLowerCase()):r.toLowerCase()});var t=i.toString().toLowerCase().replace(/^\s+/,"");return r.cut(t).split("|")},e.Pipeline.registerFunction(e.hi.stemmer,"stemmer-hi"),e.Pipeline.registerFunction(e.hi.stopWordFilter,"stopWordFilter-hi")}});
|
||||||
18
mkdocs/site/assets/javascripts/lunr/min/lunr.hu.min.js
vendored
Normal file
1
mkdocs/site/assets/javascripts/lunr/min/lunr.hy.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.hy=function(){this.pipeline.reset(),this.pipeline.add(e.hy.trimmer,e.hy.stopWordFilter)},e.hy.wordCharacters="[A-Za-z-֏ff-ﭏ]",e.hy.trimmer=e.trimmerSupport.generateTrimmer(e.hy.wordCharacters),e.Pipeline.registerFunction(e.hy.trimmer,"trimmer-hy"),e.hy.stopWordFilter=e.generateStopWordFilter("դու և եք էիր էիք հետո նաև նրանք որը վրա է որ պիտի են այս մեջ ն իր ու ի այդ որոնք այն կամ էր մի ես համար այլ իսկ էին ենք հետ ին թ էինք մենք նրա նա դուք եմ էի ըստ որպես ում".split(" ")),e.Pipeline.registerFunction(e.hy.stopWordFilter,"stopWordFilter-hy"),e.hy.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}(),e.Pipeline.registerFunction(e.hy.stemmer,"stemmer-hy")}});
|
||||||
18
mkdocs/site/assets/javascripts/lunr/min/lunr.it.min.js
vendored
Normal file
1
mkdocs/site/assets/javascripts/lunr/min/lunr.ja.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r="2"==e.version[0];e.ja=function(){this.pipeline.reset(),this.pipeline.add(e.ja.trimmer,e.ja.stopWordFilter,e.ja.stemmer),r?this.tokenizer=e.ja.tokenizer:(e.tokenizer&&(e.tokenizer=e.ja.tokenizer),this.tokenizerFn&&(this.tokenizerFn=e.ja.tokenizer))};var t=new e.TinySegmenter;e.ja.tokenizer=function(i){var n,o,s,p,a,u,m,l,c,f;if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(t){return r?new e.Token(t.toLowerCase()):t.toLowerCase()});for(o=i.toString().toLowerCase().replace(/^\s+/,""),n=o.length-1;n>=0;n--)if(/\S/.test(o.charAt(n))){o=o.substring(0,n+1);break}for(a=[],s=o.length,c=0,l=0;c<=s;c++)if(u=o.charAt(c),m=c-l,u.match(/\s/)||c==s){if(m>0)for(p=t.segment(o.slice(l,c)).filter(function(e){return!!e}),f=l,n=0;n<p.length;n++)r?a.push(new e.Token(p[n],{position:[f,p[n].length],index:a.length})):a.push(p[n]),f+=p[n].length;l=c+1}return a},e.ja.stemmer=function(){return function(e){return e}}(),e.Pipeline.registerFunction(e.ja.stemmer,"stemmer-ja"),e.ja.wordCharacters="一二三四五六七八九十百千万億兆一-龠々〆ヵヶぁ-んァ-ヴーア-ン゙a-zA-Za-zA-Z0-90-9",e.ja.trimmer=e.trimmerSupport.generateTrimmer(e.ja.wordCharacters),e.Pipeline.registerFunction(e.ja.trimmer,"trimmer-ja"),e.ja.stopWordFilter=e.generateStopWordFilter("これ それ あれ この その あの ここ そこ あそこ こちら どこ だれ なに なん 何 私 貴方 貴方方 我々 私達 あの人 あのかた 彼女 彼 です あります おります います は が の に を で え から まで より も どの と し それで しかし".split(" ")),e.Pipeline.registerFunction(e.ja.stopWordFilter,"stopWordFilter-ja"),e.jp=e.ja,e.Pipeline.registerFunction(e.jp.stemmer,"stemmer-jp"),e.Pipeline.registerFunction(e.jp.trimmer,"trimmer-jp"),e.Pipeline.registerFunction(e.jp.stopWordFilter,"stopWordFilter-jp")}});
|
||||||
1
mkdocs/site/assets/javascripts/lunr/min/lunr.jp.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
module.exports=require("./lunr.ja");
|
||||||
1
mkdocs/site/assets/javascripts/lunr/min/lunr.kn.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.kn=function(){this.pipeline.reset(),this.pipeline.add(e.kn.trimmer,e.kn.stopWordFilter,e.kn.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.kn.stemmer))},e.kn.wordCharacters="ಀ-಄ಅ-ಔಕ-ಹಾ-ೌ಼-ಽೕ-ೖೝ-ೞೠ-ೡೢ-ೣ೦-೯ೱ-ೳ",e.kn.trimmer=e.trimmerSupport.generateTrimmer(e.kn.wordCharacters),e.Pipeline.registerFunction(e.kn.trimmer,"trimmer-kn"),e.kn.stopWordFilter=e.generateStopWordFilter("ಮತ್ತು ಈ ಒಂದು ರಲ್ಲಿ ಹಾಗೂ ಎಂದು ಅಥವಾ ಇದು ರ ಅವರು ಎಂಬ ಮೇಲೆ ಅವರ ತನ್ನ ಆದರೆ ತಮ್ಮ ನಂತರ ಮೂಲಕ ಹೆಚ್ಚು ನ ಆ ಕೆಲವು ಅನೇಕ ಎರಡು ಹಾಗು ಪ್ರಮುಖ ಇದನ್ನು ಇದರ ಸುಮಾರು ಅದರ ಅದು ಮೊದಲ ಬಗ್ಗೆ ನಲ್ಲಿ ರಂದು ಇತರ ಅತ್ಯಂತ ಹೆಚ್ಚಿನ ಸಹ ಸಾಮಾನ್ಯವಾಗಿ ನೇ ಹಲವಾರು ಹೊಸ ದಿ ಕಡಿಮೆ ಯಾವುದೇ ಹೊಂದಿದೆ ದೊಡ್ಡ ಅನ್ನು ಇವರು ಪ್ರಕಾರ ಇದೆ ಮಾತ್ರ ಕೂಡ ಇಲ್ಲಿ ಎಲ್ಲಾ ವಿವಿಧ ಅದನ್ನು ಹಲವು ರಿಂದ ಕೇವಲ ದ ದಕ್ಷಿಣ ಗೆ ಅವನ ಅತಿ ನೆಯ ಬಹಳ ಕೆಲಸ ಎಲ್ಲ ಪ್ರತಿ ಇತ್ಯಾದಿ ಇವು ಬೇರೆ ಹೀಗೆ ನಡುವೆ ಇದಕ್ಕೆ ಎಸ್ ಇವರ ಮೊದಲು ಶ್ರೀ ಮಾಡುವ ಇದರಲ್ಲಿ ರೀತಿಯ ಮಾಡಿದ ಕಾಲ ಅಲ್ಲಿ ಮಾಡಲು ಅದೇ ಈಗ ಅವು ಗಳು ಎ ಎಂಬುದು ಅವನು ಅಂದರೆ ಅವರಿಗೆ ಇರುವ ವಿಶೇಷ ಮುಂದೆ ಅವುಗಳ ಮುಂತಾದ ಮೂಲ ಬಿ ಮೀ ಒಂದೇ ಇನ್ನೂ ಹೆಚ್ಚಾಗಿ ಮಾಡಿ ಅವರನ್ನು ಇದೇ ಯ ರೀತಿಯಲ್ಲಿ ಜೊತೆ ಅದರಲ್ಲಿ ಮಾಡಿದರು ನಡೆದ ಆಗ ಮತ್ತೆ ಪೂರ್ವ ಆತ ಬಂದ ಯಾವ ಒಟ್ಟು ಇತರೆ ಹಿಂದೆ ಪ್ರಮಾಣದ ಗಳನ್ನು ಕುರಿತು ಯು ಆದ್ದರಿಂದ ಅಲ್ಲದೆ ನಗರದ ಮೇಲಿನ ಏಕೆಂದರೆ ರಷ್ಟು ಎಂಬುದನ್ನು ಬಾರಿ ಎಂದರೆ ಹಿಂದಿನ ಆದರೂ ಆದ ಸಂಬಂಧಿಸಿದ ಮತ್ತೊಂದು ಸಿ ಆತನ ".split(" ")),e.kn.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}();var r=e.wordcut;r.init(),e.kn.tokenizer=function(t){if(!arguments.length||null==t||void 0==t)return[];if(Array.isArray(t))return t.map(function(r){return isLunr2?new e.Token(r.toLowerCase()):r.toLowerCase()});var n=t.toString().toLowerCase().replace(/^\s+/,"");return r.cut(n).split("|")},e.Pipeline.registerFunction(e.kn.stemmer,"stemmer-kn"),e.Pipeline.registerFunction(e.kn.stopWordFilter,"stopWordFilter-kn")}});
|
||||||
1
mkdocs/site/assets/javascripts/lunr/min/lunr.ko.min.js
vendored
Normal file
1
mkdocs/site/assets/javascripts/lunr/min/lunr.multi.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
!function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(e.lunr)}(this,function(){return function(e){e.multiLanguage=function(){for(var t=Array.prototype.slice.call(arguments),i=t.join("-"),r="",n=[],s=[],p=0;p<t.length;++p)"en"==t[p]?(r+="\\w",n.unshift(e.stopWordFilter),n.push(e.stemmer),s.push(e.stemmer)):(r+=e[t[p]].wordCharacters,e[t[p]].stopWordFilter&&n.unshift(e[t[p]].stopWordFilter),e[t[p]].stemmer&&(n.push(e[t[p]].stemmer),s.push(e[t[p]].stemmer)));var o=e.trimmerSupport.generateTrimmer(r);return e.Pipeline.registerFunction(o,"lunr-multi-trimmer-"+i),n.unshift(o),function(){this.pipeline.reset(),this.pipeline.add.apply(this.pipeline,n),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add.apply(this.searchPipeline,s))}}}});
|
||||||
18
mkdocs/site/assets/javascripts/lunr/min/lunr.nl.min.js
vendored
Normal file
18
mkdocs/site/assets/javascripts/lunr/min/lunr.no.min.js
vendored
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
/*!
|
||||||
|
* Lunr languages, `Norwegian` language
|
||||||
|
* https://github.com/MihaiValentin/lunr-languages
|
||||||
|
*
|
||||||
|
* Copyright 2014, Mihai Valentin
|
||||||
|
* http://www.mozilla.org/MPL/
|
||||||
|
*/
|
||||||
|
/*!
|
||||||
|
* based on
|
||||||
|
* Snowball JavaScript Library v0.3
|
||||||
|
* http://code.google.com/p/urim/
|
||||||
|
* http://snowball.tartarus.org/
|
||||||
|
*
|
||||||
|
* Copyright 2010, Oleg Mazko
|
||||||
|
* http://www.mozilla.org/MPL/
|
||||||
|
*/
|
||||||
|
|
||||||
|
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.no=function(){this.pipeline.reset(),this.pipeline.add(e.no.trimmer,e.no.stopWordFilter,e.no.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.no.stemmer))},e.no.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.no.trimmer=e.trimmerSupport.generateTrimmer(e.no.wordCharacters),e.Pipeline.registerFunction(e.no.trimmer,"trimmer-no"),e.no.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,i=new function(){function e(){var e,r=w.cursor+3;if(a=w.limit,0<=r||r<=w.limit){for(s=r;;){if(e=w.cursor,w.in_grouping(d,97,248)){w.cursor=e;break}if(e>=w.limit)return;w.cursor=e+1}for(;!w.out_grouping(d,97,248);){if(w.cursor>=w.limit)return;w.cursor++}a=w.cursor,a<s&&(a=s)}}function i(){var e,r,n;if(w.cursor>=a&&(r=w.limit_backward,w.limit_backward=a,w.ket=w.cursor,e=w.find_among_b(m,29),w.limit_backward=r,e))switch(w.bra=w.cursor,e){case 1:w.slice_del();break;case 2:n=w.limit-w.cursor,w.in_grouping_b(c,98,122)?w.slice_del():(w.cursor=w.limit-n,w.eq_s_b(1,"k")&&w.out_grouping_b(d,97,248)&&w.slice_del());break;case 3:w.slice_from("er")}}function t(){var e,r=w.limit-w.cursor;w.cursor>=a&&(e=w.limit_backward,w.limit_backward=a,w.ket=w.cursor,w.find_among_b(u,2)?(w.bra=w.cursor,w.limit_backward=e,w.cursor=w.limit-r,w.cursor>w.limit_backward&&(w.cursor--,w.bra=w.cursor,w.slice_del())):w.limit_backward=e)}function o(){var e,r;w.cursor>=a&&(r=w.limit_backward,w.limit_backward=a,w.ket=w.cursor,e=w.find_among_b(l,11),e?(w.bra=w.cursor,w.limit_backward=r,1==e&&w.slice_del()):w.limit_backward=r)}var s,a,m=[new r("a",-1,1),new r("e",-1,1),new r("ede",1,1),new r("ande",1,1),new r("ende",1,1),new r("ane",1,1),new r("ene",1,1),new r("hetene",6,1),new r("erte",1,3),new r("en",-1,1),new r("heten",9,1),new r("ar",-1,1),new r("er",-1,1),new r("heter",12,1),new r("s",-1,2),new r("as",14,1),new r("es",14,1),new r("edes",16,1),new r("endes",16,1),new r("enes",16,1),new r("hetenes",19,1),new r("ens",14,1),new r("hetens",21,1),new r("ers",14,1),new r("ets",14,1),new r("et",-1,1),new r("het",25,1),new r("ert",-1,3),new r("ast",-1,1)],u=[new r("dt",-1,-1),new r("vt",-1,-1)],l=[new r("leg",-1,1),new r("eleg",0,1),new r("ig",-1,1),new r("eig",2,1),new r("lig",2,1),new r("elig",4,1),new r("els",-1,1),new r("lov",-1,1),new r("elov",7,1),new r("slov",7,1),new r("hetslov",9,1)],d=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],c=[119,125,149,1],w=new n;this.setCurrent=function(e){w.setCurrent(e)},this.getCurrent=function(){return w.getCurrent()},this.stem=function(){var r=w.cursor;return e(),w.limit_backward=r,w.cursor=w.limit,i(),w.cursor=w.limit,t(),w.cursor=w.limit,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}}(),e.Pipeline.registerFunction(e.no.stemmer,"stemmer-no"),e.no.stopWordFilter=e.generateStopWordFilter("alle at av bare begge ble blei bli blir blitt både båe da de deg dei deim deira deires dem den denne der dere deres det dette di din disse ditt du dykk dykkar då eg ein eit eitt eller elles en enn er et ett etter for fordi fra før ha hadde han hans har hennar henne hennes her hjå ho hoe honom hoss hossen hun hva hvem hver hvilke hvilken hvis hvor hvordan hvorfor i ikke ikkje ikkje ingen ingi inkje inn inni ja jeg kan kom korleis korso kun kunne kva kvar kvarhelst kven kvi kvifor man mange me med medan meg meget mellom men mi min mine mitt mot mykje ned no noe noen noka noko nokon nokor nokre nå når og også om opp oss over på samme seg selv si si sia sidan siden sin sine sitt sjøl skal skulle slik so som som somme somt så sånn til um upp ut uten var vart varte ved vere verte vi vil ville vore vors vort vår være være vært å".split(" ")),e.Pipeline.registerFunction(e.no.stopWordFilter,"stopWordFilter-no")}});
|
||||||
18
mkdocs/site/assets/javascripts/lunr/min/lunr.pt.min.js
vendored
Normal file
18
mkdocs/site/assets/javascripts/lunr/min/lunr.ro.min.js
vendored
Normal file
18
mkdocs/site/assets/javascripts/lunr/min/lunr.ru.min.js
vendored
Normal file
1
mkdocs/site/assets/javascripts/lunr/min/lunr.sa.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.sa=function(){this.pipeline.reset(),this.pipeline.add(e.sa.trimmer,e.sa.stopWordFilter,e.sa.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.sa.stemmer))},e.sa.wordCharacters="ऀ-ःऄ-एऐ-टठ-यर-िी-ॏॐ-य़ॠ-९॰-ॿ꣠-꣱ꣲ-ꣷ꣸-ꣻ꣼-ꣽꣾ-ꣿᆰ0-ᆰ9",e.sa.trimmer=e.trimmerSupport.generateTrimmer(e.sa.wordCharacters),e.Pipeline.registerFunction(e.sa.trimmer,"trimmer-sa"),e.sa.stopWordFilter=e.generateStopWordFilter('तथा अयम् एकम् इत्यस्मिन् तथा तत् वा अयम् इत्यस्य ते आहूत उपरि तेषाम् किन्तु तेषाम् तदा इत्यनेन अधिकः इत्यस्य तत् केचन बहवः द्वि तथा महत्वपूर्णः अयम् अस्य विषये अयं अस्ति तत् प्रथमः विषये इत्युपरि इत्युपरि इतर अधिकतमः अधिकः अपि सामान्यतया ठ इतरेतर नूतनम् द न्यूनम् कश्चित् वा विशालः द सः अस्ति तदनुसारम् तत्र अस्ति केवलम् अपि अत्र सर्वे विविधाः तत् बहवः यतः इदानीम् द दक्षिण इत्यस्मै तस्य उपरि नथ अतीव कार्यम् सर्वे एकैकम् इत्यादि। एते सन्ति उत इत्थम् मध्ये एतदर्थं . स कस्य प्रथमः श्री. करोति अस्मिन् प्रकारः निर्मिता कालः तत्र कर्तुं समान अधुना ते सन्ति स एकः अस्ति सः अर्थात् तेषां कृते . स्थितम् विशेषः अग्रिम तेषाम् समान स्रोतः ख म समान इदानीमपि अधिकतया करोतु ते समान इत्यस्य वीथी सह यस्मिन् कृतवान् धृतः तदा पुनः पूर्वं सः आगतः किम् कुल इतर पुरा मात्रा स विषये उ अतएव अपि नगरस्य उपरि यतः प्रतिशतं कतरः कालः साधनानि भूत तथापि जात सम्बन्धि अन्यत् ग अतः अस्माकं स्वकीयाः अस्माकं इदानीं अन्तः इत्यादयः भवन्तः इत्यादयः एते एताः तस्य अस्य इदम् एते तेषां तेषां तेषां तान् तेषां तेषां तेषां समानः सः एकः च तादृशाः बहवः अन्ये च वदन्ति यत् कियत् कस्मै कस्मै यस्मै यस्मै यस्मै यस्मै न अतिनीचः किन्तु प्रथमं सम्पूर्णतया ततः चिरकालानन्तरं पुस्तकं सम्पूर्णतया अन्तः किन्तु अत्र वा इह इव श्रद्धाय अवशिष्यते परन्तु अन्ये वर्गाः सन्ति ते सन्ति शक्नुवन्ति सर्वे मिलित्वा सर्वे एकत्र"'.split(" ")),e.sa.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}();var r=e.wordcut;r.init(),e.sa.tokenizer=function(t){if(!arguments.length||null==t||void 0==t)return[];if(Array.isArray(t))return t.map(function(r){return isLunr2?new e.Token(r.toLowerCase()):r.toLowerCase()});var i=t.toString().toLowerCase().replace(/^\s+/,"");return r.cut(i).split("|")},e.Pipeline.registerFunction(e.sa.stemmer,"stemmer-sa"),e.Pipeline.registerFunction(e.sa.stopWordFilter,"stopWordFilter-sa")}});
|
||||||
1
mkdocs/site/assets/javascripts/lunr/min/lunr.stemmer.support.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
!function(r,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(r.lunr)}(this,function(){return function(r){r.stemmerSupport={Among:function(r,t,i,s){if(this.toCharArray=function(r){for(var t=r.length,i=new Array(t),s=0;s<t;s++)i[s]=r.charCodeAt(s);return i},!r&&""!=r||!t&&0!=t||!i)throw"Bad Among initialisation: s:"+r+", substring_i: "+t+", result: "+i;this.s_size=r.length,this.s=this.toCharArray(r),this.substring_i=t,this.result=i,this.method=s},SnowballProgram:function(){var r;return{bra:0,ket:0,limit:0,cursor:0,limit_backward:0,setCurrent:function(t){r=t,this.cursor=0,this.limit=t.length,this.limit_backward=0,this.bra=this.cursor,this.ket=this.limit},getCurrent:function(){var t=r;return r=null,t},in_grouping:function(t,i,s){if(this.cursor<this.limit){var e=r.charCodeAt(this.cursor);if(e<=s&&e>=i&&(e-=i,t[e>>3]&1<<(7&e)))return this.cursor++,!0}return!1},in_grouping_b:function(t,i,s){if(this.cursor>this.limit_backward){var e=r.charCodeAt(this.cursor-1);if(e<=s&&e>=i&&(e-=i,t[e>>3]&1<<(7&e)))return this.cursor--,!0}return!1},out_grouping:function(t,i,s){if(this.cursor<this.limit){var e=r.charCodeAt(this.cursor);if(e>s||e<i)return this.cursor++,!0;if(e-=i,!(t[e>>3]&1<<(7&e)))return this.cursor++,!0}return!1},out_grouping_b:function(t,i,s){if(this.cursor>this.limit_backward){var e=r.charCodeAt(this.cursor-1);if(e>s||e<i)return this.cursor--,!0;if(e-=i,!(t[e>>3]&1<<(7&e)))return this.cursor--,!0}return!1},eq_s:function(t,i){if(this.limit-this.cursor<t)return!1;for(var s=0;s<t;s++)if(r.charCodeAt(this.cursor+s)!=i.charCodeAt(s))return!1;return this.cursor+=t,!0},eq_s_b:function(t,i){if(this.cursor-this.limit_backward<t)return!1;for(var s=0;s<t;s++)if(r.charCodeAt(this.cursor-t+s)!=i.charCodeAt(s))return!1;return this.cursor-=t,!0},find_among:function(t,i){for(var s=0,e=i,n=this.cursor,u=this.limit,o=0,h=0,c=!1;;){for(var a=s+(e-s>>1),f=0,l=o<h?o:h,_=t[a],m=l;m<_.s_size;m++){if(n+l==u){f=-1;break}if(f=r.charCodeAt(n+l)-_.s[m])break;l++}if(f<0?(e=a,h=l):(s=a,o=l),e-s<=1){if(s>0||e==s||c)break;c=!0}}for(;;){var _=t[s];if(o>=_.s_size){if(this.cursor=n+_.s_size,!_.method)return _.result;var b=_.method();if(this.cursor=n+_.s_size,b)return _.result}if((s=_.substring_i)<0)return 0}},find_among_b:function(t,i){for(var s=0,e=i,n=this.cursor,u=this.limit_backward,o=0,h=0,c=!1;;){for(var a=s+(e-s>>1),f=0,l=o<h?o:h,_=t[a],m=_.s_size-1-l;m>=0;m--){if(n-l==u){f=-1;break}if(f=r.charCodeAt(n-1-l)-_.s[m])break;l++}if(f<0?(e=a,h=l):(s=a,o=l),e-s<=1){if(s>0||e==s||c)break;c=!0}}for(;;){var _=t[s];if(o>=_.s_size){if(this.cursor=n-_.s_size,!_.method)return _.result;var b=_.method();if(this.cursor=n-_.s_size,b)return _.result}if((s=_.substring_i)<0)return 0}},replace_s:function(t,i,s){var e=s.length-(i-t),n=r.substring(0,t),u=r.substring(i);return r=n+s+u,this.limit+=e,this.cursor>=i?this.cursor+=e:this.cursor>t&&(this.cursor=t),e},slice_check:function(){if(this.bra<0||this.bra>this.ket||this.ket>this.limit||this.limit>r.length)throw"faulty slice operation"},slice_from:function(r){this.slice_check(),this.replace_s(this.bra,this.ket,r)},slice_del:function(){this.slice_from("")},insert:function(r,t,i){var s=this.replace_s(r,t,i);r<=this.bra&&(this.bra+=s),r<=this.ket&&(this.ket+=s)},slice_to:function(){return this.slice_check(),r.substring(this.bra,this.ket)},eq_v_b:function(r){return this.eq_s_b(r.length,r)}}}},r.trimmerSupport={generateTrimmer:function(r){var t=new RegExp("^[^"+r+"]+"),i=new RegExp("[^"+r+"]+$");return function(r){return"function"==typeof r.update?r.update(function(r){return r.replace(t,"").replace(i,"")}):r.replace(t,"").replace(i,"")}}}}});
|
||||||
18
mkdocs/site/assets/javascripts/lunr/min/lunr.sv.min.js
vendored
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
/*!
|
||||||
|
* Lunr languages, `Swedish` language
|
||||||
|
* https://github.com/MihaiValentin/lunr-languages
|
||||||
|
*
|
||||||
|
* Copyright 2014, Mihai Valentin
|
||||||
|
* http://www.mozilla.org/MPL/
|
||||||
|
*/
|
||||||
|
/*!
|
||||||
|
* based on
|
||||||
|
* Snowball JavaScript Library v0.3
|
||||||
|
* http://code.google.com/p/urim/
|
||||||
|
* http://snowball.tartarus.org/
|
||||||
|
*
|
||||||
|
* Copyright 2010, Oleg Mazko
|
||||||
|
* http://www.mozilla.org/MPL/
|
||||||
|
*/
|
||||||
|
|
||||||
|
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.sv=function(){this.pipeline.reset(),this.pipeline.add(e.sv.trimmer,e.sv.stopWordFilter,e.sv.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.sv.stemmer))},e.sv.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.sv.trimmer=e.trimmerSupport.generateTrimmer(e.sv.wordCharacters),e.Pipeline.registerFunction(e.sv.trimmer,"trimmer-sv"),e.sv.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,t=new function(){function e(){var e,r=w.cursor+3;if(o=w.limit,0<=r||r<=w.limit){for(a=r;;){if(e=w.cursor,w.in_grouping(l,97,246)){w.cursor=e;break}if(w.cursor=e,w.cursor>=w.limit)return;w.cursor++}for(;!w.out_grouping(l,97,246);){if(w.cursor>=w.limit)return;w.cursor++}o=w.cursor,o<a&&(o=a)}}function t(){var e,r=w.limit_backward;if(w.cursor>=o&&(w.limit_backward=o,w.cursor=w.limit,w.ket=w.cursor,e=w.find_among_b(u,37),w.limit_backward=r,e))switch(w.bra=w.cursor,e){case 1:w.slice_del();break;case 2:w.in_grouping_b(d,98,121)&&w.slice_del()}}function i(){var e=w.limit_backward;w.cursor>=o&&(w.limit_backward=o,w.cursor=w.limit,w.find_among_b(c,7)&&(w.cursor=w.limit,w.ket=w.cursor,w.cursor>w.limit_backward&&(w.bra=--w.cursor,w.slice_del())),w.limit_backward=e)}function s(){var e,r;if(w.cursor>=o){if(r=w.limit_backward,w.limit_backward=o,w.cursor=w.limit,w.ket=w.cursor,e=w.find_among_b(m,5))switch(w.bra=w.cursor,e){case 1:w.slice_del();break;case 2:w.slice_from("lös");break;case 3:w.slice_from("full")}w.limit_backward=r}}var a,o,u=[new r("a",-1,1),new r("arna",0,1),new r("erna",0,1),new r("heterna",2,1),new r("orna",0,1),new r("ad",-1,1),new r("e",-1,1),new r("ade",6,1),new r("ande",6,1),new r("arne",6,1),new r("are",6,1),new r("aste",6,1),new r("en",-1,1),new r("anden",12,1),new r("aren",12,1),new r("heten",12,1),new r("ern",-1,1),new r("ar",-1,1),new r("er",-1,1),new r("heter",18,1),new r("or",-1,1),new r("s",-1,2),new r("as",21,1),new r("arnas",22,1),new r("ernas",22,1),new r("ornas",22,1),new r("es",21,1),new r("ades",26,1),new r("andes",26,1),new r("ens",21,1),new r("arens",29,1),new r("hetens",29,1),new r("erns",21,1),new r("at",-1,1),new r("andet",-1,1),new r("het",-1,1),new r("ast",-1,1)],c=[new r("dd",-1,-1),new r("gd",-1,-1),new r("nn",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1),new r("tt",-1,-1)],m=[new r("ig",-1,1),new r("lig",0,1),new r("els",-1,1),new r("fullt",-1,3),new r("löst",-1,2)],l=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,24,0,32],d=[119,127,149],w=new n;this.setCurrent=function(e){w.setCurrent(e)},this.getCurrent=function(){return w.getCurrent()},this.stem=function(){var r=w.cursor;return e(),w.limit_backward=r,w.cursor=w.limit,t(),w.cursor=w.limit,i(),w.cursor=w.limit,s(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return t.setCurrent(e),t.stem(),t.getCurrent()}):(t.setCurrent(e),t.stem(),t.getCurrent())}}(),e.Pipeline.registerFunction(e.sv.stemmer,"stemmer-sv"),e.sv.stopWordFilter=e.generateStopWordFilter("alla allt att av blev bli blir blivit de dem den denna deras dess dessa det detta dig din dina ditt du där då efter ej eller en er era ert ett från för ha hade han hans har henne hennes hon honom hur här i icke ingen inom inte jag ju kan kunde man med mellan men mig min mina mitt mot mycket ni nu när någon något några och om oss på samma sedan sig sin sina sitta själv skulle som så sådan sådana sådant till under upp ut utan vad var vara varför varit varje vars vart vem vi vid vilka vilkas vilken vilket vår våra vårt än är åt över".split(" ")),e.Pipeline.registerFunction(e.sv.stopWordFilter,"stopWordFilter-sv")}});
|
||||||
1
mkdocs/site/assets/javascripts/lunr/min/lunr.ta.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
!function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.ta=function(){this.pipeline.reset(),this.pipeline.add(e.ta.trimmer,e.ta.stopWordFilter,e.ta.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.ta.stemmer))},e.ta.wordCharacters="-உஊ-ஏஐ-ஙச-ட-னப-யர-ஹ-ிீ-ொ-ௐ---௩௪-௯௰-௹௺-a-zA-Za-zA-Z0-90-9",e.ta.trimmer=e.trimmerSupport.generateTrimmer(e.ta.wordCharacters),e.Pipeline.registerFunction(e.ta.trimmer,"trimmer-ta"),e.ta.stopWordFilter=e.generateStopWordFilter("அங்கு அங்கே அது அதை அந்த அவர் அவர்கள் அவள் அவன் அவை ஆக ஆகவே ஆகையால் ஆதலால் ஆதலினால் ஆனாலும் ஆனால் இங்கு இங்கே இது இதை இந்த இப்படி இவர் இவர்கள் இவள் இவன் இவை இவ்வளவு உனக்கு உனது உன் உன்னால் எங்கு எங்கே எது எதை எந்த எப்படி எவர் எவர்கள் எவள் எவன் எவை எவ்வளவு எனக்கு எனது எனவே என் என்ன என்னால் ஏது ஏன் தனது தன்னால் தானே தான் நாங்கள் நாம் நான் நீ நீங்கள்".split(" ")),e.ta.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}();var t=e.wordcut;t.init(),e.ta.tokenizer=function(r){if(!arguments.length||null==r||void 0==r)return[];if(Array.isArray(r))return r.map(function(t){return isLunr2?new e.Token(t.toLowerCase()):t.toLowerCase()});var i=r.toString().toLowerCase().replace(/^\s+/,"");return t.cut(i).split("|")},e.Pipeline.registerFunction(e.ta.stemmer,"stemmer-ta"),e.Pipeline.registerFunction(e.ta.stopWordFilter,"stopWordFilter-ta")}});
|
||||||
1
mkdocs/site/assets/javascripts/lunr/min/lunr.te.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
!function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.te=function(){this.pipeline.reset(),this.pipeline.add(e.te.trimmer,e.te.stopWordFilter,e.te.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.te.stemmer))},e.te.wordCharacters="ఀ-ఄఅ-ఔక-హా-ౌౕ-ౖౘ-ౚౠ-ౡౢ-ౣ౦-౯౸-౿఼ఽ్ౝ౷",e.te.trimmer=e.trimmerSupport.generateTrimmer(e.te.wordCharacters),e.Pipeline.registerFunction(e.te.trimmer,"trimmer-te"),e.te.stopWordFilter=e.generateStopWordFilter("అందరూ అందుబాటులో అడగండి అడగడం అడ్డంగా అనుగుణంగా అనుమతించు అనుమతిస్తుంది అయితే ఇప్పటికే ఉన్నారు ఎక్కడైనా ఎప్పుడు ఎవరైనా ఎవరో ఏ ఏదైనా ఏమైనప్పటికి ఒక ఒకరు కనిపిస్తాయి కాదు కూడా గా గురించి చుట్టూ చేయగలిగింది తగిన తర్వాత దాదాపు దూరంగా నిజంగా పై ప్రకారం ప్రక్కన మధ్య మరియు మరొక మళ్ళీ మాత్రమే మెచ్చుకో వద్ద వెంట వేరుగా వ్యతిరేకంగా సంబంధం".split(" ")),e.te.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}();var t=e.wordcut;t.init(),e.te.tokenizer=function(r){if(!arguments.length||null==r||void 0==r)return[];if(Array.isArray(r))return r.map(function(t){return isLunr2?new e.Token(t.toLowerCase()):t.toLowerCase()});var i=r.toString().toLowerCase().replace(/^\s+/,"");return t.cut(i).split("|")},e.Pipeline.registerFunction(e.te.stemmer,"stemmer-te"),e.Pipeline.registerFunction(e.te.stopWordFilter,"stopWordFilter-te")}});
|
||||||
1
mkdocs/site/assets/javascripts/lunr/min/lunr.th.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r="2"==e.version[0];e.th=function(){this.pipeline.reset(),this.pipeline.add(e.th.trimmer),r?this.tokenizer=e.th.tokenizer:(e.tokenizer&&(e.tokenizer=e.th.tokenizer),this.tokenizerFn&&(this.tokenizerFn=e.th.tokenizer))},e.th.wordCharacters="[-]",e.th.trimmer=e.trimmerSupport.generateTrimmer(e.th.wordCharacters),e.Pipeline.registerFunction(e.th.trimmer,"trimmer-th");var t=e.wordcut;t.init(),e.th.tokenizer=function(i){if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(t){return r?new e.Token(t):t});var n=i.toString().replace(/^\s+/,"");return t.cut(n).split("|")}}});
|
||||||
18
mkdocs/site/assets/javascripts/lunr/min/lunr.tr.min.js
vendored
Normal file
1
mkdocs/site/assets/javascripts/lunr/min/lunr.vi.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.vi=function(){this.pipeline.reset(),this.pipeline.add(e.vi.stopWordFilter,e.vi.trimmer)},e.vi.wordCharacters="[A-Za-ẓ̀͐́͑̉̃̓ÂâÊêÔôĂ-ăĐ-đƠ-ơƯ-ư]",e.vi.trimmer=e.trimmerSupport.generateTrimmer(e.vi.wordCharacters),e.Pipeline.registerFunction(e.vi.trimmer,"trimmer-vi"),e.vi.stopWordFilter=e.generateStopWordFilter("là cái nhưng mà".split(" "))}});
|
||||||
1
mkdocs/site/assets/javascripts/lunr/min/lunr.zh.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r(require("@node-rs/jieba")):r()(e.lunr)}(this,function(e){return function(r,t){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var i="2"==r.version[0];r.zh=function(){this.pipeline.reset(),this.pipeline.add(r.zh.trimmer,r.zh.stopWordFilter,r.zh.stemmer),i?this.tokenizer=r.zh.tokenizer:(r.tokenizer&&(r.tokenizer=r.zh.tokenizer),this.tokenizerFn&&(this.tokenizerFn=r.zh.tokenizer))},r.zh.tokenizer=function(n){if(!arguments.length||null==n||void 0==n)return[];if(Array.isArray(n))return n.map(function(e){return i?new r.Token(e.toLowerCase()):e.toLowerCase()});t&&e.load(t);var o=n.toString().trim().toLowerCase(),s=[];e.cut(o,!0).forEach(function(e){s=s.concat(e.split(" "))}),s=s.filter(function(e){return!!e});var u=0;return s.map(function(e,t){if(i){var n=o.indexOf(e,u),s={};return s.position=[n,e.length],s.index=t,u=n,new r.Token(e,s)}return e})},r.zh.wordCharacters="\\w一-龥",r.zh.trimmer=r.trimmerSupport.generateTrimmer(r.zh.wordCharacters),r.Pipeline.registerFunction(r.zh.trimmer,"trimmer-zh"),r.zh.stemmer=function(){return function(e){return e}}(),r.Pipeline.registerFunction(r.zh.stemmer,"stemmer-zh"),r.zh.stopWordFilter=r.generateStopWordFilter("的 一 不 在 人 有 是 为 為 以 于 於 上 他 而 后 後 之 来 來 及 了 因 下 可 到 由 这 這 与 與 也 此 但 并 並 个 個 其 已 无 無 小 我 们 們 起 最 再 今 去 好 只 又 或 很 亦 某 把 那 你 乃 它 吧 被 比 别 趁 当 當 从 從 得 打 凡 儿 兒 尔 爾 该 該 各 给 給 跟 和 何 还 還 即 几 幾 既 看 据 據 距 靠 啦 另 么 麽 每 嘛 拿 哪 您 凭 憑 且 却 卻 让 讓 仍 啥 如 若 使 谁 誰 虽 雖 随 隨 同 所 她 哇 嗡 往 些 向 沿 哟 喲 用 咱 则 則 怎 曾 至 致 着 著 诸 諸 自".split(" ")),r.Pipeline.registerFunction(r.zh.stopWordFilter,"stopWordFilter-zh")}});
|
||||||
206
mkdocs/site/assets/javascripts/lunr/tinyseg.js
Normal file
@@ -0,0 +1,206 @@
|
|||||||
|
/**
|
||||||
|
* export the module via AMD, CommonJS or as a browser global
|
||||||
|
* Export code from https://github.com/umdjs/umd/blob/master/returnExports.js
|
||||||
|
*/
|
||||||
|
;(function (root, factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD. Register as an anonymous module.
|
||||||
|
define(factory)
|
||||||
|
} else if (typeof exports === 'object') {
|
||||||
|
/**
|
||||||
|
* Node. Does not work with strict CommonJS, but
|
||||||
|
* only CommonJS-like environments that support module.exports,
|
||||||
|
* like Node.
|
||||||
|
*/
|
||||||
|
module.exports = factory()
|
||||||
|
} else {
|
||||||
|
// Browser globals (root is window)
|
||||||
|
factory()(root.lunr);
|
||||||
|
}
|
||||||
|
}(this, function () {
|
||||||
|
/**
|
||||||
|
* Just return a value to define the module export.
|
||||||
|
* This example returns an object, but the module
|
||||||
|
* can return a function as the exported value.
|
||||||
|
*/
|
||||||
|
|
||||||
|
return function(lunr) {
|
||||||
|
// TinySegmenter 0.1 -- Super compact Japanese tokenizer in Javascript
|
||||||
|
// (c) 2008 Taku Kudo <taku@chasen.org>
|
||||||
|
// TinySegmenter is freely distributable under the terms of a new BSD licence.
|
||||||
|
// For details, see http://chasen.org/~taku/software/TinySegmenter/LICENCE.txt
|
||||||
|
|
||||||
|
function TinySegmenter() {
|
||||||
|
var patterns = {
|
||||||
|
"[一二三四五六七八九十百千万億兆]":"M",
|
||||||
|
"[一-龠々〆ヵヶ]":"H",
|
||||||
|
"[ぁ-ん]":"I",
|
||||||
|
"[ァ-ヴーア-ン゙ー]":"K",
|
||||||
|
"[a-zA-Za-zA-Z]":"A",
|
||||||
|
"[0-90-9]":"N"
|
||||||
|
}
|
||||||
|
this.chartype_ = [];
|
||||||
|
for (var i in patterns) {
|
||||||
|
var regexp = new RegExp(i);
|
||||||
|
this.chartype_.push([regexp, patterns[i]]);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.BIAS__ = -332
|
||||||
|
this.BC1__ = {"HH":6,"II":2461,"KH":406,"OH":-1378};
|
||||||
|
this.BC2__ = {"AA":-3267,"AI":2744,"AN":-878,"HH":-4070,"HM":-1711,"HN":4012,"HO":3761,"IA":1327,"IH":-1184,"II":-1332,"IK":1721,"IO":5492,"KI":3831,"KK":-8741,"MH":-3132,"MK":3334,"OO":-2920};
|
||||||
|
this.BC3__ = {"HH":996,"HI":626,"HK":-721,"HN":-1307,"HO":-836,"IH":-301,"KK":2762,"MK":1079,"MM":4034,"OA":-1652,"OH":266};
|
||||||
|
this.BP1__ = {"BB":295,"OB":304,"OO":-125,"UB":352};
|
||||||
|
this.BP2__ = {"BO":60,"OO":-1762};
|
||||||
|
this.BQ1__ = {"BHH":1150,"BHM":1521,"BII":-1158,"BIM":886,"BMH":1208,"BNH":449,"BOH":-91,"BOO":-2597,"OHI":451,"OIH":-296,"OKA":1851,"OKH":-1020,"OKK":904,"OOO":2965};
|
||||||
|
this.BQ2__ = {"BHH":118,"BHI":-1159,"BHM":466,"BIH":-919,"BKK":-1720,"BKO":864,"OHH":-1139,"OHM":-181,"OIH":153,"UHI":-1146};
|
||||||
|
this.BQ3__ = {"BHH":-792,"BHI":2664,"BII":-299,"BKI":419,"BMH":937,"BMM":8335,"BNN":998,"BOH":775,"OHH":2174,"OHM":439,"OII":280,"OKH":1798,"OKI":-793,"OKO":-2242,"OMH":-2402,"OOO":11699};
|
||||||
|
this.BQ4__ = {"BHH":-3895,"BIH":3761,"BII":-4654,"BIK":1348,"BKK":-1806,"BMI":-3385,"BOO":-12396,"OAH":926,"OHH":266,"OHK":-2036,"ONN":-973};
|
||||||
|
this.BW1__ = {",と":660,",同":727,"B1あ":1404,"B1同":542,"、と":660,"、同":727,"」と":1682,"あっ":1505,"いう":1743,"いっ":-2055,"いる":672,"うし":-4817,"うん":665,"から":3472,"がら":600,"こう":-790,"こと":2083,"こん":-1262,"さら":-4143,"さん":4573,"した":2641,"して":1104,"すで":-3399,"そこ":1977,"それ":-871,"たち":1122,"ため":601,"った":3463,"つい":-802,"てい":805,"てき":1249,"でき":1127,"です":3445,"では":844,"とい":-4915,"とみ":1922,"どこ":3887,"ない":5713,"なっ":3015,"など":7379,"なん":-1113,"にし":2468,"には":1498,"にも":1671,"に対":-912,"の一":-501,"の中":741,"ませ":2448,"まで":1711,"まま":2600,"まる":-2155,"やむ":-1947,"よっ":-2565,"れた":2369,"れで":-913,"をし":1860,"を見":731,"亡く":-1886,"京都":2558,"取り":-2784,"大き":-2604,"大阪":1497,"平方":-2314,"引き":-1336,"日本":-195,"本当":-2423,"毎日":-2113,"目指":-724,"B1あ":1404,"B1同":542,"」と":1682};
|
||||||
|
this.BW2__ = {"..":-11822,"11":-669,"――":-5730,"−−":-13175,"いう":-1609,"うか":2490,"かし":-1350,"かも":-602,"から":-7194,"かれ":4612,"がい":853,"がら":-3198,"きた":1941,"くな":-1597,"こと":-8392,"この":-4193,"させ":4533,"され":13168,"さん":-3977,"しい":-1819,"しか":-545,"した":5078,"して":972,"しな":939,"その":-3744,"たい":-1253,"たた":-662,"ただ":-3857,"たち":-786,"たと":1224,"たは":-939,"った":4589,"って":1647,"っと":-2094,"てい":6144,"てき":3640,"てく":2551,"ては":-3110,"ても":-3065,"でい":2666,"でき":-1528,"でし":-3828,"です":-4761,"でも":-4203,"とい":1890,"とこ":-1746,"とと":-2279,"との":720,"とみ":5168,"とも":-3941,"ない":-2488,"なが":-1313,"など":-6509,"なの":2614,"なん":3099,"にお":-1615,"にし":2748,"にな":2454,"によ":-7236,"に対":-14943,"に従":-4688,"に関":-11388,"のか":2093,"ので":-7059,"のに":-6041,"のの":-6125,"はい":1073,"はが":-1033,"はず":-2532,"ばれ":1813,"まし":-1316,"まで":-6621,"まれ":5409,"めて":-3153,"もい":2230,"もの":-10713,"らか":-944,"らし":-1611,"らに":-1897,"りし":651,"りま":1620,"れた":4270,"れて":849,"れば":4114,"ろう":6067,"われ":7901,"を通":-11877,"んだ":728,"んな":-4115,"一人":602,"一方":-1375,"一日":970,"一部":-1051,"上が":-4479,"会社":-1116,"出て":2163,"分の":-7758,"同党":970,"同日":-913,"大阪":-2471,"委員":-1250,"少な":-1050,"年度":-8669,"年間":-1626,"府県":-2363,"手権":-1982,"新聞":-4066,"日新":-722,"日本":-7068,"日米":3372,"曜日":-601,"朝鮮":-2355,"本人":-2697,"東京":-1543,"然と":-1384,"社会":-1276,"立て":-990,"第に":-1612,"米国":-4268,"11":-669};
|
||||||
|
this.BW3__ = {"あた":-2194,"あり":719,"ある":3846,"い.":-1185,"い。":-1185,"いい":5308,"いえ":2079,"いく":3029,"いた":2056,"いっ":1883,"いる":5600,"いわ":1527,"うち":1117,"うと":4798,"えと":1454,"か.":2857,"か。":2857,"かけ":-743,"かっ":-4098,"かに":-669,"から":6520,"かり":-2670,"が,":1816,"が、":1816,"がき":-4855,"がけ":-1127,"がっ":-913,"がら":-4977,"がり":-2064,"きた":1645,"けど":1374,"こと":7397,"この":1542,"ころ":-2757,"さい":-714,"さを":976,"し,":1557,"し、":1557,"しい":-3714,"した":3562,"して":1449,"しな":2608,"しま":1200,"す.":-1310,"す。":-1310,"する":6521,"ず,":3426,"ず、":3426,"ずに":841,"そう":428,"た.":8875,"た。":8875,"たい":-594,"たの":812,"たり":-1183,"たる":-853,"だ.":4098,"だ。":4098,"だっ":1004,"った":-4748,"って":300,"てい":6240,"てお":855,"ても":302,"です":1437,"でに":-1482,"では":2295,"とう":-1387,"とし":2266,"との":541,"とも":-3543,"どう":4664,"ない":1796,"なく":-903,"など":2135,"に,":-1021,"に、":-1021,"にし":1771,"にな":1906,"には":2644,"の,":-724,"の、":-724,"の子":-1000,"は,":1337,"は、":1337,"べき":2181,"まし":1113,"ます":6943,"まっ":-1549,"まで":6154,"まれ":-793,"らし":1479,"られ":6820,"るる":3818,"れ,":854,"れ、":854,"れた":1850,"れて":1375,"れば":-3246,"れる":1091,"われ":-605,"んだ":606,"んで":798,"カ月":990,"会議":860,"入り":1232,"大会":2217,"始め":1681,"市":965,"新聞":-5055,"日,":974,"日、":974,"社会":2024,"カ月":990};
|
||||||
|
this.TC1__ = {"AAA":1093,"HHH":1029,"HHM":580,"HII":998,"HOH":-390,"HOM":-331,"IHI":1169,"IOH":-142,"IOI":-1015,"IOM":467,"MMH":187,"OOI":-1832};
|
||||||
|
this.TC2__ = {"HHO":2088,"HII":-1023,"HMM":-1154,"IHI":-1965,"KKH":703,"OII":-2649};
|
||||||
|
this.TC3__ = {"AAA":-294,"HHH":346,"HHI":-341,"HII":-1088,"HIK":731,"HOH":-1486,"IHH":128,"IHI":-3041,"IHO":-1935,"IIH":-825,"IIM":-1035,"IOI":-542,"KHH":-1216,"KKA":491,"KKH":-1217,"KOK":-1009,"MHH":-2694,"MHM":-457,"MHO":123,"MMH":-471,"NNH":-1689,"NNO":662,"OHO":-3393};
|
||||||
|
this.TC4__ = {"HHH":-203,"HHI":1344,"HHK":365,"HHM":-122,"HHN":182,"HHO":669,"HIH":804,"HII":679,"HOH":446,"IHH":695,"IHO":-2324,"IIH":321,"III":1497,"IIO":656,"IOO":54,"KAK":4845,"KKA":3386,"KKK":3065,"MHH":-405,"MHI":201,"MMH":-241,"MMM":661,"MOM":841};
|
||||||
|
this.TQ1__ = {"BHHH":-227,"BHHI":316,"BHIH":-132,"BIHH":60,"BIII":1595,"BNHH":-744,"BOHH":225,"BOOO":-908,"OAKK":482,"OHHH":281,"OHIH":249,"OIHI":200,"OIIH":-68};
|
||||||
|
this.TQ2__ = {"BIHH":-1401,"BIII":-1033,"BKAK":-543,"BOOO":-5591};
|
||||||
|
this.TQ3__ = {"BHHH":478,"BHHM":-1073,"BHIH":222,"BHII":-504,"BIIH":-116,"BIII":-105,"BMHI":-863,"BMHM":-464,"BOMH":620,"OHHH":346,"OHHI":1729,"OHII":997,"OHMH":481,"OIHH":623,"OIIH":1344,"OKAK":2792,"OKHH":587,"OKKA":679,"OOHH":110,"OOII":-685};
|
||||||
|
this.TQ4__ = {"BHHH":-721,"BHHM":-3604,"BHII":-966,"BIIH":-607,"BIII":-2181,"OAAA":-2763,"OAKK":180,"OHHH":-294,"OHHI":2446,"OHHO":480,"OHIH":-1573,"OIHH":1935,"OIHI":-493,"OIIH":626,"OIII":-4007,"OKAK":-8156};
|
||||||
|
this.TW1__ = {"につい":-4681,"東京都":2026};
|
||||||
|
this.TW2__ = {"ある程":-2049,"いった":-1256,"ころが":-2434,"しょう":3873,"その後":-4430,"だって":-1049,"ていた":1833,"として":-4657,"ともに":-4517,"もので":1882,"一気に":-792,"初めて":-1512,"同時に":-8097,"大きな":-1255,"対して":-2721,"社会党":-3216};
|
||||||
|
this.TW3__ = {"いただ":-1734,"してい":1314,"として":-4314,"につい":-5483,"にとっ":-5989,"に当た":-6247,"ので,":-727,"ので、":-727,"のもの":-600,"れから":-3752,"十二月":-2287};
|
||||||
|
this.TW4__ = {"いう.":8576,"いう。":8576,"からな":-2348,"してい":2958,"たが,":1516,"たが、":1516,"ている":1538,"という":1349,"ました":5543,"ません":1097,"ようと":-4258,"よると":5865};
|
||||||
|
this.UC1__ = {"A":484,"K":93,"M":645,"O":-505};
|
||||||
|
this.UC2__ = {"A":819,"H":1059,"I":409,"M":3987,"N":5775,"O":646};
|
||||||
|
this.UC3__ = {"A":-1370,"I":2311};
|
||||||
|
this.UC4__ = {"A":-2643,"H":1809,"I":-1032,"K":-3450,"M":3565,"N":3876,"O":6646};
|
||||||
|
this.UC5__ = {"H":313,"I":-1238,"K":-799,"M":539,"O":-831};
|
||||||
|
this.UC6__ = {"H":-506,"I":-253,"K":87,"M":247,"O":-387};
|
||||||
|
this.UP1__ = {"O":-214};
|
||||||
|
this.UP2__ = {"B":69,"O":935};
|
||||||
|
this.UP3__ = {"B":189};
|
||||||
|
this.UQ1__ = {"BH":21,"BI":-12,"BK":-99,"BN":142,"BO":-56,"OH":-95,"OI":477,"OK":410,"OO":-2422};
|
||||||
|
this.UQ2__ = {"BH":216,"BI":113,"OK":1759};
|
||||||
|
this.UQ3__ = {"BA":-479,"BH":42,"BI":1913,"BK":-7198,"BM":3160,"BN":6427,"BO":14761,"OI":-827,"ON":-3212};
|
||||||
|
this.UW1__ = {",":156,"、":156,"「":-463,"あ":-941,"う":-127,"が":-553,"き":121,"こ":505,"で":-201,"と":-547,"ど":-123,"に":-789,"の":-185,"は":-847,"も":-466,"や":-470,"よ":182,"ら":-292,"り":208,"れ":169,"を":-446,"ん":-137,"・":-135,"主":-402,"京":-268,"区":-912,"午":871,"国":-460,"大":561,"委":729,"市":-411,"日":-141,"理":361,"生":-408,"県":-386,"都":-718,"「":-463,"・":-135};
|
||||||
|
this.UW2__ = {",":-829,"、":-829,"〇":892,"「":-645,"」":3145,"あ":-538,"い":505,"う":134,"お":-502,"か":1454,"が":-856,"く":-412,"こ":1141,"さ":878,"ざ":540,"し":1529,"す":-675,"せ":300,"そ":-1011,"た":188,"だ":1837,"つ":-949,"て":-291,"で":-268,"と":-981,"ど":1273,"な":1063,"に":-1764,"の":130,"は":-409,"ひ":-1273,"べ":1261,"ま":600,"も":-1263,"や":-402,"よ":1639,"り":-579,"る":-694,"れ":571,"を":-2516,"ん":2095,"ア":-587,"カ":306,"キ":568,"ッ":831,"三":-758,"不":-2150,"世":-302,"中":-968,"主":-861,"事":492,"人":-123,"会":978,"保":362,"入":548,"初":-3025,"副":-1566,"北":-3414,"区":-422,"大":-1769,"天":-865,"太":-483,"子":-1519,"学":760,"実":1023,"小":-2009,"市":-813,"年":-1060,"強":1067,"手":-1519,"揺":-1033,"政":1522,"文":-1355,"新":-1682,"日":-1815,"明":-1462,"最":-630,"朝":-1843,"本":-1650,"東":-931,"果":-665,"次":-2378,"民":-180,"気":-1740,"理":752,"発":529,"目":-1584,"相":-242,"県":-1165,"立":-763,"第":810,"米":509,"自":-1353,"行":838,"西":-744,"見":-3874,"調":1010,"議":1198,"込":3041,"開":1758,"間":-1257,"「":-645,"」":3145,"ッ":831,"ア":-587,"カ":306,"キ":568};
|
||||||
|
this.UW3__ = {",":4889,"1":-800,"−":-1723,"、":4889,"々":-2311,"〇":5827,"」":2670,"〓":-3573,"あ":-2696,"い":1006,"う":2342,"え":1983,"お":-4864,"か":-1163,"が":3271,"く":1004,"け":388,"げ":401,"こ":-3552,"ご":-3116,"さ":-1058,"し":-395,"す":584,"せ":3685,"そ":-5228,"た":842,"ち":-521,"っ":-1444,"つ":-1081,"て":6167,"で":2318,"と":1691,"ど":-899,"な":-2788,"に":2745,"の":4056,"は":4555,"ひ":-2171,"ふ":-1798,"へ":1199,"ほ":-5516,"ま":-4384,"み":-120,"め":1205,"も":2323,"や":-788,"よ":-202,"ら":727,"り":649,"る":5905,"れ":2773,"わ":-1207,"を":6620,"ん":-518,"ア":551,"グ":1319,"ス":874,"ッ":-1350,"ト":521,"ム":1109,"ル":1591,"ロ":2201,"ン":278,"・":-3794,"一":-1619,"下":-1759,"世":-2087,"両":3815,"中":653,"主":-758,"予":-1193,"二":974,"人":2742,"今":792,"他":1889,"以":-1368,"低":811,"何":4265,"作":-361,"保":-2439,"元":4858,"党":3593,"全":1574,"公":-3030,"六":755,"共":-1880,"円":5807,"再":3095,"分":457,"初":2475,"別":1129,"前":2286,"副":4437,"力":365,"動":-949,"務":-1872,"化":1327,"北":-1038,"区":4646,"千":-2309,"午":-783,"協":-1006,"口":483,"右":1233,"各":3588,"合":-241,"同":3906,"和":-837,"員":4513,"国":642,"型":1389,"場":1219,"外":-241,"妻":2016,"学":-1356,"安":-423,"実":-1008,"家":1078,"小":-513,"少":-3102,"州":1155,"市":3197,"平":-1804,"年":2416,"広":-1030,"府":1605,"度":1452,"建":-2352,"当":-3885,"得":1905,"思":-1291,"性":1822,"戸":-488,"指":-3973,"政":-2013,"教":-1479,"数":3222,"文":-1489,"新":1764,"日":2099,"旧":5792,"昨":-661,"時":-1248,"曜":-951,"最":-937,"月":4125,"期":360,"李":3094,"村":364,"東":-805,"核":5156,"森":2438,"業":484,"氏":2613,"民":-1694,"決":-1073,"法":1868,"海":-495,"無":979,"物":461,"特":-3850,"生":-273,"用":914,"町":1215,"的":7313,"直":-1835,"省":792,"県":6293,"知":-1528,"私":4231,"税":401,"立":-960,"第":1201,"米":7767,"系":3066,"約":3663,"級":1384,"統":-4229,"総":1163,"線":1255,"者":6457,"能":725,"自":-2869,"英":785,"見":1044,"調":-562,"財":-733,"費":1777,"車":1835,"軍":1375,"込":-1504,"通":-1136,"選":-681,"郎":1026,"郡":4404,"部":1200,"金":2163,"長":421,"開":-1432,"間":1302,"関":-1282,"雨":2009,"電":-1045,"非":2066,"駅":1620,"1":-800,"」":2670,"・":-3794,"ッ":-1350,"ア":551,"グ":1319,"ス":874,"ト":521,"ム":1109,"ル":1591,"ロ":2201,"ン":278};
|
||||||
|
this.UW4__ = {",":3930,".":3508,"―":-4841,"、":3930,"。":3508,"〇":4999,"「":1895,"」":3798,"〓":-5156,"あ":4752,"い":-3435,"う":-640,"え":-2514,"お":2405,"か":530,"が":6006,"き":-4482,"ぎ":-3821,"く":-3788,"け":-4376,"げ":-4734,"こ":2255,"ご":1979,"さ":2864,"し":-843,"じ":-2506,"す":-731,"ず":1251,"せ":181,"そ":4091,"た":5034,"だ":5408,"ち":-3654,"っ":-5882,"つ":-1659,"て":3994,"で":7410,"と":4547,"な":5433,"に":6499,"ぬ":1853,"ね":1413,"の":7396,"は":8578,"ば":1940,"ひ":4249,"び":-4134,"ふ":1345,"へ":6665,"べ":-744,"ほ":1464,"ま":1051,"み":-2082,"む":-882,"め":-5046,"も":4169,"ゃ":-2666,"や":2795,"ょ":-1544,"よ":3351,"ら":-2922,"り":-9726,"る":-14896,"れ":-2613,"ろ":-4570,"わ":-1783,"を":13150,"ん":-2352,"カ":2145,"コ":1789,"セ":1287,"ッ":-724,"ト":-403,"メ":-1635,"ラ":-881,"リ":-541,"ル":-856,"ン":-3637,"・":-4371,"ー":-11870,"一":-2069,"中":2210,"予":782,"事":-190,"井":-1768,"人":1036,"以":544,"会":950,"体":-1286,"作":530,"側":4292,"先":601,"党":-2006,"共":-1212,"内":584,"円":788,"初":1347,"前":1623,"副":3879,"力":-302,"動":-740,"務":-2715,"化":776,"区":4517,"協":1013,"参":1555,"合":-1834,"和":-681,"員":-910,"器":-851,"回":1500,"国":-619,"園":-1200,"地":866,"場":-1410,"塁":-2094,"士":-1413,"多":1067,"大":571,"子":-4802,"学":-1397,"定":-1057,"寺":-809,"小":1910,"屋":-1328,"山":-1500,"島":-2056,"川":-2667,"市":2771,"年":374,"庁":-4556,"後":456,"性":553,"感":916,"所":-1566,"支":856,"改":787,"政":2182,"教":704,"文":522,"方":-856,"日":1798,"時":1829,"最":845,"月":-9066,"木":-485,"来":-442,"校":-360,"業":-1043,"氏":5388,"民":-2716,"気":-910,"沢":-939,"済":-543,"物":-735,"率":672,"球":-1267,"生":-1286,"産":-1101,"田":-2900,"町":1826,"的":2586,"目":922,"省":-3485,"県":2997,"空":-867,"立":-2112,"第":788,"米":2937,"系":786,"約":2171,"経":1146,"統":-1169,"総":940,"線":-994,"署":749,"者":2145,"能":-730,"般":-852,"行":-792,"規":792,"警":-1184,"議":-244,"谷":-1000,"賞":730,"車":-1481,"軍":1158,"輪":-1433,"込":-3370,"近":929,"道":-1291,"選":2596,"郎":-4866,"都":1192,"野":-1100,"銀":-2213,"長":357,"間":-2344,"院":-2297,"際":-2604,"電":-878,"領":-1659,"題":-792,"館":-1984,"首":1749,"高":2120,"「":1895,"」":3798,"・":-4371,"ッ":-724,"ー":-11870,"カ":2145,"コ":1789,"セ":1287,"ト":-403,"メ":-1635,"ラ":-881,"リ":-541,"ル":-856,"ン":-3637};
|
||||||
|
this.UW5__ = {",":465,".":-299,"1":-514,"E2":-32768,"]":-2762,"、":465,"。":-299,"「":363,"あ":1655,"い":331,"う":-503,"え":1199,"お":527,"か":647,"が":-421,"き":1624,"ぎ":1971,"く":312,"げ":-983,"さ":-1537,"し":-1371,"す":-852,"だ":-1186,"ち":1093,"っ":52,"つ":921,"て":-18,"で":-850,"と":-127,"ど":1682,"な":-787,"に":-1224,"の":-635,"は":-578,"べ":1001,"み":502,"め":865,"ゃ":3350,"ょ":854,"り":-208,"る":429,"れ":504,"わ":419,"を":-1264,"ん":327,"イ":241,"ル":451,"ン":-343,"中":-871,"京":722,"会":-1153,"党":-654,"務":3519,"区":-901,"告":848,"員":2104,"大":-1296,"学":-548,"定":1785,"嵐":-1304,"市":-2991,"席":921,"年":1763,"思":872,"所":-814,"挙":1618,"新":-1682,"日":218,"月":-4353,"査":932,"格":1356,"機":-1508,"氏":-1347,"田":240,"町":-3912,"的":-3149,"相":1319,"省":-1052,"県":-4003,"研":-997,"社":-278,"空":-813,"統":1955,"者":-2233,"表":663,"語":-1073,"議":1219,"選":-1018,"郎":-368,"長":786,"間":1191,"題":2368,"館":-689,"1":-514,"E2":-32768,"「":363,"イ":241,"ル":451,"ン":-343};
|
||||||
|
this.UW6__ = {",":227,".":808,"1":-270,"E1":306,"、":227,"。":808,"あ":-307,"う":189,"か":241,"が":-73,"く":-121,"こ":-200,"じ":1782,"す":383,"た":-428,"っ":573,"て":-1014,"で":101,"と":-105,"な":-253,"に":-149,"の":-417,"は":-236,"も":-206,"り":187,"る":-135,"を":195,"ル":-673,"ン":-496,"一":-277,"中":201,"件":-800,"会":624,"前":302,"区":1792,"員":-1212,"委":798,"学":-960,"市":887,"広":-695,"後":535,"業":-697,"相":753,"社":-507,"福":974,"空":-822,"者":1811,"連":463,"郎":1082,"1":-270,"E1":306,"ル":-673,"ン":-496};
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
TinySegmenter.prototype.ctype_ = function(str) {
|
||||||
|
for (var i in this.chartype_) {
|
||||||
|
if (str.match(this.chartype_[i][0])) {
|
||||||
|
return this.chartype_[i][1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "O";
|
||||||
|
}
|
||||||
|
|
||||||
|
TinySegmenter.prototype.ts_ = function(v) {
|
||||||
|
if (v) { return v; }
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
TinySegmenter.prototype.segment = function(input) {
|
||||||
|
if (input == null || input == undefined || input == "") {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
var result = [];
|
||||||
|
var seg = ["B3","B2","B1"];
|
||||||
|
var ctype = ["O","O","O"];
|
||||||
|
var o = input.split("");
|
||||||
|
for (i = 0; i < o.length; ++i) {
|
||||||
|
seg.push(o[i]);
|
||||||
|
ctype.push(this.ctype_(o[i]))
|
||||||
|
}
|
||||||
|
seg.push("E1");
|
||||||
|
seg.push("E2");
|
||||||
|
seg.push("E3");
|
||||||
|
ctype.push("O");
|
||||||
|
ctype.push("O");
|
||||||
|
ctype.push("O");
|
||||||
|
var word = seg[3];
|
||||||
|
var p1 = "U";
|
||||||
|
var p2 = "U";
|
||||||
|
var p3 = "U";
|
||||||
|
for (var i = 4; i < seg.length - 3; ++i) {
|
||||||
|
var score = this.BIAS__;
|
||||||
|
var w1 = seg[i-3];
|
||||||
|
var w2 = seg[i-2];
|
||||||
|
var w3 = seg[i-1];
|
||||||
|
var w4 = seg[i];
|
||||||
|
var w5 = seg[i+1];
|
||||||
|
var w6 = seg[i+2];
|
||||||
|
var c1 = ctype[i-3];
|
||||||
|
var c2 = ctype[i-2];
|
||||||
|
var c3 = ctype[i-1];
|
||||||
|
var c4 = ctype[i];
|
||||||
|
var c5 = ctype[i+1];
|
||||||
|
var c6 = ctype[i+2];
|
||||||
|
score += this.ts_(this.UP1__[p1]);
|
||||||
|
score += this.ts_(this.UP2__[p2]);
|
||||||
|
score += this.ts_(this.UP3__[p3]);
|
||||||
|
score += this.ts_(this.BP1__[p1 + p2]);
|
||||||
|
score += this.ts_(this.BP2__[p2 + p3]);
|
||||||
|
score += this.ts_(this.UW1__[w1]);
|
||||||
|
score += this.ts_(this.UW2__[w2]);
|
||||||
|
score += this.ts_(this.UW3__[w3]);
|
||||||
|
score += this.ts_(this.UW4__[w4]);
|
||||||
|
score += this.ts_(this.UW5__[w5]);
|
||||||
|
score += this.ts_(this.UW6__[w6]);
|
||||||
|
score += this.ts_(this.BW1__[w2 + w3]);
|
||||||
|
score += this.ts_(this.BW2__[w3 + w4]);
|
||||||
|
score += this.ts_(this.BW3__[w4 + w5]);
|
||||||
|
score += this.ts_(this.TW1__[w1 + w2 + w3]);
|
||||||
|
score += this.ts_(this.TW2__[w2 + w3 + w4]);
|
||||||
|
score += this.ts_(this.TW3__[w3 + w4 + w5]);
|
||||||
|
score += this.ts_(this.TW4__[w4 + w5 + w6]);
|
||||||
|
score += this.ts_(this.UC1__[c1]);
|
||||||
|
score += this.ts_(this.UC2__[c2]);
|
||||||
|
score += this.ts_(this.UC3__[c3]);
|
||||||
|
score += this.ts_(this.UC4__[c4]);
|
||||||
|
score += this.ts_(this.UC5__[c5]);
|
||||||
|
score += this.ts_(this.UC6__[c6]);
|
||||||
|
score += this.ts_(this.BC1__[c2 + c3]);
|
||||||
|
score += this.ts_(this.BC2__[c3 + c4]);
|
||||||
|
score += this.ts_(this.BC3__[c4 + c5]);
|
||||||
|
score += this.ts_(this.TC1__[c1 + c2 + c3]);
|
||||||
|
score += this.ts_(this.TC2__[c2 + c3 + c4]);
|
||||||
|
score += this.ts_(this.TC3__[c3 + c4 + c5]);
|
||||||
|
score += this.ts_(this.TC4__[c4 + c5 + c6]);
|
||||||
|
// score += this.ts_(this.TC5__[c4 + c5 + c6]);
|
||||||
|
score += this.ts_(this.UQ1__[p1 + c1]);
|
||||||
|
score += this.ts_(this.UQ2__[p2 + c2]);
|
||||||
|
score += this.ts_(this.UQ3__[p3 + c3]);
|
||||||
|
score += this.ts_(this.BQ1__[p2 + c2 + c3]);
|
||||||
|
score += this.ts_(this.BQ2__[p2 + c3 + c4]);
|
||||||
|
score += this.ts_(this.BQ3__[p3 + c2 + c3]);
|
||||||
|
score += this.ts_(this.BQ4__[p3 + c3 + c4]);
|
||||||
|
score += this.ts_(this.TQ1__[p2 + c1 + c2 + c3]);
|
||||||
|
score += this.ts_(this.TQ2__[p2 + c2 + c3 + c4]);
|
||||||
|
score += this.ts_(this.TQ3__[p3 + c1 + c2 + c3]);
|
||||||
|
score += this.ts_(this.TQ4__[p3 + c2 + c3 + c4]);
|
||||||
|
var p = "O";
|
||||||
|
if (score > 0) {
|
||||||
|
result.push(word);
|
||||||
|
word = "";
|
||||||
|
p = "B";
|
||||||
|
}
|
||||||
|
p1 = p2;
|
||||||
|
p2 = p3;
|
||||||
|
p3 = p;
|
||||||
|
word += seg[i];
|
||||||
|
}
|
||||||
|
result.push(word);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
lunr.TinySegmenter = TinySegmenter;
|
||||||
|
};
|
||||||
|
|
||||||
|
}));
|
||||||
6708
mkdocs/site/assets/javascripts/lunr/wordcut.js
Normal file
42
mkdocs/site/assets/javascripts/workers/search.7a47a382.min.js
vendored
Normal file
1
mkdocs/site/assets/stylesheets/main.618322db.min.css
vendored
Normal file
1
mkdocs/site/assets/stylesheets/main.618322db.min.css.map
Normal file
1
mkdocs/site/assets/stylesheets/palette.ab4e12ef.min.css
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"sources":["src/templates/assets/stylesheets/palette/_scheme.scss","../../../../src/templates/assets/stylesheets/palette.scss","src/templates/assets/stylesheets/palette/_accent.scss","src/templates/assets/stylesheets/palette/_primary.scss","src/templates/assets/stylesheets/utilities/_break.scss"],"names":[],"mappings":"AA2BA,cAGE,6BAME,sDAAA,CACA,6DAAA,CACA,+DAAA,CACA,gEAAA,CACA,mDAAA,CACA,6DAAA,CACA,+DAAA,CACA,gEAAA,CAGA,mDAAA,CACA,gDAAA,CACA,yDAAA,CACA,4DAAA,CAGA,0BAAA,CACA,mCAAA,CAGA,iCAAA,CACA,kCAAA,CACA,mCAAA,CACA,mCAAA,CACA,kCAAA,CACA,iCAAA,CACA,+CAAA,CACA,6DAAA,CACA,gEAAA,CACA,4DAAA,CACA,4DAAA,CACA,6DAAA,CAGA,6CAAA,CAGA,+CAAA,CAGA,uDAAA,CACA,6DAAA,CACA,2DAAA,CAGA,iCAAA,CAGA,yDAAA,CACA,iEAAA,CAGA,mDAAA,CACA,mDAAA,CAGA,qDAAA,CACA,uDAAA,CAGA,8DAAA,CAKA,8DAAA,CAKA,0DAAA,CAzEA,iBCiBF,CD6DE,kHAEE,YC3DJ,CDkFE,yDACE,4BChFJ,CD+EE,2DACE,4BC7EJ,CD4EE,gEACE,4BC1EJ,CDyEE,2DACE,4BCvEJ,CDsEE,yDACE,4BCpEJ,CDmEE,0DACE,4BCjEJ,CDgEE,gEACE,4BC9DJ,CD6DE,0DACE,4BC3DJ,CD0DE,2OACE,4BC/CJ,CDsDA,+FAGE,iCCpDF,CACF,CCjDE,2BACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCD6CN,CCvDE,4BACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCDoDN,CC9DE,8BACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCD2DN,CCrEE,mCACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCDkEN,CC5EE,8BACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCDyEN,CCnFE,4BACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCDgFN,CC1FE,kCACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCDuFN,CCjGE,4BACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCD8FN,CCxGE,4BACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCDqGN,CC/GE,6BACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCD4GN,CCtHE,mCACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCDmHN,CC7HE,4BACE,4BAAA,CACA,2CAAA,CAIE,8BAAA,CACA,qCD6HN,CCpIE,8BACE,4BAAA,CACA,2CAAA,CAIE,8BAAA,CACA,qCDoIN,CC3IE,6BACE,yBAAA,CACA,2CAAA,CAIE,8BAAA,CACA,qCD2IN,CClJE,8BACE,4BAAA,CACA,2CAAA,CAIE,8BAAA,CACA,qCDkJN,CCzJE,mCACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCDsJN,CE3JE,4BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFwJN,CEnKE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFgKN,CE3KE,+BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFwKN,CEnLE,oCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFgLN,CE3LE,+BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFwLN,CEnME,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFgMN,CE3ME,mCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFwMN,CEnNE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFgNN,CE3NE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFwNN,CEnOE,8BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFgON,CE3OE,oCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFwON,CEnPE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAIE,+BAAA,CACA,sCFmPN,CE3PE,+BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAIE,+BAAA,CACA,sCF2PN,CEnQE,8BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAIE,+BAAA,CACA,sCFmQN,CE3QE,+BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAIE,+BAAA,CACA,sCF2QN,CEnRE,oCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFgRN,CE3RE,8BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFwRN,CEnSE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCAAA,CAKA,4BF4RN,CE5SE,kCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCAAA,CAKA,4BFqSN,CEtRE,sEACE,4BFyRJ,CE1RE,+DACE,4BF6RJ,CE9RE,iEACE,4BFiSJ,CElSE,gEACE,4BFqSJ,CEtSE,iEACE,4BFySJ,CEhSA,8BACE,mDAAA,CACA,4DAAA,CACA,0DAAA,CACA,oDAAA,CACA,2DAAA,CAGA,4BFiSF,CE9RE,yCACE,+BFgSJ,CE7RI,kDAEE,0CAAA,CACA,sCAAA,CAFA,mCFiSN,CG7MI,mCD1EA,+CACE,8CF0RJ,CEvRI,qDACE,8CFyRN,CEpRE,iEACE,mCFsRJ,CACF,CGxNI,sCDvDA,uCACE,oCFkRJ,CACF,CEzQA,8BACE,kDAAA,CACA,4DAAA,CACA,wDAAA,CACA,oDAAA,CACA,6DAAA,CAGA,4BF0QF,CEvQE,yCACE,+BFyQJ,CEtQI,kDAEE,0CAAA,CACA,sCAAA,CAFA,mCF0QN,CEnQE,yCACE,6CFqQJ,CG9NI,0CDhCA,8CACE,gDFiQJ,CACF,CGnOI,0CDvBA,iFACE,6CF6PJ,CACF,CG3PI,sCDKA,uCACE,6CFyPJ,CACF","file":"palette.css"}
|
||||||