package storage import ( "fmt" "regexp" "strings" ) // mountNameRe validates mount names: only alphanumeric + underscore. var mountNameRe = regexp.MustCompile(`^[a-zA-Z0-9_]+$`) // FstabPath is the path to the host fstab inside the container. // The compose file mounts /etc/fstab → /host-fstab. const FstabPath = "/host-fstab" // HostDevPath is where the host's /dev is mounted inside the container. // Docker always creates its own tmpfs at /dev (overriding any bind mount), // so the host's block devices are mounted at a different path instead. const HostDevPath = "/host-dev" // HostDevicePath converts a standard /dev/ device path to the container-accessible path. // "/dev/sdb" → "/host-dev/sdb", "/dev/sdb1" → "/host-dev/sdb1" // Paths that don't start with /dev/ are returned unchanged. func HostDevicePath(devPath string) string { if strings.HasPrefix(devPath, "/dev/") { return HostDevPath + "/" + strings.TrimPrefix(devPath, "/dev/") } return devPath } // ValidateMountName returns an error if the mount name is invalid. func ValidateMountName(name string) error { if name == "" { return fmt.Errorf("a csatlakoztatási névnek nem szabad üresnek lennie") } if !mountNameRe.MatchString(name) { return fmt.Errorf("a csatlakoztatási néven csak betűk, számok és alávonás megengedett") } if len(name) > 32 { return fmt.Errorf("a csatlakoztatási néven legfeljebb 32 karakter megengedett") } return nil }