diff --git a/.github/workflows/updater.sh b/.github/workflows/updater.sh new file mode 100644 index 0000000..48a4e22 --- /dev/null +++ b/.github/workflows/updater.sh @@ -0,0 +1,154 @@ +#!/bin/bash + +#================================================= +# PACKAGE UPDATING HELPER +#================================================= + +# This script is meant to be run by GitHub Actions +# The YunoHost-Apps organisation offers a template Action to run this script periodically +# Since each app is different, maintainers can adapt its contents so as to perform +# automatic actions when a new upstream release is detected. + +# Remove this exit command when you are ready to run this Action +#exit 1 + +#================================================= +# FETCHING LATEST RELEASE AND ITS ASSETS +#================================================= + +# Fetching information +current_version=$(cat manifest.json | jq -j '.version|split("~")[0]') +repo=$(cat manifest.json | jq -j '.upstream.code|split("https://github.com/")[1]') +# Some jq magic is needed, because the latest upstream release is not always the latest version (e.g. security patches for older versions) +version=$(curl --silent "https://api.github.com/repos/$repo/releases" | jq -r '.[] | select( .prerelease != true ) | .tag_name' | sort -V | tail -1) + +if [[ ${version:0:1} == "v" || ${version:0:1} == "V" ]]; then + version=${version:1} +fi + +# x86-64 and enterprise assets are hosted on Mattermost's servers. +assets=() +assets+=("https://releases.mattermost.com/$version/mattermost-team-$version-linux-amd64.tar.gz") +assets+=("https://releases.mattermost.com/$version/mattermost-enterprise-$version-linux-amd64.tar.gz") + +# ARM and ARM64 are published in another repository (with a leading "v" for version tags) +other_repo="SmartHoneybee/ubiquitous-memory" +other_assets=($(curl --silent "https://api.github.com/repos/$other_repo/releases" | jq -r '[ .[] | select(.tag_name=="'v$version'").assets[].browser_download_url ] | join(" ") | @sh' | tr -d "'")) + +# Setting up the environment variables +echo "Current version: $current_version" +echo "Latest release from upstream: $version" +echo "VERSION=$version" >> $GITHUB_ENV +# For the time being, let's assume the script will fail +echo "PROCEED=false" >> $GITHUB_ENV + +# Proceed only if the retrieved version is greater than the current one +if ! dpkg --compare-versions "$current_version" "lt" "$version" ; then + echo "::warning ::No new version available" + exit 0 +# Proceed only if a PR for this new version does not already exist +elif git ls-remote -q --exit-code --heads https://github.com/$GITHUB_REPOSITORY.git ci-auto-update-v$version ; then + echo "::warning ::A branch already exists for this update" + exit 0 +fi +# Proceed only if all the binaries have been found +if (( ${#other_assets[@]} == 0 )); then + echo "::warning ::$other_repo has not released anything for v$version" + exit 0 +else + assets+=( ${other_assets[@]} ) +fi + +# Each release can hold multiple assets (e.g. binaries for different architectures, source code, etc.) +echo "${#assets[@]} available asset(s)" + +#================================================= +# UPDATE SOURCE FILES +#================================================= + +# Here we use the $assets variable to get the resources published in the upstream release. +# Here is an example for Grav, it has to be adapted in accordance with how the upstream releases look like. + +# Let's loop over the array of assets URLs +for asset_url in ${assets[@]}; do + +echo "Handling asset at $asset_url" + +# Assign the asset to a source file in conf/ directory +# Here we base the source file name upon a unique keyword in the assets url (admin vs. update) +# Leave $src empty to ignore the asset +case $asset_url in + *"mattermost-"*"-linux-arm.tar.gz") + src="arm" + ;; + *"mattermost-"*"-linux-arm64.tar.gz") + src="arm64" + ;; + *"mattermost-team-"*"-linux-amd64.tar.gz") + src="x86-64" + ;; + *"mattermost-enterprise-"*"-linux-amd64.tar.gz") + src="enterprise" + ;; + *) + src="" + ;; +esac + +# If $src is not empty, let's process the asset +if [ ! -z "$src" ]; then + +# Create the temporary directory +tempdir="$(mktemp -d)" + +# Download sources and calculate checksum +filename=${asset_url##*/} +curl --silent -4 -L $asset_url -o "$tempdir/$filename" +checksum=$(sha256sum "$tempdir/$filename" | head -c 64) + +# Delete temporary directory +rm -rf $tempdir + +# Get extension +if [[ $filename == *.tar.gz ]]; then + extension=tar.gz +else + extension=${filename##*.} +fi + +# Rewrite source file +cat < conf/$src.src +SOURCE_URL=$asset_url +SOURCE_SUM=$checksum +SOURCE_SUM_PRG=sha256sum +SOURCE_FORMAT=$extension +SOURCE_IN_SUBDIR=true +SOURCE_FILENAME=mattermost.tar.gz +EOT +echo "... conf/$src.src updated" + +else +echo "... asset ignored" +fi + +done + +#================================================= +# SPECIFIC UPDATE STEPS +#================================================= + +# Any action on the app's source code can be done. +# The GitHub Action workflow takes care of committing all changes after this script ends. + +#================================================= +# GENERIC FINALIZATION +#================================================= + +# Replace new version in manifest +echo "$(jq -s --indent 4 ".[] | .version = \"$version~ynh1\"" manifest.json)" > manifest.json + +# No need to update the README, yunohost-bot takes care of it + +# The Action will proceed only if the PROCEED environment variable is set to true +echo "PROCEED=true" >> $GITHUB_ENV +exit 0 diff --git a/.github/workflows/updater.yml b/.github/workflows/updater.yml new file mode 100644 index 0000000..fd6ed60 --- /dev/null +++ b/.github/workflows/updater.yml @@ -0,0 +1,49 @@ +# This workflow allows GitHub Actions to automagically update your app whenever a new upstream release is detected. +# You need to enable Actions in your repository settings, and fetch this Action from the YunoHost-Apps organization. +# This file should be enough by itself, but feel free to tune it to your needs. +# It calls updater.sh, which is where you should put the app-specific update steps. +name: Check for new upstream releases +on: + # Allow to manually trigger the workflow + workflow_dispatch: + # Run it every day at 6:00 UTC + schedule: + - cron: '0 6 * * *' +jobs: + updater: + runs-on: ubuntu-latest + steps: + - name: Fetch the source code + uses: actions/checkout@v2 + with: + token: ${{ secrets.GITHUB_TOKEN }} + - name: Run the updater script + id: run_updater + run: | + # Setting up Git user + git config --global user.name 'yunohost-bot' + git config --global user.email 'yunohost-bot@users.noreply.github.com' + # Run the updater script + /bin/bash .github/workflows/updater.sh + - name: Commit changes + id: commit + if: ${{ env.PROCEED == 'true' }} + run: | + git commit -am "Upgrade to v$VERSION" + - name: Create Pull Request + id: cpr + if: ${{ env.PROCEED == 'true' }} + uses: peter-evans/create-pull-request@v3 + with: + token: ${{ secrets.GITHUB_TOKEN }} + commit-message: Update to version ${{ env.VERSION }} + committer: 'yunohost-bot ' + author: 'yunohost-bot ' + signoff: false + branch: ci-auto-update-v${{ env.VERSION }} + base: testing + delete-branch: true + title: 'Upgrade to version ${{ env.VERSION }}' + body: | + Upgrade to v${{ env.VERSION }} + draft: false diff --git a/README.md b/README.md index 297691a..cc85bc9 100644 --- a/README.md +++ b/README.md @@ -15,9 +15,29 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in ## Overview -Open source collaboration platform built for developers +## Mattermost Team Edition +A free-to-use, open source, self-hosted alternative to proprietary SaaS messaging. Team Edition is your open source “virtual office”, offering all the core productivity benefits of competing SaaS solutions. It deploys as a single Linux binary with MySQL under an MIT license. -**Shipped version:** 5.38.2~ynh1 +## Mattermost Enterprise Edition +To explore the benefits of Mattermost’s enterprise features, you can replace the Mattermost Team Edition binary with a Mattermost Enterprise Edition binary. This version supports upgrading to Mattermost Enterprise Edition E10 or E20. + +## Features include: + +- One-to-one and group messaging, file sharing, and unlimited search history +- Native apps for iOS, Android, Windows, Mac, Linux +- Threaded messaging, emoji, and custom emoji +- Tools for custom branding +- Continuous archiving +- Multi-factor authentication +- Highly customizable third-party bots, integrations, and command line tools +- Extensive integration support via webhooks, APIs, drivers, and third-party extensions +- Easily scalable to dozens of users per team +- Runtime profiling data and system monitoring reports +- New features and improvements released regularly +- Multiple languages including U.S. English, Australian English, Bulgarian, Chinese (Simplified and Traditional), Dutch, French, German, Hungarian, Italian, Japanese, Korean, Polish, Brazilian Portuguese, Romanian, Russian, Turkish, Spanish, Swedish, and Ukrainian + + +**Shipped version:** 6.0.2~ynh2 diff --git a/README_fr.md b/README_fr.md index 347ba21..96f1433 100644 --- a/README_fr.md +++ b/README_fr.md @@ -11,9 +11,29 @@ Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour ## Vue d'ensemble -Plateforme de collaboration open source conçue pour les développeurs +## Mattermost Team Edition +Une alternative gratuite, open source et auto-hébergée à la messagerie SaaS propriétaire. Team Edition est votre « bureau virtuel » open source, offrant tous les principaux avantages de productivité des solutions SaaS concurrentes. -**Version incluse :** 5.38.2~ynh1 +## Mattermost Entreprise Edition +Pour explorer les avantages des fonctionnalités d'entreprise de Mattermost, vous pouvez remplacer le binaire Mattermost Team Edition par un binaire Mattermost Enterprise Edition. Cette version prend en charge la mise à niveau vers Mattermost Enterprise Edition E10 ou E20. + +## Les fonctionnalités incluent: + +- Messagerie individuelle et de groupe, partage de fichiers et historique de recherche illimité +- Applications natives pour iOS, Android, Windows, Mac, Linux +- Messagerie, emoji et emoji personnalisés +- Outils pour une image de marque personnalisée +- Archivage continu +- Authentification multi-facteurs +- Bots tiers hautement personnalisables, intégrations et outils de ligne de commande +- Prise en charge étendue de l'intégration via des webhooks, des API, des pilotes et des extensions tierces +- Facilement évolutif à des dizaines d'utilisateurs par équipe +- Données de profilage d'exécution et rapports de surveillance du système +- Nouvelles fonctionnalités et améliorations publiées régulièrement +- Plusieurs langues dont l'anglais américain, l'anglais australien, le bulgare, le chinois (simplifié et traditionnel), le néerlandais, le français, l'allemand, le hongrois, l'italien, le japonais, le coréen, le polonais, le portugais brésilien, le roumain, le russe, le turc, l'espagnol, le suédois et l'ukrainien + + +**Version incluse :** 6.0.2~ynh2 diff --git a/conf/arm.src b/conf/arm.src index 43f44df..0c41e74 100644 --- a/conf/arm.src +++ b/conf/arm.src @@ -1,6 +1,6 @@ -SOURCE_URL=https://github.com/SmartHoneybee/ubiquitous-memory/releases/download/v5.38.2/mattermost-v5.38.2-linux-arm.tar.gz -SOURCE_SUM=6e1d4e36c3139c00736e72fe2d96236e45cb84cd66f9d72b3f050c6c186fb2d6f0d949d32e16a2f2e102625d66395314d748a9fffb4bdab4c5d6561a06f6a413 -SOURCE_SUM_PRG=sha512sum +SOURCE_URL=https://github.com/SmartHoneybee/ubiquitous-memory/releases/download/v6.0.2/mattermost-v6.0.2-linux-arm.tar.gz +SOURCE_SUM=80554cba9854df81454ba41db83c391d49003aa9ded736dfcfb53de88789c0c4 +SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=tar.gz SOURCE_IN_SUBDIR=true -SOURCE_FILENAME=mattermost-v5.38.2-linux-arm.tar.gz +SOURCE_FILENAME=mattermost.tar.gz diff --git a/conf/arm64.src b/conf/arm64.src index 218afb7..df28773 100644 --- a/conf/arm64.src +++ b/conf/arm64.src @@ -1,6 +1,6 @@ -SOURCE_URL=https://github.com/SmartHoneybee/ubiquitous-memory/releases/download/v5.38.2/mattermost-v5.38.2-linux-arm64.tar.gz -SOURCE_SUM=e2c95ca30b5604580413231747013eb36a2474298bd0feabdffd7f77e469931b77575ccb010e174ff2a910aeb513a4bcb7a7b8c5775ea2b562b284dcd8064bb2 -SOURCE_SUM_PRG=sha512sum +SOURCE_URL=https://github.com/SmartHoneybee/ubiquitous-memory/releases/download/v6.0.2/mattermost-v6.0.2-linux-arm64.tar.gz +SOURCE_SUM=bfa9b7ee30e7f4e654358f628bb75011d0835cdcab3fd17a8bd18e227bc8ff25 +SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=tar.gz SOURCE_IN_SUBDIR=true -SOURCE_FILENAME=mattermost-v5.38.2-linux-arm64.tar.gz +SOURCE_FILENAME=mattermost.tar.gz diff --git a/conf/config.json b/conf/config.json index 703b910..8fc3d81 100644 --- a/conf/config.json +++ b/conf/config.json @@ -27,8 +27,8 @@ "EnablePostUsernameOverride": false, "EnablePostIconOverride": false, "GoogleDeveloperKey": "", - "EnableOnlyAdminIntegrations": true, "EnableLinkPreviews": true, + "EnablePermalinkPreviews": true, "RestrictLinkPreviews": "", "EnableTesting": false, "EnableDeveloper": false, @@ -54,13 +54,10 @@ "WebsocketPort": 80, "WebserverMode": "gzip", "EnableGifPicker": true, - "GfycatApiKey": "2_KtH_W5", - "GfycatApiSecret": "3wLVZPiswc3DnaiaFoLkDvB4X0IV6CpMkj4tf2inJRsBY6-FnkT08zGmppWFgeof", + "GfycatAPIKey": "2_KtH_W5", + "GfycatAPISecret": "3wLVZPiswc3DnaiaFoLkDvB4X0IV6CpMkj4tf2inJRsBY6-FnkT08zGmppWFgeof", "EnableCustomEmoji": true, "EnableEmojiPicker": true, - "RestrictCustomEmojiCreation": "all", - "RestrictPostDelete": "all", - "AllowEditPost": "always", "PostEditTimeLimit": -1, "TimeBetweenUserTypingUpdatesMilliseconds": 5000, "EnablePostSearch": true, @@ -71,19 +68,14 @@ "EnableUserStatuses": true, "ExperimentalEnableAuthenticationTransfer": true, "ClusterLogTimeoutMilliseconds": 2000, - "CloseUnusedDirectMessages": false, "EnablePreviewFeatures": true, "EnableTutorial": true, + "EnableOnboardingFlow": true, "ExperimentalEnableDefaultChannelLeaveJoinMessages": true, "ExperimentalGroupUnreadChannels": "disabled", - "ExperimentalChannelOrganization": false, - "ImageProxyType": "", - "ImageProxyURL": "", - "ImageProxyOptions": "", "EnableAPITeamDeletion": false, "EnableAPIUserDeletion": false, "ExperimentalEnableHardenedMode": false, - "DisableLegacyMFA": true, "ExperimentalStrictCSRFEnforcement": false, "EnableEmailInvitations": false, "DisableBotsWhenOwnerIsDeactivated": true, @@ -91,8 +83,8 @@ "EnableSVGs": false, "EnableLatex": false, "EnableAPIChannelDeletion": false, - "EnableLocalMode": false, - "LocalModeSocketLocation": "/var/tmp/mattermost_local.socket", + "EnableLocalMode": true, + "LocalModeSocketLocation": "__LOCAL_SOCKET_PATH__", "EnableAWSMetering": false, "SplitKey": "", "FeatureFlagSyncIntervalSeconds": 30, @@ -100,13 +92,11 @@ "ThreadAutoFollow": true, "CollapsedThreads": "disabled", "ManagedResourcePaths": "", - "EnableLegacySidebar": false, "EnableReliableWebSockets": false }, "TeamSettings": { "SiteName": "Mattermost", "MaxUsersPerTeam": 50, - "EnableTeamCreation": true, "EnableUserCreation": true, "EnableOpenServer": false, "EnableUserDeactivation": false, @@ -116,15 +106,6 @@ "CustomBrandText": "", "CustomDescriptionText": "", "RestrictDirectMessage": "any", - "RestrictTeamInvite": "all", - "RestrictPublicChannelManagement": "all", - "RestrictPrivateChannelManagement": "all", - "RestrictPublicChannelCreation": "all", - "RestrictPrivateChannelCreation": "all", - "RestrictPublicChannelDeletion": "all", - "RestrictPrivateChannelDeletion": "all", - "RestrictPrivateChannelManageMembers": "all", - "EnableXToLeaveChannelsFromLHS": false, "UserStatusAwayTimeout": 300, "MaxChannelsPerTeam": 2000, "MaxNotificationsPerChannel": 1000, @@ -132,8 +113,6 @@ "TeammateNameDisplay": "username", "ExperimentalViewArchivedChannels": true, "ExperimentalEnableAutomaticReplies": false, - "ExperimentalHideTownSquareinLHS": false, - "ExperimentalTownSquareIsReadOnly": false, "LockTeammateNameDisplay": false, "ExperimentalPrimaryTeam": "", "ExperimentalDefaultChannels": [] @@ -208,6 +187,7 @@ "EnableMobileUpload": true, "EnableMobileDownload": true, "MaxFileSize": 104857600, + "MaxImageResolution": 33177600, "DriverName": "local", "Directory": "__DATA_PATH__", "EnablePublicLink": false, @@ -274,8 +254,8 @@ "SupportSettings": { "TermsOfServiceLink": "https://mattermost.com/terms-of-service/", "PrivacyPolicyLink": "https://mattermost.com/privacy-policy/", - "AboutLink": "https://docs.mattermost.com/overview/product.html", - "HelpLink": "https://academy.mattermost.com/", + "AboutLink": "https://about.mattermost.com/default-about/", + "HelpLink": "https://about.mattermost.com/default-help/", "ReportAProblemLink": "https://about.mattermost.com/default-report-a-problem/", "SupportEmail": "", "CustomTermsOfServiceEnabled": false, @@ -307,7 +287,7 @@ "Scope": "", "AuthEndpoint": "", "TokenEndpoint": "", - "UserApiEndpoint": "", + "UserAPIEndpoint": "", "DiscoveryEndpoint": "", "ButtonText": "", "ButtonColor": "" @@ -319,7 +299,7 @@ "Scope": "profile email", "AuthEndpoint": "https://accounts.google.com/o/oauth2/v2/auth", "TokenEndpoint": "https://www.googleapis.com/oauth2/v4/token", - "UserApiEndpoint": "https://people.googleapis.com/v1/people/me?personFields=names,emailAddresses,nicknames,metadata", + "UserAPIEndpoint": "https://people.googleapis.com/v1/people/me?personFields=names,emailAddresses,nicknames,metadata", "DiscoveryEndpoint": "", "ButtonText": "", "ButtonColor": "" @@ -331,7 +311,7 @@ "Scope": "User.Read", "AuthEndpoint": "https://login.microsoftonline.com/common/oauth2/v2.0/authorize", "TokenEndpoint": "https://login.microsoftonline.com/common/oauth2/v2.0/token", - "UserApiEndpoint": "https://graph.microsoft.com/v1.0/me", + "UserAPIEndpoint": "https://graph.microsoft.com/v1.0/me", "DiscoveryEndpoint": "", "DirectoryId": "" }, @@ -342,7 +322,7 @@ "Scope": "profile openid email", "AuthEndpoint": "", "TokenEndpoint": "", - "UserApiEndpoint": "", + "UserAPIEndpoint": "", "DiscoveryEndpoint": "", "ButtonText": "", "ButtonColor": "#145DBF" @@ -403,9 +383,9 @@ "Verify": true, "Encrypt": true, "SignRequest": false, - "IdpUrl": "", - "IdpDescriptorUrl": "", - "IdpMetadataUrl": "", + "IdpURL": "", + "IdpDescriptorURL": "", + "IdpMetadataURL": "", "ServiceProviderIdentifier": "", "AssertionConsumerServiceURL": "", "SignatureAlgorithm": "RSAwithSHA1", @@ -447,8 +427,7 @@ "NetworkInterface": "", "BindAddress": "", "AdvertiseAddress": "", - "UseIpAddress": true, - "UseExperimentalGossip": true, + "UseIPAddress": true, "EnableGossipCompression": true, "EnableExperimentalGossipEncryption": false, "ReadOnlyConfig": true, @@ -479,7 +458,7 @@ "MaxUsersForStatistics": 2500 }, "ElasticsearchSettings": { - "ConnectionUrl": "http://localhost:9200", + "ConnectionURL": "http://localhost:9200", "Username": "elastic", "Password": "changeme", "EnableIndexing": false, @@ -513,7 +492,8 @@ "EnableFileDeletion": false, "MessageRetentionDays": 365, "FileRetentionDays": 365, - "DeletionJobStartTime": "02:00" + "DeletionJobStartTime": "02:00", + "BatchSize": 3000 }, "MessageExportSettings": { "EnableExport": false, @@ -524,8 +504,8 @@ "DownloadExportResults": false, "GlobalRelaySettings": { "CustomerType": "A9", - "SmtpUsername": "", - "SmtpPassword": "", + "SMTPUsername": "", + "SMTPPassword": "", "EmailAddress": "", "SMTPServerTimeout": 1800 } @@ -537,7 +517,7 @@ "PluginSettings": { "Enable": true, "EnableUploads": false, - "AllowInsecureDownloadUrl": false, + "AllowInsecureDownloadURL": false, "EnableHealthCheck": true, "Directory": "./plugins", "ClientDirectory": "./client/plugins", @@ -545,17 +525,24 @@ "PluginStates": { "com.mattermost.nps": { "Enable": true + }, + "focalboard": { + "Enable": true + }, + "playbooks": { + "Enable": true } }, "EnableMarketplace": true, "EnableRemoteMarketplace": true, "AutomaticPrepackagedPlugins": true, "RequirePluginSignature": false, - "MarketplaceUrl": "https://api.integrations.mattermost.com", - "SignaturePublicKeyFiles": [] + "MarketplaceURL": "https://api.integrations.mattermost.com", + "SignaturePublicKeyFiles": [], + "ChimeraOAuthProxyURL": "" }, "DisplaySettings": { - "CustomUrlSchemes": [], + "CustomURLSchemes": [], "ExperimentalTimezone": true }, "GuestAccountsSettings": { @@ -571,8 +558,8 @@ "RemoteImageProxyOptions": "" }, "CloudSettings": { - "CWSUrl": "https://customers.mattermost.com", - "CWSAPIUrl": "https://portal.internal.prod.cloud.mattermost.com" + "CWSURL": "https://customers.mattermost.com", + "CWSAPIURL": "https://portal.internal.prod.cloud.mattermost.com" }, "FeatureFlags": { "TestFeature": "off", @@ -581,11 +568,13 @@ "CollapsedThreads": true, "EnableRemoteClusterService": false, "AppsEnabled": false, - "PluginIncidentManagement": "1.14.3", + "PluginPlaybooks": "", "PluginApps": "", "PluginFocalboard": "", - "CustomDataRetentionEnabled": false, - "TimedDND": false + "TimedDND": false, + "PermalinkPreviews": true, + "GlobalHeader": true, + "AddChannelButton": "by_team_name" }, "ImportSettings": { "Directory": "./import", diff --git a/conf/enterprise.src b/conf/enterprise.src index e66e2c7..70a77d0 100644 --- a/conf/enterprise.src +++ b/conf/enterprise.src @@ -1,6 +1,6 @@ -SOURCE_URL=https://releases.mattermost.com/5.38.2/mattermost-enterprise-5.38.2-linux-amd64.tar.gz -SOURCE_SUM=5d6769cca6aa058547965408baa6937135e08718bc5d1477033df1000e43ec8b +SOURCE_URL=https://releases.mattermost.com/6.0.2/mattermost-enterprise-6.0.2-linux-amd64.tar.gz +SOURCE_SUM=4580a435a350c9401d50972e720a47e2551eba889a51b976991c6b906a2ac1fd SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=tar.gz SOURCE_IN_SUBDIR=true -SOURCE_FILENAME=mattermost-enterprise-5.38.2-linux-amd64.tar.gz +SOURCE_FILENAME=mattermost.tar.gz diff --git a/conf/systemd.service b/conf/systemd.service index 8cea61d..b00e554 100644 --- a/conf/systemd.service +++ b/conf/systemd.service @@ -11,6 +11,7 @@ TimeoutStartSec=3600 Restart=always RestartSec=10 WorkingDirectory=__FINALPATH__ +RuntimeDirectory=__APP__ User=__APP__ Group=__APP__ LimitNOFILE=49152 diff --git a/conf/x86-64.src b/conf/x86-64.src index a9c55aa..a2894d0 100644 --- a/conf/x86-64.src +++ b/conf/x86-64.src @@ -1,6 +1,6 @@ -SOURCE_URL=https://releases.mattermost.com/5.38.2/mattermost-team-5.38.2-linux-amd64.tar.gz -SOURCE_SUM=b6f2f6f24017eeca9e40d3bda750047171c5728f12c29564384e1aca764e0bf0 +SOURCE_URL=https://releases.mattermost.com/6.0.2/mattermost-team-6.0.2-linux-amd64.tar.gz +SOURCE_SUM=56a2148e8cac5c40ac700fed4cd52c875c512fa0dce5e54f1414af7513f0cb8e SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=tar.gz SOURCE_IN_SUBDIR=true -SOURCE_FILENAME=mattermost-team-5.38.2-linux-amd64.tar.gz +SOURCE_FILENAME=mattermost.tar.gz diff --git a/doc/DESCRIPTION.md b/doc/DESCRIPTION.md new file mode 100644 index 0000000..38c93a3 --- /dev/null +++ b/doc/DESCRIPTION.md @@ -0,0 +1,20 @@ +## Mattermost Team Edition +A free-to-use, open source, self-hosted alternative to proprietary SaaS messaging. Team Edition is your open source “virtual office”, offering all the core productivity benefits of competing SaaS solutions. It deploys as a single Linux binary with MySQL under an MIT license. + +## Mattermost Enterprise Edition +To explore the benefits of Mattermost’s enterprise features, you can replace the Mattermost Team Edition binary with a Mattermost Enterprise Edition binary. This version supports upgrading to Mattermost Enterprise Edition E10 or E20. + +## Features include: + +- One-to-one and group messaging, file sharing, and unlimited search history +- Native apps for iOS, Android, Windows, Mac, Linux +- Threaded messaging, emoji, and custom emoji +- Tools for custom branding +- Continuous archiving +- Multi-factor authentication +- Highly customizable third-party bots, integrations, and command line tools +- Extensive integration support via webhooks, APIs, drivers, and third-party extensions +- Easily scalable to dozens of users per team +- Runtime profiling data and system monitoring reports +- New features and improvements released regularly +- Multiple languages including U.S. English, Australian English, Bulgarian, Chinese (Simplified and Traditional), Dutch, French, German, Hungarian, Italian, Japanese, Korean, Polish, Brazilian Portuguese, Romanian, Russian, Turkish, Spanish, Swedish, and Ukrainian diff --git a/doc/DESCRIPTION_fr.md b/doc/DESCRIPTION_fr.md new file mode 100644 index 0000000..c876146 --- /dev/null +++ b/doc/DESCRIPTION_fr.md @@ -0,0 +1,20 @@ +## Mattermost Team Edition +Une alternative gratuite, open source et auto-hébergée à la messagerie SaaS propriétaire. Team Edition est votre « bureau virtuel » open source, offrant tous les principaux avantages de productivité des solutions SaaS concurrentes. + +## Mattermost Entreprise Edition +Pour explorer les avantages des fonctionnalités d'entreprise de Mattermost, vous pouvez remplacer le binaire Mattermost Team Edition par un binaire Mattermost Enterprise Edition. Cette version prend en charge la mise à niveau vers Mattermost Enterprise Edition E10 ou E20. + +## Les fonctionnalités incluent: + +- Messagerie individuelle et de groupe, partage de fichiers et historique de recherche illimité +- Applications natives pour iOS, Android, Windows, Mac, Linux +- Messagerie, emoji et emoji personnalisés +- Outils pour une image de marque personnalisée +- Archivage continu +- Authentification multi-facteurs +- Bots tiers hautement personnalisables, intégrations et outils de ligne de commande +- Prise en charge étendue de l'intégration via des webhooks, des API, des pilotes et des extensions tierces +- Facilement évolutif à des dizaines d'utilisateurs par équipe +- Données de profilage d'exécution et rapports de surveillance du système +- Nouvelles fonctionnalités et améliorations publiées régulièrement +- Plusieurs langues dont l'anglais américain, l'anglais australien, le bulgare, le chinois (simplifié et traditionnel), le néerlandais, le français, l'allemand, le hongrois, l'italien, le japonais, le coréen, le polonais, le portugais brésilien, le roumain, le russe, le turc, l'espagnol, le suédois et l'ukrainien diff --git a/manifest.json b/manifest.json index 4541fca..efc2021 100644 --- a/manifest.json +++ b/manifest.json @@ -6,7 +6,7 @@ "en": "Open source collaboration platform built for developers", "fr": "Plateforme de collaboration open source conçue pour les développeurs" }, - "version": "5.38.2~ynh1", + "version": "6.0.2~ynh2", "url": "http://www.mattermost.org/", "upstream": { "license": "GPL-3.0-only", @@ -32,8 +32,7 @@ "install": [ { "name": "domain", - "type": "domain", - "example": "domain.org" + "type": "domain" }, { "name": "path", @@ -52,13 +51,11 @@ }, { "name": "admin", - "type": "user", - "example": "johndoe" + "type": "user" }, { "name": "password", - "type": "password", - "example": "Choose a password" + "type": "password" }, { "name": "version", diff --git a/scripts/install b/scripts/install index 52bd22a..57e6801 100644 --- a/scripts/install +++ b/scripts/install @@ -131,6 +131,7 @@ ynh_script_progression --message="Modifying a config file..." --weight=3 smtp_user_pwd=$(ynh_string_random --length=24) url=https://$domain$path_url logs_path="/var/log/$app" +local_socket_path="/var/run/${app}/mattermost_local.socket" ynh_add_config --template="../conf/config.json" --destination="$final_path/config/config.json" @@ -150,27 +151,6 @@ ynh_script_progression --message="Configuring a systemd service..." --weight=2 # Create a dedicated systemd config ynh_add_systemd_config -#================================================= -# CREATE ADMIN AND FIRST TEAM -#================================================= - -team_name=$(echo "$team_display_name" | iconv -f utf8 -t ascii//TRANSLIT//IGNORE | sed -e 's/[^[:alnum:]]/-/g' | tr -s '-' | tr A-Z a-z) - -pushd "$final_path" - ynh_exec_warn_less ynh_exec_as $app bin/mattermost user create --username "$admin" --email "$email" --password "$password" --locale "$language" --system_admin - ynh_exec_warn_less ynh_exec_as $app bin/mattermost user verify "$admin" - ynh_exec_warn_less ynh_exec_as $app bin/mattermost team create --name "$team_name" --display_name "$team_display_name" --email "$email" - ynh_exec_warn_less ynh_exec_as $app bin/mattermost team add "$team_name" "$admin" -popd - -#================================================= -# SETUP LOGROTATE -#================================================= -ynh_script_progression --message="Configuring log rotation..." --weight=1 - -# Use logrotate to manage application logfile(s) -ynh_use_logrotate - #================================================= # INTEGRATE SERVICE IN YUNOHOST #================================================= @@ -186,6 +166,28 @@ ynh_script_progression --message="Starting a systemd service..." --weight=2 # Start a systemd service ynh_systemd_action --service_name=$app --action=start --log_path=systemd --line_match="Started Mattermost" +#================================================= +# CREATE ADMIN AND FIRST TEAM +#================================================= +ynh_script_progression --message="Create the first administrator and team..." --weight=1 + +team_name=$(echo "$team_display_name" | iconv -f utf8 -t ascii//TRANSLIT//IGNORE | sed -e 's/[^[:alnum:]]/-/g' | tr -s '-' | tr A-Z a-z) +bin_mmctl="$final_path/bin/mmctl" + +# mmctl is not packaged with ARM versions yet +if [[ -f $"bin_mmctl" ]]; then + export MMCTL_LOCAL=true + export MMCTL_LOCAL_SOCKET_PATH="$local_socket_path" + + ynh_exec_warn_less sudo --preserve-env -u $app "$bin_mmctl" user create --username "$admin" --email "$email" --password "$password" --locale "$language" --email-verified --system-admin + ynh_exec_warn_less sudo --preserve-env -u $app "$bin_mmctl" team create --name "$team_name" --display_name "$team_display_name" --email "$email" + ynh_exec_warn_less sudo --preserve-env -u $app "$bin_mmctl" team users add "$team_name" "$admin" +fi + +# Disable mmctl passwordless access +ynh_replace_string '"EnableLocalMode": true' '"EnableLocalMode": false' "$final_path/config/config.json" +ynh_systemd_action --service_name=$app --action=restart --log_path=systemd --line_match="Started Mattermost" + #================================================= # SETUP SSOWAT #================================================= diff --git a/scripts/remove b/scripts/remove index cbb87ee..4aaf73b 100755 --- a/scripts/remove +++ b/scripts/remove @@ -59,8 +59,16 @@ ynh_script_progression --message="Removing $app main directory..." --weight=6 # Remove the app directory securely ynh_secure_remove --file="$final_path" -# We don't delete this dir as it is marked as is-big -# ynh_secure_remove --file="$data_path" +#================================================= +# REMOVE DATA DIR +#================================================= + +# Remove the data directory if --purge option is used +if [ "${YNH_APP_PURGE:-0}" -eq 1 ] +then + ynh_script_progression --message="Removing app data directory..." --weight=1 + ynh_secure_remove --file="$data_path" +fi #================================================= # REMOVE NGINX CONFIGURATION diff --git a/scripts/upgrade b/scripts/upgrade index 00d02f1..867c172 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -185,8 +185,8 @@ yunohost service add $app --description="Collaboration platform built for develo #================================================= ynh_script_progression --message="Starting a systemd service..." --weight=2 -# A lengthy database migration runs when upgrading from a version < 5.38. -if dpkg --compare-versions "$previous_upstream_version" lt "5.38.0" +# A lengthy database migration runs when upgrading from a version < 6.0. +if dpkg --compare-versions "$previous_upstream_version" lt "6.0.0" then ynh_print_warn --message="Lengthy database migrations will now run. This may take a while..." fi