mirror of
https://github.com/yggdrasil-network/yggdrasil-go.git
synced 2025-04-29 14:45:07 +03:00
1. added multipath protocol and schema suport
2. added SCTP protocol and schema support 3. added set of NAS models support (Asustor, ReadyNAS, Drobo, QNAP, WD, Synology, Terramaster) 4. moved to fc00::/7 private segment 5. added Windows, MacOS and Linux UI for peers edit and current status
This commit is contained in:
parent
cfa293d189
commit
d8a4000141
198 changed files with 8589 additions and 697 deletions
436
contrib/nas/tool/synology_pkg_util.sh
Executable file
436
contrib/nas/tool/synology_pkg_util.sh
Executable file
|
@ -0,0 +1,436 @@
|
|||
#!/bin/bash
|
||||
# Copyright (c) 2000-2015 Synology Inc. All rights reserved.
|
||||
|
||||
pkg_warn ()
|
||||
{
|
||||
local ret=$?;
|
||||
echo "Error: $@" 1>&2;
|
||||
return $?
|
||||
}
|
||||
pkg_log ()
|
||||
{
|
||||
local ret=$?;
|
||||
echo "$@" 1>&2;
|
||||
return $ret
|
||||
}
|
||||
pkg_get_string ()
|
||||
{
|
||||
local file="$1";
|
||||
local sec="$2";
|
||||
local key="$3";
|
||||
local text="$(sed -n '/^\['$sec'\]/,/^'$key'/s/'$key'.*=[^"]*"\(.*\)"/\1/p' "$file")";
|
||||
local product_name_original="_DISKSTATION_";
|
||||
local product_name=$(pkg_get_product_name);
|
||||
local os_name_original="_OSNAME_";
|
||||
local os_name=$(pkg_get_os_name);
|
||||
local idx=0;
|
||||
shift 3;
|
||||
for val in "$@";
|
||||
do
|
||||
text="${text/\{$idx\}/$val}";
|
||||
let idx=1+$idx;
|
||||
done;
|
||||
echo "$text" | sed -e "s/${product_name_original}/${product_name}/g" | sed -e "s/${os_name_original}/${os_name}/g"
|
||||
}
|
||||
pkg_dump_info ()
|
||||
{
|
||||
local fields="package version maintainer maintainer_url distributor distributor_url arch exclude_arch model
|
||||
adminprotocol adminurl adminport firmware dsmuidir dsmappname checkport allow_altport
|
||||
startable helpurl report_url support_center install_reboot install_dep_packages install_conflict_packages install_dep_services
|
||||
instuninst_restart_services startstop_restart_services start_dep_services silent_install silent_upgrade silent_uninstall install_type
|
||||
checksum package_icon package_icon_120 package_icon_128 package_icon_144 package_icon_256 thirdparty support_conf_folder log_collector
|
||||
support_aaprofile auto_upgrade_from offline_install precheckstartstop";
|
||||
local f= lan= file= sec= key=;
|
||||
for f in $fields;
|
||||
do
|
||||
if [ -n "${!f}" ]; then
|
||||
echo $f=\"${!f}\";
|
||||
fi;
|
||||
done;
|
||||
if [ -e "$UISTRING_PATH" -a "$description_sec" -a "$description_key" ]; then
|
||||
sec=$description_sec;
|
||||
key=$description_key;
|
||||
for lan in $UISTRING_PATH/*;
|
||||
do
|
||||
lan=$(basename "$lan");
|
||||
file="$UISTRING_PATH/$lan/strings";
|
||||
if [ -r "$file" ]; then
|
||||
echo description_$lan=\"$(pkg_get_string "$file" "$sec" "$key")\";
|
||||
if [ "x$lan" = "xenu" ]; then
|
||||
echo description=\"$(pkg_get_string "$file" "$sec" "$key")\";
|
||||
fi;
|
||||
fi;
|
||||
done;
|
||||
else
|
||||
if [ "x" != "x$description" ]; then
|
||||
echo "description=\"${description}\"";
|
||||
fi;
|
||||
fi;
|
||||
if [ -e "$UISTRING_PATH" -a "$displayname_sec" -a "$displayname_key" ]; then
|
||||
sec=$displayname_sec;
|
||||
key=$displayname_key;
|
||||
for lan in $UISTRING_PATH/*;
|
||||
do
|
||||
lan=$(basename "$lan");
|
||||
file="$UISTRING_PATH/$lan/strings";
|
||||
if [ -r "$file" ]; then
|
||||
echo displayname_$lan=\"$(pkg_get_string "$file" "$sec" "$key")\";
|
||||
if [ "x$lan" = "xenu" ]; then
|
||||
echo displayname=\"$(pkg_get_string "$file" "$sec" "$key")\";
|
||||
fi;
|
||||
fi;
|
||||
done;
|
||||
else
|
||||
if [ "x" != "x$displayname" ]; then
|
||||
echo "displayname=\"${displayname}\"";
|
||||
fi;
|
||||
fi
|
||||
}
|
||||
plat_to_unified_plat() {
|
||||
local plat="$1"
|
||||
local unified_plat=
|
||||
|
||||
case "$plat" in
|
||||
x86 | bromolow | cedarview | avoton )
|
||||
unified_plat="x86 bromolow cedarview avoton"
|
||||
;;
|
||||
# alpine and alpine4k use same define.
|
||||
alpine )
|
||||
unified_plat="alpine"
|
||||
;;
|
||||
*)
|
||||
unified_plat="$plat"
|
||||
;;
|
||||
esac
|
||||
echo "$unified_plat"
|
||||
}
|
||||
|
||||
get_var_from_envmak() {
|
||||
return 1
|
||||
local var="$1"
|
||||
shift
|
||||
local envmaks="$@"
|
||||
local ret=
|
||||
local defaultSearchPath="/env.mak /env32.mak"
|
||||
|
||||
for f in "${envmaks[@]}" $defaultSearchPath; do
|
||||
if [ ! -r "$f" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
ret=$(grep "^$var=" "$f" | cut -d= -f2)
|
||||
|
||||
if [ -n "$ret" ]; then
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -z "$ret" ]; then
|
||||
pkg_warn "get_var_from_envmak: can not extract $var from '[$envmaks $defaultSearchPath]'"
|
||||
return 1
|
||||
else
|
||||
echo "$ret"
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_get_platform ()
|
||||
{
|
||||
local arch=;
|
||||
local PLATFORM_ABBR=$(get_var_from_envmak PLATFORM_ABBR "$1" 2> /dev/null) || return 1;
|
||||
if [ -n "$PLATFORM_ABBR" ]; then
|
||||
case "$PLATFORM_ABBR" in
|
||||
6180)
|
||||
arch="88f6180"
|
||||
;;
|
||||
6281)
|
||||
arch="88f6281"
|
||||
;;
|
||||
816x)
|
||||
arch="ti816x"
|
||||
;;
|
||||
ppc)
|
||||
arch="powerpc"
|
||||
;;
|
||||
824x)
|
||||
arch="ppc824x"
|
||||
;;
|
||||
853x)
|
||||
arch="ppc853x"
|
||||
;;
|
||||
854x)
|
||||
arch="ppc854x"
|
||||
;;
|
||||
x64)
|
||||
arch="x86"
|
||||
;;
|
||||
*)
|
||||
arch="$PLATFORM_ABBR"
|
||||
;;
|
||||
esac;
|
||||
fi;
|
||||
if [ -z "$arch" ]; then
|
||||
local SYNO_PLATFORM=$(get_var_from_envmak SYNO_PLATFORM "$1") || return 1;
|
||||
case "$SYNO_PLATFORM" in
|
||||
MARVELL_88F6180)
|
||||
arch="88f6180"
|
||||
;;
|
||||
MARVELL_88F6281)
|
||||
arch="88f6281"
|
||||
;;
|
||||
TI_816X)
|
||||
arch="ti816x"
|
||||
;;
|
||||
POWERPC)
|
||||
arch="powerpc"
|
||||
;;
|
||||
PPC_824X)
|
||||
arch="ppc824x"
|
||||
;;
|
||||
PPC_853X)
|
||||
arch="ppc853x"
|
||||
;;
|
||||
PPC_854X)
|
||||
arch="ppc854x"
|
||||
;;
|
||||
PPC_QORIQ)
|
||||
arch="qoriq"
|
||||
;;
|
||||
X64)
|
||||
arch="x86"
|
||||
;;
|
||||
BROMOLOW)
|
||||
arch="bromolow"
|
||||
;;
|
||||
CEDARVIEW)
|
||||
arch="cedarview"
|
||||
;;
|
||||
AVOTON)
|
||||
arch="avoton"
|
||||
;;
|
||||
MARVELL_ARMADAXP)
|
||||
arch="armadaxp"
|
||||
;;
|
||||
MARVELL_ARMADA370)
|
||||
arch="armada370"
|
||||
;;
|
||||
MARVELL_ARMADA375)
|
||||
arch="armada375"
|
||||
;;
|
||||
EVANSPORT)
|
||||
arch="evansport"
|
||||
;;
|
||||
PPC_CATALINA)
|
||||
arch="catalina"
|
||||
;;
|
||||
MINDSPEED_COMCERTO2K)
|
||||
arch="comcerto2k"
|
||||
;;
|
||||
ALPINE)
|
||||
arch="alpine"
|
||||
;;
|
||||
BROADCOM_NORTHSTARPLUS)
|
||||
arch="northstarplus"
|
||||
;;
|
||||
STM_MONACO)
|
||||
arch="monaco"
|
||||
;;
|
||||
HISILICON_HI3535)
|
||||
arch="hi3535"
|
||||
;;
|
||||
MARVELL_ARMADA38X)
|
||||
arch="armada38x"
|
||||
;;
|
||||
*)
|
||||
arch=""
|
||||
;;
|
||||
esac;
|
||||
fi;
|
||||
echo "$arch"
|
||||
}
|
||||
pkg_get_spk_platform ()
|
||||
{
|
||||
local plat=$(pkg_get_platform "$1") || return 1;
|
||||
local spk_plat=;
|
||||
case "$plat" in
|
||||
88f6281)
|
||||
spk_plat="88f628x"
|
||||
;;
|
||||
*)
|
||||
spk_plat="$plat"
|
||||
;;
|
||||
esac;
|
||||
echo "$spk_plat"
|
||||
}
|
||||
pkg_make_package ()
|
||||
{
|
||||
local source_path=$1;
|
||||
local dest_path=$2;
|
||||
local package_name="package.tgz";
|
||||
local temp_extractsize="extractsize_tmp";
|
||||
local pkg_size=;
|
||||
local tar_option="$(pkg_get_tar_option)";
|
||||
if [ -z "$source_path" -o ! -d "$source_path" ]; then
|
||||
pkg_warn "pkg_make_package: bad parameters, please set source dir";
|
||||
return 1;
|
||||
fi;
|
||||
if [ -z "$dest_path" -o ! -d "$dest_path" ]; then
|
||||
pkg_warn "pkg_make_package: bad parameters, please set destination dir";
|
||||
return 1;
|
||||
fi;
|
||||
pkg_size=`du -sk "$source_path" | awk '{print $1}'`;
|
||||
echo "${pkg_size}" >> "$dest_path/$temp_extractsize";
|
||||
echo ls $source_path \| tar $tar_option "$dest_path/$package_name" -C "$source_path" -T /dev/stdin;
|
||||
ls $source_path | tar $tar_option "$dest_path/$package_name" -C "$source_path" -T /dev/stdin
|
||||
}
|
||||
pkg_get_spk_name ()
|
||||
{
|
||||
__get_spk_name pkg_get_spk_platform $@
|
||||
}
|
||||
pkg_make_spk ()
|
||||
{
|
||||
local pack="tar cf";
|
||||
local source_path=$1;
|
||||
local dest_path=$2;
|
||||
local info_path="$source_path/INFO";
|
||||
local spk_name=$3;
|
||||
local spk_arch=;
|
||||
local temp_extractsize="extractsize_tmp";
|
||||
if [ -z "$source_path" -o ! -d "$source_path" ]; then
|
||||
pkg_warn "pkg_make_spk: bad parameters, please set source dir";
|
||||
return 1;
|
||||
fi;
|
||||
if [ -z "$dest_path" -o ! -d "$dest_path" ]; then
|
||||
pkg_warn "pkg_make_spk: bad parameters, please set destination dir";
|
||||
return 1;
|
||||
fi;
|
||||
if [ ! -r "$info_path" ]; then
|
||||
pkg_warn "pkg_make_spk: INFO '$info_path' is not existed";
|
||||
return 1;
|
||||
fi;
|
||||
spk_name=${3:-`pkg_get_spk_name $info_path`};
|
||||
pkg_size=`cat $source_path/$temp_extractsize`;
|
||||
echo "extractsize=\"${pkg_size}\"" >> $info_path;
|
||||
rm "$source_path/$temp_extractsize";
|
||||
echo "toolkit_version=\"$DSM_BUILD_NUM\"" >> $info_path;
|
||||
echo "create_time=\"$(date +%Y%m%d-%T)\"" >> $info_path;
|
||||
pkg_log "creating package: $spk_name";
|
||||
pkg_log "source: $source_path";
|
||||
pkg_log "destination: $dest_path/$spk_name";
|
||||
$pack "$dest_path/$spk_name" -C "$source_path" $(ls $source_path)
|
||||
}
|
||||
pkg_get_unified_platform ()
|
||||
{
|
||||
local plat=$(pkg_get_platform "$1") || return 1;
|
||||
plat_to_unified_plat "$plat"
|
||||
}
|
||||
pkg_get_spk_unified_platform ()
|
||||
{
|
||||
local plat=$(pkg_get_platform "$1") || return 1;
|
||||
local spk_unified_platform=;
|
||||
case "$plat" in
|
||||
88f6281)
|
||||
spk_unified_platform="88f628x"
|
||||
;;
|
||||
x86 | bromolow | cedarview | avoton)
|
||||
spk_unified_platform="x64"
|
||||
;;
|
||||
alpine)
|
||||
spk_unified_platform="alpine"
|
||||
;;
|
||||
*)
|
||||
spk_unified_platform="$plat"
|
||||
;;
|
||||
esac;
|
||||
echo "$spk_unified_platform"
|
||||
}
|
||||
pkg_get_spk_unified_name ()
|
||||
{
|
||||
__get_spk_name pkg_get_spk_unified_platform $@
|
||||
}
|
||||
|
||||
__get_spk_name() { #<info path>
|
||||
local spk_name=
|
||||
local platform_func="$1"
|
||||
local info_path="${2:-$PKG_DIR/INFO}"
|
||||
local package_name="$3"
|
||||
|
||||
. $info_path
|
||||
|
||||
# construct package name
|
||||
if [ -z "$package" -o -z "$arch" -o -z "$version" ]; then
|
||||
pkg_warn "pkg_make_spk: package, arch, version can not be empty"
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [ "x$arch" = "xnoarch" ]; then
|
||||
spk_arch="noarch"
|
||||
elif ! spk_arch=$($platform_func); then
|
||||
spk_arch="none"
|
||||
fi
|
||||
|
||||
if [ "x$arch" = "xnoarch" ]; then
|
||||
spk_arch=""
|
||||
else
|
||||
spk_arch="-"$spk_arch
|
||||
fi
|
||||
|
||||
if [ -z "$package_name" ]; then
|
||||
package_name="$package";
|
||||
fi
|
||||
|
||||
if [ "${NOSTRIP}" == NOSTRIP ]; then
|
||||
spk_name="$package_name$spk_arch-${version}_debug.spk"
|
||||
else
|
||||
spk_name="$package_name$spk_arch-$version.spk"
|
||||
fi
|
||||
echo $spk_name;
|
||||
}
|
||||
|
||||
|
||||
pkg_get_dsm_buildnum() { # [path of VERSION (default: )]
|
||||
local version_file=${1:-/source/lnxsdk/init/etc/VERSION}
|
||||
local dsm_build=
|
||||
|
||||
if [ ! -r "$version_file" ]; then
|
||||
pkg_warn "pkg_get_dsm_buildnum: can not find version file '$version_file'"
|
||||
pkg_warn "use default buildnum: 0"
|
||||
echo 0
|
||||
return 1
|
||||
fi
|
||||
|
||||
if ! dsm_build=$(grep -s ^buildnumber "$version_file" | awk -F \" '{print $2}'); then
|
||||
echo 0
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo $(($dsm_build))
|
||||
}
|
||||
|
||||
pkg_get_tar_option() {
|
||||
local version_file="/PkgVersion"
|
||||
|
||||
if [ -r $version_file ] && [ "$(pkg_get_dsm_buildnum $version_file)" -ge 5943 ]; then
|
||||
echo "cJf"
|
||||
else
|
||||
echo "czf"
|
||||
fi
|
||||
}
|
||||
|
||||
[ "$(caller)" != "0 NULL" ] && return 0
|
||||
Usage() {
|
||||
cat >&2 << EOF
|
||||
Usage
|
||||
$(basename $0) <action> [action options...]
|
||||
Action
|
||||
make_spk <source path> <dest path>
|
||||
make_package <source path> <dest path>
|
||||
EOF
|
||||
exit 0
|
||||
}
|
||||
[ $# -eq 0 ] && Usage
|
||||
PkgBuildAction=$1 ; shift
|
||||
case "$PkgBuildAction" in
|
||||
make_spk) pkg_make_spk "$@" ;;
|
||||
make_package) pkg_make_package "$@" ;;
|
||||
*) Usage ;;
|
||||
esac
|
Loading…
Add table
Add a link
Reference in a new issue