mirror of
https://github.com/kernelkit/infix.git
synced 2026-07-22 01:13:00 +02:00
Compare commits
9
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e3fe203005 | ||
|
|
18f7c779c9 | ||
|
|
454207c185 | ||
|
|
d877806e2b | ||
|
|
5ed7182361 | ||
|
|
3f695b6c62 | ||
|
|
4f3605a5f7 | ||
|
|
e89dde0d25 | ||
|
|
e1ecf6b71d |
@@ -90,7 +90,7 @@ if [ "$BR2_TARGET_ROOTFS_SQUASHFS" = "y" ]; then
|
||||
rel=$(ver)
|
||||
ln -sf rootfs.squashfs "$BINARIES_DIR/${NAME}${rel}.img"
|
||||
if [ -n "$rel" ]; then
|
||||
ln -sf "$BINARIES_DIR/${NAME}${rel}.img" "$BINARIES_DIR/${NAME}.img"
|
||||
ln -sf "${NAME}${rel}.img" "$BINARIES_DIR/${NAME}.img"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@@ -4,10 +4,14 @@
|
||||
# the migrate tool inserts old version in name before .cfg extension.
|
||||
CONFIG_FILE="/cfg/startup-config.cfg"
|
||||
BACKUP_FILE="/cfg/backup/startup-config.cfg"
|
||||
mkdir -p "$(dirname "$BACKUP_FILE")"
|
||||
BACKUP_DIR="$(dirname "$BACKUP_FILE")"
|
||||
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
chown root:wheel "$BACKUP_DIR"
|
||||
chmod 0770 "$BACKUP_DIR"
|
||||
|
||||
if [ ! -f "$CONFIG_FILE" ]; then
|
||||
note "No $(basename "$CONFIG_FILE" .cfg) yet, likely factory reset."
|
||||
logger -I $$ -k -p user.notice -t $(basename "$0") "No $(basename "$CONFIG_FILE" .cfg) yet, likely factory reset."
|
||||
exit 0
|
||||
elif migrate -cq "$CONFIG_FILE"; then
|
||||
exit 0
|
||||
|
||||
@@ -3,6 +3,12 @@ Change Log
|
||||
|
||||
All notable changes to the project are documented in this file.
|
||||
|
||||
[v25.03.1][] - 2025-04-11
|
||||
-------------------------
|
||||
|
||||
### Fixes
|
||||
- Fix configuration migration issues when upgrading
|
||||
|
||||
|
||||
[v25.03.0][] - 2025-03-31
|
||||
-------------------------
|
||||
@@ -1530,6 +1536,7 @@ Supported YANG models in addition to those used by sysrepo and netopeer:
|
||||
|
||||
[buildroot]: https://buildroot.org/
|
||||
[UNRELEASED]: https://github.com/kernelkit/infix/compare/v25.03.0...HEAD
|
||||
[v25.03.1]: https://github.com/kernelkit/infix/compare/v25.03.0...v25.03.1
|
||||
[v25.03.0]: https://github.com/kernelkit/infix/compare/v25.02.0...v25.03.0
|
||||
[v25.02.0]: https://github.com/kernelkit/infix/compare/v25.01.0...v25.02.0
|
||||
[v25.01.0]: https://github.com/kernelkit/infix/compare/v24.11.0...v25.01.0
|
||||
|
||||
+70
-70
@@ -27,7 +27,7 @@ cleanup()
|
||||
note()
|
||||
{
|
||||
if [ -n "$quiet" ]; then
|
||||
return
|
||||
return
|
||||
fi
|
||||
logger -I $$ -k -p user.notice -t "$ident" "$1"
|
||||
}
|
||||
@@ -46,11 +46,11 @@ atoi()
|
||||
file_version()
|
||||
{
|
||||
jq -r '
|
||||
if .["infix-meta:meta"] | has("infix-meta:version") then
|
||||
.["infix-meta:meta"]["infix-meta:version"]
|
||||
else
|
||||
"0.0"
|
||||
end
|
||||
if .["infix-meta:meta"] | has("version") then
|
||||
.["infix-meta:meta"]["version"]
|
||||
else
|
||||
"0.0"
|
||||
end
|
||||
' "$1"
|
||||
}
|
||||
|
||||
@@ -58,16 +58,16 @@ file_version()
|
||||
confd_version()
|
||||
{
|
||||
find "$scripts" -mindepth 1 -maxdepth 1 -type d \
|
||||
| sort -V | tail -n1 | xargs -n1 basename
|
||||
}
|
||||
| sort -V | tail -n1 | xargs -n1 basename
|
||||
}
|
||||
|
||||
# Update meta data with the latest version
|
||||
meta_version()
|
||||
{
|
||||
if jq --arg version "$sys_version" '.["infix-meta:meta"] = {"infix-meta:version": $version}' "$2" \
|
||||
> "${2}.tmp" && mv "${2}.tmp" "$2"; then
|
||||
note "$1: configuration updated to version $sys_version."
|
||||
return 0
|
||||
if jq --arg version "$sys_version" '.["infix-meta:meta"] = {"version": $version}' "$2" \
|
||||
> "${2}.tmp" && mv "${2}.tmp" "$2"; then
|
||||
note "$1: configuration updated to version $sys_version."
|
||||
return 0
|
||||
fi
|
||||
|
||||
err "$1: failed updating configuration to version $sys_version!"
|
||||
@@ -80,23 +80,23 @@ migrate()
|
||||
note "$1: migrating from version $cfg_version"
|
||||
|
||||
for version_dir in $(find "$scripts" -mindepth 1 -maxdepth 1 -type d | sort -V); do
|
||||
dir=$(basename "$version_dir")
|
||||
version=$(atoi "$dir")
|
||||
dir=$(basename "$version_dir")
|
||||
version=$(atoi "$dir")
|
||||
|
||||
# Step by step upgrade file to latest version
|
||||
if [ "$cfg_level" -lt "$version" ]; then
|
||||
note "Applying migrations for version $dir ..."
|
||||
# Step by step upgrade file to latest version
|
||||
if [ "$cfg_level" -lt "$version" ]; then
|
||||
note "Applying migrations for version $dir ..."
|
||||
|
||||
# Apply all scripts in the version directory in order
|
||||
for script in $(find "$version_dir" -type f -name '*.sh' | sort -V); do
|
||||
note "$1: calling $script ..."
|
||||
sh "$script" "$2"
|
||||
done
|
||||
# Apply all scripts in the version directory in order
|
||||
for script in $(find "$version_dir" -type f -name '*.sh' | sort -V); do
|
||||
note "$1: calling $script ..."
|
||||
sh "$script" "$2"
|
||||
done
|
||||
|
||||
# File now at $version ...
|
||||
cfg_level="$version"
|
||||
fi
|
||||
done
|
||||
# File now at $version ...
|
||||
cfg_level="$version"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# Try migrating a copy, then diff the files, for factory-config check
|
||||
@@ -126,31 +126,31 @@ eval set -- "$OPTS"
|
||||
|
||||
while [ -n "$1" ]; do
|
||||
case $1 in
|
||||
-b)
|
||||
bak=$2
|
||||
shift
|
||||
;;
|
||||
-c)
|
||||
check=1
|
||||
;;
|
||||
-h)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
-i)
|
||||
inplace=1
|
||||
;;
|
||||
-q)
|
||||
quiet=1
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;;
|
||||
*)
|
||||
# Likely file argument
|
||||
break
|
||||
;;
|
||||
-b)
|
||||
bak=$2
|
||||
shift
|
||||
;;
|
||||
-c)
|
||||
check=1
|
||||
;;
|
||||
-h)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
-i)
|
||||
inplace=1
|
||||
;;
|
||||
-q)
|
||||
quiet=1
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;;
|
||||
*)
|
||||
# Likely file argument
|
||||
break
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
@@ -190,22 +190,22 @@ if [ "$cfg_level" -eq "$sys_level" ]; then
|
||||
exit 0
|
||||
else
|
||||
if [ -n "$check" ]; then
|
||||
# We may be called to check a file without meta:version (factory)
|
||||
if [ "$cfg_version" = "0.0" ]; then
|
||||
if diff "$tmp"; then
|
||||
# File is OK, despite lacking meta:version
|
||||
exit 0
|
||||
fi
|
||||
msg="$orig: has syntax error, requires migrating."
|
||||
else
|
||||
msg="$orig: version $cfg_version, requires migrating."
|
||||
fi
|
||||
if [ -t 0 ]; then
|
||||
echo "$msg"
|
||||
else
|
||||
note "$msg"
|
||||
fi
|
||||
exit 1
|
||||
# We may be called to check a file without meta:version (factory)
|
||||
if [ "$cfg_version" = "0.0" ]; then
|
||||
if diff "$tmp"; then
|
||||
# File is OK, despite lacking meta:version
|
||||
exit 0
|
||||
fi
|
||||
msg="$orig: has syntax error, requires migrating."
|
||||
else
|
||||
msg="$orig: version $cfg_version, requires migrating."
|
||||
fi
|
||||
if [ -t 0 ]; then
|
||||
echo "$msg"
|
||||
else
|
||||
note "$msg"
|
||||
fi
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -214,10 +214,10 @@ if [ -n "$bak" ]; then
|
||||
ext="${bak##*.}"
|
||||
bak="${fil}-${cfg_version}.${ext}"
|
||||
if cp -p "$tmp" "$bak" 2>/dev/null; then
|
||||
note "$orig: backup created: $bak"
|
||||
note "$orig: backup created: $bak"
|
||||
else
|
||||
err "$orig: failed creating backup: $bak"
|
||||
exit 1
|
||||
err "$orig: failed creating backup: $bak"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@@ -3,14 +3,17 @@
|
||||
|
||||
file=$1
|
||||
temp=${file}.tmp
|
||||
|
||||
jq '.["infix-services:ssh"] = {
|
||||
"enabled": true,
|
||||
"hostkey": ["genkey"],
|
||||
"listen": [
|
||||
{"name": "ipv4", "address": "0.0.0.0", "port": 22},
|
||||
{"name": "ipv6", "address": "::", "port": 22}
|
||||
]
|
||||
}' "$file" > "$temp"
|
||||
|
||||
mv "$temp" "$file"
|
||||
jq '
|
||||
if has("infix-services:ssh") then
|
||||
.
|
||||
else
|
||||
.["infix-services:ssh"] = {
|
||||
"enabled": true,
|
||||
"hostkey": ["genkey"],
|
||||
"listen": [
|
||||
{"name": "ipv4", "address": "0.0.0.0", "port": 22},
|
||||
{"name": "ipv6", "address": "::", "port": 22}
|
||||
]
|
||||
}
|
||||
end' $file > temp.json
|
||||
mv temp.json $file
|
||||
|
||||
Reference in New Issue
Block a user