From 606645263bcbfae7bd289b52e4669e855258dbf6 Mon Sep 17 00:00:00 2001 From: yalh76 Date: Sun, 23 Jan 2022 20:51:32 +0100 Subject: [PATCH 1/7] Apply example_ynh --- check_process | 45 ++-- conf/.env.mysql | 2 +- conf/.env.sqlite | 2 +- conf/app.src | 1 + conf/nginx.conf | 5 - conf/php-fpm.conf | 430 ++++++++++++++++++++++++++++++++ doc/.gitkeep | 0 doc/DESCRIPTION.md | 3 + doc/DISCLAIMER.md | 13 + doc/screenshots/.gitkeep | 0 doc/screenshots/screenshot1.png | Bin 0 -> 167205 bytes manifest.json | 33 +-- scripts/backup | 7 +- scripts/install | 152 +++++------ scripts/remove | 29 +-- scripts/restore | 52 ++-- scripts/upgrade | 194 +++++++------- scripts/ynh_composer__3 | 61 ----- 18 files changed, 702 insertions(+), 327 deletions(-) create mode 100644 conf/php-fpm.conf create mode 100644 doc/.gitkeep create mode 100644 doc/DESCRIPTION.md create mode 100644 doc/DISCLAIMER.md create mode 100644 doc/screenshots/.gitkeep create mode 100644 doc/screenshots/screenshot1.png delete mode 100644 scripts/ynh_composer__3 diff --git a/check_process b/check_process index 765d710..dd12928 100644 --- a/check_process +++ b/check_process @@ -1,15 +1,10 @@ -# See here for more informations -# https://github.com/YunoHost/package_check#syntax-check_process-file - -# Move this file from check_process.default to check_process when you have filled it. - -;; Test complet +;; Test complet mysql ; Manifest - domain="domain.tld" (DOMAIN) - admin="john" (USER) + domain="domain.tld" + admin="john" + is_public=1 database="mysql" registration=1 - is_public=1 (PUBLIC|public=1|private=0) ; Checks pkg_linter=1 setup_sub_dir=0 @@ -20,18 +15,40 @@ upgrade=1 # 1.9~ynh1 upgrade=1 from_commit=e5ce0d869526c6c856c1e2398b4b2ce0ba8e7542 + # 1.11.1~ynh1 + upgrade=1 from_commit=f26285511a167a1ed591a7fa96ae786ea89efb1e + backup_restore=1 + multi_instance=1 + port_already_use=0 + change_url=0 +;; Test complet sqlite + ; Manifest + domain="domain.tld" + admin="john" + is_public=1 + database="sqlite" + registration=1 + ; Checks + pkg_linter=1 + setup_sub_dir=0 + setup_root=1 + setup_nourl=0 + setup_private=1 + setup_public=1 + upgrade=1 + # 1.9~ynh1 + upgrade=1 from_commit=e5ce0d869526c6c856c1e2398b4b2ce0ba8e7542 + # 1.11.1~ynh1 + upgrade=1 from_commit=f26285511a167a1ed591a7fa96ae786ea89efb1e backup_restore=1 multi_instance=1 - # This test is no longer necessary since the version 2.7 (PR: https://github.com/YunoHost/yunohost/pull/304), you can still do it if your app could be installed with this version. - # incorrect_path=1 port_already_use=0 change_url=0 -;;; Levels - # If the level 5 (Package linter) is forced to 1. Please add justifications here. - Level 5=auto ;;; Options Email=anmol@datamol.org Notification=change ;;; Upgrade options ; commit=e5ce0d869526c6c856c1e2398b4b2ce0ba8e7542 name=1.9~ynh1 + ; commit=f26285511a167a1ed591a7fa96ae786ea89efb1e + name=1.11.1~ynh1 diff --git a/conf/.env.mysql b/conf/.env.mysql index c49f744..3b934cc 100644 --- a/conf/.env.mysql +++ b/conf/.env.mysql @@ -13,7 +13,7 @@ APP_SECRET=__RANDOM_KEY__ # Format described at http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url # For an SQLite database, use: "sqlite:///%kernel.project_dir%/var/data/kimai.sqlite" # Configure your db driver and server_version in config/packages/doctrine.yaml -DATABASE_URL=mysql://__DB_USER__:__DB_PASSWORD__@127.0.0.1:3306/__DB_NAME__ +DATABASE_URL=mysql://__DB_USER__:__DB_PWD__@127.0.0.1:3306/__DB_NAME__ # DATABASE_URL=sqlite:///%kernel.project_dir%/var/data/kimai.sqlite ###< doctrine/doctrine-bundle ### diff --git a/conf/.env.sqlite b/conf/.env.sqlite index f06eba7..c584325 100644 --- a/conf/.env.sqlite +++ b/conf/.env.sqlite @@ -13,7 +13,7 @@ APP_SECRET=__RANDOM_KEY__ # Format described at http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url # For an SQLite database, use: "sqlite:///%kernel.project_dir%/var/data/kimai.sqlite" # Configure your db driver and server_version in config/packages/doctrine.yaml -# DATABASE_URL=mysql://__DB_USER__:__DB_PASSWORD__@127.0.0.1:3306/__DB_NAME__ +# DATABASE_URL=mysql://db_user:db_pwd@127.0.0.1:3306/db_name DATABASE_URL=sqlite:///%kernel.project_dir%/var/data/kimai.sqlite ###< doctrine/doctrine-bundle ### diff --git a/conf/app.src b/conf/app.src index 05d59b1..bfa6cf4 100644 --- a/conf/app.src +++ b/conf/app.src @@ -4,3 +4,4 @@ SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=tar.gz SOURCE_IN_SUBDIR=true SOURCE_FILENAME= +SOURCE_EXTRACT=true diff --git a/conf/nginx.conf b/conf/nginx.conf index 314a98c..d219fe5 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -6,11 +6,6 @@ location __PATH__/ { # Path to source # alias __FINALPATH__/public/ ; - # Force usage of https - if ($scheme = http) { - rewrite ^ https://$server_name$request_uri? permanent; - } - index index.php; # Common parameter to increase upload size limit in conjunction with dedicated php-fpm file diff --git a/conf/php-fpm.conf b/conf/php-fpm.conf new file mode 100644 index 0000000..ab1a471 --- /dev/null +++ b/conf/php-fpm.conf @@ -0,0 +1,430 @@ +; Start a new pool named 'www'. +; the variable $pool can be used in any directive and will be replaced by the +; pool name ('www' here) +[__NAMETOCHANGE__] + +; Per pool prefix +; It only applies on the following directives: +; - 'access.log' +; - 'slowlog' +; - 'listen' (unixsocket) +; - 'chroot' +; - 'chdir' +; - 'php_values' +; - 'php_admin_values' +; When not set, the global prefix (or /usr) applies instead. +; Note: This directive can also be relative to the global prefix. +; Default Value: none +;prefix = /path/to/pools/$pool + +; Unix user/group of processes +; Note: The user is mandatory. If the group is not set, the default user's group +; will be used. +user = __USER__ +group = __USER__ + +; The address on which to accept FastCGI requests. +; Valid syntaxes are: +; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on +; a specific port; +; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on +; a specific port; +; 'port' - to listen on a TCP socket to all addresses +; (IPv6 and IPv4-mapped) on a specific port; +; '/path/to/unix/socket' - to listen on a unix socket. +; Note: This value is mandatory. +listen = /var/run/php/php__PHPVERSION__-fpm-__NAMETOCHANGE__.sock + +; Set listen(2) backlog. +; Default Value: 511 (-1 on FreeBSD and OpenBSD) +;listen.backlog = 511 + +; Set permissions for unix socket, if one is used. In Linux, read/write +; permissions must be set in order to allow connections from a web server. Many +; BSD-derived systems allow connections regardless of permissions. +; Default Values: user and group are set as the running user +; mode is set to 0660 +listen.owner = www-data +listen.group = www-data +;listen.mode = 0660 +; When POSIX Access Control Lists are supported you can set them using +; these options, value is a comma separated list of user/group names. +; When set, listen.owner and listen.group are ignored +;listen.acl_users = +;listen.acl_groups = + +; List of addresses (IPv4/IPv6) of FastCGI clients which are allowed to connect. +; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original +; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address +; must be separated by a comma. If this value is left blank, connections will be +; accepted from any ip address. +; Default Value: any +;listen.allowed_clients = 127.0.0.1 + +; Specify the nice(2) priority to apply to the pool processes (only if set) +; The value can vary from -19 (highest priority) to 20 (lower priority) +; Note: - It will only work if the FPM master process is launched as root +; - The pool processes will inherit the master process priority +; unless it specified otherwise +; Default Value: no set +; process.priority = -19 + +; Set the process dumpable flag (PR_SET_DUMPABLE prctl) even if the process user +; or group is differrent than the master process user. It allows to create process +; core dump and ptrace the process for the pool user. +; Default Value: no +; process.dumpable = yes + +; Choose how the process manager will control the number of child processes. +; Possible Values: +; static - a fixed number (pm.max_children) of child processes; +; dynamic - the number of child processes are set dynamically based on the +; following directives. With this process management, there will be +; always at least 1 children. +; pm.max_children - the maximum number of children that can +; be alive at the same time. +; pm.start_servers - the number of children created on startup. +; pm.min_spare_servers - the minimum number of children in 'idle' +; state (waiting to process). If the number +; of 'idle' processes is less than this +; number then some children will be created. +; pm.max_spare_servers - the maximum number of children in 'idle' +; state (waiting to process). If the number +; of 'idle' processes is greater than this +; number then some children will be killed. +; ondemand - no children are created at startup. Children will be forked when +; new requests will connect. The following parameter are used: +; pm.max_children - the maximum number of children that +; can be alive at the same time. +; pm.process_idle_timeout - The number of seconds after which +; an idle process will be killed. +; Note: This value is mandatory. +pm = dynamic + +; The number of child processes to be created when pm is set to 'static' and the +; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'. +; This value sets the limit on the number of simultaneous requests that will be +; served. Equivalent to the ApacheMaxClients directive with mpm_prefork. +; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP +; CGI. The below defaults are based on a server without much resources. Don't +; forget to tweak pm.* to fit your needs. +; Note: Used when pm is set to 'static', 'dynamic' or 'ondemand' +; Note: This value is mandatory. +pm.max_children = 5 + +; The number of child processes created on startup. +; Note: Used only when pm is set to 'dynamic' +; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2 +pm.start_servers = 2 + +; The desired minimum number of idle server processes. +; Note: Used only when pm is set to 'dynamic' +; Note: Mandatory when pm is set to 'dynamic' +pm.min_spare_servers = 1 + +; The desired maximum number of idle server processes. +; Note: Used only when pm is set to 'dynamic' +; Note: Mandatory when pm is set to 'dynamic' +pm.max_spare_servers = 3 + +; The number of seconds after which an idle process will be killed. +; Note: Used only when pm is set to 'ondemand' +; Default Value: 10s +;pm.process_idle_timeout = 10s; + +; The number of requests each child process should execute before respawning. +; This can be useful to work around memory leaks in 3rd party libraries. For +; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS. +; Default Value: 0 +;pm.max_requests = 500 + +; The URI to view the FPM status page. If this value is not set, no URI will be +; recognized as a status page. It shows the following informations: +; pool - the name of the pool; +; process manager - static, dynamic or ondemand; +; start time - the date and time FPM has started; +; start since - number of seconds since FPM has started; +; accepted conn - the number of request accepted by the pool; +; listen queue - the number of request in the queue of pending +; connections (see backlog in listen(2)); +; max listen queue - the maximum number of requests in the queue +; of pending connections since FPM has started; +; listen queue len - the size of the socket queue of pending connections; +; idle processes - the number of idle processes; +; active processes - the number of active processes; +; total processes - the number of idle + active processes; +; max active processes - the maximum number of active processes since FPM +; has started; +; max children reached - number of times, the process limit has been reached, +; when pm tries to start more children (works only for +; pm 'dynamic' and 'ondemand'); +; Value are updated in real time. +; Example output: +; pool: www +; process manager: static +; start time: 01/Jul/2011:17:53:49 +0200 +; start since: 62636 +; accepted conn: 190460 +; listen queue: 0 +; max listen queue: 1 +; listen queue len: 42 +; idle processes: 4 +; active processes: 11 +; total processes: 15 +; max active processes: 12 +; max children reached: 0 +; +; By default the status page output is formatted as text/plain. Passing either +; 'html', 'xml' or 'json' in the query string will return the corresponding +; output syntax. Example: +; http://www.foo.bar/status +; http://www.foo.bar/status?json +; http://www.foo.bar/status?html +; http://www.foo.bar/status?xml +; +; By default the status page only outputs short status. Passing 'full' in the +; query string will also return status for each pool process. +; Example: +; http://www.foo.bar/status?full +; http://www.foo.bar/status?json&full +; http://www.foo.bar/status?html&full +; http://www.foo.bar/status?xml&full +; The Full status returns for each process: +; pid - the PID of the process; +; state - the state of the process (Idle, Running, ...); +; start time - the date and time the process has started; +; start since - the number of seconds since the process has started; +; requests - the number of requests the process has served; +; request duration - the duration in µs of the requests; +; request method - the request method (GET, POST, ...); +; request URI - the request URI with the query string; +; content length - the content length of the request (only with POST); +; user - the user (PHP_AUTH_USER) (or '-' if not set); +; script - the main script called (or '-' if not set); +; last request cpu - the %cpu the last request consumed +; it's always 0 if the process is not in Idle state +; because CPU calculation is done when the request +; processing has terminated; +; last request memory - the max amount of memory the last request consumed +; it's always 0 if the process is not in Idle state +; because memory calculation is done when the request +; processing has terminated; +; If the process is in Idle state, then informations are related to the +; last request the process has served. Otherwise informations are related to +; the current request being served. +; Example output: +; ************************ +; pid: 31330 +; state: Running +; start time: 01/Jul/2011:17:53:49 +0200 +; start since: 63087 +; requests: 12808 +; request duration: 1250261 +; request method: GET +; request URI: /test_mem.php?N=10000 +; content length: 0 +; user: - +; script: /home/fat/web/docs/php/test_mem.php +; last request cpu: 0.00 +; last request memory: 0 +; +; Note: There is a real-time FPM status monitoring sample web page available +; It's available in: /usr/share/php/7.0/fpm/status.html +; +; Note: The value must start with a leading slash (/). The value can be +; anything, but it may not be a good idea to use the .php extension or it +; may conflict with a real PHP file. +; Default Value: not set +;pm.status_path = /status + +; The ping URI to call the monitoring page of FPM. If this value is not set, no +; URI will be recognized as a ping page. This could be used to test from outside +; that FPM is alive and responding, or to +; - create a graph of FPM availability (rrd or such); +; - remove a server from a group if it is not responding (load balancing); +; - trigger alerts for the operating team (24/7). +; Note: The value must start with a leading slash (/). The value can be +; anything, but it may not be a good idea to use the .php extension or it +; may conflict with a real PHP file. +; Default Value: not set +;ping.path = /ping + +; This directive may be used to customize the response of a ping request. The +; response is formatted as text/plain with a 200 response code. +; Default Value: pong +;ping.response = pong + +; The access log file +; Default: not set +;access.log = log/$pool.access.log + +; The access log format. +; The following syntax is allowed +; %%: the '%' character +; %C: %CPU used by the request +; it can accept the following format: +; - %{user}C for user CPU only +; - %{system}C for system CPU only +; - %{total}C for user + system CPU (default) +; %d: time taken to serve the request +; it can accept the following format: +; - %{seconds}d (default) +; - %{miliseconds}d +; - %{mili}d +; - %{microseconds}d +; - %{micro}d +; %e: an environment variable (same as $_ENV or $_SERVER) +; it must be associated with embraces to specify the name of the env +; variable. Some exemples: +; - server specifics like: %{REQUEST_METHOD}e or %{SERVER_PROTOCOL}e +; - HTTP headers like: %{HTTP_HOST}e or %{HTTP_USER_AGENT}e +; %f: script filename +; %l: content-length of the request (for POST request only) +; %m: request method +; %M: peak of memory allocated by PHP +; it can accept the following format: +; - %{bytes}M (default) +; - %{kilobytes}M +; - %{kilo}M +; - %{megabytes}M +; - %{mega}M +; %n: pool name +; %o: output header +; it must be associated with embraces to specify the name of the header: +; - %{Content-Type}o +; - %{X-Powered-By}o +; - %{Transfert-Encoding}o +; - .... +; %p: PID of the child that serviced the request +; %P: PID of the parent of the child that serviced the request +; %q: the query string +; %Q: the '?' character if query string exists +; %r: the request URI (without the query string, see %q and %Q) +; %R: remote IP address +; %s: status (response code) +; %t: server time the request was received +; it can accept a strftime(3) format: +; %d/%b/%Y:%H:%M:%S %z (default) +; The strftime(3) format must be encapsuled in a %{}t tag +; e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t +; %T: time the log has been written (the request has finished) +; it can accept a strftime(3) format: +; %d/%b/%Y:%H:%M:%S %z (default) +; The strftime(3) format must be encapsuled in a %{}t tag +; e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t +; %u: remote user +; +; Default: "%R - %u %t \"%m %r\" %s" +;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%" + +; The log file for slow requests +; Default Value: not set +; Note: slowlog is mandatory if request_slowlog_timeout is set +;slowlog = log/$pool.log.slow + +; The timeout for serving a single request after which a PHP backtrace will be +; dumped to the 'slowlog' file. A value of '0s' means 'off'. +; Available units: s(econds)(default), m(inutes), h(ours), or d(ays) +; Default Value: 0 +;request_slowlog_timeout = 0 + +; The timeout for serving a single request after which the worker process will +; be killed. This option should be used when the 'max_execution_time' ini option +; does not stop script execution for some reason. A value of '0' means 'off'. +; Available units: s(econds)(default), m(inutes), h(ours), or d(ays) +; Default Value: 0 +request_terminate_timeout = 1d + +; Set open file descriptor rlimit. +; Default Value: system defined value +;rlimit_files = 1024 + +; Set max core size rlimit. +; Possible Values: 'unlimited' or an integer greater or equal to 0 +; Default Value: system defined value +;rlimit_core = 0 + +; Chroot to this directory at the start. This value must be defined as an +; absolute path. When this value is not set, chroot is not used. +; Note: you can prefix with '$prefix' to chroot to the pool prefix or one +; of its subdirectories. If the pool prefix is not set, the global prefix +; will be used instead. +; Note: chrooting is a great security feature and should be used whenever +; possible. However, all PHP paths will be relative to the chroot +; (error_log, sessions.save_path, ...). +; Default Value: not set +;chroot = + +; Chdir to this directory at the start. +; Note: relative path can be used. +; Default Value: current directory or / when chroot +chdir = __FINALPATH__ + +; Redirect worker stdout and stderr into main error log. If not set, stdout and +; stderr will be redirected to /dev/null according to FastCGI specs. +; Note: on highloaded environement, this can cause some delay in the page +; process time (several ms). +; Default Value: no +;catch_workers_output = yes + +; Clear environment in FPM workers +; Prevents arbitrary environment variables from reaching FPM worker processes +; by clearing the environment in workers before env vars specified in this +; pool configuration are added. +; Setting to "no" will make all environment variables available to PHP code +; via getenv(), $_ENV and $_SERVER. +; Default Value: yes +;clear_env = no + +; Limits the extensions of the main script FPM will allow to parse. This can +; prevent configuration mistakes on the web server side. You should only limit +; FPM to .php extensions to prevent malicious users to use other extensions to +; execute php code. +; Note: set an empty value to allow all extensions. +; Default Value: .php +;security.limit_extensions = .php .php3 .php4 .php5 .php7 + +; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from +; the current environment. +; Default Value: clean env +;env[HOSTNAME] = $HOSTNAME +;env[PATH] = /usr/local/bin:/usr/bin:/bin +;env[TMP] = /tmp +;env[TMPDIR] = /tmp +;env[TEMP] = /tmp + +; Additional php.ini defines, specific to this pool of workers. These settings +; overwrite the values previously defined in the php.ini. The directives are the +; same as the PHP SAPI: +; php_value/php_flag - you can set classic ini defines which can +; be overwritten from PHP call 'ini_set'. +; php_admin_value/php_admin_flag - these directives won't be overwritten by +; PHP call 'ini_set' +; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no. + +; Defining 'extension' will load the corresponding shared extension from +; extension_dir. Defining 'disable_functions' or 'disable_classes' will not +; overwrite previously defined php.ini values, but will append the new value +; instead. + +; Note: path INI options can be relative and will be expanded with the prefix +; (pool, global or /usr) + +; Default Value: nothing is defined by default except the values in php.ini and +; specified at startup with the -d argument +;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com +;php_flag[display_errors] = off +;php_admin_value[error_log] = /var/log/fpm-php.www.log +;php_admin_flag[log_errors] = on +;php_admin_value[memory_limit] = 32M + +; Common values to change to increase file upload limit +; php_admin_value[upload_max_filesize] = 50M +; php_admin_value[post_max_size] = 50M +; php_admin_flag[mail.add_x_header] = Off + +; Other common parameters +; php_admin_value[max_execution_time] = 600 +; php_admin_value[max_input_time] = 300 +; php_admin_value[memory_limit] = 256M +; php_admin_flag[short_open_tag] = On diff --git a/doc/.gitkeep b/doc/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/doc/DESCRIPTION.md b/doc/DESCRIPTION.md new file mode 100644 index 0000000..a474b6b --- /dev/null +++ b/doc/DESCRIPTION.md @@ -0,0 +1,3 @@ +This is the reloaded version of the open source timetracker Kimai. Right now its in an early development phase, its usable but some advanced features from Kimai v1 are missing by now. + +Kimai v2 has nothing in common with its predecessor Kimai v1 besides the basic ideas of time-tracking and the current development team. It is based on a lot of great frameworks. Special thanks to Symfony v4, Doctrine, AdminThemeBundle (based on AdminLTE). diff --git a/doc/DISCLAIMER.md b/doc/DISCLAIMER.md new file mode 100644 index 0000000..1f34d02 --- /dev/null +++ b/doc/DISCLAIMER.md @@ -0,0 +1,13 @@ +* Require dedicated domain like **kimai.domain.tld**. +* This app is multi-instance (you can have more then one Kimai instance running on a YunoHost server) + +#### Multi-user support + +LDAP is supported +HTTP auth is not supported +Defaul Kimai2 roles are: +* ROLE_USER +* ROLE_TEAMLEAD => Kimai2 (Teamlead) YunoHost permission +* ROLE_ADMIN => Kimai2 (Admin) YunoHost permission +* ROLE_SUPER_ADMIN => Kimai2 (Super_Admin) YunoHost permission +Those roles are directly managed using YunoHost permission system. User choosen during installation is granted the ROLE_SUPER_ADMIN diff --git a/doc/screenshots/.gitkeep b/doc/screenshots/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/doc/screenshots/screenshot1.png b/doc/screenshots/screenshot1.png new file mode 100644 index 0000000000000000000000000000000000000000..bfb5674c2242d79ca3f37d3e4048db54eddf136a GIT binary patch literal 167205 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 z zHh1VS=j2P&Le7!52V!D=#_^)u_^Bc9e>28do|}KT`8-2D84f;k*M9uU8R)@Zz|A3G zqT`pXJ6IW!7e6#)Q@1#hS~-D-19Uw{?_P8g5m~pkx$KX(a*vFPoN+{?-Yc2Un)cw4 zZ7>hcuxU-6dZl{aUnkg7MFBnTD{fQe6=QM{nqG|Z;m>sapTnXO@aKgb#)f@c;@WmEAj=O&>R|=@>Nn&4dl+ zBqDX=2-Qc=Ywh3)nhzkFWk;D*2RuohHm8u|uu9>Pt7_ zfGb7>iWlF*fK+>At*=em6 zunTcM^i&|`5HaA@*dp97NrFlZ#C^O)JREn;v{+6LxLrh_Z}Hr= z-qy6^ti?9>;oY`D_>5OrL6i%*7{ZCnq(y8Tn83*tY+er;FzW-QwX@AMrzrThx3yki zYx#KHM)8k6<6RS?LvI8-8jjHhPENX1Hxb|_)_0wk@5q1a=RKTGi>~<|9kmktRQTOE z%UM4H{@{Bxo5E0EMTRcOb2Zu_`W|yl6f&ddO?6EU_*MSlVpjc19f`YKAyO6;r|LP+ZHm?du)bp$$$z{y4?gdF%*`I_8Z#qbTg|V?QL#Jw*VU0MX z>HNdGN9S|h{D(UPTqq;FAkwf>L(1hpg(Jh#HIx9_;AnS${b}t$o-xuX))H!yz-q&G ze)tYiAi4-W-5vpQ`WEc`1RRcgkjhE8qZ^q$197Q1{kwQqF+RBu)nxPJ76HGI8L zL+fWKd`^(!#677@+h$nBqc7fk)Z=FxBu%+#z*K}+_0SA!hRDQcJJ{KaS9hxHf1W{& zOTYQl0Mo*>W6o9>YdL;<*~GyfzDgflbN%>3Ub-vY;4BMYw!;Ad<=u##+?i;G2L3RA znHVW|GH{G}JDmeJ^4>BodG3Yz(|{RM)e4wUquj?}e!|Sv;p%sruX8wJNu0nVZ!|#m zB52s4TNKjKrASv_iwolEX?z6VOY@0U%0^%)c@hL$RPk=1B5lw|{NW(y3QlR0S3XHj zgS@YfFjV)iv-*n|(SFtq`%&Cv5|BxGU(#ld*5}yM9 EFV$A%9{>OV literal 0 HcmV?d00001 diff --git a/manifest.json b/manifest.json index b9f5043..6411761 100644 --- a/manifest.json +++ b/manifest.json @@ -10,6 +10,13 @@ }, "version": "1.11.1~ynh1", "url": "https://www.kimai.org", + "upstream": { + "license": "MIT", + "website": "https://www.kimai.org", + "demo": "https://www.kimai.org/demo/", + "admindoc": "https://www.kimai.org/documentation/", + "code": "https://github.com/kevinpapst/kimai2" + }, "license": "MIT", "maintainer": { "name": "Anmol Sharma", @@ -17,37 +24,23 @@ "url": "datamol.org" }, "requirements": { - "yunohost": ">= 3.8" + "yunohost": ">= 4.3.0" }, "multi_instance": true, "services": [ "nginx", - "php7.0-fpm", + "php7.3-fpm", "mysql" ], "arguments": { - "install" : [ + "install": [ { "name": "domain", - "type": "domain", - "ask": { - "en": "Choose a domain name for Kimai2", - "fr": "Choisissez un nom de domaine pour Kimai2", - "de": "Wählen Sie einen Domainnamen für Kimai2", - "cs": "Zvolte doménu pro Kimai2" - }, - "example": "kimai2.example.com" + "type": "domain" }, { "name": "admin", - "type": "user", - "ask": { - "en": "Choose an admin user (should be a YunoHost registered user).", - "fr": "Choisissez l’administrateur (should be a YunoHost registered user).", - "de": "Wählen Sie einen Admin Benutzer (sollte ein registrierter YunoHost Benutzer sein).", - "cs": "Zvolte administrátora (musí to být registrovaný uživatel YunoHostu)." - }, - "example": "johndoe" + "type": "user" }, { "name": "is_public", @@ -72,7 +65,7 @@ "choices": ["mysql","sqlite"], "default": "mysql" }, - { + { "name": "registration", "type": "boolean", "ask": { diff --git a/scripts/backup b/scripts/backup index bc8674a..c6aa4b6 100755 --- a/scripts/backup +++ b/scripts/backup @@ -6,7 +6,7 @@ # IMPORT GENERIC HELPERS #================================================= -#Keep this path for calling _common.sh inside the execution's context of backup and restore scripts +# Keep this path for calling _common.sh inside the execution's context of backup and restore scripts source ../settings/scripts/_common.sh source /usr/share/yunohost/helpers @@ -29,6 +29,8 @@ app=$YNH_APP_INSTANCE_NAME final_path=$(ynh_app_setting_get --app=$app --key=final_path) domain=$(ynh_app_setting_get --app=$app --key=domain) +db_name=$(ynh_app_setting_get --app=$app --key=db_name) +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) database=$(ynh_app_setting_get --app=$app --key=database) #================================================= @@ -52,7 +54,7 @@ ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" # BACKUP THE PHP-FPM CONFIGURATION #================================================= -ynh_backup --src_path="/etc/php/${YNH_PHP_VERSION}/fpm/pool.d/$app.conf" +ynh_backup --src_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" #================================================= # BACKUP THE MYSQL DATABASE @@ -60,7 +62,6 @@ ynh_backup --src_path="/etc/php/${YNH_PHP_VERSION}/fpm/pool.d/$app.conf" if [ "$database" = "mysql" ]; then ynh_print_info --message="Backing up the MySQL database..." - db_name=$(ynh_app_setting_get --app=$app --key=db_name) ynh_mysql_dump_db --database="$db_name" > db.sql fi diff --git a/scripts/install b/scripts/install index fa80023..c210d52 100755 --- a/scripts/install +++ b/scripts/install @@ -7,7 +7,6 @@ #================================================= source _common.sh -source ynh_composer__3 source /usr/share/yunohost/helpers #================================================= @@ -53,7 +52,6 @@ ynh_script_progression --message="Storing installation settings..." ynh_app_setting_set --app=$app --key=domain --value=$domain ynh_app_setting_set --app=$app --key=path --value=$path_url ynh_app_setting_set --app=$app --key=admin --value=$admin -ynh_app_setting_set --app=$app --key=is_public --value=$is_public ynh_app_setting_set --app=$app --key=registration --value=$registration ynh_app_setting_set --app=$app --key=database --value=$database ynh_app_setting_set --app=$app --key=random_key --value=$random_key @@ -67,6 +65,26 @@ ynh_script_progression --message="Installing dependencies..." ynh_install_app_dependencies $pkg_dependencies +#================================================= +# CREATE DEDICATED USER +#================================================= +ynh_script_progression --message="Configuring system user..." + +# Create a system user +ynh_system_user_create --username=$app --home_dir=$final_path + +#================================================= +# CREATE A MYSQL DATABASE +#================================================= +ynh_script_progression --message="Creating a MySQL database..." + +if [ "$database" = "mysql" ]; then + db_name=$(ynh_sanitize_dbid --db_name=$app) + db_user=$db_name + ynh_app_setting_set --app=$app --key=db_name --value=$db_name + ynh_mysql_setup_db --db_user=$db_user --db_name=$db_name +fi + #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= @@ -76,104 +94,87 @@ ynh_app_setting_set --app=$app --key=final_path --value=$final_path # Download, check integrity, uncompress and patch the source from app.src ynh_setup_source --dest_dir="$final_path" +chmod 750 "$final_path" +chmod -R o-rwx "$final_path" +chown -R $app:www-data "$final_path" +setfacl -dR -m g:"www-data":rwX -m u:$app:rwX "$final_path/var" +setfacl -R -m g:"www-data":rwX -m u:$app:rwX "$final_path/var" + #================================================= # NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Configuring nginx web server..." +ynh_script_progression --message="Configuring NGINX web server..." -# Create a dedicated nginx config +# Create a dedicated NGINX config ynh_add_nginx_config -#================================================= -# CREATE DEDICATED USER -#================================================= -ynh_script_progression --message="Configuring system user..." - -# Create a system user -ynh_system_user_create --username=$app - #================================================= # PHP-FPM CONFIGURATION #================================================= -ynh_script_progression --message="Configuring php-fpm..." +ynh_script_progression --message="Configuring PHP-FPM..." -# Create a dedicated php-fpm config -ynh_add_fpm_config --usage=low --footprint=low --package="$extra_php_dependencies" +# Create a dedicated PHP-FPM config +ynh_add_fpm_config --package="$extra_php_dependencies" +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= # SPECIFIC SETUP -#================================================= -# CONFIGURE KIMAI2 -#================================================= -ynh_script_progression --message="Configuring Kimai2..." - -local_conf="$final_path/config/packages/local.yaml" -# Configure registration -cp ../conf/local.yaml $local_conf -ynh_replace_string --match_string="__APP__" --replace_string="$app" --target_file="$local_conf" -if [ $registration -eq 1 ] -then - ynh_replace_string --match_string="__REGISTRATION__" --replace_string="true" --target_file="$local_conf" -else - ynh_replace_string --match_string="__REGISTRATION__" --replace_string="false" --target_file="$local_conf" -fi - -env_conf="$final_path/.env" -# Configure environement -if [ "$database" = "mysql" ]; then - # setup application config - cp ../conf/.env.mysql $env_conf - db_name=$(ynh_sanitize_dbid --db_name=$app) - db_user=$db_name - ynh_app_setting_set --app=$app --key=db_name --value=$db_name - ynh_mysql_setup_db --db_user=$db_user --db_name=$db_name - ynh_replace_string --match_string="__RANDOM_KEY__" --replace_string="$random_key" --target_file="$env_conf" - ynh_replace_string --match_string="__DOMAIN__" --replace_string="$domain" --target_file="$env_conf" - ynh_replace_string --match_string="__DB_PASSWORD__" --replace_string="$db_pwd" --target_file="$env_conf" - ynh_replace_string --match_string="__DB_USER__" --replace_string="$db_name" --target_file="$env_conf" - ynh_replace_string --match_string="__DB_NAME__" --replace_string="$db_name" --target_file="$env_conf" -else - # setup application config - cp ../conf/.env.sqlite $env_conf - ynh_replace_string --match_string="__RANDOM_KEY__" --replace_string="$random_key" --target_file="$env_conf" - ynh_replace_string --match_string="__DOMAIN__" --replace_string="$domain" --target_file="$env_conf" -fi - #================================================= # BUILD KIMAI2 #================================================= ynh_script_progression --message="Building Kimai2..." -ynh_install_composer --phpversion="${YNH_PHP_VERSION}" --workdir="$final_path" --install_args="--optimize-autoloader" -ynh_composer_exec --phpversion="${YNH_PHP_VERSION}" --workdir="$final_path" --commands="require laminas/laminas-ldap" +ynh_install_composer --phpversion="$phpversion" --workdir="$final_path" --install_args="--optimize-autoloader" +ynh_composer_exec --phpversion="$phpversion" --workdir="$final_path" --commands="require laminas/laminas-ldap" + +chmod 750 "$final_path" +chmod -R o-rwx "$final_path" +chown -R $app:www-data "$final_path" +setfacl -dR -m g:"www-data":rwX -m u:$app:rwX "$final_path/var" +setfacl -R -m g:"www-data":rwX -m u:$app:rwX "$final_path/var" + +#================================================= +# ADD A CONFIGURATION +#================================================= +ynh_script_progression --message="Adding a configuration file..." + +if [ $registration -eq 1 ] +then + registration="true" +else + registration="false" +fi + +ynh_add_config --template="../conf/local.yaml" --destination="$final_path/config/packages/local.yaml" + +chmod 400 "$final_path/config/packages/local.yaml" +chown $app:$app "$final_path/config/packages/local.yaml" + +# Configure environement +ynh_add_config --template="../conf/.env.$database" --destination="$final_path/.env" + +chmod 400 "$final_path/.env" +chown $app:$app "$final_path/.env" + +#================================================= +# INSTALL KIMAI2 +#================================================= +ynh_script_progression --message="Installing Kimai2..." + +update-alternatives --set php /usr/bin/php$phpversion pushd "$final_path" - php${YNH_PHP_VERSION} bin/console kimai:install -n + php$phpversion bin/console kimai:install -n popd -#================================================= -# STORE THE CONFIG FILE CHECKSUM -#================================================= -ynh_script_progression --message="Storing the config file checksum..." - -# Calculate and store the config file checksum into the app settings -ynh_store_file_checksum --file="$local_conf" -ynh_store_file_checksum --file="$env_conf" +update-alternatives --set php /usr/bin/php${YNH_DEFAULT_PHP_VERSION} #================================================= # GENERIC FINALIZATION -#================================================= -# SECURE FILES AND DIRECTORIES -#================================================= -ynh_script_progression --message="Securing files and directories..." - -# Set permissions to app files -chown -R $app: $final_path - #================================================= # SETUP SSOWAT #================================================= -ynh_script_progression --message="Configuring SSOwat..." +ynh_script_progression --message="Configuring permissions..." ynh_permission_create --permission="teamlead" ynh_permission_create --permission="admin" @@ -182,14 +183,15 @@ ynh_permission_create --permission="super_admin" --allowed "$admin" # Make app public if necessary if [ $is_public -eq 1 ] then - # unprotected_uris allows SSO credentials to be passed anyway. - ynh_permission_update --permission "main" --add "visitors" + # Everyone can access the app. + # The "main" permission is automatically created before the install script. + ynh_permission_update --permission="main" --add="visitors" fi #================================================= # RELOAD NGINX #================================================= -ynh_script_progression --message="Reloading nginx web server..." +ynh_script_progression --message="Reloading NGINX web server..." ynh_systemd_action --service_name=nginx --action=reload diff --git a/scripts/remove b/scripts/remove index 7e410b0..f5ea80d 100755 --- a/scripts/remove +++ b/scripts/remove @@ -17,6 +17,8 @@ ynh_script_progression --message="Loading installation settings..." app=$YNH_APP_INSTANCE_NAME domain=$(ynh_app_setting_get --app=$app --key=domain) +db_name=$(ynh_app_setting_get --app=$app --key=db_name) +db_user=$db_name final_path=$(ynh_app_setting_get --app=$app --key=final_path) database=$(ynh_app_setting_get --app=$app --key=database) @@ -28,20 +30,11 @@ database=$(ynh_app_setting_get --app=$app --key=database) if [ "$database" = "mysql" ]; then ynh_script_progression --message="Removing the MySQL database..." - db_name=$(ynh_app_setting_get --app=$app --key=db_name) - db_user=$db_name + # Remove a database if it exists, along with the associated user ynh_mysql_remove_db --db_user=$db_user --db_name=$db_name fi -#================================================= -# REMOVE DEPENDENCIES -#================================================= -ynh_script_progression --message="Removing dependencies..." - -# Remove metapackage and its dependencies -ynh_remove_app_dependencies - #================================================= # REMOVE APP MAIN DIR #================================================= @@ -53,19 +46,27 @@ ynh_secure_remove --file="$final_path" #================================================= # REMOVE NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Removing nginx web server configuration..." +ynh_script_progression --message="Removing NGINX web server configuration..." -# Remove the dedicated nginx config +# Remove the dedicated NGINX config ynh_remove_nginx_config #================================================= # REMOVE PHP-FPM CONFIGURATION #================================================= -ynh_script_progression --message="Removing php-fpm configuration..." +ynh_script_progression --message="Removing PHP-FPM configuration..." -# Remove the dedicated php-fpm config +# Remove the dedicated PHP-FPM config ynh_remove_fpm_config +#================================================= +# REMOVE DEPENDENCIES +#================================================= +ynh_script_progression --message="Removing dependencies..." + +# Remove metapackage and its dependencies +ynh_remove_app_dependencies + #================================================= # GENERIC FINALIZATION #================================================= diff --git a/scripts/restore b/scripts/restore index b3bda5a..5684484 100755 --- a/scripts/restore +++ b/scripts/restore @@ -6,7 +6,7 @@ # IMPORT GENERIC HELPERS #================================================= -#Keep this path for calling _common.sh inside the execution's context of backup and restore scripts +# Keep this path for calling _common.sh inside the execution's context of backup and restore scripts source ../settings/scripts/_common.sh source /usr/share/yunohost/helpers @@ -23,13 +23,16 @@ ynh_abort_if_errors #================================================= # LOAD SETTINGS #================================================= -ynh_script_progression --message="Loading settings..." +ynh_script_progression --message="Loading installation settings..." app=$YNH_APP_INSTANCE_NAME domain=$(ynh_app_setting_get --app=$app --key=domain) path_url=$(ynh_app_setting_get --app=$app --key=path) final_path=$(ynh_app_setting_get --app=$app --key=final_path) +db_name=$(ynh_app_setting_get --app=$app --key=db_name) +db_user=$db_name +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) database=$(ynh_app_setting_get --app=$app --key=database) #================================================= @@ -37,8 +40,6 @@ database=$(ynh_app_setting_get --app=$app --key=database) #================================================= ynh_script_progression --message="Validating restoration parameters..." -ynh_webpath_available --domain=$domain --path_url=$path_url \ - || ynh_die --message="Path not available: ${domain}${path_url}" test ! -d $final_path \ || ynh_die --message="There is already a directory: $final_path " @@ -47,10 +48,18 @@ 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" +#================================================= +# RECREATE THE DEDICATED USER +#================================================= +ynh_script_progression --message="Recreating the dedicated system user..." + +# Create the dedicated user (if not existing) +ynh_system_user_create --username=$app --home_dir=$final_path + #================================================= # RESTORE THE APP MAIN DIR #================================================= @@ -58,32 +67,23 @@ ynh_script_progression --message="Restoring the app main directory..." ynh_restore_file --origin_path="$final_path" -#================================================= -# RECREATE THE DEDICATED USER -#================================================= -ynh_script_progression --message="Recreating the dedicated system user..." - -# Create the dedicated user (if not existing) -ynh_system_user_create --username=$app - -#================================================= -# RESTORE USER RIGHTS -#================================================= -ynh_script_progression --message="Restoring user rights..." - -# Restore permissions on app files -chown -R $app: $final_path +chmod 750 "$final_path" +chmod -R o-rwx "$final_path" +chown -R $app:www-data "$final_path" +setfacl -dR -m g:"www-data":rwX -m u:$app:rwX "$final_path/var" +setfacl -R -m g:"www-data":rwX -m u:$app:rwX "$final_path/var" #================================================= # RESTORE THE PHP-FPM CONFIGURATION #================================================= -ynh_script_progression --message="Restoring PHP-FPM configuration..." +ynh_script_progression --message="Restoring the PHP-FPM configuration..." # Restore the file first, so it can have a backup if different -ynh_restore_file --origin_path="/etc/php/${YNH_PHP_VERSION}/fpm/pool.d/$app.conf" +ynh_restore_file --origin_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" # Recreate a dedicated php-fpm config -ynh_add_fpm_config --usage=low --footprint=low --package="$extra_php_dependencies" +ynh_add_fpm_config --package="$extra_php_dependencies" +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= # SPECIFIC RESTORATION @@ -102,8 +102,6 @@ ynh_install_app_dependencies $pkg_dependencies if [ "$database" = "mysql" ]; then ynh_script_progression --message="Restoring the MySQL database..." db_pwd=$(ynh_app_setting_get --app=$app --key=mysqlpwd) - db_name=$(ynh_app_setting_get --app=$app --key=db_name) - db_user=$db_name 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 fi @@ -113,9 +111,9 @@ fi #================================================= # RELOAD NGINX AND PHP-FPM #================================================= -ynh_script_progression --message="Reloading nginx web server and php-fpm..." +ynh_script_progression --message="Reloading NGINX web server and PHP-FPM..." -ynh_systemd_action --service_name=php${YNH_PHP_VERSION}-fpm --action=reload +ynh_systemd_action --service_name=php$phpversion-fpm --action=reload ynh_systemd_action --service_name=nginx --action=reload #================================================= diff --git a/scripts/upgrade b/scripts/upgrade index ebf44e1..eb70260 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -7,7 +7,6 @@ #================================================= source _common.sh -source ynh_composer__3 source /usr/share/yunohost/helpers #================================================= @@ -20,8 +19,10 @@ app=$YNH_APP_INSTANCE_NAME domain=$(ynh_app_setting_get --app=$app --key=domain) path_url=$(ynh_app_setting_get --app=$app --key=path) admin=$(ynh_app_setting_get --app=$app --key=admin) -is_public=$(ynh_app_setting_get --app=$app --key=is_public) final_path=$(ynh_app_setting_get --app=$app --key=final_path) +db_name=$(ynh_app_setting_get --app=$app --key=db_name) +db_user=$db_name +db_name=$(ynh_app_setting_get --app=$app --key=mysqlpwd) registration=$(ynh_app_setting_get --app=$app --key=registration) database=$(ynh_app_setting_get --app=$app --key=database) random_key=$(ynh_app_setting_get --app=$app --key=random_key) @@ -33,26 +34,6 @@ ynh_script_progression --message="Checking version..." upgrade_type=$(ynh_check_app_version_changed) -#================================================= -# ENSURE DOWNWARD COMPATIBILITY -#================================================= -ynh_script_progression --message="Ensuring downward compatibility..." - -# Fix is_public as a boolean value -if [ "$is_public" = "Yes" ]; then - ynh_app_setting_set --app=$app --key=is_public --value=1 - is_public=1 -elif [ "$is_public" = "No" ]; then - ynh_app_setting_set --app=$app --key=is_public --value=0 - is_public=0 -fi - -# If final_path doesn't exist, create it -if [ -z "$final_path" ]; then - final_path=/var/www/$app - ynh_app_setting_set --app=$app --key=final_path --value=$final_path -fi - #================================================= # BACKUP BEFORE UPGRADE THEN ACTIVE TRAP #================================================= @@ -61,7 +42,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 @@ -69,6 +50,44 @@ ynh_abort_if_errors #================================================= # STANDARD UPGRADE STEPS +#================================================= +# ENSURE DOWNWARD COMPATIBILITY +#================================================= +ynh_script_progression --message="Ensuring downward compatibility..." + +# If final_path doesn't exist, create it +if [ -z "$final_path" ]; then + final_path=/var/www/$app + ynh_app_setting_set --app=$app --key=final_path --value=$final_path +fi + +# Cleaning legacy permissions +if ynh_legacy_permissions_exists; then + ynh_legacy_permissions_delete_all + + ynh_app_setting_delete --app=$app --key=is_public +fi + +if ! ynh_permission_exists --permission="teamlead"; then + ynh_permission_create --permission="teamlead" +fi + +if ! ynh_permission_exists --permission="admin"; then + ynh_permission_create --permission="admin" +fi + +if ! ynh_permission_exists --permission="super_admin"; then + ynh_permission_create --permission="super_admin" --allowed="$admin" +fi + +#================================================= +# CREATE DEDICATED USER +#================================================= +ynh_script_progression --message="Making sure dedicated system user exists..." + +# Create a dedicated user (if not existing) +ynh_system_user_create --username=$app --home_dir=$final_path + #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= @@ -108,12 +127,18 @@ then ynh_secure_remove --file="$tmpdir" fi +chmod 750 "$final_path" +chmod -R o-rwx "$final_path" +chown -R $app:www-data "$final_path" +setfacl -dR -m g:"www-data":rwX -m u:$app:rwX "$final_path/var" +setfacl -R -m g:"www-data":rwX -m u:$app:rwX "$final_path/var" + #================================================= # NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Upgrading nginx web server configuration..." +ynh_script_progression --message="Upgrading NGINX web server configuration..." -# Create a dedicated nginx config +# Create a dedicated NGINX config ynh_add_nginx_config #================================================= @@ -123,116 +148,73 @@ ynh_script_progression --message="Upgrading dependencies..." ynh_install_app_dependencies $pkg_dependencies -#================================================= -# CREATE DEDICATED USER -#================================================= -ynh_script_progression --message="Making sure dedicated system user exists..." - -# Create a dedicated user (if not existing) -ynh_system_user_create --username=$app - #================================================= # PHP-FPM CONFIGURATION #================================================= -ynh_script_progression --message="Upgrading php-fpm configuration..." +ynh_script_progression --message="Upgrading PHP-FPM configuration..." -# Create a dedicated php-fpm config -ynh_add_fpm_config --usage=low --footprint=low --package="$extra_php_dependencies" +# Create a dedicated PHP-FPM config +ynh_add_fpm_config --package="$extra_php_dependencies" +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= # SPECIFIC UPGRADE #================================================= -# CONFIGURE KIMAI2 +# BUILD KIMAI2 #================================================= -ynh_script_progression --message="Configuring Kimai2..." +ynh_script_progression --message="Building Kimai2..." + +ynh_install_composer --phpversion="$phpversion" --workdir="$final_path" --install_args="--optimize-autoloader" +ynh_composer_exec --phpversion="$phpversion" --workdir="$final_path" --commands="require laminas/laminas-ldap" + +chmod 750 "$final_path" +chmod -R o-rwx "$final_path" +chown -R $app:www-data "$final_path" +setfacl -dR -m g:"www-data":rwX -m u:$app:rwX "$final_path/var" +setfacl -R -m g:"www-data":rwX -m u:$app:rwX "$final_path/var" + +#================================================= +# UPDATE A CONFIG FILE +#================================================= +ynh_script_progression --message="Updating a configuration file..." -local_conf="$final_path/config/packages/local.yaml" -ynh_backup_if_checksum_is_different --file="$local_conf" -cp ../conf/local.yaml $local_conf -ynh_replace_string --match_string="__APP__" --replace_string="$app" --target_file="$local_conf" if [ $registration -eq 1 ] then - ynh_replace_string --match_string="__REGISTRATION__" --replace_string="true" --target_file="$local_conf" + registration="true" else - ynh_replace_string --match_string="__REGISTRATION__" --replace_string="false" --target_file="$local_conf" + registration="false" fi -ynh_store_file_checksum --file="$local_conf" -env_conf=$final_path/.env -ynh_backup_if_checksum_is_different --file="$env_conf" +ynh_add_config --template="../conf/local.yaml" --destination="$final_path/config/packages/local.yaml" + +chmod 400 "$final_path/config/packages/local.yaml" +chown $app:$app "$final_path/config/packages/local.yaml" + # Configure environement -if [ "$database" = "mysql" ]; then - # setup application config - cp ../conf/.env.mysql $env_conf - db_pwd=$(ynh_app_setting_get --app=$app --key=mysqlpwd) - db_name=$(ynh_app_setting_get --app=$app --key=db_name) - db_user=$db_name - ynh_replace_string --match_string="__RANDOM_KEY__" --replace_string="$random_key" --target_file="$env_conf" - ynh_replace_string --match_string="__DOMAIN__" --replace_string="$domain" --target_file="$env_conf" - ynh_replace_string --match_string="__DB_PASSWORD__" --replace_string="$db_pwd" --target_file="$env_conf" - ynh_replace_string --match_string="__DB_USER__" --replace_string="$db_name" --target_file="$env_conf" - ynh_replace_string --match_string="__DB_NAME__" --replace_string="$db_name" --target_file="$env_conf" -else - # setup application config - cp ../conf/.env.sqlite $env_conf - ynh_replace_string --match_string="__RANDOM_KEY__" --replace_string="$random_key" --target_file="$env_conf" - ynh_replace_string --match_string="__DOMAIN__" --replace_string="$domain" --target_file="$env_conf" -fi -ynh_store_file_checksum --file="$env_conf" +ynh_add_config --template="../conf/.env.$database" --destination="$final_path/.env" + +chmod 400 "$final_path/.env" +chown $app:$app "$final_path/.env" #================================================= -# UPGRADE KIMAI2 +# INSTALL KIMAI2 #================================================= -ynh_script_progression --message="Upgrading Kimai2..." +ynh_script_progression --message="Installing Kimai2..." -ynh_install_composer --phpversion="${YNH_PHP_VERSION}" --workdir="$final_path" --install_args="--optimize-autoloader" -ynh_composer_exec --phpversion="${YNH_PHP_VERSION}" --workdir="$final_path" --commands="require laminas/laminas-ldap" +update-alternatives --set php /usr/bin/php$phpversion pushd "$final_path" - php${YNH_PHP_VERSION} bin/console kimai:update -n + php$phpversion bin/console kimai:update -n popd +update-alternatives --set php /usr/bin/php${YNH_DEFAULT_PHP_VERSION} + #================================================= # GENERIC FINALIZATION -#================================================= -# SECURE FILES AND DIRECTORIES -#================================================= -ynh_script_progression --message="Securing files and directories..." - -# Set permissions on app files -chown -R $app: $final_path - -#================================================= -# SETUP SSOWAT -#================================================= -ynh_script_progression --message="Upgrading SSOwat configuration..." - -if ! ynh_permission_exists --permission="teamlead" -then - ynh_permission_create --permission="teamlead" -fi - -if ! ynh_permission_exists --permission="admin" -then - ynh_permission_create --permission="admin" -fi - -if ! ynh_permission_exists --permission="super_admin" -then - ynh_permission_create --permission="super_admin" --allowed "$admin" -fi - -# Make app public if necessary -if [ $is_public -eq 1 ] -then - # unprotected_uris allows SSO credentials to be passed anyway. - ynh_permission_update --permission "main" --add "visitors" -fi - #================================================= # RELOAD NGINX #================================================= -ynh_script_progression --message="Reloading nginx web server..." +ynh_script_progression --message="Reloading NGINX web server..." ynh_systemd_action --service_name=nginx --action=reload diff --git a/scripts/ynh_composer__3 b/scripts/ynh_composer__3 deleted file mode 100644 index ca68a65..0000000 --- a/scripts/ynh_composer__3 +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/bash - -readonly YNH_DEFAULT_COMPOSER_VERSION=1.10.17 -# Declare the actual composer version to use. -# A packager willing to use another version of composer can override the variable into its _common.sh. -YNH_COMPOSER_VERSION=${YNH_COMPOSER_VERSION:-$YNH_DEFAULT_COMPOSER_VERSION} - -# Execute a command with Composer -# -# usage: ynh_composer_exec [--phpversion=phpversion] [--workdir=$final_path] --commands="commands" -# | arg: -v, --phpversion - PHP version to use with composer -# | arg: -w, --workdir - The directory from where the command will be executed. Default $final_path. -# | arg: -c, --commands - Commands to execute. -ynh_composer_exec () { - # Declare an array to define the options of this helper. - local legacy_args=vwc - declare -Ar args_array=( [v]=phpversion= [w]=workdir= [c]=commands= ) - local phpversion - local workdir - local commands - # Manage arguments with getopts - ynh_handle_getopts_args "$@" - workdir="${workdir:-$final_path}" - phpversion="${phpversion:-$YNH_PHP_VERSION}" - - COMPOSER_HOME="$workdir/.composer" \ - php${phpversion} "$workdir/composer.phar" $commands \ - -d "$workdir" --quiet --no-interaction -} - -# Install and initialize Composer in the given directory -# -# usage: ynh_install_composer [--phpversion=phpversion] [--workdir=$final_path] [--install_args="--optimize-autoloader"] [--composerversion=composerversion] -# | arg: -v, --phpversion - PHP version to use with composer -# | arg: -w, --workdir - The directory from where the command will be executed. Default $final_path. -# | arg: -a, --install_args - Additional arguments provided to the composer install. Argument --no-dev already include -# | arg: -c, --composerversion - Composer version to install -ynh_install_composer () { - # Declare an array to define the options of this helper. - local legacy_args=vwa - declare -Ar args_array=( [v]=phpversion= [w]=workdir= [a]=install_args= [c]=composerversion=) - local phpversion - local workdir - local install_args - local composerversion - # Manage arguments with getopts - ynh_handle_getopts_args "$@" - workdir="${workdir:-$final_path}" - phpversion="${phpversion:-$YNH_PHP_VERSION}" - install_args="${install_args:-}" - composerversion="${composerversion:-$YNH_COMPOSER_VERSION}" - - curl -sS https://getcomposer.org/installer \ - | COMPOSER_HOME="$workdir/.composer" \ - php${phpversion} -- --quiet --install-dir="$workdir" --version=$composerversion \ - || ynh_die "Unable to install Composer." - - # update dependencies to create composer.lock - ynh_composer_exec --phpversion="${phpversion}" --workdir="$workdir" --commands="install --no-dev $install_args" \ - || ynh_die "Unable to update core dependencies with Composer." -} From 6a0d9156b7e725f3949d14683c76b49e10fe0c4f Mon Sep 17 00:00:00 2001 From: Yunohost-Bot <> Date: Sun, 23 Jan 2022 19:51:38 +0000 Subject: [PATCH 2/7] Auto-update README --- README.md | 61 ++++++++++++++++++++++++--------------------------- README_fr.md | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+), 33 deletions(-) create mode 100644 README_fr.md diff --git a/README.md b/README.md index 78d1b93..fea7e8d 100644 --- a/README.md +++ b/README.md @@ -1,37 +1,37 @@ -# Kimai2 app for YunoHost + + +# Kimai2 for YunoHost [![Integration level](https://dash.yunohost.org/integration/kimai2.svg)](https://dash.yunohost.org/appci/app/kimai2) ![](https://ci-apps.yunohost.org/ci/badges/kimai2.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/kimai2.maintain.svg) -[![Install Kimai2 with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=kimai2) +[![Install Kimai2 with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=kimai2) -> *This package allows you to install kimai2 quickly and simply on a YunoHost server. +*[Lire ce readme en français.](./README_fr.md)* + +> *This package allows you to install Kimai2 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 + This is the reloaded version of the open source timetracker Kimai. Right now its in an early development phase, its usable but some advanced features from Kimai v1 are missing by now. Kimai v2 has nothing in common with its predecessor Kimai v1 besides the basic ideas of time-tracking and the current development team. It is based on a lot of great frameworks. Special thanks to Symfony v4, Doctrine, AdminThemeBundle (based on AdminLTE). -https://github.com/kevinpapst/kimai2 -Shipped Version: **1.11.1** + +**Shipped version:** 1.11.1~ynh1 + +**Demo:** https://www.kimai.org/demo/ ## Screenshots -![](https://www.kimai.org/images/screenshots/time-tracking.png) +![](./doc/screenshots/screenshot1.png) -## Demo +## Disclaimers / important information -* [Official demo](https://www.kimai.org/demo/) - -### Guidelines - - 1. Require dedicated domain like **kimai.domain.tld**. - 1. This app is multi-instance (you can have more then one Kimai instance running on a YunoHost server) - -## Documentation - - * Official documentation: https://www.kimai.org/documentation - -## YunoHost specific features +* Require dedicated domain like **kimai.domain.tld**. +* This app is multi-instance (you can have more then one Kimai instance running on a YunoHost server) #### Multi-user support @@ -44,22 +44,15 @@ Defaul Kimai2 roles are: * ROLE_SUPER_ADMIN => Kimai2 (Super_Admin) YunoHost permission Those roles are directly managed using YunoHost permission system. User choosen during installation is granted the ROLE_SUPER_ADMIN -#### Supported architectures +## Documentation and resources -* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/kimai2%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/kimai2/) -* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/kimai2%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/kimai2/) +* Official app website: https://www.kimai.org +* Official admin documentation: https://www.kimai.org/documentation/ +* Upstream app code repository: https://github.com/kevinpapst/kimai2 +* YunoHost documentation for this app: https://yunohost.org/app_kimai2 +* Report a bug: https://github.com/YunoHost-Apps/kimai2_ynh/issues -## Links - - * Report a bug: https://github.com/YunoHost-Apps/kimai2_ynh/issues - * App website: https://www.kimai.org/ - * Upstream app repository: https://github.com/kevinpapst/kimai2 - * YunoHost website: https://yunohost.org/ - ---- - -Developer info ----------------- +## Developer info Please send your pull request to the [testing branch](https://github.com/YunoHost-Apps/kimai2_ynh/tree/testing). @@ -69,3 +62,5 @@ sudo yunohost app install https://github.com/YunoHost-Apps/kimai2_ynh/tree/testi or sudo yunohost app upgrade kimai2 -u https://github.com/YunoHost-Apps/kimai2_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..7fb9663 --- /dev/null +++ b/README_fr.md @@ -0,0 +1,62 @@ +# Kimai2 pour YunoHost + +[![Niveau d'intégration](https://dash.yunohost.org/integration/kimai2.svg)](https://dash.yunohost.org/appci/app/kimai2) ![](https://ci-apps.yunohost.org/ci/badges/kimai2.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/kimai2.maintain.svg) +[![Installer Kimai2 avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=kimai2) + +*[Read this readme in english.](./README.md)* +*[Lire ce readme en français.](./README_fr.md)* + +> *Ce package vous permet d'installer Kimai2 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 + +This is the reloaded version of the open source timetracker Kimai. Right now its in an early development phase, its usable but some advanced features from Kimai v1 are missing by now. + +Kimai v2 has nothing in common with its predecessor Kimai v1 besides the basic ideas of time-tracking and the current development team. It is based on a lot of great frameworks. Special thanks to Symfony v4, Doctrine, AdminThemeBundle (based on AdminLTE). + + +**Version incluse :** 1.11.1~ynh1 + +**Démo :** https://www.kimai.org/demo/ + +## Captures d'écran + +![](./doc/screenshots/screenshot1.png) + +## Avertissements / informations importantes + +* Require dedicated domain like **kimai.domain.tld**. +* This app is multi-instance (you can have more then one Kimai instance running on a YunoHost server) + +#### Multi-user support + +LDAP is supported +HTTP auth is not supported +Defaul Kimai2 roles are: +* ROLE_USER +* ROLE_TEAMLEAD => Kimai2 (Teamlead) YunoHost permission +* ROLE_ADMIN => Kimai2 (Admin) YunoHost permission +* ROLE_SUPER_ADMIN => Kimai2 (Super_Admin) YunoHost permission +Those roles are directly managed using YunoHost permission system. User choosen during installation is granted the ROLE_SUPER_ADMIN + +## Documentations et ressources + +* Site officiel de l'app : https://www.kimai.org +* Documentation officielle de l'admin : https://www.kimai.org/documentation/ +* Dépôt de code officiel de l'app : https://github.com/kevinpapst/kimai2 +* Documentation YunoHost pour cette app : https://yunohost.org/app_kimai2 +* Signaler un bug : https://github.com/YunoHost-Apps/kimai2_ynh/issues + +## Informations pour les développeurs + +Merci de faire vos pull request sur la [branche testing](https://github.com/YunoHost-Apps/kimai2_ynh/tree/testing). + +Pour essayer la branche testing, procédez comme suit. +``` +sudo yunohost app install https://github.com/YunoHost-Apps/kimai2_ynh/tree/testing --debug +ou +sudo yunohost app upgrade kimai2 -u https://github.com/YunoHost-Apps/kimai2_ynh/tree/testing --debug +``` + +**Plus d'infos sur le packaging d'applications :** https://yunohost.org/packaging_apps \ No newline at end of file From a9745214d53839ec32f2df4f6879f8ba77b39d80 Mon Sep 17 00:00:00 2001 From: yalh76 Date: Sun, 23 Jan 2022 20:54:19 +0100 Subject: [PATCH 3/7] upgrade to 1.17~ynh1 --- README.md | 2 +- README_fr.md | 2 +- conf/app.src | 4 ++-- manifest.json | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index fea7e8d..e0db6d6 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ This is the reloaded version of the open source timetracker Kimai. Right now its Kimai v2 has nothing in common with its predecessor Kimai v1 besides the basic ideas of time-tracking and the current development team. It is based on a lot of great frameworks. Special thanks to Symfony v4, Doctrine, AdminThemeBundle (based on AdminLTE). -**Shipped version:** 1.11.1~ynh1 +**Shipped version:** 1.17~ynh1 **Demo:** https://www.kimai.org/demo/ diff --git a/README_fr.md b/README_fr.md index 7fb9663..acfdf96 100644 --- a/README_fr.md +++ b/README_fr.md @@ -16,7 +16,7 @@ This is the reloaded version of the open source timetracker Kimai. Right now its Kimai v2 has nothing in common with its predecessor Kimai v1 besides the basic ideas of time-tracking and the current development team. It is based on a lot of great frameworks. Special thanks to Symfony v4, Doctrine, AdminThemeBundle (based on AdminLTE). -**Version incluse :** 1.11.1~ynh1 +**Version incluse :** 1.17~ynh1 **Démo :** https://www.kimai.org/demo/ diff --git a/conf/app.src b/conf/app.src index bfa6cf4..8252c98 100644 --- a/conf/app.src +++ b/conf/app.src @@ -1,5 +1,5 @@ -SOURCE_URL=https://github.com/kevinpapst/kimai2/archive/1.11.1.tar.gz -SOURCE_SUM=ebca79e6fc4597a4a914a3005c3a450bbe956fd05fce8a4d962d9ca943589a28 +SOURCE_URL=https://github.com/kevinpapst/kimai2/archive/1.17.tar.gz +SOURCE_SUM=9b2fdab63268089eefdf32ba1fc9d33c496967abbe306e58ab134e0e401c4edd SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=tar.gz SOURCE_IN_SUBDIR=true diff --git a/manifest.json b/manifest.json index 6411761..fe2326a 100644 --- a/manifest.json +++ b/manifest.json @@ -8,7 +8,7 @@ "de": "Eine web-basierte Mehrbenutzer-Zeiterfassung mit Rechnungsdruck mit Unterstützung für mobile Endgeräte", "cs": "Víceuživatelská webová aplikace pro sledování času s podporou mobilních zařízení" }, - "version": "1.11.1~ynh1", + "version": "1.17~ynh1", "url": "https://www.kimai.org", "upstream": { "license": "MIT", From b73c7e4485e44c27466bbb0ba115603bf390a189 Mon Sep 17 00:00:00 2001 From: yalh76 Date: Sun, 23 Jan 2022 22:03:51 +0100 Subject: [PATCH 4/7] Upgrade to 1.13~ynh1 --- README.md | 2 +- README_fr.md | 2 +- conf/.env.mysql | 4 +++- conf/.env.sqlite | 6 ++++-- conf/app.src | 4 ++-- manifest.json | 2 +- 6 files changed, 12 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index e0db6d6..2be2ca0 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ This is the reloaded version of the open source timetracker Kimai. Right now its Kimai v2 has nothing in common with its predecessor Kimai v1 besides the basic ideas of time-tracking and the current development team. It is based on a lot of great frameworks. Special thanks to Symfony v4, Doctrine, AdminThemeBundle (based on AdminLTE). -**Shipped version:** 1.17~ynh1 +**Shipped version:** 1.13~ynh1 **Demo:** https://www.kimai.org/demo/ diff --git a/README_fr.md b/README_fr.md index acfdf96..7e239a1 100644 --- a/README_fr.md +++ b/README_fr.md @@ -16,7 +16,7 @@ This is the reloaded version of the open source timetracker Kimai. Right now its Kimai v2 has nothing in common with its predecessor Kimai v1 besides the basic ideas of time-tracking and the current development team. It is based on a lot of great frameworks. Special thanks to Symfony v4, Doctrine, AdminThemeBundle (based on AdminLTE). -**Version incluse :** 1.17~ynh1 +**Version incluse :** 1.13~ynh1 **Démo :** https://www.kimai.org/demo/ diff --git a/conf/.env.mysql b/conf/.env.mysql index 3b934cc..2a53aaf 100644 --- a/conf/.env.mysql +++ b/conf/.env.mysql @@ -11,8 +11,10 @@ APP_SECRET=__RANDOM_KEY__ ###> doctrine/doctrine-bundle ### # Format described at http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url +# For a MySQL database, use: "mysql://db_user:db_password@127.0.0.1:3306/db_name?serverVersion=10.2.12&charset=utf8" +# For a MariaDB database, use: "mysql://db_user:db_password@127.0.0.1:3306/db_name?serverVersion=mariadb-10.2.12" # For an SQLite database, use: "sqlite:///%kernel.project_dir%/var/data/kimai.sqlite" -# Configure your db driver and server_version in config/packages/doctrine.yaml +# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml DATABASE_URL=mysql://__DB_USER__:__DB_PWD__@127.0.0.1:3306/__DB_NAME__ # DATABASE_URL=sqlite:///%kernel.project_dir%/var/data/kimai.sqlite ###< doctrine/doctrine-bundle ### diff --git a/conf/.env.sqlite b/conf/.env.sqlite index c584325..c708414 100644 --- a/conf/.env.sqlite +++ b/conf/.env.sqlite @@ -11,9 +11,11 @@ APP_SECRET=__RANDOM_KEY__ ###> doctrine/doctrine-bundle ### # Format described at http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url +# For a MySQL database, use: "mysql://db_user:db_password@127.0.0.1:3306/db_name?serverVersion=10.2.12&charset=utf8" +# For a MariaDB database, use: "mysql://db_user:db_password@127.0.0.1:3306/db_name?serverVersion=mariadb-10.2.12" # For an SQLite database, use: "sqlite:///%kernel.project_dir%/var/data/kimai.sqlite" -# Configure your db driver and server_version in config/packages/doctrine.yaml -# DATABASE_URL=mysql://db_user:db_pwd@127.0.0.1:3306/db_name +# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml +# DATABASE_URL=mysql://db_user:db_password@127.0.0.1:3306/db_name DATABASE_URL=sqlite:///%kernel.project_dir%/var/data/kimai.sqlite ###< doctrine/doctrine-bundle ### diff --git a/conf/app.src b/conf/app.src index 8252c98..ebe59ad 100644 --- a/conf/app.src +++ b/conf/app.src @@ -1,5 +1,5 @@ -SOURCE_URL=https://github.com/kevinpapst/kimai2/archive/1.17.tar.gz -SOURCE_SUM=9b2fdab63268089eefdf32ba1fc9d33c496967abbe306e58ab134e0e401c4edd +SOURCE_URL=https://github.com/kevinpapst/kimai2/archive/1.13.tar.gz +SOURCE_SUM=caab9910a85b16772af678ee8519a8030cd8496aa94ce0a0027fffa6a91f3fef SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=tar.gz SOURCE_IN_SUBDIR=true diff --git a/manifest.json b/manifest.json index fe2326a..6919ef4 100644 --- a/manifest.json +++ b/manifest.json @@ -8,7 +8,7 @@ "de": "Eine web-basierte Mehrbenutzer-Zeiterfassung mit Rechnungsdruck mit Unterstützung für mobile Endgeräte", "cs": "Víceuživatelská webová aplikace pro sledování času s podporou mobilních zařízení" }, - "version": "1.17~ynh1", + "version": "1.13~ynh1", "url": "https://www.kimai.org", "upstream": { "license": "MIT", From 64e17820753ef0381fa3f9a02dd23223f7d38c7e Mon Sep 17 00:00:00 2001 From: yalh76 Date: Mon, 24 Jan 2022 23:07:23 +0100 Subject: [PATCH 5/7] typo --- scripts/upgrade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/upgrade b/scripts/upgrade index eb70260..871eaeb 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -22,7 +22,7 @@ admin=$(ynh_app_setting_get --app=$app --key=admin) final_path=$(ynh_app_setting_get --app=$app --key=final_path) db_name=$(ynh_app_setting_get --app=$app --key=db_name) db_user=$db_name -db_name=$(ynh_app_setting_get --app=$app --key=mysqlpwd) +db_pwd=$(ynh_app_setting_get --app=$app --key=mysqlpwd) registration=$(ynh_app_setting_get --app=$app --key=registration) database=$(ynh_app_setting_get --app=$app --key=database) random_key=$(ynh_app_setting_get --app=$app --key=random_key) From 332bcd2da8eaaf5fc3bdb589e1d0f169d1dfa775 Mon Sep 17 00:00:00 2001 From: yalh76 Date: Tue, 25 Jan 2022 00:06:48 +0100 Subject: [PATCH 6/7] Fix sqllite --- scripts/install | 10 +++++----- scripts/restore | 4 ++-- scripts/upgrade | 10 +++++----- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/scripts/install b/scripts/install index c210d52..04438c6 100755 --- a/scripts/install +++ b/scripts/install @@ -97,8 +97,8 @@ ynh_setup_source --dest_dir="$final_path" chmod 750 "$final_path" chmod -R o-rwx "$final_path" chown -R $app:www-data "$final_path" -setfacl -dR -m g:"www-data":rwX -m u:$app:rwX "$final_path/var" -setfacl -R -m g:"www-data":rwX -m u:$app:rwX "$final_path/var" +setfacl -dR -m g:"www-data":rwX -m u:$app:rwX "$final_path/var/" +setfacl -R -m g:"www-data":rwX -m u:$app:rwX "$final_path/var/" #================================================= # NGINX CONFIGURATION @@ -130,8 +130,8 @@ ynh_composer_exec --phpversion="$phpversion" --workdir="$final_path" --commands= chmod 750 "$final_path" chmod -R o-rwx "$final_path" chown -R $app:www-data "$final_path" -setfacl -dR -m g:"www-data":rwX -m u:$app:rwX "$final_path/var" -setfacl -R -m g:"www-data":rwX -m u:$app:rwX "$final_path/var" +setfacl -dR -m g:"www-data":rwX -m u:$app:rwX "$final_path/var/" +setfacl -R -m g:"www-data":rwX -m u:$app:rwX "$final_path/var/" #================================================= # ADD A CONFIGURATION @@ -164,7 +164,7 @@ ynh_script_progression --message="Installing Kimai2..." update-alternatives --set php /usr/bin/php$phpversion pushd "$final_path" - php$phpversion bin/console kimai:install -n + ynh_exec_as $app php$phpversion bin/console kimai:install -n popd update-alternatives --set php /usr/bin/php${YNH_DEFAULT_PHP_VERSION} diff --git a/scripts/restore b/scripts/restore index 5684484..b23f90e 100755 --- a/scripts/restore +++ b/scripts/restore @@ -70,8 +70,8 @@ ynh_restore_file --origin_path="$final_path" chmod 750 "$final_path" chmod -R o-rwx "$final_path" chown -R $app:www-data "$final_path" -setfacl -dR -m g:"www-data":rwX -m u:$app:rwX "$final_path/var" -setfacl -R -m g:"www-data":rwX -m u:$app:rwX "$final_path/var" +setfacl -dR -m g:"www-data":rwX -m u:$app:rwX "$final_path/var/" +setfacl -R -m g:"www-data":rwX -m u:$app:rwX "$final_path/var/" #================================================= # RESTORE THE PHP-FPM CONFIGURATION diff --git a/scripts/upgrade b/scripts/upgrade index 871eaeb..8bed902 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -130,8 +130,8 @@ fi chmod 750 "$final_path" chmod -R o-rwx "$final_path" chown -R $app:www-data "$final_path" -setfacl -dR -m g:"www-data":rwX -m u:$app:rwX "$final_path/var" -setfacl -R -m g:"www-data":rwX -m u:$app:rwX "$final_path/var" +setfacl -dR -m g:"www-data":rwX -m u:$app:rwX "$final_path/var/" +setfacl -R -m g:"www-data":rwX -m u:$app:rwX "$final_path/var/" #================================================= # NGINX CONFIGURATION @@ -170,8 +170,8 @@ ynh_composer_exec --phpversion="$phpversion" --workdir="$final_path" --commands= chmod 750 "$final_path" chmod -R o-rwx "$final_path" chown -R $app:www-data "$final_path" -setfacl -dR -m g:"www-data":rwX -m u:$app:rwX "$final_path/var" -setfacl -R -m g:"www-data":rwX -m u:$app:rwX "$final_path/var" +setfacl -dR -m g:"www-data":rwX -m u:$app:rwX "$final_path/var/" +setfacl -R -m g:"www-data":rwX -m u:$app:rwX "$final_path/var/" #================================================= # UPDATE A CONFIG FILE @@ -204,7 +204,7 @@ ynh_script_progression --message="Installing Kimai2..." update-alternatives --set php /usr/bin/php$phpversion pushd "$final_path" - php$phpversion bin/console kimai:update -n + ynh_exec_as $app php$phpversion bin/console kimai:update -n popd update-alternatives --set php /usr/bin/php${YNH_DEFAULT_PHP_VERSION} From 8ef5aa0906a4ef554e3d6bdb20365b1e1e9205bb Mon Sep 17 00:00:00 2001 From: yalh76 Date: Thu, 27 Jan 2022 20:22:17 +0100 Subject: [PATCH 7/7] Fix test upgrade --- check_process | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/check_process b/check_process index dd12928..f514ce4 100644 --- a/check_process +++ b/check_process @@ -14,7 +14,7 @@ setup_public=1 upgrade=1 # 1.9~ynh1 - upgrade=1 from_commit=e5ce0d869526c6c856c1e2398b4b2ce0ba8e7542 + upgrade=1 from_commit=22580412fae14859f661c1f9b54a3131a60c9323 # 1.11.1~ynh1 upgrade=1 from_commit=f26285511a167a1ed591a7fa96ae786ea89efb1e backup_restore=1 @@ -37,7 +37,7 @@ setup_public=1 upgrade=1 # 1.9~ynh1 - upgrade=1 from_commit=e5ce0d869526c6c856c1e2398b4b2ce0ba8e7542 + upgrade=1 from_commit=22580412fae14859f661c1f9b54a3131a60c9323 # 1.11.1~ynh1 upgrade=1 from_commit=f26285511a167a1ed591a7fa96ae786ea89efb1e backup_restore=1 @@ -48,7 +48,7 @@ Email=anmol@datamol.org Notification=change ;;; Upgrade options - ; commit=e5ce0d869526c6c856c1e2398b4b2ce0ba8e7542 + ; commit=22580412fae14859f661c1f9b54a3131a60c9323 name=1.9~ynh1 ; commit=f26285511a167a1ed591a7fa96ae786ea89efb1e name=1.11.1~ynh1