From 0483cad198403d8a4edb18abf75e0c6daa85612c Mon Sep 17 00:00:00 2001 From: yalh76 Date: Fri, 20 Aug 2021 19:25:28 +0200 Subject: [PATCH 1/5] Upgrade to 4.5.43 --- README.md | 2 +- conf/.env | 99 ++++++++++++++++++++++++++++++++++++++++++++------- conf/app.src | 6 ++-- manifest.json | 2 +- 4 files changed, 92 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index ea4341a..4c69eae 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in ## Overview Invoice Ninja is the #1 open-source platform to create & email invoices, track payments and expenses, and time billable tasks & projects for clients. -**Shipped version:** v4.5.19 +**Shipped version:** v4.5.43 ## Screenshots diff --git a/conf/.env b/conf/.env index 6e3f144..e251111 100644 --- a/conf/.env +++ b/conf/.env @@ -1,16 +1,15 @@ +# do not run the setup wizard +PRECONFIGURED_INSTALL=true + APP_ENV=production APP_DEBUG=false -APP_LOCALE=__LANGUAGE__ APP_URL=https://__DOMAIN____PATH__/index.php APP_KEY=__APP_KEY__ APP_CIPHER=AES-256-CBC - -# used to connect with the mobile app -API_SECRET=__API_SECRET__ - -REQUIRE_HTTPS=true +APP_LOCALE=__LANGUAGE__ DB_TYPE=mysql +#DB_STRICT=false DB_HOST=localhost DB_DATABASE=__DB_NAME__ DB_USERNAME=__DB_USER__ @@ -21,15 +20,91 @@ MAIL_PORT=25 MAIL_ENCRYPTION= MAIL_HOST=localhost MAIL_USERNAME= -MAIL_FROM_NAME="__MAIL_FROM_NAME__" MAIL_FROM_ADDRESS=__MAIL_FROM_ADDRESS__ +MAIL_FROM_NAME="__MAIL_FROM_NAME__" MAIL_PASSWORD= -PHANTOMJS_CLOUD_KEY=a-demo-key-with-low-quota-per-ip-address -PHANTOMJS_SECRET=__PHANTOMJS_KEY__ - MAILGUN_DOMAIN= MAILGUN_SECRET= -# do not run the setup wizard -PRECONFIGURED_INSTALL=true +#POSTMARK_API_TOKEN= + +PHANTOMJS_CLOUD_KEY='a-demo-key-with-low-quota-per-ip-address' +PHANTOMJS_SECRET=__PHANTOMJS_KEY__ + +LOG=single +REQUIRE_HTTPS=true +API_SECRET=__API_SECRET__ + +#TRUSTED_PROXIES= + +#SESSION_DRIVER= +#SESSION_DOMAIN= +#SESSION_ENCRYPT= +#SESSION_SECURE= + +#CACHE_DRIVER= +#CACHE_HOST= +#REDIS_HOST= +#CACHE_PORT1= +#CACHE_PORT2= + +#GOOGLE_CLIENT_ID= +#GOOGLE_CLIENT_SECRET= +#GOOGLE_OAUTH_REDIRECT=http://ninja.test/auth/google + +GOOGLE_MAPS_ENABLED=true +#GOOGLE_MAPS_API_KEY= + +# Create a cookie to stay logged in +#REMEMBER_ME_ENABLED=true + +# Immediately expire cookie on the browser closing +#SESSION_EXPIRE_ON_CLOSE=false + +# The app automatically logs the user out after this number of seconds +#AUTO_LOGOUT_SECONDS=28800 + +#S3_KEY= +#S3_SECRET= +#S3_REGION= +#S3_BUCKET= + +#RACKSPACE_USERNAME= +#RACKSPACE_KEY= +#RACKSPACE_CONTAINER= +#RACKSPACE_REGION= + +#RACKSPACE_TEMP_URL_SECRET= + +# If this is set to anything, the URL secret will be set the next +# time a file is downloaded through the client portal. +# Only set this temporarily, as it slows things down. +#RACKSPACE_TEMP_URL_SECRET_SET= + +#DOCUMENT_FILESYSTEM= + +#MAX_DOCUMENT_SIZE # KB +#MAX_EMAIL_DOCUMENTS_SIZE # Total KB +#MAX_ZIP_DOCUMENTS_SIZE # Total KB (uncompressed) +#DOCUMENT_PREVIEW_SIZE # Pixels + +#WEPAY_CLIENT_ID= +#WEPAY_CLIENT_SECRET= +#WEPAY_ENVIRONMENT=production # production or stage +#WEPAY_AUTO_UPDATE=true # Requires permission from WePay +#WEPAY_FEE_PAYER=payee +#WEPAY_APP_FEE_CC_MULTIPLIER=0 +#WEPAY_APP_FEE_ACH_MULTIPLIER=0 +#WEPAY_APP_FEE_FIXED=0 +#WEPAY_THEME='{"name":"Invoice Ninja","primary_color":"0b4d78","secondary_color":"0b4d78","background_color":"f8f8f8","button_color":"33b753"}' # See https://www.wepay.com/developer/reference/structures#theme + + +#BLUEVINE_PARTNER_UNIQUE_ID= +#BLUEVINE_PARTNER_TOKEN= + +#CLOUDFLARE_DNS_ENABLED=false +#CLOUDFLARE_API_KEY= +#CLOUDFLARE_EMAIL= +#CLOUDFLARE_TARGET_IP_ADDRESS= +#CLOUDFLARE_ZONE_IDS={} diff --git a/conf/app.src b/conf/app.src index 27e1a0b..12ca766 100644 --- a/conf/app.src +++ b/conf/app.src @@ -1,6 +1,6 @@ -SOURCE_URL=https://download.invoiceninja.com/ninja-v4.5.19.zip -SOURCE_SUM=5a3ec7ab747bb371e7788b215be290eb489b11dea2ba1e1bff7516e7c077364e +SOURCE_URL=https://download.invoiceninja.com/ninja-v4.5.43.zip +SOURCE_SUM=475562af870f6fed91a1d8edf9c2c159c0f404f6bf0d57ac9dfa93b80bade6b3 SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=zip SOURCE_IN_SUBDIR=true -SOURCE_FILENAME=invoiceninja-v4.5.19.zip +SOURCE_FILENAME=invoiceninja-v4.5.43.zip diff --git a/manifest.json b/manifest.json index e4fbcb0..934020c 100644 --- a/manifest.json +++ b/manifest.json @@ -5,7 +5,7 @@ "description": { "en": "Create and email invoices, track payments and expenses, and time tasks" }, - "version": "4.5.19~ynh1", + "version": "4.5.43~ynh1", "url": "https://invoiceninja.org", "license": "AAL", "maintainer": { From 577c152a1bb23e14aaf950093602b25051fb4133 Mon Sep 17 00:00:00 2001 From: yalh76 Date: Fri, 20 Aug 2021 19:36:37 +0200 Subject: [PATCH 2/5] Apply example_ynh --- doc/.gitkeep | 0 doc/DISCLAIMER.md | 9 +++++++++ doc/screenshots/.gitkeep | 0 doc/screenshots/screenshot.png | Bin 0 -> 63091 bytes manifest.json | 9 ++++++++- 5 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 doc/.gitkeep create mode 100644 doc/DISCLAIMER.md create mode 100644 doc/screenshots/.gitkeep create mode 100644 doc/screenshots/screenshot.png diff --git a/doc/.gitkeep b/doc/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/doc/DISCLAIMER.md b/doc/DISCLAIMER.md new file mode 100644 index 0000000..93cea42 --- /dev/null +++ b/doc/DISCLAIMER.md @@ -0,0 +1,9 @@ +:warning: You are invited to look at [InvoiceNinja 5](https://github.com/YunoHost-Apps/invoiceninja5_ynh) :warning: + +* Any known limitations, constrains or stuff not working, such as (but not limited to): + * There is no official LDAP support + * The first user gets created after installing Invoice Ninja + * Other users can be created from inside the application + +* Other infos that people should be aware of, such as: + * Configuration happens in the application itself. diff --git a/doc/screenshots/.gitkeep b/doc/screenshots/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/doc/screenshots/screenshot.png b/doc/screenshots/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..ddafd75199721dcfb90177af0cbbd6f567518a5f GIT binary patch literal 63091 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 J%Q~loCIF=BJ~aRU literal 0 HcmV?d00001 diff --git a/manifest.json b/manifest.json index 934020c..483eb38 100644 --- a/manifest.json +++ b/manifest.json @@ -7,6 +7,13 @@ }, "version": "4.5.43~ynh1", "url": "https://invoiceninja.org", + "upstream": { + "license": "AAL", + "website": "https://invoiceninja.org", + "demo": "https://app.invoiceninja.com/dashboard", + "admindoc": "https://docs.invoiceninja.com/index.html", + "code": "https://github.com/invoiceninja/invoiceninja" + }, "license": "AAL", "maintainer": { "name": "Sebastian Gumprich", @@ -14,7 +21,7 @@ "url": "https://github.com/YunoHost-Apps/invoiceninja_ynh/" }, "requirements": { - "yunohost": ">= 4.1.0" + "yunohost": ">= 4.1.3" }, "multi_instance": true, "services": [ From 718ec95c746d8e43ed6e21d7ae406b354370fea4 Mon Sep 17 00:00:00 2001 From: Yunohost-Bot <> Date: Fri, 20 Aug 2021 17:36:41 +0000 Subject: [PATCH 3/5] Auto-update README --- README.md | 78 +++++++++++++++++++++------------------------------- README_fr.md | 55 ++++++++++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+), 46 deletions(-) create mode 100644 README_fr.md diff --git a/README.md b/README.md index 4c69eae..619538f 100644 --- a/README.md +++ b/README.md @@ -1,67 +1,51 @@ -# Invoice Ninja 4 for YunoHost + -:warning: You are invited to look at [InvoiceNinja 5](https://github.com/YunoHost-Apps/invoiceninja5_ynh) :warning: +# InvoiceNinja for YunoHost [![Integration level](https://dash.yunohost.org/integration/invoiceninja.svg)](https://dash.yunohost.org/appci/app/invoiceninja) ![](https://ci-apps.yunohost.org/ci/badges/invoiceninja.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/invoiceninja.maintain.svg) -[![Install Invoice Ninja with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=invoiceninja) +[![Install InvoiceNinja with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=invoiceninja) -> *This package allows you to install Invoice Ninja quickly and simply on a YunoHost server. +*[Lire ce readme en français.](./README_fr.md)* + +> *This package allows you to install InvoiceNinja quickly and simply on a YunoHost server. If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/install) to learn how to install it.* ## Overview -Invoice Ninja is the #1 open-source platform to create & email invoices, track payments and expenses, and time billable tasks & projects for clients. -**Shipped version:** v4.5.43 +Create and email invoices, track payments and expenses, and time tasks + +**Shipped version:** 4.5.43~ynh1 + +**Demo:** https://app.invoiceninja.com/dashboard ## Screenshots -![](https://www.invoiceninja.com/wp-content/uploads/2015/11/Create-Invoices-in-Seconds.png) +![](./doc/screenshots/screenshot.png) -## Demo +## Disclaimers / important information -* [Official demo](https://app.invoiceninja.com/dashboard) +:warning: You are invited to look at [InvoiceNinja 5](https://github.com/YunoHost-Apps/invoiceninja5_ynh) :warning: -## Configuration +* Any known limitations, constrains or stuff not working, such as (but not limited to): + * There is no official LDAP support + * The first user gets created after installing Invoice Ninja + * Other users can be created from inside the application -Configuration happens in the application itself. +* Other infos that people should be aware of, such as: + * Configuration happens in the application itself. -## Documentation +## Documentation and resources - * Official documentation: https://docs.invoiceninja.com/index.html +* Official app website: https://invoiceninja.org +* Official admin documentation: https://docs.invoiceninja.com/index.html +* Upstream app code repository: https://github.com/invoiceninja/invoiceninja +* YunoHost documentation for this app: https://yunohost.org/app_invoiceninja +* Report a bug: https://github.com/YunoHost-Apps/invoiceninja_ynh/issues -## YunoHost specific features - -#### Multi-user support - -* There is no official LDAP support -* The first user gets created after installing Invoice Ninja -* Other users can be created from inside the application - -#### Supported architectures - -* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/invoiceninja%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/invoiceninja/) -* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/invoiceninja%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/invoiceninja/) - -## Limitations - -* Any known limitations. - -## Links - - * Report a bug: https://github.com/YunoHost-Apps/invoiceninja_ynh/issues - * App website: https://www.invoiceninja.org/ - * Upstream app repository: https://github.com/invoiceninja/invoiceninja - * YunoHost website: https://yunohost.org/ - -## TODOs - -* If possible, create initial user -* Test upgrade - ---- - -Developer info ----------------- +## Developer info Please send your pull request to the [testing branch](https://github.com/YunoHost-Apps/invoiceninja_ynh/tree/testing). @@ -71,3 +55,5 @@ sudo yunohost app install https://github.com/YunoHost-Apps/invoiceninja_ynh/tree or sudo yunohost app upgrade invoiceninja -u https://github.com/YunoHost-Apps/invoiceninja_ynh/tree/testing --debug ``` + +**More info regarding app packaging:** https://yunohost.org/packaging_apps \ No newline at end of file diff --git a/README_fr.md b/README_fr.md new file mode 100644 index 0000000..358efa9 --- /dev/null +++ b/README_fr.md @@ -0,0 +1,55 @@ +# InvoiceNinja pour YunoHost + +[![Niveau d'intégration](https://dash.yunohost.org/integration/invoiceninja.svg)](https://dash.yunohost.org/appci/app/invoiceninja) ![](https://ci-apps.yunohost.org/ci/badges/invoiceninja.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/invoiceninja.maintain.svg) +[![Installer InvoiceNinja avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=invoiceninja) + +*[Read this readme in english.](./README.md)* +*[Lire ce readme en français.](./README_fr.md)* + +> *Ce package vous permet d'installer InvoiceNinja rapidement et simplement sur un serveur YunoHost. +Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour savoir comment l'installer et en profiter.* + +## Vue d'ensemble + + + +**Version incluse :** 4.5.43~ynh1 + +**Démo :** https://app.invoiceninja.com/dashboard + +## Captures d'écran + +![](./doc/screenshots/screenshot.png) + +## Avertissements / informations importantes + +:warning: You are invited to look at [InvoiceNinja 5](https://github.com/YunoHost-Apps/invoiceninja5_ynh) :warning: + +* Any known limitations, constrains or stuff not working, such as (but not limited to): + * There is no official LDAP support + * The first user gets created after installing Invoice Ninja + * Other users can be created from inside the application + +* Other infos that people should be aware of, such as: + * Configuration happens in the application itself. + +## Documentations et ressources + +* Site officiel de l'app : https://invoiceninja.org +* Documentation officielle de l'admin : https://docs.invoiceninja.com/index.html +* Dépôt de code officiel de l'app : https://github.com/invoiceninja/invoiceninja +* Documentation YunoHost pour cette app : https://yunohost.org/app_invoiceninja +* Signaler un bug : https://github.com/YunoHost-Apps/invoiceninja_ynh/issues + +## Informations pour les développeurs + +Merci de faire vos pull request sur la [branche testing](https://github.com/YunoHost-Apps/invoiceninja_ynh/tree/testing). + +Pour essayer la branche testing, procédez comme suit. +``` +sudo yunohost app install https://github.com/YunoHost-Apps/invoiceninja_ynh/tree/testing --debug +ou +sudo yunohost app upgrade invoiceninja -u https://github.com/YunoHost-Apps/invoiceninja_ynh/tree/testing --debug +``` + +**Plus d'infos sur le packaging d'applications :** https://yunohost.org/packaging_apps \ No newline at end of file From 77521faae6daf3fca58dade75bc5b65b88b303b3 Mon Sep 17 00:00:00 2001 From: yalh76 Date: Fri, 20 Aug 2021 19:40:50 +0200 Subject: [PATCH 4/5] Apply example_ynh --- scripts/backup | 2 +- scripts/remove | 4 ++-- scripts/restore | 8 ++++---- scripts/upgrade | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/scripts/backup b/scripts/backup index c4314ac..89da2d0 100755 --- a/scripts/backup +++ b/scripts/backup @@ -58,7 +58,7 @@ ynh_backup --src_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" #================================================= # SPECIFIC BACKUP #================================================= -# BACKUP A CRON FILE +# BACKUP VARIOUS FILES #================================================= ynh_backup --src_path="/etc/cron.d/$app" diff --git a/scripts/remove b/scripts/remove index 931c0da..de8e21c 100755 --- a/scripts/remove +++ b/scripts/remove @@ -59,9 +59,9 @@ ynh_remove_fpm_config #================================================= # SPECIFIC REMOVE #================================================= -# REMOVE THE CRON FILE +# REMOVE VARIOUS FILES #================================================= -ynh_script_progression --message="Removing the cron file..." +ynh_script_progression --message="Removing various files..." # Remove a cron file ynh_secure_remove --file="/etc/cron.d/$app" diff --git a/scripts/restore b/scripts/restore index 7508b32..7f41b5c 100755 --- a/scripts/restore +++ b/scripts/restore @@ -20,7 +20,7 @@ ynh_abort_if_errors #================================================= # LOAD SETTINGS #================================================= -ynh_script_progression --message="Loading settings..." +ynh_script_progression --message="Loading installation settings..." app=$YNH_APP_INSTANCE_NAME @@ -48,7 +48,7 @@ test ! -d $final_path \ #================================================= # RESTORE THE NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Restoring the NGINX configuration..." +ynh_script_progression --message="Restoring the NGINX web server configuration..." ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" @@ -88,9 +88,9 @@ 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 +# RESTORE VARIOUS FILES #================================================= -ynh_script_progression --message="Restoring the cron file..." +ynh_script_progression --message="Restoring various files..." ynh_restore_file --origin_path="/etc/cron.d/$app" diff --git a/scripts/upgrade b/scripts/upgrade index eefce3f..70a2965 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -45,7 +45,7 @@ ynh_script_progression --message="Backing up the app before upgrading (may take # Backup the current version of the app ynh_backup_before_upgrade ynh_clean_setup () { - # restore it if the upgrade fails + # Restore it if the upgrade fails ynh_restore_upgradebackup } # Exit if an error occurs during the execution of the script @@ -82,7 +82,7 @@ fi ynh_script_progression --message="Making sure dedicated system user exists..." # Create a dedicated user (if not existing) -ynh_system_user_create --username=$app +ynh_system_user_create --username=$app --home_dir=$final_path #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE From dc4a673b3781bcf29a501c3c5d07fabb7bcdce50 Mon Sep 17 00:00:00 2001 From: Sebastian Gumprich Date: Sun, 22 Aug 2021 19:23:23 +0200 Subject: [PATCH 5/5] make sure installation works before this fix, the installation could not complete because invoiceninja checks if an env-file exists. if it does, it complains and setup wont finish. this fix comments the code for this check. --- scripts/install | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/scripts/install b/scripts/install index ff8a5a3..f25c0be 100755 --- a/scripts/install +++ b/scripts/install @@ -123,7 +123,7 @@ ynh_script_progression --message="Adding a configuration file..." ynh_add_config --template="../conf/.env" --destination="$final_path/.env" -chmod 400 "$final_path/.env" +chmod 600 "$final_path/.env" chown $app:$app "$final_path/.env" #================================================= @@ -135,6 +135,11 @@ pushd "$final_path" # Run the database migrations and initially fill the db php$phpversion artisan migrate --force php$phpversion artisan db:seed --force + + # thanks to cloudron for this! + # This comments the check at https://github.com/invoiceninja/invoiceninja/blob/cadd1a3b44aed3dc5bd28d623efd4bb51c6d895a/app/Http/Controllers/AppController.php#L47 + # We pre-setup various parts already thus the .env file has to exist + sed -e "s/^.*app is already configured.*/ /" -i app/Http/Controllers/AppController.php popd #=================================================