diff --git a/README.md b/README.md index 35a69c2..5a01a4b 100644 --- a/README.md +++ b/README.md @@ -15,9 +15,15 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in ## Overview -Web IRC client +Modern web IRC client designed for self-hosting -**Shipped version:** 4.2.0~ynh3 +### Features: + +- Always connected +- Responsive interface +- Multi-user support + +**Shipped version:** 4.2.0~ynh4 **Demo:** https://demo.thelounge.chat/ @@ -27,8 +33,7 @@ Web IRC client ## Documentation and resources -* Official app website: https://example.com -* Official user documentation: https://yunohost.org/en/app_thelounge +* Official app website: https://thelounge.chat/ * 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 diff --git a/README_fr.md b/README_fr.md index f691d41..2e928b1 100644 --- a/README_fr.md +++ b/README_fr.md @@ -11,9 +11,15 @@ Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour ## Vue d'ensemble -Client Web IRC +Modern web IRC client designed for self-hosting -**Version incluse :** 4.2.0~ynh3 +### Features: + +- Always connected +- Responsive interface +- Multi-user support + +**Version incluse :** 4.2.0~ynh4 **Démo :** https://demo.thelounge.chat/ @@ -23,8 +29,7 @@ Client Web IRC ## Documentations et ressources -* Site officiel de l'app : https://example.com -* Documentation officielle utilisateur : https://yunohost.org/en/app_thelounge +* Site officiel de l'app : https://thelounge.chat/ * Documentation officielle de l'admin : https://thelounge.chat/docs * Dépôt de code officiel de l'app : https://github.com/thelounge/thelounge * Documentation YunoHost pour cette app : https://yunohost.org/app_thelounge diff --git a/conf/config-dist.js b/conf/config-dist.js deleted file mode 100644 index ceb4664..0000000 --- a/conf/config-dist.js +++ /dev/null @@ -1,453 +0,0 @@ -"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///' 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 (&(=) ) - // where is the user name provided in the log in request, - // is provided by the config and 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: - // ,= - // where is the user name provided in the log in request, and - // and 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" - - } -}; diff --git a/conf/config.js b/conf/config.js index 303ec19..b19b235 100644 --- a/conf/config.js +++ b/conf/config.js @@ -276,7 +276,7 @@ module.exports = { // their JSON configuration file. // // This value is set to `["sqlite", "text"]` by default. - messageStorage: ["sqlite"], + messageStorage: ["sqlite", "text"], // ### `useHexIp` // diff --git a/conf/user.json b/conf/user.json deleted file mode 100644 index 11ab357..0000000 --- a/conf/user.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "user": "USERTOCHANGE", - "password": "$2a$08$Ep", - "log": false, - "networks": [] -} diff --git a/doc/DESCRIPTION.md b/doc/DESCRIPTION.md new file mode 100644 index 0000000..d3aba6a --- /dev/null +++ b/doc/DESCRIPTION.md @@ -0,0 +1,7 @@ +Modern web IRC client designed for self-hosting + +### Features: + +- Always connected +- Responsive interface +- Multi-user support \ No newline at end of file diff --git a/manifest.json b/manifest.json index a52ab8c..ed544de 100644 --- a/manifest.json +++ b/manifest.json @@ -6,14 +6,13 @@ "en": "Web IRC client", "fr": "Client Web IRC" }, - "version": "4.2.0~ynh3", + "version": "4.2.0~ynh4", "url": "https://thelounge.chat/", "upstream": { "license": "MIT", - "website": "https://example.com", + "website": "https://thelounge.chat/", "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", diff --git a/scripts/install b/scripts/install index 62a970d..a82f0fd 100644 --- a/scripts/install +++ b/scripts/install @@ -32,7 +32,6 @@ app=$YNH_APP_INSTANCE_NAME ynh_script_progression --message="Validating installation parameters..." final_path=/var/www/$app -config_path=/home/yunohost.app/$app test ! -e "$final_path" || ynh_die --message="This path already contains a folder" # Register (book) web path @@ -45,7 +44,6 @@ ynh_script_progression --message="Storing installation settings..." ynh_app_setting_set --app=$app --key=domain --value=$domain ynh_app_setting_set --app=$app --key=path --value=$path_url -ynh_app_setting_set --app=$app --key=config_path --value=$config_path #================================================= # STANDARD MODIFICATIONS @@ -139,8 +137,6 @@ popd ynh_script_progression --message="Configuring a 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 #=================================================