diff --git a/manifest.toml b/manifest.toml index 3af2d77..e4ee597 100644 --- a/manifest.toml +++ b/manifest.toml @@ -105,13 +105,18 @@ ram.runtime = "500M" [resources.sources.main] amd64.url = "https://s3.eu-central-1.amazonaws.com/download.seadrive.org/seafile-server_9.0.9_x86-64.tar.gz" amd64.sha256 = "db76bb33572ad0a6860470e907bed4ed780aa17d9e022226d99448a7f9e4ba74" + arm64.url = "https://github.com/haiwen/seafile-rpi/releases/download/v9.0.9/seafile-server-9.0.9-bullseye-arm64v8l.tar.gz" arm64.sha256 = "c58f5d6b741dec240be9d75d6e617102b7adbfeba98cbd866732822bf9ca10b7" armhf.url = "https://github.com/haiwen/seafile-rpi/releases/download/v9.0.9/seafile-server-9.0.9-bullseye-arm32v7l.tar.gz" armhf.sha256 = "171fcf08b726d452e1c4cd22dadb9f8f5cf6848424ebc1e04cde5be34ef3d7f6" + autoupdate.strategy = "latest_github_release" + autoupdate.asset.arm64 = ".*-bullseye-arm64v8l\.tar\.gz" + autoupdate.asset.armhf = ".*-bullseye-arm32v7l\.tar\.gz" + [resources.apt] - packages = ["expect", "ffmpeg", + packages = ["ffmpeg", "python3", "python3-venv", "python3-setuptools", "python3-pip", "python3-dev", "python3-requests", "python3-scipy", "python3-matplotlib", "mariadb-server", "libmariadb-dev-compat", "libmariadb-dev", diff --git a/scripts/_common.sh b/scripts/_common.sh index c557a8b..8db757b 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -58,21 +58,14 @@ install_dependance() { done } -mv_expect_scripts() { - expect_scripts_dir=$(mktemp -d) - cp expect_scripts/* $expect_scripts_dir - chmod u=rwx,o= -R $expect_scripts_dir - chown $YNH_APP_ID -R $expect_scripts_dir -} - set_permission() { chown -R $YNH_APP_ID:$YNH_APP_ID $install_dir chmod -R u+rwX,g-wx,o= $install_dir setfacl -m user:www-data:rX $install_dir setfacl -m user:www-data:rX $install_dir/seafile-server-$seafile_version # At install time theses directory are not available - test -e $install_dir/seafile-server-latest/seahub && setfacl -m user:www-data:rX $install_dir/seafile-server-latest/seahub - test -e $install_dir/seafile-server-latest/seahub/media && setfacl -R -m user:www-data:rX $install_dir/seafile-server-latest/seahub/media + test -e $install_dir/seafile-server-$seafile_version/seahub && setfacl -m user:www-data:rX $install_dir/seafile-server-$seafile_version/seahub + test -e $install_dir/seafile-server-$seafile_version/seahub/media && setfacl -R -m user:www-data:rX $install_dir/seafile-server-$seafile_version/seahub/media test -e $install_dir/seahub-data && setfacl -R -m user:www-data:rX $install_dir/seahub-data find $data_dir \( \! -perm -o= \ diff --git a/scripts/expect_scripts/install.exp b/scripts/expect_scripts/install.exp deleted file mode 100644 index b370f52..0000000 --- a/scripts/expect_scripts/install.exp +++ /dev/null @@ -1,54 +0,0 @@ -#!/usr/bin/expect -set timeout 10 - -set seafile_dir [lindex $argv 0] -set server_name [lindex $argv 1] -set domain [lindex $argv 2] -set fileserver_port [lindex $argv 3] -set db_name [lindex $argv 4] -set db_pwd [lindex $argv 5] - -spawn $seafile_dir/setup-seafile-mysql.sh - -expect "Press ENTER to continue" -send "\r"; - -expect "What is the name of the server? It will be displayed on the client." -send "$server_name\r"; - -expect "What is the ip or domain of the server?" -send "$domain\r"; - -expect "Which port do you want to use for the seafile fileserver?" -send "$fileserver_port\r"; - -expect "Use existing ccnet/seafile/seahub databases" -send "2\r"; - -expect "What is the host of mysql server?" -send "localhost\r"; - -expect "What is the port of mysql server?" -send "3306\r"; - -expect "Which mysql user to use for seafile?" -send "seafile\r"; - -expect "What is the password for mysql user" -send "$db_pwd\r"; - -expect "Enter the existing database name for ccnet:" -send "ccnetdb\r"; - -expect "Enter the existing database name for seafile:" -send "$db_name\r"; - -expect "Enter the existing database name for seahub:" -send "seahubdb\r"; - -expect "Press ENTER to continue, or Ctrl-C to abort" -send "\r"; - -interact - -wait diff --git a/scripts/expect_scripts/minor-upgrade.exp b/scripts/expect_scripts/minor-upgrade.exp deleted file mode 100644 index 0d3cd97..0000000 --- a/scripts/expect_scripts/minor-upgrade.exp +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/expect -set timeout 5 - -set seafile_dir [lindex $argv 0] -set mysql_password [lindex $argv 1] - -spawn $seafile_dir/upgrade/minor-upgrade.sh - -expect "to contiune" -send "\r"; - -interact diff --git a/scripts/expect_scripts/upgrade_4.2.1.exp b/scripts/expect_scripts/upgrade_4.2.1.exp deleted file mode 100644 index 39d921f..0000000 --- a/scripts/expect_scripts/upgrade_4.2.1.exp +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/expect -set timeout 5 - -set seafile_dir [lindex $argv 0] - -spawn $seafile_dir/upgrade/upgrade_4.1_4.2.sh - -expect "to contiune" -send "\r"; - -interact diff --git a/scripts/expect_scripts/upgrade_4.3.2.exp b/scripts/expect_scripts/upgrade_4.3.2.exp deleted file mode 100644 index 1e5ae01..0000000 --- a/scripts/expect_scripts/upgrade_4.3.2.exp +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/expect -set timeout 5 - -set seafile_dir [lindex $argv 0] - -spawn $seafile_dir/upgrade/upgrade_4.2_4.3.sh - -expect "to contiune" -send "\r"; - -interact diff --git a/scripts/expect_scripts/upgrade_4.4.3.exp b/scripts/expect_scripts/upgrade_4.4.3.exp deleted file mode 100644 index 1738a74..0000000 --- a/scripts/expect_scripts/upgrade_4.4.3.exp +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/expect -set timeout 5 - -set seafile_dir [lindex $argv 0] - -spawn $seafile_dir/upgrade/upgrade_4.3_4.4.sh - -expect "to contiune" -send "\r"; - -interact diff --git a/scripts/expect_scripts/upgrade_5.0.3.exp b/scripts/expect_scripts/upgrade_5.0.3.exp deleted file mode 100644 index 397deed..0000000 --- a/scripts/expect_scripts/upgrade_5.0.3.exp +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/expect -set timeout 5 - -set seafile_dir [lindex $argv 0] - -spawn $seafile_dir/upgrade/upgrade_4.4_5.0.sh - -expect "to contiune" -send "\r"; - -interact diff --git a/scripts/expect_scripts/upgrade_5.1.exp b/scripts/expect_scripts/upgrade_5.1.exp deleted file mode 100644 index 5f82501..0000000 --- a/scripts/expect_scripts/upgrade_5.1.exp +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/expect -set timeout 5 - -set seafile_dir [lindex $argv 0] - -spawn $seafile_dir/upgrade/upgrade_5.0_5.1.sh - -expect "to contiune" -send "\r"; - -interact diff --git a/scripts/expect_scripts/upgrade_6.0.exp b/scripts/expect_scripts/upgrade_6.0.exp deleted file mode 100644 index b5a3143..0000000 --- a/scripts/expect_scripts/upgrade_6.0.exp +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/expect -set timeout 5 - -set seafile_dir [lindex $argv 0] - -spawn $seafile_dir/upgrade/upgrade_5.1_6.0.sh - -expect "to contiune" -send "\r"; - -interact diff --git a/scripts/expect_scripts/upgrade_6.1.exp b/scripts/expect_scripts/upgrade_6.1.exp deleted file mode 100644 index fd50049..0000000 --- a/scripts/expect_scripts/upgrade_6.1.exp +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/expect -set timeout 5 - -set seafile_dir [lindex $argv 0] - -spawn $seafile_dir/upgrade/upgrade_6.0_6.1.sh - -expect "to contiune" -send "\r"; - -interact diff --git a/scripts/expect_scripts/upgrade_6.2.exp b/scripts/expect_scripts/upgrade_6.2.exp deleted file mode 100644 index cf80453..0000000 --- a/scripts/expect_scripts/upgrade_6.2.exp +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/expect -set timeout 5 - -set seafile_dir [lindex $argv 0] - -spawn $seafile_dir/upgrade/upgrade_6.1_6.2.sh - -expect "to contiune" -send "\r"; - -interact diff --git a/scripts/expect_scripts/upgrade_6.3.exp b/scripts/expect_scripts/upgrade_6.3.exp deleted file mode 100644 index 13a5f44..0000000 --- a/scripts/expect_scripts/upgrade_6.3.exp +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/expect -set timeout 5 - -set seafile_dir [lindex $argv 0] - -spawn $seafile_dir/upgrade/upgrade_6.2_6.3.sh - -expect "to contiune" -send "\r"; - -interact diff --git a/scripts/expect_scripts/upgrade_7.0.exp b/scripts/expect_scripts/upgrade_7.0.exp deleted file mode 100644 index 271cf59..0000000 --- a/scripts/expect_scripts/upgrade_7.0.exp +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/expect -set timeout 5 - -set seafile_dir [lindex $argv 0] - -spawn $seafile_dir/upgrade/upgrade_6.3_7.0.sh - -expect "to contiune" -send "\r"; - -interact diff --git a/scripts/expect_scripts/upgrade_7.1.exp b/scripts/expect_scripts/upgrade_7.1.exp deleted file mode 100644 index fbc63c7..0000000 --- a/scripts/expect_scripts/upgrade_7.1.exp +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/expect -set timeout 5 - -set seafile_dir [lindex $argv 0] - -spawn $seafile_dir/upgrade/upgrade_7.0_7.1.sh - -expect "to contiune" -send "\r"; - -sleep 10; - -send "\r"; - -sleep 1; - -send "\r"; - -interact diff --git a/scripts/expect_scripts/upgrade_8.0.exp b/scripts/expect_scripts/upgrade_8.0.exp deleted file mode 100644 index 6c86c2b..0000000 --- a/scripts/expect_scripts/upgrade_8.0.exp +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/expect -set timeout 5 - -set seafile_dir [lindex $argv 0] - -spawn $seafile_dir/upgrade/upgrade_8.0_9.0.sh - -expect "to contiune" -send "\r"; - -interact diff --git a/scripts/expect_scripts/upgrade_9.0.exp b/scripts/expect_scripts/upgrade_9.0.exp deleted file mode 100644 index 0816a57..0000000 --- a/scripts/expect_scripts/upgrade_9.0.exp +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/expect -set timeout 5 - -set seafile_dir [lindex $argv 0] - -spawn $seafile_dir/upgrade/upgrade_7.1_8.0.sh - -expect "to contiune" -send "\r"; - -interact diff --git a/scripts/install b/scripts/install index a81d5f6..f11ee9e 100644 --- a/scripts/install +++ b/scripts/install @@ -28,6 +28,13 @@ fi ynh_script_progression --message="Creating base directory..." ln -s $data_dir $install_dir/seafile-data +if [ -n "$(ls -A $data_dir)" ]; then + old_data_dir_path="${data_dir}_$(date '+%Y%m%d.%H%M%S')" + ynh_print_warn "Data directory was not empty. Data was moved to $old_data_dir_path" + mkdir -p $old_data_dir_path + mv -t "$old_data_dir_path" "$data_dir"/* +fi + # Download new version from sources ynh_script_progression --message="Installing sources files..." --weight=7 ynh_setup_source --dest_dir=$install_dir/seafile-server-$seafile_version @@ -45,12 +52,22 @@ $db_helper --db_user $db_user --db_name seahubdb --db_pwd "$db_pwd" ynh_script_progression --message="Configuring application..." --weight=3 # Run install script -mv_expect_scripts -chmod +x $install_dir/seafile-server-$seafile_version/setup-seafile-mysql.sh set_permission -sudo -u $YNH_APP_ID $expect_scripts_dir/install.exp "$install_dir/seafile-server-$seafile_version" "$server_name" "$domain" "$port_fileserver" "$db_name" "$db_pwd" - -sleep 3 +ynh_replace_special_string --match_string 'seafile_config.seafile_dir = seafile_config.validate_seafile_dir(seafile_dir)' \ + --replace_string 'seafile_config.seafile_dir = seafile_dir' \ + --target_file $install_dir/seafile-server-$seafile_version/setup-seafile-mysql.py +sudo -u $YNH_APP_ID bash $install_dir/seafile-server-$seafile_version/setup-seafile-mysql.sh auto \ + --server-name "$server_name" \ + --server-ip $domain \ + --fileserver-port $port_fileserver \ + --use-existing-db 1 \ + --mysql-host localhost \ + --mysql-port 3306 \ + --mysql-user $db_user \ + --mysql-user-passwd "$db_pwd" \ + --seafile-db "$db_name" \ + --ccnet-db ccnetdb \ + --seahub-db seahubdb # Retrive values from auto generated config file seahub_secret_key=$(grep -P 'SECRET_KEY\s*=\s*".+"' $install_dir/conf/seahub_settings.py | cut -d'"' -f2) diff --git a/scripts/upgrade b/scripts/upgrade index 995c446..082aa56 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -56,6 +56,8 @@ if mysqlshow | grep -q seafiledb; then $mysqlconn -e "RENAME TABLE seafiledb.$name to $db_name.$name"; done; $mysqlconn -e "DROP DATABASE seafiledb" + ynh_replace_string --match_string='db_name = seafiledb' --replace_string='db_name = seafile' --target_file=$install_dir/conf/seafile.conf + sed -i "s|password\s*=\s*.*^|password = $db_pwd|g" $install_dir/conf/seafile.conf fi # Set missing settings @@ -89,10 +91,7 @@ install_dependance ynh_script_progression --message="Configuring application..." # permission to execute update script and expect helper -mv_expect_scripts set_permission -chmod u+x,o= $install_dir/seafile-server-$seafile_version/upgrade/upgrade_*.sh -chmod u+x,o= $install_dir/seafile-server-$seafile_version/upgrade/minor-upgrade.sh # do the upgrade ( the ";&" syntax mean when it go in the first case which is true it do all the next case) case $installed_version in @@ -114,7 +113,8 @@ case $installed_version in popd # Update seafile by script - sudo -u $YNH_APP_ID $expect_scripts_dir/upgrade_7.1.exp $install_dir/seafile-server-$seafile_version + ynh_replace_string --match_string='read dummy' --replace_string='# patched' --target_file=$install_dir/seafile-server-$seafile_version/upgrade/upgrade_7.0_7.1.sh + sudo -u $YNH_APP_ID bash $install_dir/seafile-server-$seafile_version/upgrade/upgrade_7.0_7.1.sh # Fix seafile data link. Look like that the upgrade script of seafile don't always work correctly if [ -e $install_dir/seafile-data ]; then @@ -124,14 +124,17 @@ case $installed_version in ln -s $data_dir $install_dir/seafile-data ;& "7.1."* ) - sudo -u $YNH_APP_ID $expect_scripts_dir/upgrade_8.0.exp $install_dir/seafile-server-$seafile_version + ynh_replace_string --match_string='read dummy' --replace_string='# patched' --target_file=$install_dir/seafile-server-$seafile_version/upgrade/upgrade_8.0_9.0.sh + sudo -u $YNH_APP_ID bash $install_dir/seafile-server-$seafile_version/upgrade/upgrade_8.0_9.0.sh ;& "8.0."* ) - sudo -u $YNH_APP_ID $expect_scripts_dir/upgrade_9.0.exp $install_dir/seafile-server-$seafile_version + ynh_replace_string --match_string='read dummy' --replace_string='# patched' --target_file=$install_dir/seafile-server-$seafile_version/upgrade/upgrade_7.1_8.0.sh + sudo -u $YNH_APP_ID bash $install_dir/seafile-server-$seafile_version/upgrade/upgrade_7.1_8.0.sh ;& esac -sudo -u $YNH_APP_ID $expect_scripts_dir/minor-upgrade.exp $install_dir/seafile-server-$seafile_version +ynh_replace_string --match_string='read dummy' --replace_string='# patched' --target_file=$install_dir/seafile-server-$seafile_version/upgrade/minor-upgrade.sh +sudo -u $YNH_APP_ID bash $install_dir/seafile-server-$seafile_version/upgrade/minor-upgrade.sh # Clean url in config in DB clean_url_in_db_config