Background
The following is used for the creation of this site:
-
GitHub: Used to hold the files, GitHub action to automate the building of the html files, and serving of the html files.
-
Mermaid: Mermaid is a markdown diagramming and charting tool to create and modify diagram dynamically.
-
MkDocs: MkDocs is a fast, simple and downright gorgeous static site generator that's geared towards building project documentation. Documentation source files are written in Markdown, and configured with a single YAML configuration file.
-
Material for MKDocs: Material is the theme used with MkDocs.
GitHub
Mermaid
The following Mermaid example will generate diagram of IGEL architecture:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 | mermaid
flowchart TD
A[UMS Console]-- Port 5900 TCP SSL Tunnel Encrypted VNC-data --> B[\Intranet OS 11 Devices/]
A[UMS Console]-- Port 8443 TCP --> C{UMS Server}
C{UMS Server}<-- Port 8443 TCP --> B[\Intranet OS 11 Devices/]
C{UMS Server}-- MS Active Directory Services Port --> D[(MS Active Directory Services)]
C{UMS Server}-- DB Port--> E[(UMS DB)]
C{UMS Server}-- Port 30022 TCP --> B[\Intranet OS 11 Devices/]
C{UMS Server}-- Port 30005 TCP UDP --> B[\Intranet OS 11 Devices/]
C{UMS Server}-- Port 8443/443 TCP --> F{IGEL Cloud Gateway}
B[\Intranet OS 11 Devices/]-- Port 30001 TCP --> C{UMS Server}
G[/Internet OS 11 Devices\]-- Port 8443/443 TCP --> H((Internet Connection))
H((Internet Connection))<-- Port 8443/443 TCP --> F{IGEL Cloud Gateway}
C{UMS Server}-- Port 443 TCP --> H((Internet Connection))
H((Internet Connection))-- Port 443 TCP --> I[[UMS Download Server]]
H((Internet Connection))-- Port 443 TCP --> J[[UMS Licensing Server]]
K[/OS 12 Devices\]<-- Port 8443 TCP --> C{UMS Server}
L[UMS Web App]-- Port 443 TCP --> C{UMS Server}
|
flowchart TD
A[UMS Console]-- Port 5900 TCP SSL Tunnel Encrypted VNC-data --> B[\Intranet OS 11 Devices/]
A[UMS Console]-- Port 8443 TCP --> C{UMS Server}
C{UMS Server}<-- Port 8443 TCP --> B[\Intranet OS 11 Devices/]
C{UMS Server}-- MS Active Directory Services Port --> D[(MS Active Directory Services)]
C{UMS Server}-- DB Port--> E[(UMS DB)]
C{UMS Server}-- Port 30022 TCP --> B[\Intranet OS 11 Devices/]
C{UMS Server}-- Port 30005 TCP UDP --> B[\Intranet OS 11 Devices/]
C{UMS Server}-- Port 8443/443 TCP --> F{IGEL Cloud Gateway}
B[\Intranet OS 11 Devices/]-- Port 30001 TCP --> C{UMS Server}
G[/Internet OS 11 Devices\]-- Port 8443/443 TCP --> H((Internet Connection))
H((Internet Connection))<-- Port 8443/443 TCP --> F{IGEL Cloud Gateway}
C{UMS Server}-- Port 443 TCP --> H((Internet Connection))
H((Internet Connection))-- Port 443 TCP --> I[[UMS Download Server]]
H((Internet Connection))-- Port 443 TCP --> J[[UMS Licensing Server]]
K[/OS 12 Devices\]<-- Port 8443 TCP --> C{UMS Server}
L[UMS Web App]-- Port 443 TCP --> C{UMS Server}
MkDocs YAML file
- File Location:
mkdocs.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 | site_name: IGEL Community Docs
theme:
name: material
features:
- navigation.tabs
- navigation.sections
- toc.integrate
- navigation.top
- search.suggest
- search.highlight
- content.tabs.link
- content.code.annotation
- content.code.copy
language: en
palette:
- scheme: default
toggle:
icon: material/toggle-switch-off-outline
name: Switch to dark mode
primary: teal
accent: purple
- scheme: slate
toggle:
icon: material/toggle-switch
name: Switch to light mode
primary: teal
accent: lime
copyright: IGEL Community Docs is a repository hosting of the IGEL Community related documentation. This documentation is without any warranty or support by IGEL Technology.
markdown_extensions:
- pymdownx.critic
- pymdownx.caret
- pymdownx.keys
- pymdownx.mark
- pymdownx.tilde
- def_list
- pymdownx.tasklist:
custom_checkbox: true
- attr_list
- pymdownx.emoji:
emoji_index: !!python/name:materialx.emoji.twemoji
emoji_generator: !!python/name:materialx.emoji.to_svg
- pymdownx.tasklist:
custom_checkbox: true
- pymdownx.superfences:
custom_fences:
- name: mermaid
class: mermaid
format: !!python/name:pymdownx.superfences.fence_code_format
extra:
analytics:
provider: google
property: G-PTNHLB3WSX
|
GitHub Action Automation
- File Location:
.github/workflows/ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 | name: ci
on:
push:
branches:
- master
- main
permissions:
contents: write
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: 3.x
- uses: actions/cache@v4
with:
key: ${{ github.ref }}
path: .cache
- run: pip install mkdocs-material
- run: mkdocs gh-deploy --force
|
GitHub Pages
NOTE: Created a tinyurl short cut of https://tinyurl.com/igel-docs
Video Editing - Trim and Merge
Trim Video (start:stop time)
| ffmpeg -ss 00:03:35 -to 00:06:29 -i input.mp4 -c copy output.mp4
|
Merge video files
- Create a text file named files.txt:
| file 'part1.mp4'
file 'part2.mp4'
file 'part3.mp4'
|
| ffmpeg -f concat -safe 0 -i files.txt -c copy output.mp4
|
Script to Trim Video File
- Save file as
trim-video.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101 | #!/bin/bash
# MP4 Clip Extractor
# Requires: zenity, ffmpeg
set -e
########################################
# Select input MP4
########################################
INPUT=$(zenity --file-selection \
--title="Select Video" \
--file-filter="Video files | *.mp4 *.MP4 *.mov *.MOV")
[ -z "$INPUT" ] && exit 0
########################################
# Get HH:MM:SS from Video
########################################
SECONDS=$(printf "%.0f\n" "$(ffprobe -v error \
-show_entries format=duration \
-of default=noprint_wrappers=1:nokey=1 \
${INPUT})")
VIDEO_LENGTH=$(printf "%02d:%02d:%02d\n" \
$((SECONDS/3600)) \
$(((SECONDS%3600)/60)) \
$((SECONDS%60)))
########################################
# Single dialog for clip settings
########################################
RESULT=$(zenity --forms \
--title="Create MP4 Clip" \
--text="Enter the clip settings" \
--separator="|" \
--width=500 \
--add-entry="Start Time (HH:MM:SS)" \
--add-entry="End Time (${VIDEO_LENGTH})" \
--add-entry="Output Filename" )
[ $? -ne 0 ] && exit 0
IFS="|" read -r START END OUTFILE <<< "$RESULT"
########################################
# Validate input
########################################
if [[ -z "$START" || -z "$END" || -z "$OUTFILE" ]]; then
zenity --error \
--text="All fields are required."
exit 1
fi
# Add .mp4 if needed
[[ "$OUTFILE" != *.mp4 ]] && OUTFILE="${OUTFILE}.mp4"
OUTPUT="$(dirname "$INPUT")/$OUTFILE"
########################################
# Run ffmpeg
########################################
(
echo "10"
echo "# Extracting video..."
ffmpeg -y \
-ss "$START" \
-to "$END" \
-i "$INPUT" \
-c copy \
"$OUTPUT" >/tmp/ffmpeg.log 2>&1
echo "100"
) | zenity \
--progress \
--title="Creating Clip" \
--text="Processing..." \
--percentage=0 \
--auto-close \
--no-cancel
########################################
# Show result
########################################
if [[ -f "$OUTPUT" ]]; then
zenity --info \
--title="Complete" \
--text="Clip successfully created:\n\n$OUTPUT"
else
zenity --error \
--title="Error" \
--text="ffmpeg failed.\n\nSee /tmp/ffmpeg.log"
fi
|