mirror of
https://github.com/YunoHost-Apps/thelounge_ynh.git
synced 2024-09-03 20:35:54 +02:00
commit
33ee4dedd2
21 changed files with 1041 additions and 588 deletions
55
.github/ISSUE_TEMPLATE.md
vendored
Normal file
55
.github/ISSUE_TEMPLATE.md
vendored
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
---
|
||||||
|
name: Bug report
|
||||||
|
about: When creating a bug report, please use the following template to provide all the relevant information and help debugging efficiently.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**How to post a meaningful bug report**
|
||||||
|
1. *Read this whole template first.*
|
||||||
|
2. *Determine if you are on the right place:*
|
||||||
|
- *If you were performing an action on the app from the webadmin or the CLI (install, update, backup, restore, change_url...), you are on the right place!*
|
||||||
|
- *Otherwise, the issue may be due to the app itself. Refer to its documentation or repository for help.*
|
||||||
|
- *When in doubt, post here and we will figure it out together.*
|
||||||
|
3. *Delete the italic comments as you write over them below, and remove this guide.*
|
||||||
|
---
|
||||||
|
|
||||||
|
### Describe the bug
|
||||||
|
|
||||||
|
*A clear and concise description of what the bug is.*
|
||||||
|
|
||||||
|
### Context
|
||||||
|
|
||||||
|
- Hardware: *VPS bought online / Old laptop or computer / Raspberry Pi at home / Internet Cube with VPN / Other ARM board / ...*
|
||||||
|
- YunoHost version: x.x.x
|
||||||
|
- I have access to my server: *Through SSH | through the webadmin | direct access via keyboard / screen | ...*
|
||||||
|
- Are you in a special context or did you perform some particular tweaking on your YunoHost instance?: *no / yes*
|
||||||
|
- If yes, please explain:
|
||||||
|
- Using, or trying to install package version/branch:
|
||||||
|
- If upgrading, current package version: *can be found in the admin, or with `yunohost app info $app_id`*
|
||||||
|
|
||||||
|
### Steps to reproduce
|
||||||
|
|
||||||
|
- *If you performed a command from the CLI, the command itself is enough. For example:*
|
||||||
|
```sh
|
||||||
|
sudo yunohost app install the_app
|
||||||
|
```
|
||||||
|
- *If you used the webadmin, please perform the equivalent command from the CLI first.*
|
||||||
|
- *If the error occurs in your browser, explain what you did:*
|
||||||
|
1. *Go to '...'*
|
||||||
|
2. *Click on '...'*
|
||||||
|
3. *Scroll down to '...'*
|
||||||
|
4. *See error*
|
||||||
|
|
||||||
|
### Expected behavior
|
||||||
|
|
||||||
|
*A clear and concise description of what you expected to happen. You can remove this section if the command above is enough to understand your intent.*
|
||||||
|
|
||||||
|
### Logs
|
||||||
|
|
||||||
|
*When an operation fails, YunoHost provides a simple way to share the logs.*
|
||||||
|
- *In the webadmin, the error message contains a link to the relevant log page. On that page, you will be able to 'Share with Yunopaste'. If you missed it, the logs of previous operations are also available under Tools > Logs.*
|
||||||
|
- *In command line, the command to share the logs is displayed at the end of the operation and looks like `yunohost log display [log name] --share`. If you missed it, you can find the log ID of a previous operation using `yunohost log list`.*
|
||||||
|
|
||||||
|
*After sharing the log, please copypaste directly the link provided by YunoHost (to help readability, no need to copypaste the entire content of the log here, just the link is enough...)*
|
||||||
|
|
||||||
|
*If applicable and useful, add screenshots to help explain your problem.*
|
16
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
16
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
## Problem
|
||||||
|
|
||||||
|
- *Description of why you made this PR*
|
||||||
|
|
||||||
|
## Solution
|
||||||
|
|
||||||
|
- *And how do you fix that problem*
|
||||||
|
|
||||||
|
## PR Status
|
||||||
|
|
||||||
|
- [ ] Code finished and ready to be reviewed/tested
|
||||||
|
- [ ] The fix/enhancement were manually tested (if applicable)
|
||||||
|
|
||||||
|
## Automatic tests
|
||||||
|
|
||||||
|
Automatic tests can be triggered on https://ci-apps-dev.yunohost.org/ *after creating the PR*, by commenting "!testme", "!gogogadgetoci" or "By the power of systemd, I invoke The Great App CI to test this Pull Request!". (N.B. : for this to work you need to be a member of the Yunohost-Apps organization)
|
|
@ -1,7 +0,0 @@
|
||||||
test:
|
|
||||||
script:
|
|
||||||
- apt-get update
|
|
||||||
- apt-get install -yy python git
|
|
||||||
- git clone https://github.com/YunoHost/package_linter
|
|
||||||
- pip install report
|
|
||||||
- python package_linter/package_linter.py .
|
|
|
@ -1,7 +0,0 @@
|
||||||
language: python
|
|
||||||
install: ""
|
|
||||||
python:
|
|
||||||
- "3.5"
|
|
||||||
script:
|
|
||||||
- git clone https://github.com/YunoHost/package_linter
|
|
||||||
- python package_linter/package_linter.py .
|
|
62
README.md
62
README.md
|
@ -1,3 +1,8 @@
|
||||||
|
<!--
|
||||||
|
N.B.: This README was automatically generated by https://github.com/YunoHost/apps/tree/master/tools/README-generator
|
||||||
|
It shall NOT be edited by hand.
|
||||||
|
-->
|
||||||
|
|
||||||
# The Lounge for YunoHost
|
# The Lounge for YunoHost
|
||||||
|
|
||||||
[](https://dash.yunohost.org/appci/app/thelounge)  
|
[](https://dash.yunohost.org/appci/app/thelounge)  
|
||||||
|
@ -5,56 +10,33 @@
|
||||||
|
|
||||||
*[Lire ce readme en français.](./README_fr.md)*
|
*[Lire ce readme en français.](./README_fr.md)*
|
||||||
|
|
||||||
> *This package allow you to install The Lounge quickly and simply on a YunoHost server.
|
> *This package allows you to install The Lounge quickly and simply on a YunoHost server.
|
||||||
If you don't have YunoHost, please see [here](https://yunohost.org/#/install) to know how to install and enjoy it.*
|
If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/install) to learn how to install it.*
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
The Lounge is a self-hosted IRC client.
|
Web IRC client
|
||||||
|
|
||||||
**Shipped version:** 4.2.0
|
**Shipped version:** 4.2.0~ynh3
|
||||||
|
|
||||||
|
**Demo:** https://demo.thelounge.chat/
|
||||||
|
|
||||||
## Screenshots
|
## Screenshots
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Demo
|
## Documentation and resources
|
||||||
|
|
||||||
* [Official demo](https://demo.thelounge.chat/)
|
* Official app website: https://example.com
|
||||||
|
* Official user documentation: https://yunohost.org/en/app_thelounge
|
||||||
|
* Official admin documentation: https://thelounge.chat/docs
|
||||||
|
* Upstream app code repository: https://github.com/thelounge/thelounge
|
||||||
|
* YunoHost documentation for this app: https://yunohost.org/app_thelounge
|
||||||
|
* Report a bug: https://github.com/YunoHost-Apps/thelounge_ynh/issues
|
||||||
|
|
||||||
## Configuration
|
## Developer info
|
||||||
|
|
||||||
How to configure this app: by an admin panel.
|
Please send your pull request to the [testing branch](https://github.com/YunoHost-Apps/thelounge_ynh/tree/testing).
|
||||||
|
|
||||||
## Documentation
|
|
||||||
|
|
||||||
* Official documentation: https://thelounge.chat/docs
|
|
||||||
* YunoHost documentation: https://yunohost.org/#/app_thelounge
|
|
||||||
|
|
||||||
## YunoHost specific features
|
|
||||||
|
|
||||||
#### Multi-users support
|
|
||||||
|
|
||||||
* Are LDAP supported? **Yes**
|
|
||||||
* Can the app be used by multiple users? **Yes**
|
|
||||||
|
|
||||||
#### Supported architectures
|
|
||||||
|
|
||||||
* x86-64 - [](https://ci-apps.yunohost.org/ci/apps/thelounge/)
|
|
||||||
* ARMv8-A - [](https://ci-apps-arm.yunohost.org/ci/apps/thelounge/)
|
|
||||||
|
|
||||||
## Links
|
|
||||||
|
|
||||||
* Report a bug: https://github.com/YunoHost-Apps/thelounge_ynh/issues
|
|
||||||
* App website: https://thelounge.chat/
|
|
||||||
* Upstream app repository: https://github.com/thelounge/thelounge
|
|
||||||
* YunoHost website: https://yunohost.org/
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Developers info
|
|
||||||
|
|
||||||
Please do your pull request to the [testing branch](https://github.com/YunoHost-Apps/thelounge_ynh/tree/testing).
|
|
||||||
|
|
||||||
To try the testing branch, please proceed like that.
|
To try the testing branch, please proceed like that.
|
||||||
```
|
```
|
||||||
|
@ -62,3 +44,5 @@ sudo yunohost app install https://github.com/YunoHost-Apps/thelounge_ynh/tree/te
|
||||||
or
|
or
|
||||||
sudo yunohost app upgrade thelounge -u https://github.com/YunoHost-Apps/thelounge_ynh/tree/testing --debug
|
sudo yunohost app upgrade thelounge -u https://github.com/YunoHost-Apps/thelounge_ynh/tree/testing --debug
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**More info regarding app packaging:** https://yunohost.org/packaging_apps
|
59
README_fr.md
59
README_fr.md
|
@ -1,55 +1,34 @@
|
||||||
# The Lounge pour YunoHost
|
# The Lounge pour YunoHost
|
||||||
|
|
||||||
[](https://dash.yunohost.org/appci/app/thelounge)  
|
[](https://dash.yunohost.org/appci/app/thelounge)  
|
||||||
[](https://install-app.yunohost.org/?app=thelounge)
|
[](https://install-app.yunohost.org/?app=thelounge)
|
||||||
|
|
||||||
*[Read this readme in english.](./README.md)*
|
*[Read this readme in english.](./README.md)*
|
||||||
|
*[Lire ce readme en français.](./README_fr.md)*
|
||||||
|
|
||||||
> *Ce package vous permet d'installer The Lounge rapidement et simplement sur un serveur YunoHost.
|
> *Ce package vous permet d'installer The Lounge 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.*
|
Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour savoir comment l'installer et en profiter.*
|
||||||
|
|
||||||
## Vue d’ensemble
|
## Vue d'ensemble
|
||||||
The Lounge est un client Web IRC auto-hébergé.
|
|
||||||
|
|
||||||
**Version incluse :** 4.2.0
|
Client Web IRC
|
||||||
|
|
||||||
## Captures d’écran
|
**Version incluse :** 4.2.0~ynh3
|
||||||
|
|
||||||

|
**Démo :** https://demo.thelounge.chat/
|
||||||
|
|
||||||
## Démo
|
## Captures d'écran
|
||||||
|
|
||||||
* [Démo officielle](https://demo.thelounge.chat/)
|

|
||||||
|
|
||||||
## Configuration
|
## Documentations et ressources
|
||||||
|
|
||||||
Comment configurer cette application : via le panneau d’administration.
|
* Site officiel de l'app : https://example.com
|
||||||
|
* Documentation officielle utilisateur : https://yunohost.org/en/app_thelounge
|
||||||
## Documentation
|
* Documentation officielle de l'admin : https://thelounge.chat/docs
|
||||||
|
* Dépôt de code officiel de l'app : https://github.com/thelounge/thelounge
|
||||||
* Documentation officielle : https://thelounge.chat/docs
|
* Documentation YunoHost pour cette app : https://yunohost.org/app_thelounge
|
||||||
* Documentation YunoHost : https://yunohost.org/#/app_thelounge_fr
|
* Signaler un bug : https://github.com/YunoHost-Apps/thelounge_ynh/issues
|
||||||
|
|
||||||
## Caractéristiques spécifiques YunoHost
|
|
||||||
|
|
||||||
#### Support multi-utilisateurs
|
|
||||||
|
|
||||||
* L’authentification LDAP est-elle prise en charge ? **Oui**
|
|
||||||
* L’application peut-elle être utilisée par plusieurs utilisateurs ? **Oui**
|
|
||||||
|
|
||||||
#### Architectures supportées
|
|
||||||
|
|
||||||
* x86-64 - [](https://ci-apps.yunohost.org/ci/apps/thelounge/)
|
|
||||||
* ARMv8-A - [](https://ci-apps-arm.yunohost.org/ci/apps/thelounge/)
|
|
||||||
|
|
||||||
## Liens
|
|
||||||
|
|
||||||
* Signaler un bug : https://github.com/YunoHost-Apps/thelounge_ynh/issues
|
|
||||||
* Site de l’application : https://thelounge.chat/
|
|
||||||
* Dépôt de l’application principale : https://github.com/thelounge/thelounge
|
|
||||||
* Site web YunoHost : https://yunohost.org/
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Informations pour les développeurs
|
## Informations pour les développeurs
|
||||||
|
|
||||||
|
@ -61,3 +40,5 @@ sudo yunohost app install https://github.com/YunoHost-Apps/thelounge_ynh/tree/te
|
||||||
ou
|
ou
|
||||||
sudo yunohost app upgrade thelounge -u https://github.com/YunoHost-Apps/thelounge_ynh/tree/testing --debug
|
sudo yunohost app upgrade thelounge -u https://github.com/YunoHost-Apps/thelounge_ynh/tree/testing --debug
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Plus d'infos sur le packaging d'applications :** https://yunohost.org/packaging_apps
|
|
@ -1,15 +1,9 @@
|
||||||
# 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
|
||||||
; Manifest
|
; Manifest
|
||||||
domain="domain.tld" (DOMAIN)
|
domain="domain.tld"
|
||||||
path="/path" (PATH)
|
path="/path"
|
||||||
is_public=1 (PUBLIC|public=1|private=0)
|
is_public=1
|
||||||
password="pass"
|
password="password"
|
||||||
port="9000" (PORT)
|
|
||||||
; Checks
|
; Checks
|
||||||
pkg_linter=1
|
pkg_linter=1
|
||||||
setup_sub_dir=1
|
setup_sub_dir=1
|
||||||
|
@ -18,10 +12,9 @@
|
||||||
setup_private=1
|
setup_private=1
|
||||||
setup_public=1
|
setup_public=1
|
||||||
upgrade=1
|
upgrade=1
|
||||||
upgrade=1 from_commit=bd00c8e3ce43563f33fde073cf36b997c348d05c
|
#upgrade=1 from_commit=bd00c8e3ce43563f33fde073cf36b997c348d05c
|
||||||
backup_restore=1
|
backup_restore=1
|
||||||
multi_instance=0
|
multi_instance=0
|
||||||
port_already_use=0
|
|
||||||
change_url=1
|
change_url=1
|
||||||
;;; Options
|
;;; Options
|
||||||
Email=
|
Email=
|
||||||
|
|
453
conf/config-dist.js
Normal file
453
conf/config-dist.js
Normal file
|
@ -0,0 +1,453 @@
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
//
|
||||||
|
// Set the server mode.
|
||||||
|
// Public servers does not require authentication.
|
||||||
|
//
|
||||||
|
// Set to 'false' to enable users.
|
||||||
|
//
|
||||||
|
// @type boolean
|
||||||
|
// @default false
|
||||||
|
//
|
||||||
|
public: false,
|
||||||
|
|
||||||
|
//
|
||||||
|
// IP address or hostname for the web server to listen on.
|
||||||
|
// Setting this to undefined will listen on all interfaces.
|
||||||
|
//
|
||||||
|
// For UNIX domain sockets, use unix:/absolute/path/to/file.sock.
|
||||||
|
//
|
||||||
|
// @type string
|
||||||
|
// @default undefined
|
||||||
|
//
|
||||||
|
host: undefined,
|
||||||
|
|
||||||
|
//
|
||||||
|
// Set the port to listen on.
|
||||||
|
//
|
||||||
|
// @type int
|
||||||
|
// @default 9000
|
||||||
|
//
|
||||||
|
port: __PORT__,
|
||||||
|
|
||||||
|
//
|
||||||
|
// Set the local IP to bind to for outgoing connections. Leave to undefined
|
||||||
|
// to let the operating system pick its preferred one.
|
||||||
|
//
|
||||||
|
// @type string
|
||||||
|
// @default undefined
|
||||||
|
//
|
||||||
|
bind: undefined,
|
||||||
|
|
||||||
|
//
|
||||||
|
// Sets whether the server is behind a reverse proxy and should honor the
|
||||||
|
// X-Forwarded-For header or not.
|
||||||
|
//
|
||||||
|
// @type boolean
|
||||||
|
// @default false
|
||||||
|
//
|
||||||
|
reverseProxy: true,
|
||||||
|
|
||||||
|
//
|
||||||
|
// Set the default theme.
|
||||||
|
// Find out how to add new themes at https://thelounge.github.io/docs/plugins/themes.html
|
||||||
|
//
|
||||||
|
// @type string
|
||||||
|
// @default "example"
|
||||||
|
//
|
||||||
|
// theme: "example",
|
||||||
|
|
||||||
|
//
|
||||||
|
// Prefetch URLs
|
||||||
|
//
|
||||||
|
// If enabled, The Lounge will try to load thumbnails and site descriptions from
|
||||||
|
// URLs posted in channels.
|
||||||
|
//
|
||||||
|
// @type boolean
|
||||||
|
// @default false
|
||||||
|
//
|
||||||
|
prefetch: true,
|
||||||
|
|
||||||
|
//
|
||||||
|
// Store and proxy prefetched images and thumbnails.
|
||||||
|
// This improves security and privacy by not exposing client IP address,
|
||||||
|
// and always loading images from The Lounge instance and making all assets secure,
|
||||||
|
// which in result fixes mixed content warnings.
|
||||||
|
//
|
||||||
|
// If storage is enabled, The Lounge will fetch and store images and thumbnails
|
||||||
|
// in the `${THELOUNGE_HOME}/storage` folder.
|
||||||
|
//
|
||||||
|
// Images are deleted when they are no longer referenced by any message (controlled by maxHistory),
|
||||||
|
// and the folder is cleaned up on every The Lounge restart.
|
||||||
|
//
|
||||||
|
// @type boolean
|
||||||
|
// @default false
|
||||||
|
//
|
||||||
|
prefetchStorage: true,
|
||||||
|
|
||||||
|
//
|
||||||
|
// Prefetch URLs Image Preview size limit
|
||||||
|
//
|
||||||
|
// If prefetch is enabled, The Lounge will only display content under the maximum size.
|
||||||
|
// Specified value is in kilobytes. Default value is 2048 kilobytes.
|
||||||
|
//
|
||||||
|
// @type int
|
||||||
|
// @default 2048
|
||||||
|
//
|
||||||
|
prefetchMaxImageSize: 2048,
|
||||||
|
|
||||||
|
//
|
||||||
|
// Display network
|
||||||
|
//
|
||||||
|
// If set to false network settings will not be shown in the login form.
|
||||||
|
//
|
||||||
|
// @type boolean
|
||||||
|
// @default true
|
||||||
|
//
|
||||||
|
displayNetwork: true,
|
||||||
|
|
||||||
|
//
|
||||||
|
// Lock network
|
||||||
|
//
|
||||||
|
// If set to true, users will not be able to modify host, port and tls
|
||||||
|
// settings and will be limited to the configured network.
|
||||||
|
//
|
||||||
|
// @type boolean
|
||||||
|
// @default false
|
||||||
|
//
|
||||||
|
lockNetwork: false,
|
||||||
|
|
||||||
|
//
|
||||||
|
// Hex IP
|
||||||
|
//
|
||||||
|
// If enabled, clients' username will be set to their IP encoded has hex.
|
||||||
|
// This is done to share the real user IP address with the server for host masking purposes.
|
||||||
|
//
|
||||||
|
// @type boolean
|
||||||
|
// @default false
|
||||||
|
//
|
||||||
|
useHexIp: false,
|
||||||
|
|
||||||
|
//
|
||||||
|
// WEBIRC support
|
||||||
|
//
|
||||||
|
// If enabled, The Lounge will pass the connecting user's host and IP to the
|
||||||
|
// IRC server. Note that this requires to obtain a password from the IRC network
|
||||||
|
// The Lounge will be connecting to and generally involves a lot of trust from the
|
||||||
|
// network you are connecting to.
|
||||||
|
//
|
||||||
|
// Format (standard): {"irc.example.net": "hunter1", "irc.example.org": "passw0rd"}
|
||||||
|
// Format (function):
|
||||||
|
// {"irc.example.net": function(client, args, trusted) {
|
||||||
|
// // here, we return a webirc object fed directly to `irc-framework`
|
||||||
|
// return {username: "thelounge", password: "hunter1", address: args.ip, hostname: "webirc/"+args.hostname};
|
||||||
|
// }}
|
||||||
|
//
|
||||||
|
// @type string | function(client, args):object(webirc)
|
||||||
|
// @default null
|
||||||
|
webirc: null,
|
||||||
|
|
||||||
|
//
|
||||||
|
// Message logging
|
||||||
|
// Logging is also controlled per user individually (logs variable)
|
||||||
|
// Leave the array empty to disable all logging globally
|
||||||
|
//
|
||||||
|
// text: Text file per network/channel in user folder
|
||||||
|
// sqlite: Messages are stored in SQLite, this allows them to be reloaded on server restart
|
||||||
|
//
|
||||||
|
// @type array
|
||||||
|
// @default ["sqlite", "text"]
|
||||||
|
//
|
||||||
|
messageStorage: ["sqlite"],
|
||||||
|
|
||||||
|
//
|
||||||
|
// Log settings
|
||||||
|
//
|
||||||
|
// Logging has to be enabled per user. If enabled, logs will be stored in
|
||||||
|
// the 'logs/<user>/<network>/' folder.
|
||||||
|
//
|
||||||
|
// @type object
|
||||||
|
// @default {}
|
||||||
|
//
|
||||||
|
logs: {
|
||||||
|
//
|
||||||
|
// Timestamp format
|
||||||
|
//
|
||||||
|
// @type string
|
||||||
|
// @default "YYYY-MM-DD HH:mm:ss"
|
||||||
|
//
|
||||||
|
format: "YYYY-MM-DD HH:mm:ss",
|
||||||
|
|
||||||
|
//
|
||||||
|
// Timezone
|
||||||
|
//
|
||||||
|
// @type string
|
||||||
|
// @default "UTC+00:00"
|
||||||
|
//
|
||||||
|
timezone: "UTC+00:00",
|
||||||
|
},
|
||||||
|
|
||||||
|
//
|
||||||
|
// Maximum number of history lines per channel
|
||||||
|
//
|
||||||
|
// Defines the maximum number of history lines that will be kept in
|
||||||
|
// memory per channel/query, in order to reduce the memory usage of
|
||||||
|
// the server. Setting this to -1 will keep unlimited amount.
|
||||||
|
//
|
||||||
|
// @type integer
|
||||||
|
// @default 10000
|
||||||
|
maxHistory: 10000,
|
||||||
|
|
||||||
|
//
|
||||||
|
// Default values for the 'Connect' form.
|
||||||
|
//
|
||||||
|
// @type object
|
||||||
|
// @default {}
|
||||||
|
//
|
||||||
|
defaults: {
|
||||||
|
//
|
||||||
|
// Name
|
||||||
|
//
|
||||||
|
// @type string
|
||||||
|
// @default "Freenode"
|
||||||
|
//
|
||||||
|
name: "Freenode",
|
||||||
|
|
||||||
|
//
|
||||||
|
// Host
|
||||||
|
//
|
||||||
|
// @type string
|
||||||
|
// @default "chat.freenode.net"
|
||||||
|
//
|
||||||
|
host: "chat.freenode.net",
|
||||||
|
|
||||||
|
//
|
||||||
|
// Port
|
||||||
|
//
|
||||||
|
// @type int
|
||||||
|
// @default 6697
|
||||||
|
//
|
||||||
|
port: 6697,
|
||||||
|
|
||||||
|
//
|
||||||
|
// Password
|
||||||
|
//
|
||||||
|
// @type string
|
||||||
|
// @default ""
|
||||||
|
//
|
||||||
|
password: "",
|
||||||
|
|
||||||
|
//
|
||||||
|
// Enable TLS/SSL
|
||||||
|
//
|
||||||
|
// @type boolean
|
||||||
|
// @default true
|
||||||
|
//
|
||||||
|
tls: true,
|
||||||
|
|
||||||
|
//
|
||||||
|
// Enable certificate verification
|
||||||
|
//
|
||||||
|
// If true, the server certificate is verified against
|
||||||
|
// the list of supplied CAs by your node.js installation.
|
||||||
|
//
|
||||||
|
// @type boolean
|
||||||
|
// @default true
|
||||||
|
//
|
||||||
|
rejectUnauthorized: true,
|
||||||
|
|
||||||
|
//
|
||||||
|
// Nick
|
||||||
|
//
|
||||||
|
// Percent sign (%) will be replaced into a random number from 0 to 9.
|
||||||
|
// For example, Guest%%% will become Guest123 on page load.
|
||||||
|
//
|
||||||
|
// @type string
|
||||||
|
// @default "thelounge%%"
|
||||||
|
//
|
||||||
|
nick: "thelounge%%",
|
||||||
|
|
||||||
|
//
|
||||||
|
// Username
|
||||||
|
//
|
||||||
|
// @type string
|
||||||
|
// @default "thelounge"
|
||||||
|
//
|
||||||
|
username: "thelounge",
|
||||||
|
|
||||||
|
//
|
||||||
|
// Real Name
|
||||||
|
//
|
||||||
|
// @type string
|
||||||
|
// @default "The Lounge User"
|
||||||
|
//
|
||||||
|
realname: "The Lounge User",
|
||||||
|
|
||||||
|
//
|
||||||
|
// Channels
|
||||||
|
// This is a comma-separated list.
|
||||||
|
//
|
||||||
|
// @type string
|
||||||
|
// @default "#thelounge"
|
||||||
|
//
|
||||||
|
join: "#thelounge",
|
||||||
|
},
|
||||||
|
|
||||||
|
//
|
||||||
|
// Set socket.io transports
|
||||||
|
//
|
||||||
|
// @type array
|
||||||
|
// @default ["polling", "websocket"]
|
||||||
|
//
|
||||||
|
transports: ["polling", "websocket"],
|
||||||
|
|
||||||
|
//
|
||||||
|
// Run The Lounge using encrypted HTTP/2.
|
||||||
|
// This will fallback to regular HTTPS if HTTP/2 is not supported.
|
||||||
|
//
|
||||||
|
// @type object
|
||||||
|
// @default {}
|
||||||
|
//
|
||||||
|
https: {
|
||||||
|
//
|
||||||
|
// Enable HTTP/2 / HTTPS support.
|
||||||
|
//
|
||||||
|
// @type boolean
|
||||||
|
// @default false
|
||||||
|
//
|
||||||
|
enable: false,
|
||||||
|
|
||||||
|
//
|
||||||
|
// Path to the key.
|
||||||
|
//
|
||||||
|
// @type string
|
||||||
|
// @example "sslcert/key.pem"
|
||||||
|
// @default ""
|
||||||
|
//
|
||||||
|
key: "",
|
||||||
|
|
||||||
|
//
|
||||||
|
// Path to the certificate.
|
||||||
|
//
|
||||||
|
// @type string
|
||||||
|
// @example "sslcert/key-cert.pem"
|
||||||
|
// @default ""
|
||||||
|
//
|
||||||
|
certificate: "",
|
||||||
|
|
||||||
|
//
|
||||||
|
// Path to the CA bundle.
|
||||||
|
//
|
||||||
|
// @type string
|
||||||
|
// @example "sslcert/bundle.pem"
|
||||||
|
// @default ""
|
||||||
|
//
|
||||||
|
ca: "",
|
||||||
|
},
|
||||||
|
|
||||||
|
//
|
||||||
|
// Default quit and part message if none is provided.
|
||||||
|
//
|
||||||
|
// @type string
|
||||||
|
// @default "The Lounge - https://thelounge.chat"
|
||||||
|
//
|
||||||
|
leaveMessage: "The Lounge - https://thelounge.chat",
|
||||||
|
|
||||||
|
//
|
||||||
|
// Run The Lounge with identd support.
|
||||||
|
//
|
||||||
|
// @type object
|
||||||
|
// @default {}
|
||||||
|
//
|
||||||
|
identd: {
|
||||||
|
//
|
||||||
|
// Run the identd daemon on server start.
|
||||||
|
//
|
||||||
|
// @type boolean
|
||||||
|
// @default false
|
||||||
|
//
|
||||||
|
enable: false,
|
||||||
|
|
||||||
|
//
|
||||||
|
// Port to listen for ident requests.
|
||||||
|
//
|
||||||
|
// @type int
|
||||||
|
// @default 113
|
||||||
|
//
|
||||||
|
port: 113,
|
||||||
|
},
|
||||||
|
|
||||||
|
//
|
||||||
|
// Enable oidentd support using the specified file
|
||||||
|
//
|
||||||
|
// Example: oidentd: "~/.oidentd.conf",
|
||||||
|
//
|
||||||
|
// @type string
|
||||||
|
// @default null
|
||||||
|
//
|
||||||
|
oidentd: null,
|
||||||
|
|
||||||
|
//
|
||||||
|
// LDAP authentication settings (only available if public=false)
|
||||||
|
// @type object
|
||||||
|
// @default {}
|
||||||
|
//
|
||||||
|
// The authentication process works as follows:
|
||||||
|
//
|
||||||
|
// 1. Lounge connects to the LDAP server with its system credentials
|
||||||
|
// 2. It performs a LDAP search query to find the full DN associated to the
|
||||||
|
// user requesting to log in.
|
||||||
|
// 3. Lounge tries to connect a second time, but this time using the user's
|
||||||
|
// DN and password. Auth is validated iff this connection is successful.
|
||||||
|
//
|
||||||
|
// The search query takes a couple of parameters in `searchDN`:
|
||||||
|
// - a base DN `searchDN/base`. Only children nodes of this DN will be likely
|
||||||
|
// to be returned;
|
||||||
|
// - a search scope `searchDN/scope` (see LDAP documentation);
|
||||||
|
// - the query itself, build as (&(<primaryKey>=<username>) <filter>)
|
||||||
|
// where <username> is the user name provided in the log in request,
|
||||||
|
// <primaryKey> is provided by the config and <fitler> is a filtering complement
|
||||||
|
// also given in the config, to filter for instance only for nodes of type
|
||||||
|
// inetOrgPerson, or whatever LDAP search allows.
|
||||||
|
//
|
||||||
|
// Alternatively, you can specify the `bindDN` parameter. This will make the lounge
|
||||||
|
// ignore searchDN options and assume that the user DN is always:
|
||||||
|
// <bindDN>,<primaryKey>=<username>
|
||||||
|
// where <username> is the user name provided in the log in request, and <bindDN>
|
||||||
|
// and <primaryKey> are provided by the config.
|
||||||
|
//
|
||||||
|
ldap: {
|
||||||
|
//
|
||||||
|
// Enable LDAP user authentication
|
||||||
|
//
|
||||||
|
// @type boolean
|
||||||
|
// @default false
|
||||||
|
//
|
||||||
|
enable: true,
|
||||||
|
|
||||||
|
//
|
||||||
|
// LDAP server URL
|
||||||
|
//
|
||||||
|
// @type string
|
||||||
|
//
|
||||||
|
url: "ldap://127.0.0.1",
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// LDAP base dn, alternative to searchDN
|
||||||
|
//
|
||||||
|
// @type string
|
||||||
|
//
|
||||||
|
baseDN: "ou=users,dc=yunohost,dc=org",
|
||||||
|
|
||||||
|
//
|
||||||
|
// LDAP primary key
|
||||||
|
//
|
||||||
|
// @type string
|
||||||
|
// @default "uid"
|
||||||
|
//
|
||||||
|
primaryKey: "uid"
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
629
conf/config.js
629
conf/config.js
|
@ -1,416 +1,431 @@
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
//
|
// ## Server settings
|
||||||
// Set the server mode.
|
|
||||||
// Public servers does not require authentication.
|
|
||||||
//
|
|
||||||
// Set to 'false' to enable users.
|
|
||||||
//
|
|
||||||
// @type boolean
|
|
||||||
// @default false
|
|
||||||
//
|
|
||||||
public: false,
|
|
||||||
|
|
||||||
|
// ### `public`
|
||||||
//
|
//
|
||||||
// IP address or hostname for the web server to listen on.
|
// When set to `true`, The Lounge starts in public mode. When set to `false`,
|
||||||
// Setting this to undefined will listen on all interfaces.
|
// it starts in private mode.
|
||||||
//
|
//
|
||||||
// For UNIX domain sockets, use unix:/absolute/path/to/file.sock.
|
// - A **public server** does not require authentication. Anyone can connect
|
||||||
|
// to IRC networks in this mode. All IRC connections and channel
|
||||||
|
// scrollbacks are lost when a user leaves the client.
|
||||||
|
// - A **private server** requires users to log in. Their IRC connections are
|
||||||
|
// kept even when they are not using or logged in to the client. All joined
|
||||||
|
// channels and scrollbacks are available when they come back.
|
||||||
//
|
//
|
||||||
// @type string
|
// This value is set to `false` by default.
|
||||||
// @default undefined
|
public: true,
|
||||||
|
|
||||||
|
// ### `host`
|
||||||
//
|
//
|
||||||
|
// IP address or hostname for the web server to listen to. For example, set it
|
||||||
|
// to `"127.0.0.1"` to accept connections from localhost only.
|
||||||
|
//
|
||||||
|
// For UNIX domain sockets, use `"unix:/absolute/path/to/file.sock"`.
|
||||||
|
//
|
||||||
|
// This value is set to `undefined` by default to listen on all interfaces.
|
||||||
host: undefined,
|
host: undefined,
|
||||||
|
|
||||||
|
// ### `port`
|
||||||
//
|
//
|
||||||
// Set the port to listen on.
|
// Set the port to listen to.
|
||||||
//
|
|
||||||
// @type int
|
|
||||||
// @default 9000
|
|
||||||
//
|
//
|
||||||
|
// This value is set to `9000` by default.
|
||||||
port: __PORT__,
|
port: __PORT__,
|
||||||
|
|
||||||
|
// ### `bind`
|
||||||
//
|
//
|
||||||
// Set the local IP to bind to for outgoing connections. Leave to undefined
|
// Set the local IP to bind to for outgoing connections.
|
||||||
// to let the operating system pick its preferred one.
|
|
||||||
//
|
|
||||||
// @type string
|
|
||||||
// @default undefined
|
|
||||||
//
|
//
|
||||||
|
// This value is set to `undefined` by default to let the operating system
|
||||||
|
// pick its preferred one.
|
||||||
bind: undefined,
|
bind: undefined,
|
||||||
|
|
||||||
|
// ### `reverseProxy`
|
||||||
//
|
//
|
||||||
// Sets whether the server is behind a reverse proxy and should honor the
|
// When set to `true`, The Lounge is marked as served behind a reverse proxy
|
||||||
// X-Forwarded-For header or not.
|
// and will honor the `X-Forwarded-For` header.
|
||||||
//
|
|
||||||
// @type boolean
|
|
||||||
// @default false
|
|
||||||
//
|
//
|
||||||
|
// This value is set to `false` by default.
|
||||||
reverseProxy: true,
|
reverseProxy: true,
|
||||||
|
|
||||||
|
// ### `maxHistory`
|
||||||
//
|
//
|
||||||
// Set the default theme.
|
// Defines the maximum number of history lines that will be kept in memory per
|
||||||
// Find out how to add new themes at https://thelounge.github.io/docs/plugins/themes.html
|
// channel/query, in order to reduce the memory usage of the server. Setting
|
||||||
|
// this to `-1` will keep unlimited amount.
|
||||||
//
|
//
|
||||||
// @type string
|
// This value is set to `10000` by default.
|
||||||
// @default "example"
|
maxHistory: 10000,
|
||||||
//
|
|
||||||
// theme: "example",
|
|
||||||
|
|
||||||
|
// ### `https`
|
||||||
//
|
//
|
||||||
// Prefetch URLs
|
// These settings are used to run The Lounge's web server using encrypted TLS.
|
||||||
//
|
//
|
||||||
// If enabled, The Lounge will try to load thumbnails and site descriptions from
|
// If you want more control over the webserver,
|
||||||
// URLs posted in channels.
|
// [use a reverse proxy instead](https://thelounge.chat/docs/guides/reverse-proxies).
|
||||||
//
|
//
|
||||||
// @type boolean
|
// The available keys for the `https` object are:
|
||||||
// @default false
|
|
||||||
//
|
//
|
||||||
prefetch: true,
|
// - `enable`: when set to `false`, HTTPS support is disabled
|
||||||
|
// and all other values are ignored.
|
||||||
|
// - `key`: Path to the private key file.
|
||||||
|
// - `certificate`: Path to the certificate.
|
||||||
|
// - `ca`: Path to the CA bundle.
|
||||||
|
//
|
||||||
|
// The value of `enable` is set to `false` to disable HTTPS by default, in
|
||||||
|
// which case the other two string settings are ignored.
|
||||||
|
https: {
|
||||||
|
enable: false,
|
||||||
|
key: "",
|
||||||
|
certificate: "",
|
||||||
|
ca: "",
|
||||||
|
},
|
||||||
|
|
||||||
|
// ## Client settings
|
||||||
|
|
||||||
|
// ### `theme`
|
||||||
//
|
//
|
||||||
// Store and proxy prefetched images and thumbnails.
|
// Set the default theme to serve to new users. They will be able to select a
|
||||||
// This improves security and privacy by not exposing client IP address,
|
// different one in their client settings among those available.
|
||||||
// and always loading images from The Lounge instance and making all assets secure,
|
//
|
||||||
// which in result fixes mixed content warnings.
|
// The Lounge ships with two themes (`default` and `morning`) and can be
|
||||||
|
// extended by installing more themes. Read more about how to manage them
|
||||||
|
// [here](https://thelounge.chat/docs/guides/theme-creation).
|
||||||
|
//
|
||||||
|
// This value needs to be the package name and not the display name. For
|
||||||
|
// example, the value for Morning would be `morning`, and the value for
|
||||||
|
// Solarized would be `thelounge-theme-solarized`.
|
||||||
|
//
|
||||||
|
// This value is set to `"default"` by default.
|
||||||
|
theme: "default",
|
||||||
|
|
||||||
|
// ### `prefetch`
|
||||||
|
//
|
||||||
|
// When set to `true`, The Lounge will load thumbnails and site descriptions
|
||||||
|
// from URLs posted in channels and private messages.
|
||||||
|
//
|
||||||
|
// This value is set to `false` by default.
|
||||||
|
prefetch: false,
|
||||||
|
|
||||||
|
// ### `disableMediaPreview`
|
||||||
|
//
|
||||||
|
// When set to `true`, The Lounge will not preview media (images, video and
|
||||||
|
// audio) hosted on third-party sites. This ensures the client does not
|
||||||
|
// make any requests to external sites. If `prefetchStorage` is enabled,
|
||||||
|
// images proxied via the The Lounge will be previewed.
|
||||||
|
//
|
||||||
|
// This has no effect if `prefetch` is set to `false`.
|
||||||
|
//
|
||||||
|
// This value is set to `false` by default.
|
||||||
|
disableMediaPreview: false,
|
||||||
|
|
||||||
|
// ### `prefetchStorage`
|
||||||
|
|
||||||
|
// When set to `true`, The Lounge will store and proxy prefetched images and
|
||||||
|
// thumbnails on the filesystem rather than directly display the content at
|
||||||
|
// the original URLs.
|
||||||
|
//
|
||||||
|
// This option primarily exists to resolve mixed content warnings by not
|
||||||
|
// loading images from http hosts. This option does not work for video
|
||||||
|
// or audio as The Lounge will only load these from https hosts.
|
||||||
//
|
//
|
||||||
// If storage is enabled, The Lounge will fetch and store images and thumbnails
|
// If storage is enabled, The Lounge will fetch and store images and thumbnails
|
||||||
// in the `${THELOUNGE_HOME}/storage` folder.
|
// in the `${THELOUNGE_HOME}/storage` folder.
|
||||||
//
|
//
|
||||||
// Images are deleted when they are no longer referenced by any message (controlled by maxHistory),
|
// Images are deleted when they are no longer referenced by any message
|
||||||
// and the folder is cleaned up on every The Lounge restart.
|
// (controlled by `maxHistory`), and the folder is cleaned up when The Lounge
|
||||||
//
|
// restarts.
|
||||||
// @type boolean
|
|
||||||
// @default false
|
|
||||||
//
|
//
|
||||||
|
// This value is set to `false` by default.
|
||||||
prefetchStorage: true,
|
prefetchStorage: true,
|
||||||
|
|
||||||
|
// ### `prefetchMaxImageSize`
|
||||||
//
|
//
|
||||||
// Prefetch URLs Image Preview size limit
|
// When `prefetch` is enabled, images will only be displayed if their file
|
||||||
//
|
// size does not exceed this limit.
|
||||||
// If prefetch is enabled, The Lounge will only display content under the maximum size.
|
|
||||||
// Specified value is in kilobytes. Default value is 2048 kilobytes.
|
|
||||||
//
|
|
||||||
// @type int
|
|
||||||
// @default 2048
|
|
||||||
//
|
//
|
||||||
|
// This value is set to `2048` kilobytes by default.
|
||||||
prefetchMaxImageSize: 2048,
|
prefetchMaxImageSize: 2048,
|
||||||
|
|
||||||
|
// ### `fileUpload`
|
||||||
//
|
//
|
||||||
// Lock network
|
// Allow uploading files to the server hosting The Lounge.
|
||||||
//
|
//
|
||||||
// If set to true, users will not be able to modify host, port and tls
|
// Files are stored in the `${THELOUNGE_HOME}/uploads` folder, do not expire,
|
||||||
// settings and will be limited to the configured network.
|
// and are not removed by The Lounge. This may cause issues depending on your
|
||||||
|
// hardware, for example in terms of disk usage.
|
||||||
//
|
//
|
||||||
// @type boolean
|
// The available keys for the `fileUpload` object are:
|
||||||
// @default false
|
|
||||||
//
|
//
|
||||||
lockNetwork: false,
|
// - `enable`: When set to `true`, files can be uploaded on the client with a
|
||||||
|
// drag-and-drop or using the upload dialog.
|
||||||
|
// - `maxFileSize`: When file upload is enabled, users sending files above
|
||||||
|
// this limit will be prompted with an error message in their browser. A value of
|
||||||
|
// `-1` disables the file size limit and allows files of any size. **Use at
|
||||||
|
// your own risk.** This value is set to `10240` kilobytes by default.
|
||||||
|
// - `baseUrl`: If you want change the URL where uploaded files are accessed,
|
||||||
|
// you can set this option to `"https://example.com/folder/"` and the final URL
|
||||||
|
// would look like `"https://example.com/folder/aabbccddeeff1234/name.png"`.
|
||||||
|
// If you use this option, you must have a reverse proxy configured,
|
||||||
|
// to correctly proxy the uploads URLs back to The Lounge.
|
||||||
|
// This value is set to `null` by default.
|
||||||
|
fileUpload: {
|
||||||
|
enable: false,
|
||||||
|
maxFileSize: 10240,
|
||||||
|
baseUrl: null,
|
||||||
|
},
|
||||||
|
|
||||||
|
// ### `transports`
|
||||||
//
|
//
|
||||||
// Hex IP
|
// Set `socket.io` transports.
|
||||||
//
|
//
|
||||||
// If enabled, clients' username will be set to their IP encoded has hex.
|
// This value is set to `["polling", "websocket"]` by default.
|
||||||
// This is done to share the real user IP address with the server for host masking purposes.
|
transports: ["polling", "websocket"],
|
||||||
//
|
|
||||||
// @type boolean
|
|
||||||
// @default false
|
|
||||||
//
|
|
||||||
useHexIp: false,
|
|
||||||
|
|
||||||
|
// ### `leaveMessage`
|
||||||
//
|
//
|
||||||
// WEBIRC support
|
// Set users' default `quit` and `part` messages if they are not providing
|
||||||
|
// one.
|
||||||
//
|
//
|
||||||
// If enabled, The Lounge will pass the connecting user's host and IP to the
|
// This value is set to `"The Lounge - https://thelounge.chat"` by
|
||||||
// IRC server. Note that this requires to obtain a password from the IRC network
|
// default.
|
||||||
// The Lounge will be connecting to and generally involves a lot of trust from the
|
leaveMessage: "The Lounge - https://thelounge.chat",
|
||||||
// network you are connecting to.
|
|
||||||
//
|
|
||||||
// Format (standard): {"irc.example.net": "hunter1", "irc.example.org": "passw0rd"}
|
|
||||||
// Format (function):
|
|
||||||
// {"irc.example.net": function(client, args, trusted) {
|
|
||||||
// // here, we return a webirc object fed directly to `irc-framework`
|
|
||||||
// return {username: "thelounge", password: "hunter1", address: args.ip, hostname: "webirc/"+args.hostname};
|
|
||||||
// }}
|
|
||||||
//
|
|
||||||
// @type string | function(client, args):object(webirc)
|
|
||||||
// @default null
|
|
||||||
webirc: null,
|
|
||||||
|
|
||||||
//
|
// ## Default network
|
||||||
// Message logging
|
|
||||||
// Logging is also controlled per user individually (logs variable)
|
|
||||||
// Leave the array empty to disable all logging globally
|
|
||||||
//
|
|
||||||
// text: Text file per network/channel in user folder
|
|
||||||
// sqlite: Messages are stored in SQLite, this allows them to be reloaded on server restart
|
|
||||||
//
|
|
||||||
// @type array
|
|
||||||
// @default ["sqlite", "text"]
|
|
||||||
//
|
|
||||||
messageStorage: ["sqlite"],
|
|
||||||
|
|
||||||
|
// ### `defaults`
|
||||||
//
|
//
|
||||||
// Maximum number of history lines per channel
|
// Specifies default network information that will be used as placeholder
|
||||||
|
// values in the *Connect* window.
|
||||||
//
|
//
|
||||||
// Defines the maximum number of history lines that will be kept in
|
// The available keys for the `defaults` object are:
|
||||||
// memory per channel/query, in order to reduce the memory usage of
|
|
||||||
// the server. Setting this to -1 will keep unlimited amount.
|
|
||||||
//
|
//
|
||||||
// @type integer
|
// - `name`: Name to display in the channel list of The Lounge. This value is
|
||||||
// @default 10000
|
// not forwarded to the IRC network.
|
||||||
maxHistory: 10000,
|
// - `host`: IP address or hostname of the IRC server.
|
||||||
|
// - `port`: Usually 6667 for unencrypted connections and 6697 for
|
||||||
|
// connections encrypted with TLS.
|
||||||
|
// - `password`: Connection password. If the server supports SASL capability,
|
||||||
|
// then this password will be used in SASL authentication.
|
||||||
|
// - `tls`: Enable TLS connections
|
||||||
|
// - `rejectUnauthorized`: Whether the server certificate should be verified
|
||||||
|
// against the list of supplied Certificate Authorities (CAs) by your
|
||||||
|
// Node.js installation.
|
||||||
|
// - `nick`: Nick name. Percent signs (`%`) will be replaced by random
|
||||||
|
// numbers from 0 to 9. For example, `Guest%%%` may become `Guest123`.
|
||||||
|
// - `username`: User name.
|
||||||
|
// - `realname`: Real name.
|
||||||
|
// - `join`: Comma-separated list of channels to auto-join once connected.
|
||||||
//
|
//
|
||||||
// Default values for the 'Connect' form.
|
// This value is set to connect to the official channel of The Lounge on
|
||||||
//
|
// irc.libera.chat by default:
|
||||||
// @type object
|
|
||||||
// @default {}
|
|
||||||
//
|
//
|
||||||
|
// ```js
|
||||||
|
// defaults: {
|
||||||
|
// name: "Libera.Chat",
|
||||||
|
// host: "irc.libera.chat",
|
||||||
|
// port: 6697,
|
||||||
|
// password: "",
|
||||||
|
// tls: true,
|
||||||
|
// rejectUnauthorized: true,
|
||||||
|
// nick: "thelounge%%",
|
||||||
|
// username: "thelounge",
|
||||||
|
// realname: "The Lounge User",
|
||||||
|
// join: "#thelounge"
|
||||||
|
// }
|
||||||
|
// ```
|
||||||
defaults: {
|
defaults: {
|
||||||
//
|
name: "Libera.Chat",
|
||||||
// Name
|
host: "irc.libera.chat",
|
||||||
//
|
|
||||||
// @type string
|
|
||||||
// @default "Freenode"
|
|
||||||
//
|
|
||||||
name: "Freenode",
|
|
||||||
|
|
||||||
//
|
|
||||||
// Host
|
|
||||||
//
|
|
||||||
// @type string
|
|
||||||
// @default "chat.freenode.net"
|
|
||||||
//
|
|
||||||
host: "chat.freenode.net",
|
|
||||||
|
|
||||||
//
|
|
||||||
// Port
|
|
||||||
//
|
|
||||||
// @type int
|
|
||||||
// @default 6697
|
|
||||||
//
|
|
||||||
port: 6697,
|
port: 6697,
|
||||||
|
|
||||||
//
|
|
||||||
// Password
|
|
||||||
//
|
|
||||||
// @type string
|
|
||||||
// @default ""
|
|
||||||
//
|
|
||||||
password: "",
|
password: "",
|
||||||
|
|
||||||
//
|
|
||||||
// Enable TLS/SSL
|
|
||||||
//
|
|
||||||
// @type boolean
|
|
||||||
// @default true
|
|
||||||
//
|
|
||||||
tls: true,
|
tls: true,
|
||||||
|
|
||||||
//
|
|
||||||
// Enable certificate verification
|
|
||||||
//
|
|
||||||
// If true, the server certificate is verified against
|
|
||||||
// the list of supplied CAs by your node.js installation.
|
|
||||||
//
|
|
||||||
// @type boolean
|
|
||||||
// @default true
|
|
||||||
//
|
|
||||||
rejectUnauthorized: true,
|
rejectUnauthorized: true,
|
||||||
|
|
||||||
//
|
|
||||||
// Nick
|
|
||||||
//
|
|
||||||
// Percent sign (%) will be replaced into a random number from 0 to 9.
|
|
||||||
// For example, Guest%%% will become Guest123 on page load.
|
|
||||||
//
|
|
||||||
// @type string
|
|
||||||
// @default "thelounge%%"
|
|
||||||
//
|
|
||||||
nick: "ynhuser|%%%%%",
|
nick: "ynhuser|%%%%%",
|
||||||
|
|
||||||
//
|
|
||||||
// Username
|
|
||||||
//
|
|
||||||
// @type string
|
|
||||||
// @default "thelounge"
|
|
||||||
//
|
|
||||||
username: "thelounge",
|
username: "thelounge",
|
||||||
|
|
||||||
//
|
|
||||||
// Real Name
|
|
||||||
//
|
|
||||||
// @type string
|
|
||||||
// @default "The Lounge User"
|
|
||||||
//
|
|
||||||
realname: "The Lounge User",
|
realname: "The Lounge User",
|
||||||
|
|
||||||
//
|
|
||||||
// Channels
|
|
||||||
// This is a comma-separated list.
|
|
||||||
//
|
|
||||||
// @type string
|
|
||||||
// @default "#thelounge"
|
|
||||||
//
|
|
||||||
join: "#yunohost",
|
join: "#yunohost",
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// ### `lockNetwork`
|
||||||
//
|
//
|
||||||
// Set socket.io transports
|
// When set to `true`, users will not be able to modify host, port and TLS
|
||||||
|
// settings and will be limited to the configured network.
|
||||||
|
// These fields will also be hidden from the UI.
|
||||||
//
|
//
|
||||||
// @type array
|
// This value is set to `false` by default.
|
||||||
// @default ["polling", "websocket"]
|
lockNetwork: false,
|
||||||
//
|
|
||||||
transports: ["polling", "websocket"],
|
|
||||||
|
|
||||||
//
|
// ## User management
|
||||||
// Run The Lounge using encrypted HTTP/2.
|
|
||||||
// This will fallback to regular HTTPS if HTTP/2 is not supported.
|
|
||||||
//
|
|
||||||
// @type object
|
|
||||||
// @default {}
|
|
||||||
//
|
|
||||||
https: {
|
|
||||||
//
|
|
||||||
// Enable HTTP/2 / HTTPS support.
|
|
||||||
//
|
|
||||||
// @type boolean
|
|
||||||
// @default false
|
|
||||||
//
|
|
||||||
enable: false,
|
|
||||||
|
|
||||||
//
|
// ### `messageStorage`
|
||||||
// Path to the key.
|
|
||||||
//
|
|
||||||
// @type string
|
|
||||||
// @example "sslcert/key.pem"
|
|
||||||
// @default ""
|
|
||||||
//
|
|
||||||
key: "",
|
|
||||||
|
|
||||||
//
|
// The Lounge can log user messages, for example to access them later or to
|
||||||
// Path to the certificate.
|
// reload messages on server restart.
|
||||||
//
|
|
||||||
// @type string
|
|
||||||
// @example "sslcert/key-cert.pem"
|
|
||||||
// @default ""
|
|
||||||
//
|
|
||||||
certificate: "",
|
|
||||||
|
|
||||||
//
|
// Set this array with one or multiple values to enable logging:
|
||||||
// Path to the CA bundle.
|
// - `text`: Messages per network and channel will be stored as text files.
|
||||||
//
|
// **Messages will not be reloaded on restart.**
|
||||||
// @type string
|
// - `sqlite`: Messages are stored in SQLite database files, one per user.
|
||||||
// @example "sslcert/bundle.pem"
|
//
|
||||||
// @default ""
|
// Logging can be disabled globally by setting this value to an empty array
|
||||||
//
|
// `[]`. Logging is also controlled per user individually in the `log` key of
|
||||||
ca: "",
|
// their JSON configuration file.
|
||||||
},
|
//
|
||||||
|
// This value is set to `["sqlite", "text"]` by default.
|
||||||
|
messageStorage: ["sqlite"],
|
||||||
|
|
||||||
|
// ### `useHexIp`
|
||||||
//
|
//
|
||||||
// Default quit and part message if none is provided.
|
// When set to `true`, users' IP addresses will be encoded as hex.
|
||||||
//
|
//
|
||||||
// @type string
|
// This is done to share the real user IP address with the server for host
|
||||||
// @default "The Lounge - https://thelounge.chat"
|
// masking purposes. This is encoded in the `username` field and only supports
|
||||||
|
// IPv4.
|
||||||
//
|
//
|
||||||
leaveMessage: "The Lounge - https://thelounge.chat",
|
// This value is set to `false` by default.
|
||||||
|
useHexIp: false,
|
||||||
|
|
||||||
|
// ## WEBIRC support
|
||||||
//
|
//
|
||||||
// Run The Lounge with identd support.
|
// When enabled, The Lounge will pass the connecting user's host and IP to the
|
||||||
|
// IRC server. Note that this requires to obtain a password from the IRC
|
||||||
|
// network that The Lounge will be connecting to and generally involves a lot
|
||||||
|
// of trust from the network you are connecting to.
|
||||||
//
|
//
|
||||||
// @type object
|
// There are 2 ways to configure the `webirc` setting:
|
||||||
// @default {}
|
|
||||||
//
|
//
|
||||||
|
// - **Basic**: an object where keys are IRC hosts and values are passwords.
|
||||||
|
// For example:
|
||||||
|
//
|
||||||
|
// ```json
|
||||||
|
// webirc: {
|
||||||
|
// "irc.example.net": "thisiswebircpassword1",
|
||||||
|
// "irc.example.org": "thisiswebircpassword2",
|
||||||
|
// },
|
||||||
|
// ```
|
||||||
|
//
|
||||||
|
// - **Advanced**: an object where keys are IRC hosts and values are functions
|
||||||
|
// that take two arguments (`webircObj`, `network`) and return an
|
||||||
|
// object to be directly passed to `irc-framework`. `webircObj` contains the
|
||||||
|
// generated object which you can modify. For example:
|
||||||
|
//
|
||||||
|
// ```js
|
||||||
|
// webirc: {
|
||||||
|
// "irc.example.com": (webircObj, network) => {
|
||||||
|
// webircObj.password = "thisiswebircpassword";
|
||||||
|
// webircObj.hostname = `webirc/${webircObj.hostname}`;
|
||||||
|
// return webircObj;
|
||||||
|
// },
|
||||||
|
// },
|
||||||
|
// ```
|
||||||
|
//
|
||||||
|
// This value is set to `null` to disable WEBIRC by default.
|
||||||
|
webirc: null,
|
||||||
|
|
||||||
|
// ## identd and oidentd support
|
||||||
|
|
||||||
|
// ### `identd`
|
||||||
|
//
|
||||||
|
// Run The Lounge with `identd` support.
|
||||||
|
//
|
||||||
|
// The available keys for the `identd` object are:
|
||||||
|
//
|
||||||
|
// - `enable`: When `true`, the identd daemon runs on server start.
|
||||||
|
// - `port`: Port to listen for ident requests.
|
||||||
|
//
|
||||||
|
// The value of `enable` is set to `false` to disable `identd` support by
|
||||||
|
// default, in which case the value of `port` is ignored. The default value of
|
||||||
|
// `port` is 113.
|
||||||
identd: {
|
identd: {
|
||||||
//
|
|
||||||
// Run the identd daemon on server start.
|
|
||||||
//
|
|
||||||
// @type boolean
|
|
||||||
// @default false
|
|
||||||
//
|
|
||||||
enable: false,
|
enable: false,
|
||||||
|
|
||||||
//
|
|
||||||
// Port to listen for ident requests.
|
|
||||||
//
|
|
||||||
// @type int
|
|
||||||
// @default 113
|
|
||||||
//
|
|
||||||
port: 113,
|
port: 113,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// ### `oidentd`
|
||||||
//
|
//
|
||||||
// Enable oidentd support using the specified file
|
// When this setting is a string, this enables `oidentd` support using the
|
||||||
//
|
// configuration file located at the given path.
|
||||||
// Example: oidentd: "~/.oidentd.conf",
|
|
||||||
//
|
|
||||||
// @type string
|
|
||||||
// @default null
|
|
||||||
//
|
//
|
||||||
|
// This is set to `null` by default to disable `oidentd` support.
|
||||||
oidentd: null,
|
oidentd: null,
|
||||||
|
|
||||||
|
// ## LDAP support
|
||||||
|
|
||||||
|
// These settings enable and configure LDAP authentication.
|
||||||
//
|
//
|
||||||
// LDAP authentication settings (only available if public=false)
|
// They are only being used in private mode. To know more about private mode,
|
||||||
// @type object
|
// see the `public` setting above.
|
||||||
// @default {}
|
|
||||||
//
|
//
|
||||||
// The authentication process works as follows:
|
// The authentication process works as follows:
|
||||||
//
|
//
|
||||||
// 1. Lounge connects to the LDAP server with its system credentials
|
// 1. The Lounge connects to the LDAP server with its system credentials.
|
||||||
// 2. It performs a LDAP search query to find the full DN associated to the
|
// 2. It performs an LDAP search query to find the full DN associated to the
|
||||||
// user requesting to log in.
|
// user requesting to log in.
|
||||||
// 3. Lounge tries to connect a second time, but this time using the user's
|
// 3. The Lounge tries to connect a second time, but this time using the
|
||||||
// DN and password. Auth is validated iff this connection is successful.
|
// user's DN and password. Authentication is validated if and only if this
|
||||||
|
// connection is successful.
|
||||||
//
|
//
|
||||||
// The search query takes a couple of parameters in `searchDN`:
|
// The search query takes a couple of parameters in `searchDN`:
|
||||||
// - a base DN `searchDN/base`. Only children nodes of this DN will be likely
|
|
||||||
// to be returned;
|
|
||||||
// - a search scope `searchDN/scope` (see LDAP documentation);
|
|
||||||
// - the query itself, build as (&(<primaryKey>=<username>) <filter>)
|
|
||||||
// where <username> is the user name provided in the log in request,
|
|
||||||
// <primaryKey> is provided by the config and <fitler> is a filtering complement
|
|
||||||
// also given in the config, to filter for instance only for nodes of type
|
|
||||||
// inetOrgPerson, or whatever LDAP search allows.
|
|
||||||
//
|
//
|
||||||
// Alternatively, you can specify the `bindDN` parameter. This will make the lounge
|
// - a base DN `searchDN/base`. Only children nodes of this DN will be likely
|
||||||
// ignore searchDN options and assume that the user DN is always:
|
// be returned;
|
||||||
// <bindDN>,<primaryKey>=<username>
|
// - a search scope `searchDN/scope` (see LDAP documentation);
|
||||||
// where <username> is the user name provided in the log in request, and <bindDN>
|
// - the query itself, built as `(&(<primaryKey>=<username>) <filter>)`
|
||||||
// and <primaryKey> are provided by the config.
|
// where `<username>` is the user name provided in the log in request,
|
||||||
|
// `<primaryKey>` is provided by the config and `<filter>` is a filtering
|
||||||
|
// complement also given in the config, to filter for instance only for
|
||||||
|
// nodes of type `inetOrgPerson`, or whatever LDAP search allows.
|
||||||
//
|
//
|
||||||
|
// Alternatively, you can specify the `bindDN` parameter. This will make The
|
||||||
|
// Lounge ignore `searchDN` options and assume that the user DN is always
|
||||||
|
// `<bindDN>,<primaryKey>=<username>`, where `<username>` is the user name
|
||||||
|
// provided in the log in request, and `<bindDN>` and `<primaryKey>` are
|
||||||
|
// provided by the configuration.
|
||||||
|
//
|
||||||
|
// The available keys for the `ldap` object are:
|
||||||
ldap: {
|
ldap: {
|
||||||
//
|
// - `enable`: when set to `false`, LDAP support is disabled and all other
|
||||||
// Enable LDAP user authentication
|
// values are ignored.
|
||||||
//
|
enable: false,
|
||||||
// @type boolean
|
|
||||||
// @default false
|
|
||||||
//
|
|
||||||
enable: true,
|
|
||||||
|
|
||||||
//
|
// - `url`: A url of the form `ldaps://<ip>:<port>`.
|
||||||
// LDAP server URL
|
// For plain connections, use the `ldap` scheme.
|
||||||
//
|
url: "ldap://127.0.0.1:389",
|
||||||
// @type string
|
|
||||||
//
|
|
||||||
url: "ldap://127.0.0.1",
|
|
||||||
|
|
||||||
|
// - `primaryKey`: LDAP primary key. It is set to `"uid"` by default.
|
||||||
|
primaryKey: "uid",
|
||||||
|
|
||||||
//
|
// - `baseDN`: LDAP base DN, alternative to `searchDN`. For example, set it
|
||||||
// LDAP base dn, alternative to searchDN
|
// to `"ou=accounts,dc=example,dc=com"`.
|
||||||
//
|
// When unset, the LDAP auth logic with use `searchDN` instead to locate users.
|
||||||
// @type string
|
|
||||||
//
|
|
||||||
baseDN: "ou=users,dc=yunohost,dc=org",
|
baseDN: "ou=users,dc=yunohost,dc=org",
|
||||||
|
},
|
||||||
|
|
||||||
//
|
// ## Debugging settings
|
||||||
// LDAP primary key
|
|
||||||
//
|
|
||||||
// @type string
|
|
||||||
// @default "uid"
|
|
||||||
//
|
|
||||||
primaryKey: "uid"
|
|
||||||
|
|
||||||
}
|
// The `debug` object contains several settings to enable debugging in The
|
||||||
|
// Lounge. Use them to learn more about an issue you are noticing but be aware
|
||||||
|
// this may produce more logging or may affect connection performance so it is
|
||||||
|
// not recommended to use them by default.
|
||||||
|
//
|
||||||
|
// All values in the `debug` object are set to `false`.
|
||||||
|
debug: {
|
||||||
|
// ### `debug.ircFramework`
|
||||||
|
//
|
||||||
|
// When set to true, this enables extra debugging output provided by
|
||||||
|
// [`irc-framework`](https://github.com/kiwiirc/irc-framework), the
|
||||||
|
// underlying IRC library for Node.js used by The Lounge.
|
||||||
|
ircFramework: false,
|
||||||
|
|
||||||
|
// ### `debug.raw`
|
||||||
|
//
|
||||||
|
// When set to `true`, this enables logging of raw IRC messages into each
|
||||||
|
// server window, displayed on the client.
|
||||||
|
raw: false,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -10,7 +10,7 @@ location ^~ __PATH__/ {
|
||||||
# by default nginx times out connections in one minute
|
# by default nginx times out connections in one minute
|
||||||
proxy_read_timeout 1d;
|
proxy_read_timeout 1d;
|
||||||
|
|
||||||
# Include SSOWAT user panel.
|
# Include SSOWAT user panel.
|
||||||
include conf.d/yunohost_panel.conf.inc;
|
include conf.d/yunohost_panel.conf.inc;
|
||||||
more_clear_input_headers 'Accept-Encoding';
|
more_clear_input_headers 'Accept-Encoding';
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,12 +6,15 @@ After=network.target
|
||||||
Type=simple
|
Type=simple
|
||||||
User=__APP__
|
User=__APP__
|
||||||
Group=__APP__
|
Group=__APP__
|
||||||
WorkingDirectory=__FINALPATH__
|
WorkingDirectory=__FINALPATH__/
|
||||||
Environment="PATH=__ENV_PATH__"
|
Environment="PATH=__ENV_PATH__"
|
||||||
Environment="THELOUNGE_HOME=/home/yunohost.app/__APP__/"
|
Environment="THELOUNGE_HOME=/home/yunohost.app/__APP__/"
|
||||||
Environment="NODE_ENV=production"
|
Environment="NODE_ENV=production"
|
||||||
ExecStart=/usr/bin/yarn start
|
ExecStart=/usr/bin/yarn start
|
||||||
Restart=always
|
Restart=on-failure
|
||||||
|
RestartSec=5
|
||||||
|
StartLimitInterval=60s
|
||||||
|
StartLimitBurst=3
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=default.target
|
WantedBy=multi-user.target
|
||||||
|
|
0
doc/DISCLAIMER.md
Normal file
0
doc/DISCLAIMER.md
Normal file
BIN
doc/screenshots/thelounge-screenshot.png
Normal file
BIN
doc/screenshots/thelounge-screenshot.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 36 KiB |
|
@ -8,6 +8,14 @@
|
||||||
},
|
},
|
||||||
"version": "4.2.0~ynh3",
|
"version": "4.2.0~ynh3",
|
||||||
"url": "https://thelounge.chat/",
|
"url": "https://thelounge.chat/",
|
||||||
|
"upstream": {
|
||||||
|
"license": "MIT",
|
||||||
|
"website": "https://example.com",
|
||||||
|
"demo": "https://demo.thelounge.chat/",
|
||||||
|
"admindoc": "https://thelounge.chat/docs",
|
||||||
|
"userdoc": "https://yunohost.org/en/app_thelounge",
|
||||||
|
"code": "https://github.com/thelounge/thelounge"
|
||||||
|
},
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"maintainer": {
|
"maintainer": {
|
||||||
"name": "rafi59",
|
"name": "rafi59",
|
||||||
|
@ -19,41 +27,28 @@
|
||||||
"email": "beudbeud@beudibox.fr"
|
"email": "beudbeud@beudibox.fr"
|
||||||
},
|
},
|
||||||
"requirements": {
|
"requirements": {
|
||||||
"yunohost": ">= 3.8.1"
|
"yunohost": ">= 4.2.4"
|
||||||
},
|
},
|
||||||
"multi_instance": false,
|
"multi_instance": false,
|
||||||
"services": [
|
"services": [
|
||||||
"nginx",
|
"nginx"
|
||||||
"mysql"
|
|
||||||
],
|
],
|
||||||
"arguments": {
|
"arguments": {
|
||||||
"install" : [
|
"install" : [
|
||||||
{
|
{
|
||||||
"name": "domain",
|
"name": "domain",
|
||||||
"type": "domain",
|
"type": "domain",
|
||||||
"ask": {
|
|
||||||
"en": "Choose a domain name for The Lounge",
|
|
||||||
"fr": "Choisissez un nom de domaine pour The Lounge"
|
|
||||||
},
|
|
||||||
"example": "example.com"
|
"example": "example.com"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "path",
|
"name": "path",
|
||||||
"type": "path",
|
"type": "path",
|
||||||
"ask": {
|
|
||||||
"en": "Choose a path for The Lounge",
|
|
||||||
"fr": "Choisissez un chemin pour The Lounge"
|
|
||||||
},
|
|
||||||
"example": "/irc",
|
"example": "/irc",
|
||||||
"default": "/irc"
|
"default": "/irc"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "is_public",
|
"name": "is_public",
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"ask": {
|
|
||||||
"en": "Is it a public application?",
|
|
||||||
"fr": "Est-ce une application publique ?"
|
|
||||||
},
|
|
||||||
"default": true
|
"default": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
## Problem
|
|
||||||
- *Description of why you made this PR*
|
|
||||||
|
|
||||||
## Solution
|
|
||||||
- *And how do you fix that problem*
|
|
||||||
|
|
||||||
## PR Status
|
|
||||||
- [ ] Code finished.
|
|
||||||
- [ ] Tested with Package_check.
|
|
||||||
- [ ] Fix or enhancement tested.
|
|
||||||
- [ ] Upgrade from last version tested.
|
|
||||||
- [ ] Can be reviewed and tested.
|
|
||||||
|
|
||||||
## Package_check results
|
|
||||||
---
|
|
||||||
*If you have access to [App Continuous Integration for packagers](https://yunohost.org/#/packaging_apps_ci) you can provide a link to the package_check results like below, replacing '-NUM-' in this link by the PR number and USERNAME by your username on the ci-apps-dev. Or you provide a screenshot or a pastebin of the results*
|
|
||||||
|
|
||||||
[/badge/icon)](https://ci-apps-dev.yunohost.org/jenkins/job/thelounge_ynh%20PR-NUM-%20(USERNAME)/)
|
|
|
@ -23,8 +23,8 @@ ynh_print_info --message="Loading installation settings..."
|
||||||
app=$YNH_APP_INSTANCE_NAME
|
app=$YNH_APP_INSTANCE_NAME
|
||||||
|
|
||||||
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
||||||
config_path=$(ynh_app_setting_get --app=$app --key=config_path)
|
|
||||||
domain=$(ynh_app_setting_get --app=$app --key=domain)
|
domain=$(ynh_app_setting_get --app=$app --key=domain)
|
||||||
|
datadir=$(ynh_app_setting_get --app=$app --key=datadir)
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# DECLARE DATA AND CONF FILES TO BACKUP
|
# DECLARE DATA AND CONF FILES TO BACKUP
|
||||||
|
@ -53,7 +53,7 @@ ynh_backup --src_path="/etc/systemd/system/$app.service"
|
||||||
# BACKUP CONFIG
|
# BACKUP CONFIG
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
ynh_backup --src_path="$config_path"
|
ynh_backup --src_path="$datadir"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# END OF SCRIPT
|
# END OF SCRIPT
|
||||||
|
|
|
@ -30,6 +30,23 @@ ynh_script_progression --message="Loading installation settings..."
|
||||||
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
||||||
port=$(ynh_app_setting_get --app=$app --key=port)
|
port=$(ynh_app_setting_get --app=$app --key=port)
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Backing up the app before changing its URL (may take a while)..."
|
||||||
|
|
||||||
|
# Backup the current version of the app
|
||||||
|
ynh_backup_before_upgrade
|
||||||
|
ynh_clean_setup () {
|
||||||
|
# Remove the new domain config file, the remove script won't do it as it doesn't know yet its location.
|
||||||
|
ynh_secure_remove --file="/etc/nginx/conf.d/$new_domain.d/$app.conf"
|
||||||
|
|
||||||
|
# Restore it if the upgrade fails
|
||||||
|
ynh_restore_upgradebackup
|
||||||
|
}
|
||||||
|
# Exit if an error occurs during the execution of the script
|
||||||
|
ynh_abort_if_errors
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# CHECK WHICH PARTS SHOULD BE CHANGED
|
# CHECK WHICH PARTS SHOULD BE CHANGED
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -92,7 +109,7 @@ fi
|
||||||
ynh_script_progression --message="Starting a systemd service..."
|
ynh_script_progression --message="Starting a systemd service..."
|
||||||
|
|
||||||
# Start a systemd service
|
# Start a systemd service
|
||||||
ynh_systemd_action --service_name=$app --action="start" --log_path="systemd" --line_match="Available at http"
|
ynh_systemd_action --service_name=$app --action=start --log_path=systemd --line_match="Available at http"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RELOAD NGINX
|
# RELOAD NGINX
|
||||||
|
|
|
@ -13,9 +13,6 @@ source /usr/share/yunohost/helpers
|
||||||
# MANAGE SCRIPT FAILURE
|
# MANAGE SCRIPT FAILURE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
ynh_clean_setup () {
|
|
||||||
ynh_clean_check_starting
|
|
||||||
}
|
|
||||||
# Exit if an error occurs during the execution of the script
|
# Exit if an error occurs during the execution of the script
|
||||||
ynh_abort_if_errors
|
ynh_abort_if_errors
|
||||||
|
|
||||||
|
@ -26,6 +23,7 @@ ynh_abort_if_errors
|
||||||
domain=$YNH_APP_ARG_DOMAIN
|
domain=$YNH_APP_ARG_DOMAIN
|
||||||
path_url=$YNH_APP_ARG_PATH
|
path_url=$YNH_APP_ARG_PATH
|
||||||
is_public=$YNH_APP_ARG_IS_PUBLIC
|
is_public=$YNH_APP_ARG_IS_PUBLIC
|
||||||
|
|
||||||
app=$YNH_APP_INSTANCE_NAME
|
app=$YNH_APP_INSTANCE_NAME
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -45,9 +43,8 @@ ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Storing installation settings..."
|
ynh_script_progression --message="Storing installation settings..."
|
||||||
|
|
||||||
ynh_app_setting_set --app=$app --key=domain --value=$domain
|
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=path --value=$path_url
|
||||||
ynh_app_setting_set --app=$app --key=is_public --value=$is_public
|
|
||||||
ynh_app_setting_set --app=$app --key=config_path --value=$config_path
|
ynh_app_setting_set --app=$app --key=config_path --value=$config_path
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -72,6 +69,14 @@ ynh_exec_warn_less ynh_install_nodejs --nodejs_version=$nodejs_version
|
||||||
# Install Yarn
|
# Install Yarn
|
||||||
ynh_install_extra_app_dependencies --repo="deb https://dl.yarnpkg.com/debian/ stable main" --package="yarn" --key="https://dl.yarnpkg.com/debian/pubkey.gpg"
|
ynh_install_extra_app_dependencies --repo="deb https://dl.yarnpkg.com/debian/ stable main" --package="yarn" --key="https://dl.yarnpkg.com/debian/pubkey.gpg"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# CREATE DEDICATED USER
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Configuring system user..."
|
||||||
|
|
||||||
|
# Create a system user
|
||||||
|
ynh_system_user_create --username=$app --home_dir="$final_path"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# DOWNLOAD, CHECK AND UNPACK SOURCE
|
# DOWNLOAD, CHECK AND UNPACK SOURCE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -81,6 +86,10 @@ ynh_app_setting_set --app=$app --key=final_path --value=$final_path
|
||||||
# Download, check integrity, uncompress and patch the source from app.src
|
# Download, check integrity, uncompress and patch the source from app.src
|
||||||
ynh_setup_source --dest_dir=$final_path
|
ynh_setup_source --dest_dir=$final_path
|
||||||
|
|
||||||
|
chmod 750 "$final_path"
|
||||||
|
chmod -R o-rwx "$final_path"
|
||||||
|
chown -R $app:www-data "$final_path"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# NGINX CONFIGURATION
|
# NGINX CONFIGURATION
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -90,12 +99,18 @@ ynh_script_progression --message="Configuring NGINX web server..."
|
||||||
ynh_add_nginx_config
|
ynh_add_nginx_config
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# CREATE DEDICATED USER
|
# CREATE DATA DIRECTORY
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Configuring system user..."
|
ynh_script_progression --message="Creating a data directory..."
|
||||||
|
|
||||||
# Create a system user
|
datadir=/home/yunohost.app/$app
|
||||||
ynh_system_user_create --username=$app
|
ynh_app_setting_set --app=$app --key=datadir --value=$datadir
|
||||||
|
|
||||||
|
mkdir -p $datadir
|
||||||
|
|
||||||
|
chmod 750 "$datadir"
|
||||||
|
chmod -R o-rwx "$datadir"
|
||||||
|
chown -R $app:www-data "$datadir"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SPECIFIC SETUP
|
# SPECIFIC SETUP
|
||||||
|
@ -104,14 +119,7 @@ ynh_system_user_create --username=$app
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Modifying a config file..."
|
ynh_script_progression --message="Modifying a config file..."
|
||||||
|
|
||||||
mkdir -p $config_path
|
ynh_add_config --template="../conf/config.js" --destination="$datadir/config.js"
|
||||||
|
|
||||||
# Main config File
|
|
||||||
ynh_replace_string --match_string="__PORT__" --replace_string="$port" --target_file="../conf/config.js"
|
|
||||||
|
|
||||||
cp -a ../conf/config.js "$config_path"
|
|
||||||
|
|
||||||
ynh_store_file_checksum "$config_path/config.js"
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# INSTALL THE LOUNGE
|
# INSTALL THE LOUNGE
|
||||||
|
@ -119,9 +127,10 @@ ynh_store_file_checksum "$config_path/config.js"
|
||||||
ynh_script_progression --message="Installing The Lounge..."
|
ynh_script_progression --message="Installing The Lounge..."
|
||||||
|
|
||||||
pushd $final_path
|
pushd $final_path
|
||||||
ynh_use_nodejs
|
ynh_use_nodejs
|
||||||
yarn install
|
ynh_exec_warn_less NODE_ENV=production yarn install
|
||||||
ynh_exec_warn_less NODE_ENV=production yarn build
|
yarn add webpack webpack-dev-server --dev
|
||||||
|
ynh_exec_warn_less NODE_ENV=production yarn build
|
||||||
popd
|
popd
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -129,24 +138,11 @@ popd
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Configuring a systemd service..."
|
ynh_script_progression --message="Configuring a systemd service..."
|
||||||
|
|
||||||
ynh_replace_string --match_string="__APP__" --replace_string="$app" --target_file="../conf/systemd.service"
|
ynh_replace_string --match_string="__ENV_PATH__" --replace_string="$PATH" --target_file="../conf/systemd.service"
|
||||||
ynh_replace_string --match_string="__FINALPATH__" --replace_string="$final_path" --target_file="../conf/systemd.service"
|
ynh_replace_string --match_string="__NODE__" --replace_string="$nodejs_path" --target_file="../conf/systemd.service"
|
||||||
ynh_replace_string --match_string="__ENV_PATH__" --replace_string="$PATH" --target_file="../conf/systemd.service"
|
|
||||||
ynh_replace_string --match_string="__NODE__" --replace_string="$nodejs_path" --target_file="../conf/systemd.service"
|
|
||||||
|
|
||||||
ynh_add_systemd_config
|
ynh_add_systemd_config
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# GENERIC FINALIZATION
|
|
||||||
#=================================================
|
|
||||||
# SECURE FILES AND DIRECTORIES
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Securing files and directories..."
|
|
||||||
|
|
||||||
# Set permissions to app files
|
|
||||||
chown -R $app: $final_path
|
|
||||||
chown -R $app: $config_path
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# INTEGRATE SERVICE IN YUNOHOST
|
# INTEGRATE SERVICE IN YUNOHOST
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -160,15 +156,18 @@ yunohost service add $app --description="Client Web IRC" --log="/var/log/$app/$a
|
||||||
ynh_script_progression --message="Starting a systemd service..."
|
ynh_script_progression --message="Starting a systemd service..."
|
||||||
|
|
||||||
# Start a systemd service
|
# Start a systemd service
|
||||||
ynh_systemd_action --service_name=$app --action="start" --log_path="systemd" --line_match="Available at http"
|
ynh_systemd_action --service_name=$app --action=start --log_path=systemd
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SETUP SSOWAT
|
# SETUP SSOWAT
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Configuring SSOwat..."
|
ynh_script_progression --message="Configuring permissions..."
|
||||||
|
|
||||||
# Make app public if necessary or protect it
|
# Make app public if necessary
|
||||||
[ $is_public -eq 0 ] || ynh_permission_update --permission "main" --add "visitors"
|
if [ $is_public -eq 1 ]
|
||||||
|
then
|
||||||
|
ynh_permission_update --permission="main" --add="visitors"
|
||||||
|
fi
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RELOAD NGINX
|
# RELOAD NGINX
|
||||||
|
|
|
@ -19,7 +19,7 @@ app=$YNH_APP_INSTANCE_NAME
|
||||||
domain=$(ynh_app_setting_get --app=$app --key=domain)
|
domain=$(ynh_app_setting_get --app=$app --key=domain)
|
||||||
port=$(ynh_app_setting_get --app=$app --key=port)
|
port=$(ynh_app_setting_get --app=$app --key=port)
|
||||||
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
||||||
config_path=$(ynh_app_setting_get --app=$app --key=config_path)
|
datadir=$(ynh_app_setting_get --app=$app --key=datadir)
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# STANDARD REMOVE
|
# STANDARD REMOVE
|
||||||
|
@ -73,7 +73,7 @@ ynh_remove_nginx_config
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Removing the config file..."
|
ynh_script_progression --message="Removing the config file..."
|
||||||
|
|
||||||
ynh_secure_remove --file="$config_path"
|
ynh_secure_remove --file="$datadir"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# GENERIC FINALIZATION
|
# GENERIC FINALIZATION
|
||||||
|
|
|
@ -29,15 +29,13 @@ app=$YNH_APP_INSTANCE_NAME
|
||||||
domain=$(ynh_app_setting_get --app=$app --key=domain)
|
domain=$(ynh_app_setting_get --app=$app --key=domain)
|
||||||
path_url=$(ynh_app_setting_get --app=$app --key=path)
|
path_url=$(ynh_app_setting_get --app=$app --key=path)
|
||||||
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
||||||
config_path=$(ynh_app_setting_get --app=$app --key=config_path)
|
datadir=$(ynh_app_setting_get --app=$app --key=datadir)
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# CHECK IF THE APP CAN BE RESTORED
|
# CHECK IF THE APP CAN BE RESTORED
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Validating restoration parameters..."
|
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 \
|
test ! -d $final_path \
|
||||||
|| ynh_die --message="There is already a directory: $final_path "
|
|| ynh_die --message="There is already a directory: $final_path "
|
||||||
|
|
||||||
|
@ -50,6 +48,14 @@ ynh_script_progression --message="Restoring the NGINX configuration..."
|
||||||
|
|
||||||
ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf"
|
ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# CREATE DEDICATED USER
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Recreating the dedicated system user..."
|
||||||
|
|
||||||
|
# Create a dedicated user (if not existing)
|
||||||
|
ynh_system_user_create --username=$app --home_dir="$final_path"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RESTORE THE APP MAIN DIR
|
# RESTORE THE APP MAIN DIR
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -57,29 +63,22 @@ ynh_script_progression --message="Restoring $app main directory..."
|
||||||
|
|
||||||
ynh_restore_file --origin_path="$final_path"
|
ynh_restore_file --origin_path="$final_path"
|
||||||
|
|
||||||
|
chmod 750 "$final_path"
|
||||||
|
chmod -R o-rwx "$final_path"
|
||||||
|
chown -R $app:www-data "$final_path"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RESTORE THE CONFIG
|
# RESTORE THE CONFIG
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Restoring the config path..."
|
ynh_script_progression --message="Restoring the config path..."
|
||||||
|
|
||||||
ynh_restore_file --origin_path="$config_path"
|
ynh_restore_file --origin_path="$datadir" --not_mandatory
|
||||||
|
|
||||||
#=================================================
|
mkdir -p $datadir
|
||||||
# RECREATE THE DEDICATED USER
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Recreating the dedicated system user..."
|
|
||||||
|
|
||||||
# Create the dedicated user (if not existing)
|
chmod 750 "$datadir"
|
||||||
ynh_system_user_create --username=$app
|
chmod -R o-rwx "$datadir"
|
||||||
|
chown -R $app:www-data "$datadir"
|
||||||
#=================================================
|
|
||||||
# RESTORE USER RIGHTS
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Restoring user rights..."
|
|
||||||
|
|
||||||
# Restore permissions to app files
|
|
||||||
chown -R $app: $final_path
|
|
||||||
chown -R $app: $config_path
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SPECIFIC RESTORATION
|
# SPECIFIC RESTORATION
|
||||||
|
@ -114,7 +113,7 @@ yunohost service add $app --description="Client Web IRC" --log="/var/log/$app/$a
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Starting a systemd service..."
|
ynh_script_progression --message="Starting a systemd service..."
|
||||||
|
|
||||||
ynh_systemd_action --service_name=$app --action="start" --log_path="systemd" --line_match="Available at http"
|
ynh_systemd_action --service_name=$app --action=start --log_path=systemd
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# GENERIC FINALIZATION
|
# GENERIC FINALIZATION
|
||||||
|
|
121
scripts/upgrade
121
scripts/upgrade
|
@ -18,9 +18,8 @@ app=$YNH_APP_INSTANCE_NAME
|
||||||
|
|
||||||
domain=$(ynh_app_setting_get --app=$app --key=domain)
|
domain=$(ynh_app_setting_get --app=$app --key=domain)
|
||||||
path_url=$(ynh_app_setting_get --app=$app --key=path)
|
path_url=$(ynh_app_setting_get --app=$app --key=path)
|
||||||
is_public=$(ynh_app_setting_get --app=$app --key=is_public)
|
|
||||||
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
||||||
config_path=$(ynh_app_setting_get --app=$app --key=config_path)
|
datadir=$(ynh_app_setting_get --app=$app --key=datadir)
|
||||||
port=$(ynh_app_setting_get --app=$app --key=port)
|
port=$(ynh_app_setting_get --app=$app --key=port)
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -30,36 +29,10 @@ ynh_script_progression --message="Checking version..."
|
||||||
|
|
||||||
upgrade_type=$(ynh_check_app_version_changed)
|
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
|
|
||||||
|
|
||||||
# If config_path doesn't exist, create it
|
|
||||||
if [ -z "$config_path" ]; then
|
|
||||||
config_path=/home/yunohost.app/$app
|
|
||||||
ynh_app_setting_set --app=$app --key=config_path --value=$config_path
|
|
||||||
fi
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
|
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Backing up $app before upgrading (may take a while)..."
|
ynh_script_progression --message="Backing up the app before upgrading (may take a while)..."
|
||||||
|
|
||||||
# Backup the current version of the app
|
# Backup the current version of the app
|
||||||
ynh_backup_before_upgrade
|
ynh_backup_before_upgrade
|
||||||
|
@ -71,6 +44,31 @@ ynh_clean_setup () {
|
||||||
# Exit if an error occurs during the execution of the script
|
# Exit if an error occurs during the execution of the script
|
||||||
ynh_abort_if_errors
|
ynh_abort_if_errors
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# If datadir doesn't exist, create it
|
||||||
|
if [ -z "$datadir" ]; then
|
||||||
|
datadir=/home/yunohost.app/$app
|
||||||
|
mkdir -p /home/yunohost.app/$app
|
||||||
|
ynh_app_setting_set --app=$app --key=datadir --value=$datadir
|
||||||
|
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
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# STANDARD UPGRADE STEPS
|
# STANDARD UPGRADE STEPS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -78,7 +76,15 @@ ynh_abort_if_errors
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Stopping a systemd service..."
|
ynh_script_progression --message="Stopping a systemd service..."
|
||||||
|
|
||||||
ynh_systemd_action --service_name=$app --action="stop" --log_path="systemd"
|
ynh_systemd_action --service_name=$app --action=stop --log_path=systemd
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# 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
|
# DOWNLOAD, CHECK AND UNPACK SOURCE
|
||||||
|
@ -88,12 +94,16 @@ if [ "$upgrade_type" == "UPGRADE_APP" ]
|
||||||
then
|
then
|
||||||
ynh_script_progression --message="Upgrading source files..."
|
ynh_script_progression --message="Upgrading source files..."
|
||||||
|
|
||||||
ynh_secure_remove --file=$final_path
|
ynh_secure_remove --file="$final_path"
|
||||||
|
|
||||||
# Download, check integrity, uncompress and patch the source from app.src
|
# Download, check integrity, uncompress and patch the source from app.src
|
||||||
ynh_setup_source --dest_dir="$final_path"
|
ynh_setup_source --dest_dir=$final_path
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
chmod 750 "$final_path"
|
||||||
|
chmod -R o-rwx "$final_path"
|
||||||
|
chown -R $app:www-data "$final_path"
|
||||||
|
chown -R $app:www-data $datadir
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# NGINX CONFIGURATION
|
# NGINX CONFIGURATION
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -113,14 +123,6 @@ ynh_exec_warn_less ynh_install_nodejs --nodejs_version=$nodejs_version
|
||||||
# Install Yarn
|
# Install Yarn
|
||||||
ynh_install_extra_app_dependencies --repo="deb https://dl.yarnpkg.com/debian/ stable main" --package="yarn" --key="https://dl.yarnpkg.com/debian/pubkey.gpg"
|
ynh_install_extra_app_dependencies --repo="deb https://dl.yarnpkg.com/debian/ stable main" --package="yarn" --key="https://dl.yarnpkg.com/debian/pubkey.gpg"
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# 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
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SPECIFIC UPGRADE
|
# SPECIFIC UPGRADE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -129,49 +131,22 @@ ynh_system_user_create --username=$app
|
||||||
|
|
||||||
if [ "$upgrade_type" == "UPGRADE_APP" ]
|
if [ "$upgrade_type" == "UPGRADE_APP" ]
|
||||||
then
|
then
|
||||||
ynh_script_progression --message="Upgrading the lounge..."
|
|
||||||
pushd $final_path
|
pushd $final_path
|
||||||
ynh_use_nodejs
|
ynh_use_nodejs
|
||||||
yarn install
|
ynh_exec_warn_less NODE_ENV=production yarn install
|
||||||
|
yarn add webpack webpack-dev-server --dev
|
||||||
ynh_exec_warn_less NODE_ENV=production yarn build
|
ynh_exec_warn_less NODE_ENV=production yarn build
|
||||||
popd
|
popd
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# MODIFY A CONFIG FILE
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Modifying a config file..."
|
|
||||||
|
|
||||||
ynh_backup_if_checksum_is_different --file="$config_path"
|
|
||||||
# Main config File
|
|
||||||
ynh_replace_string --match_string="__PORT__" --replace_string="$port" --target_file="../conf/config.js"
|
|
||||||
|
|
||||||
cp -a ../conf/config.js "$config_path"
|
|
||||||
ynh_store_file_checksum "$config_path/config.js"
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SETUP SYSTEMD
|
# SETUP SYSTEMD
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Upgrading systemd configuration..."
|
ynh_script_progression --message="Upgrading systemd configuration..."
|
||||||
|
|
||||||
ynh_replace_string --match_string="__APP__" --replace_string="$app" --target_file="../conf/systemd.service"
|
ynh_replace_string --match_string="__ENV_PATH__" --replace_string="$PATH" --target_file="../conf/systemd.service"
|
||||||
ynh_replace_string --match_string="__FINALPATH__" --replace_string="$final_path" --target_file="../conf/systemd.service"
|
|
||||||
ynh_replace_string --match_string="__ENV_PATH__" --replace_string="$PATH" --target_file="../conf/systemd.service"
|
|
||||||
ynh_replace_string --match_string="__NODE__" --replace_string="$nodejs_path" --target_file="../conf/systemd.service"
|
|
||||||
|
|
||||||
ynh_add_systemd_config
|
ynh_add_systemd_config
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# GENERIC FINALIZATION
|
|
||||||
#=================================================
|
|
||||||
# SECURE FILES AND DIRECTORIES
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Securing files and directories..."
|
|
||||||
|
|
||||||
# Set permissions on app files
|
|
||||||
chown -R $app: $final_path
|
|
||||||
chown -R $app: $config_path
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# GENERIC FINALIZATION
|
# GENERIC FINALIZATION
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -186,7 +161,7 @@ yunohost service add $app --description="Client Web IRC" --log="/var/log/$app/$a
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Starting a systemd service..."
|
ynh_script_progression --message="Starting a systemd service..."
|
||||||
|
|
||||||
ynh_systemd_action --service_name=$app --action="start" --log_path="systemd" --line_match="Available at http"
|
ynh_systemd_action --service_name=$app --action=start --log_path=systemd
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RELOAD NGINX
|
# RELOAD NGINX
|
||||||
|
|
Loading…
Add table
Reference in a new issue