From d8c645bbec4407ea0e0f83486025795752066ba2 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Fri, 9 Aug 2019 16:49:04 +0200 Subject: [PATCH] Initial commit --- README.md | 5 +++ conf/nginx.conf | 19 +++++++++++ manifest.json | 58 +++++++++++++++++++++++++++++++++ scripts/install | 85 +++++++++++++++++++++++++++++++++++++++++++++++++ scripts/remove | 36 +++++++++++++++++++++ 5 files changed, 203 insertions(+) create mode 100644 README.md create mode 100644 conf/nginx.conf create mode 100644 manifest.json create mode 100644 scripts/install create mode 100644 scripts/remove diff --git a/README.md b/README.md new file mode 100644 index 0000000..4f82db4 --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ +# Hello World for Yunohost + +Hello World is a basic dummy app to illustrate how YunoHost app packaging works. + +After installing the application, you can go to `your.domain.tld/helloworld` (or whichever page you chose) and you should see a simple page that shows 'Hello World!' diff --git a/conf/nginx.conf b/conf/nginx.conf new file mode 100644 index 0000000..ec06c8e --- /dev/null +++ b/conf/nginx.conf @@ -0,0 +1,19 @@ +#sub_path_only rewrite ^__PATH__$ __PATH__/ permanent; +location __PATH__/ { + + # Path to source + alias __FINALPATH__/; + + index index.html; + + try_files $uri.html $uri $uri/ =404; + + client_max_body_size 10G; + + if ($scheme = http) { + rewrite ^ https://$server_name$request_uri? permanent; + } + + # Include SSOWAT user panel. + include conf.d/yunohost_panel.conf.inc; +} diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..914f216 --- /dev/null +++ b/manifest.json @@ -0,0 +1,58 @@ +{ + "name": "Hello World", + "id": "helloworld", + "packaging_format": 1, + "version": "0.1~ynh1", + "description": { + "en": "A dummy basic app to illustrate YunoHost's app packaging.", + "fr": "Une app simple et bidon pour illustrer comme le packaging d'app de YunoHost fonctionne" + }, + "license": "WTFPL", + "maintainer": { + "name": "alexAubin", + "email": "alex.aubin@mailoo.org" + }, + "requirements": { + "yunohost": ">= 3.6.0" + }, + "multi_instance": false, + "services": [ + "nginx" + ], + "arguments": { + "install" : [ + { + "name": "domain", + "type": "domain", + "ask": { + "en": "Choose a domain for HelloWorld", + "fr": "Choisissez un domaine pour HelloWorld" + }, + "example": "domain.tld" + }, + { + "name": "path", + "type": "path", + "ask": { + "en": "Choose a path for HelloWorld", + "fr": "Choisissez un chemin pour HelloWorld" + }, + "example": "/helloworld", + "default": "/helloworld" + }, + { + "name": "is_public", + "type": "boolean", + "ask": { + "en": "Is it a public application?", + "fr": "Est-ce une application publique ?" + }, + "help": { + "en": "A private app will only be accessible to logged-in users", + "fr": "Une app privée sera seulement accessible aux utilisateurs connectés" + }, + "default": true + } + ] + } +} diff --git a/scripts/install b/scripts/install new file mode 100644 index 0000000..a3454c8 --- /dev/null +++ b/scripts/install @@ -0,0 +1,85 @@ +#!/bin/bash + +#================================================= +# GENERIC START +#================================================= +# IMPORT GENERIC HELPERS +#================================================= + +source /usr/share/yunohost/helpers + +#================================================= +# MANAGE SCRIPT FAILURE +#================================================= + +# Exit if an error occurs during the execution of the script +ynh_abort_if_errors + +#================================================= +# RETRIEVE ARGUMENTS FROM THE MANIFEST +#================================================= + +app=$YNH_APP_INSTANCE_NAME +domain=$YNH_APP_ARG_DOMAIN +path_url=$YNH_APP_ARG_PATH +is_public=$YNH_APP_ARG_IS_PUBLIC + +# Final path is the classic name for "where we will put the source of the app" +final_path=/var/www/$app + +#================================================= +# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS +#================================================= +ynh_script_progression --message="Validating installation parameters..." --weight=1 + +# Check final_path availability +test ! -e "$final_path" || ynh_die "$final_path already exists, aborting" + +# Register (book) the web path +ynh_webpath_register $app $domain $path_url + +#================================================= +# STORE SETTINGS FROM MANIFEST +#================================================= +ynh_script_progression --message="Storing installation settings..." --weight=1 + +ynh_app_setting_set $app is_public $is_public +ynh_app_setting_set $app final_path $final_path + +#================================================= +# DOWNLOAD, CHECK AND UNPACK SOURCE +#================================================= +ynh_script_progression --message="Setting up source files..." --weight=1 + +mkdir -p "$final_path" +echo "Hello world!" > $final_path/index.html +chown -R www-data: "$final_path" + +#================================================= +# NGINX CONFIGURATION +#================================================= +ynh_script_progression --message="Configuring nginx web server..." --weight=1 + +# Create a dedicated nginx config +ynh_add_nginx_config + +#================================================= +# SETUP SSOWAT +#================================================= +ynh_script_progression --message="Configuring SSOwat..." --weight=1 + +# Make app public if necessary or protect it +if [ $is_public -eq 1 ] +then + # unprotected_uris allows SSO credentials to be passed anyway. + ynh_app_setting_set "$app" unprotected_uris "/" +fi + +#================================================= +# RELOAD NGINX +#================================================= +ynh_script_progression --message="Reloading nginx web server..." --weight=1 + +ynh_systemd_action --action=reload --service_name=nginx + +ynh_script_progression --message="Installation of $app completed" --last diff --git a/scripts/remove b/scripts/remove new file mode 100644 index 0000000..ea3d660 --- /dev/null +++ b/scripts/remove @@ -0,0 +1,36 @@ +#!/bin/bash + +#================================================= +# GENERIC STARTING +#================================================= +# IMPORT GENERIC HELPERS +#================================================= + +source /usr/share/yunohost/helpers + +#================================================= +# LOAD SETTINGS +#================================================= +ynh_script_progression --message="Loading installation settings..." --weight=1 + +app=$YNH_APP_INSTANCE_NAME +domain=$(ynh_app_setting_get "$app" domain) +final_path=$(ynh_app_setting_get "$app" final_path) + +#================================================= +# REMOVE THE MAIN DIR OF THE APP +#================================================= +ynh_script_progression --message="Removing app main directory..." --weight=1 + +# Remove sources +ynh_secure_remove --file="$final_path" + +#================================================= +# REMOVE THE NGINX CONFIGURATION +#================================================= +ynh_script_progression --message="Removing nginx web server configuration..." --weight=1 + +ynh_remove_nginx_config +ynh_systemd_action --action=reload --service_name=nginx + +ynh_script_progression --message="Removal of $app completed" --last