chore: move legacy documentation to legacy_docs

This commit is contained in:
Klagarge committed 2026-10-10 18:29:20 +02:00
1 parent 1292597e09
commit 3601def1f6
187 files changed
+154 -33

No files matched your search

+1 -33
View File
@@ -1,33 +1 @@
<header>
<h1>Yggdrasil</h1>
</header>
Yggdrasil is a collections of notes around IT, OT and other geeks stuff
<br>
<br>
<br>
# [Bachelor in embedded system](/infotro/)
Here notes I take during my bachelor in embedded systems
Mainly some topics:
- [PTR - Programmation Temps Réel](/infotro/PTR/)
- [SDi - Système Distribué](/infotro/SDi/)
- [Eln - Électronique](/infotro/Eln/)
- [SEm - Systèmes Embarqué](/infotro/SEm/)
# [Master of science in engineering in embedded system](/MSE/)
Here note I take during my Master of science un engineering with embedded system as orientation
Mainly some topics:
- [SRE - Software Reverse Engineering](/MSE/SRE/)
# [Embedded Systems](/Embed/)
Here some note specific about some Embedded System
- [STM32](/Embed/STM32/)
- [nRF](/Embed/nRF/)
# [Working environment at HES-SO](/HES-SO/)
Here some note about the working environment at HES-SO
- [OneDrive - Linux](/HES-SO/OneDrive.md)
- [Teams - Linux](/HES-SO/Teams.md)
# Yggdrasil Document Base
+1
View File
@@ -0,0 +1 @@
{}
+80
View File
@@ -0,0 +1,80 @@
package main
import (
"encoding/json"
"flag"
"fmt"
"io/fs"
"log"
"os"
"path/filepath"
"regexp"
"strings"
)
func main() {
inDir := flag.String("in", "docs", "Input directory containing .typ files")
outFile := flag.String("out", "acl.json", "Output acl.json file")
flag.Parse()
acl := make(map[string][]string)
// Match: #let access-groups = ("group1", "group2")
// The regex handles optional spaces and varying number of groups.
re := regexp.MustCompile(`(?m)^#let\s+access-groups\s*=\s*\(([^)]*)\)`)
err := filepath.WalkDir(*inDir, func(path string, d fs.DirEntry, err error) error {
if err != nil {
return err
}
if !d.IsDir() && filepath.Ext(path) == ".typ" {
content, err := os.ReadFile(path)
if err != nil {
return fmt.Errorf("reading %s: %w", path, err)
}
relPath, err := filepath.Rel(*inDir, path)
if err != nil {
return err
}
// Map .typ to .html in the final URL structure
urlPath := "/" + strings.TrimSuffix(relPath, ".typ") + ".html"
// Ensure forward slashes for URLs
urlPath = strings.ReplaceAll(urlPath, "\\", "/")
matches := re.FindSubmatch(content)
if len(matches) > 1 {
groupsStr := string(matches[1])
var groups []string
// Split by comma and clean up quotes/spaces
for _, g := range strings.Split(groupsStr, ",") {
g = strings.TrimSpace(g)
g = strings.Trim(g, `"'`)
if g != "" {
groups = append(groups, g)
}
}
if len(groups) > 0 {
acl[urlPath] = groups
}
}
}
return nil
})
if err != nil {
log.Fatalf("Error scanning directory: %v", err)
}
outData, err := json.MarshalIndent(acl, "", " ")
if err != nil {
log.Fatalf("Error generating JSON: %v", err)
}
if err := os.WriteFile(*outFile, outData, 0644); err != nil {
log.Fatalf("Error writing %s: %v", *outFile, err)
}
fmt.Printf("Successfully generated %s with %d rules\n", *outFile, len(acl))
}
+39
View File
@@ -0,0 +1,39 @@
package acl
import (
"encoding/json"
"fmt"
)
type ACL map[string][]string
func Load(data []byte) (ACL, error) {
var acl ACL
if err := json.Unmarshal(data, &acl); err != nil {
return nil, fmt.Errorf("parsing acl json: %w", err)
}
return acl, nil
}
// IsProtected checks if a path has specific access groups defined
func (a ACL) IsProtected(path string) bool {
groups, ok := a[path]
return ok && len(groups) > 0
}
// Allowed checks if a list of user groups has any overlap with the required groups for a path
func (a ACL) Allowed(path string, userGroups []string) bool {
requiredGroups, ok := a[path]
if !ok || len(requiredGroups) == 0 {
return true // public
}
for _, req := range requiredGroups {
for _, user := range userGroups {
if req == user {
return true
}
}
}
return false
}
View File
File renamed without changes.
View File
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+33
View File
@@ -0,0 +1,33 @@
<header>
<h1>Yggdrasil</h1>
</header>
Yggdrasil is a collections of notes around IT, OT and other geeks stuff
<br>
<br>
<br>
# [Bachelor in embedded system](/infotro/)
Here notes I take during my bachelor in embedded systems
Mainly some topics:
- [PTR - Programmation Temps Réel](/infotro/PTR/)
- [SDi - Système Distribué](/infotro/SDi/)
- [Eln - Électronique](/infotro/Eln/)
- [SEm - Systèmes Embarqué](/infotro/SEm/)
# [Master of science in engineering in embedded system](/MSE/)
Here note I take during my Master of science un engineering with embedded system as orientation
Mainly some topics:
- [SRE - Software Reverse Engineering](/MSE/SRE/)
# [Embedded Systems](/Embed/)
Here some note specific about some Embedded System
- [STM32](/Embed/STM32/)
- [nRF](/Embed/nRF/)
# [Working environment at HES-SO](/HES-SO/)
Here some note about the working environment at HES-SO
- [OneDrive - Linux](/HES-SO/OneDrive.md)
- [Teams - Linux](/HES-SO/Teams.md)
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Loaded 100 of 187 files, more files were not shown because too many files have changed in this diff. Show more