MM-16368 - Plugin Signing (#13017)
* [MM-18757] POST handler for `/plugins/marketplace` (#12372) * Implement installMarketplacePlugin * Add InstallMarketplacePlugin endpoint * Fix go.mod * merge with master * Fix go.mod * Fix plugin tests * Move get plugin to marketplace client * Fix stylistic concerns * Add trailing newline to the go.mod * [MM-16586] Add plugin signature settings (#12390) * MM-17149 - Extend config.json for marketplace settings (#11933) * MM-17149 - Extend config.json for marketplace settings * Renamed MarketplaceUrl, tracking default marketplace url * Added EnableMarketplace to the client config * Revert "Added EnableMarketplace to the client config" This reverts commit 0f982c4c661c2cd9bb96264e9a01a2363c40d9c5. * MM-17149 - Added EnableMarketplace to the client config (#11958) * Added EnableMarketplace to the client config * Moved EnableMarketplace setting out of limited client configuration * Add public key settings to the config.json * Rename PublicKeys to SignaturePublicKeyFiles * Change filepath.Split to Base * Remove additional prints * Force extention of a public key file * Remove config validation * Remove error on delete * Remove config cloning * Add error messages * Add plugin public key tests * Rename extension to PluginSignaturePublicKeyFileExtention * Remove EnforceVerification * Change []*PublicKeyDescription to []string * Change .asc extension to .plugin.asc * Change ordering of public methods * Change plugin key commands * Update examples in the plugin key commands * Remove forcing extention * Add verify signature in settings * Fix tabbing * Fix naming * Remove unused text * Remove unused text * Update command examples * Fix unit tests * Change errors.New to errors.Wrap * Fix verbose flag * Change .asc to .gpg * Fix } * Change AddPublicKey signature * Change public.key extension * Add plugin public key command tests * Update en.json * Bootstrap the public keys * Update en.json * Fix en.json * Fix en.json * Bootstrap hard-coded public key * Remove unused texts in en.json * Change file to name * Add license header * Update development public key * Remove writeFile method * Remove .plugin.asc extension * Rename publiKey to mattermostPublicKey * Remove init_public_keys string * GolangCI * Closing file handlers * Fixed test that was installing nps plugin * [MM-19798] Implement plugin signature verification (#12768) * MM-17149 - Extend config.json for marketplace settings (#11933) * MM-17149 - Extend config.json for marketplace settings * Renamed MarketplaceUrl, tracking default marketplace url * Added EnableMarketplace to the client config * Revert "Added EnableMarketplace to the client config" This reverts commit 0f982c4c661c2cd9bb96264e9a01a2363c40d9c5. * MM-17149 - Added EnableMarketplace to the client config (#11958) * Added EnableMarketplace to the client config * Moved EnableMarketplace setting out of limited client configuration * Add public key settings to the config.json * Rename PublicKeys to SignaturePublicKeyFiles * Change filepath.Split to Base * Remove additional prints * Force extention of a public key file * Remove config validation * Remove error on delete * Remove config cloning * Add error messages * Add plugin public key tests * Rename extension to PluginSignaturePublicKeyFileExtention * Remove EnforceVerification * Change []*PublicKeyDescription to []string * Change .asc extension to .plugin.asc * Change ordering of public methods * Change plugin key commands * Update examples in the plugin key commands * Remove forcing extention * Add verify signature in settings * Fix tabbing * Fix naming * Remove unused text * Remove unused text * Update command examples * Fix unit tests * Change errors.New to errors.Wrap * Fix verbose flag * Change .asc to .gpg * Fix } * Change AddPublicKey signature * Change public.key extension * Add plugin public key command tests * Update en.json * Bootstrap the public keys * Update en.json * Fix en.json * Fix en.json * Bootstrap hard-coded public key * Remove unused texts in en.json * Change file to name * Add license header * Implement plugin signature verification * Remove benburker openpgp * Update en.json * Update development public key * Add support of multiple signatures in filestore * Update en.json * Run go mod vendor * Fix style * Remove writeFile method * Remove .plugin.asc extension * Rename publiKey to mattermostPublicKey * Verify plugin with mattermost public key * Remove init_public_keys string * Add InstallPluginWithSignature method and Refactor * Add signature verification on claster notification * Remove armored signature headers * Add error strings * Fix en.json * Change signatureStorePath * Implement minor fixes * Refactor plugin install methods * Add installPlugin method to uploadPlugin * Update en.json * Refactor installPlugin * Limit number of signatures * Close signatures * Fix helper function * Fix fromReadCloseSeekerToReadSeeker * Cleaned up ReadCloseSeeker for signatures * Remove signature truncation on FS * GolangCI * Add tests for armored signatures and plugin uploads * Fix nil slice issue * Fix TestPluginSync * Fixed tests * Return io.ReadSeeker from downloadFromUrl * Add log for the found plugins in the file store * Remove logging plugin detection info * [MM-20134] Consume and store single-signature for each plugin (#13081) * Consume and store single-signature for each plugin * Fix en.json * Remove saveSignature method * Remove public key hash * PR Feedback * refactored config * PR feedback
Этот коммит содержится в:
44
i18n/en.json
44
i18n/en.json
@@ -1512,6 +1512,10 @@
|
||||
"id": "api.outgoing_webhook.disabled.app_error",
|
||||
"translation": "Outgoing webhooks have been disabled by the system admin."
|
||||
},
|
||||
{
|
||||
"id": "api.plugin.add_public_key.open.app_error",
|
||||
"translation": "An error occurred while opening the public key file."
|
||||
},
|
||||
{
|
||||
"id": "api.plugin.install.download_failed.app_error",
|
||||
"translation": "An error occurred while downloading the plugin."
|
||||
@@ -1540,6 +1544,10 @@
|
||||
"id": "api.plugin.upload.no_file.app_error",
|
||||
"translation": "Missing file in multipart/form request"
|
||||
},
|
||||
{
|
||||
"id": "api.plugin.verify_plugin.app_error",
|
||||
"translation": "Unable to verify plugin signature."
|
||||
},
|
||||
{
|
||||
"id": "api.post.check_for_out_of_channel_groups_mentions.message.multiple",
|
||||
"translation": "@{{.Usernames}} and @{{.LastUsername}} did not get notified by this mention because they are not in the channel. They cannot be added to the channel because they are not a member of the linked groups. To add them to this channel, they must be added to the linked groups."
|
||||
@@ -3478,6 +3486,10 @@
|
||||
"id": "app.plugin.deactivate.app_error",
|
||||
"translation": "Unable to deactivate plugin"
|
||||
},
|
||||
{
|
||||
"id": "app.plugin.delete_public_key.delete.app_error",
|
||||
"translation": "An error occurred while deleting the public key."
|
||||
},
|
||||
{
|
||||
"id": "app.plugin.disabled.app_error",
|
||||
"translation": "Plugins have been disabled. Please check your logs for details."
|
||||
@@ -3502,6 +3514,10 @@
|
||||
"id": "app.plugin.get_plugins.app_error",
|
||||
"translation": "Unable to get active plugins"
|
||||
},
|
||||
{
|
||||
"id": "app.plugin.get_public_key.get_file.app_error",
|
||||
"translation": "An error occurred while getting the public key from the store."
|
||||
},
|
||||
{
|
||||
"id": "app.plugin.get_statuses.app_error",
|
||||
"translation": "Unable to get plugin statuses"
|
||||
@@ -3538,14 +3554,26 @@
|
||||
"id": "app.plugin.marketplace_disabled.app_error",
|
||||
"translation": "Marketplace has been disabled. Please check your logs for details."
|
||||
},
|
||||
{
|
||||
"id": "app.plugin.marketplace_plugin_request.app_error",
|
||||
"translation": "Failed to decode the marketplace plugin request."
|
||||
},
|
||||
{
|
||||
"id": "app.plugin.marketplace_plugins.app_error",
|
||||
"translation": "Failed to get plugins from the marketplace server."
|
||||
},
|
||||
{
|
||||
"id": "app.plugin.marketplace_plugins.not_found.app_error",
|
||||
"translation": "Plugin not found."
|
||||
},
|
||||
{
|
||||
"id": "app.plugin.marshal.app_error",
|
||||
"translation": "Failed to marshal marketplace plugins."
|
||||
},
|
||||
{
|
||||
"id": "app.plugin.modify_saml.app_error",
|
||||
"translation": "Can't modify saml files."
|
||||
},
|
||||
{
|
||||
"id": "app.plugin.mvdir.app_error",
|
||||
"translation": "Unable to move plugin from temporary directory to final destination. Another plugin may be using the same directory name."
|
||||
@@ -3566,10 +3594,18 @@
|
||||
"id": "app.plugin.restart.app_error",
|
||||
"translation": "Unable to restart plugin on upgrade."
|
||||
},
|
||||
{
|
||||
"id": "app.plugin.signature_decode.app_error",
|
||||
"translation": "Unable to decode base64 signature."
|
||||
},
|
||||
{
|
||||
"id": "app.plugin.store_bundle.app_error",
|
||||
"translation": "Unable to store the plugin to the configured file store."
|
||||
},
|
||||
{
|
||||
"id": "app.plugin.store_signature.app_error",
|
||||
"translation": "Unable to store the plugin signature to the configured file store."
|
||||
},
|
||||
{
|
||||
"id": "app.plugin.sync.list_filestore.app_error",
|
||||
"translation": "Error reading files from the plugins folder in the file store."
|
||||
@@ -3586,6 +3622,14 @@
|
||||
"id": "app.plugin.webapp_bundle.app_error",
|
||||
"translation": "Unable to generate plugin webapp bundle."
|
||||
},
|
||||
{
|
||||
"id": "app.plugin.write_file.read.app_error",
|
||||
"translation": "An error occurred while reading the file."
|
||||
},
|
||||
{
|
||||
"id": "app.plugin.write_file.saving.app_error",
|
||||
"translation": "An error occurred while saving the file."
|
||||
},
|
||||
{
|
||||
"id": "app.role.check_roles_exist.role_not_found",
|
||||
"translation": "The provided role does not exist"
|
||||
|
||||
Ссылка в новой задаче
Block a user