diff --git a/conf/cron b/conf/cron new file mode 100644 index 0000000..7d1fe6c --- /dev/null +++ b/conf/cron @@ -0,0 +1,3 @@ +0 6 * * 1 __APP__ /usr/bin/php__PHPVERSION__ __FINALPATH__/license_alert.php >> /dev/null +0,10,20,30,40,50 * * * * __APP__ /usr/bin/php__PHPVERSION__ __FINALPATH__/license_util.php >> /dev/null +15 0 * * 1 __APP__ /usr/bin/php__PHPVERSION__ __FINALPATH__/license_cache.php >> /dev/null \ No newline at end of file diff --git a/conf/config.php b/conf/sample-config.php similarity index 100% rename from conf/config.php rename to conf/sample-config.php diff --git a/doc/DESCRIPTION.md b/doc/DESCRIPTION.md new file mode 100644 index 0000000..0d38823 --- /dev/null +++ b/doc/DESCRIPTION.md @@ -0,0 +1 @@ +phpLicenseWatcher is a simple Web frontend to the FlexLM lmstat and lmdiag commands that gives information about the status of FlexLM servers. You can also get information about features and number of licenses available on a particular server. \ No newline at end of file diff --git a/doc/screenshots/screenshot1.png b/doc/screenshots/screenshot1.png new file mode 100644 index 0000000..e19359f Binary files /dev/null and b/doc/screenshots/screenshot1.png differ diff --git a/manifest.json b/manifest.json index d7b7a40..41849ae 100644 --- a/manifest.json +++ b/manifest.json @@ -14,7 +14,7 @@ "demo": "https://demo.example.com", "admindoc": "https://yunohost.org/packaging_apps", "userdoc": "https://yunohost.org/apps", - "code": "https://some.forge.com/example/example" + "code": "https://github.com/rpi-dotcio/phpLicenseWatcher" }, "license": "GPL-3.0", "maintainer": { diff --git a/scripts/backup b/scripts/backup index f99225d..f52e675 100644 --- a/scripts/backup +++ b/scripts/backup @@ -90,13 +90,11 @@ ynh_backup --src_path="/etc/logrotate.d/$app" ynh_backup --src_path="/etc/systemd/system/$app.service" #================================================= -# BACKUP VARIOUS FILES +# BACKUP A CRON FILE #================================================= ynh_backup --src_path="/etc/cron.d/$app" -ynh_backup --src_path="/etc/$app/" - #================================================= # BACKUP THE MYSQL DATABASE #================================================= diff --git a/scripts/change_url b/scripts/change_url new file mode 100644 index 0000000..ca3b5cf --- /dev/null +++ b/scripts/change_url @@ -0,0 +1,128 @@ +#!/bin/bash + +#================================================= +# GENERIC STARTING +#================================================= +# IMPORT GENERIC HELPERS +#================================================= + +source _common.sh +source /usr/share/yunohost/helpers + +#================================================= +# RETRIEVE ARGUMENTS +#================================================= + +old_domain=$YNH_APP_OLD_DOMAIN +old_path=$YNH_APP_OLD_PATH + +new_domain=$YNH_APP_NEW_DOMAIN +new_path=$YNH_APP_NEW_PATH + +app=$YNH_APP_INSTANCE_NAME + +#================================================= +# LOAD SETTINGS +#================================================= +ynh_script_progression --message="Loading installation settings..." --time --weight=1 + +# Needed for helper "ynh_add_nginx_config" +final_path=$(ynh_app_setting_get --app=$app --key=final_path) + +# Add settings here as needed by your application +#db_name=$(ynh_app_setting_get --app=$app --key=db_name) +#db_user=$db_name +#db_pwd=$(ynh_app_setting_get --app=$app --key=db_pwd) + +#================================================= +# BACKUP BEFORE CHANGE URL THEN ACTIVE TRAP +#================================================= +ynh_script_progression --message="Backing up the app before changing its URL (may take a while)..." --time --weight=1 + +# Backup the current version of the app +ynh_backup_before_upgrade +ynh_clean_setup () { + # Remove the new domain config file, the remove script won't do it as it doesn't know yet its location. + ynh_secure_remove --file="/etc/nginx/conf.d/$new_domain.d/$app.conf" + + # Restore it if the upgrade fails + ynh_restore_upgradebackup +} +# Exit if an error occurs during the execution of the script +ynh_abort_if_errors + +#================================================= +# CHECK WHICH PARTS SHOULD BE CHANGED +#================================================= + +change_domain=0 +if [ "$old_domain" != "$new_domain" ] +then + change_domain=1 +fi + +change_path=0 +if [ "$old_path" != "$new_path" ] +then + change_path=1 +fi + +#================================================= +# STANDARD MODIFICATIONS +#================================================= +# STOP SYSTEMD SERVICE +#================================================= +ynh_script_progression --message="Stopping a systemd service..." --time --weight=1 + +ynh_systemd_action --service_name=$app --action="stop" --log_path="/var/log/$app/$app.log" + +#================================================= +# MODIFY URL IN NGINX CONF +#================================================= +ynh_script_progression --message="Updating NGINX web server configuration..." --time --weight=1 + +nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf + +# Change the path in the NGINX config file +if [ $change_path -eq 1 ] +then + # Make a backup of the original NGINX config file if modified + ynh_backup_if_checksum_is_different --file="$nginx_conf_path" + # Set global variables for NGINX helper + domain="$old_domain" + path_url="$new_path" + # Create a dedicated NGINX config + ynh_add_nginx_config +fi + +# Change the domain for NGINX +if [ $change_domain -eq 1 ] +then + # Delete file checksum for the old conf file location + ynh_delete_file_checksum --file="$nginx_conf_path" + mv $nginx_conf_path /etc/nginx/conf.d/$new_domain.d/$app.conf + # Store file checksum for the new config file location + ynh_store_file_checksum --file="/etc/nginx/conf.d/$new_domain.d/$app.conf" +fi + +#================================================= +# GENERIC FINALISATION +#================================================= +# START SYSTEMD SERVICE +#================================================= +ynh_script_progression --message="Starting a systemd service..." --time --weight=1 + +ynh_systemd_action --service_name=$app --action="start" --log_path="/var/log/$app/$app.log" + +#================================================= +# RELOAD NGINX +#================================================= +ynh_script_progression --message="Reloading NGINX web server..." --time --weight=1 + +ynh_systemd_action --service_name=nginx --action=reload + +#================================================= +# END OF SCRIPT +#================================================= + +ynh_script_progression --message="Change of URL completed for $app" --time --last diff --git a/scripts/install b/scripts/install index 1a4b34d..9f395e3 100644 --- a/scripts/install +++ b/scripts/install @@ -110,23 +110,32 @@ ynh_script_progression --message="Configuring PHP-FPM..." --time --weight=1 # Create a dedicated PHP-FPM config ynh_add_fpm_config +#================================================= +# SETUP A CRON +#================================================= +ynh_script_progression --message="Setuping a cron..." --weight=1 + +ynh_add_config --template="../conf/cron" --destination="/etc/cron.d/$app" +chown root: "/etc/cron.d/$app" +chmod 644 "/etc/cron.d/$app" + #================================================= # ADD A CONFIGURATION #================================================= ynh_script_progression --message="Adding a configuration file..." --time --weight=1 -ynh_add_config --template="../conf/config.php" --destination="$final_path/config.php" +ynh_add_config --template="../conf/sample-config.php" --destination="$final_path/config.php" chmod 400 "$final_path/config.php" chown $app:$app "$final_path/config.php" -# Import DB +# # Import DB ynh_mysql_execute_file_as_root --file="$final_path/phplicensewatcher.sql" --database="$db_name" -# Clean Files -rm -f "$final_path/*.sql" -rm -f "$final_path/*.md" +# # Clean Files +# rm -f "$final_path/*.sql" +# rm -f "$final_path/*.md" #================================================= # SETUP SSOWAT @@ -136,8 +145,6 @@ ynh_script_progression --message="Configuring permissions..." --time --weight=1 # Make app public if necessary if [ $is_public -eq 1 ] then - # Everyone can access the app. - # The "main" permission is automatically created before the install script. ynh_permission_update --permission="main" --add="visitors" fi diff --git a/scripts/remove b/scripts/remove index ecbe729..ed44904 100644 --- a/scripts/remove +++ b/scripts/remove @@ -75,6 +75,14 @@ ynh_script_progression --message="Removing PHP-FPM configuration..." --time --we # Remove the dedicated PHP-FPM config ynh_remove_fpm_config +#================================================= +# REMOVE THE CRON FILE +#================================================= +ynh_script_progression --message="Removing the cron file..." --weight=1 + +# Remove a cron file +ynh_secure_remove --file="/etc/cron.d/$app" + #================================================= # GENERIC FINALIZATION #================================================= diff --git a/scripts/restore b/scripts/restore index cd0a027..9150302 100644 --- a/scripts/restore +++ b/scripts/restore @@ -97,6 +97,15 @@ db_pwd=$(ynh_app_setting_get --app=$app --key=mysqlpwd) ynh_mysql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd ynh_mysql_connect_as --user=$db_user --password=$db_pwd --database=$db_name < ./db.sql +#================================================= +# RESTORE THE CRON FILE +#================================================= +ynh_script_progression --message="Restoring the cron file..." --weight=1 + +ynh_restore_file --origin_path="/etc/cron.d/$app" +chown root: "/etc/cron.d/$app" +chmod 644 "/etc/cron.d/$app" + #================================================= # GENERIC FINALIZATION #=================================================