Граф коммитов

10595 Коммитов

Автор SHA1 Сообщение Дата
Carlos Tadeu Panato Junior
f8b87cbe2d Add SendMail to plugin API (#10082)
* Add SendMail to plugin API

* Update per feedback

Co-Authored-By: cpanato <ctadeu@gmail.com>
2019-01-10 10:06:14 +01:00
Harrison Healey
1a3ccaf305 MM-13606 Remove consumeAndClose and clean up integration response handling (#10066)
* MM-13606 Remove consumeAndClose

* Allow overriding HTTPService's request timeout

* MM-13606 Clean up integration response handling

* Properly close httptest servers

* Address feedback

* Only call buf.Bytes when necessary

* Properly check for errors in doOutgoingWebhookRequest

* Add comment explaining ignored ioutil.ReadAll errors
2019-01-09 17:07:08 -05:00
Michael Kochell
e67fe4c89d handle errors in HandleCommandResponse method (#9888) 2019-01-09 15:41:53 -05:00
Jesse Hallam
66d174d80b Fix various unit tests (#10079)
* fix spurious TestMuteCommandSpecificChannel test failure

See
https://community-daily.mattermost.com/core/pl/px9p8s3dzbg1pf3ddrm5cr36uw

* fix race in TestExportUserChannels

* TestExportUserChannels: remove SaveMember call, as it is redundant and used to be silently failing anyway
2019-01-09 14:01:24 -05:00
Yusuke Nemoto
343a1d67e9 Add periods to docs (#10068) 2019-01-09 13:29:26 -05:00
Jesse Hallam
fa6f7f3a62 MM-13678: fix web hub deadlock (#10081)
The websocket hub, on stopping, closes all associated websocket connections, and each connection
in turn tries to unregister itself with the hub, but this naturally creates a deadlock.

This PR reverts the line commented (incorretly...) at
https://github.com/mattermost/mattermost-server/pull/9863/files#r235583929.
2019-01-09 10:14:08 -08:00
Joram Wilander
df076b457a Move MFA enforcement setting into limited client config (#10077) 2019-01-09 12:19:56 -05:00
Lev
643c54e808 MM-13659 More error checks for NewRequest (#10080) 2019-01-09 09:16:32 -08:00
Miguel Alatzar
6b59ab4ee8 [MM 12373] Create CLI command "webhook modify-outgoing" (#10028)
* Add test for modifying outgoing webhook

* Add command to modify an outgoing webhook

* Use updated test helper

* Use errors.Wrap

* Lower case error strings and use fmt.Errorf

* Clone webhook into updatedHook

* Rename error variables
2019-01-08 14:10:19 -05:00
Christopher Speller
ca4dcf4404 MM-13492 Allow empty channel in /channels/view (#10062)
* Allow empty channel in /channels/view

* Simplify if statement.
2019-01-07 14:07:41 -08:00
Elias Nahum
dc175cc704 Send clear push notification when DM has unread messages (#10065)
* Send clear push notification when DM has unread messages

* Feedback review
2019-01-07 13:05:47 -03:00
Syerikjan Kh
2c0cf1947a GH-9672 Idiomatic error handling in app/oauth.go (#9678)
* Idiomatic error handling

* Fix capitalizing comments

* Improve error handling
2019-01-07 16:00:43 +01:00
Lev
5b369d3777 MM-13598 Added missing error check to DoActionRequest (#10058)
* MM-13598 Added missing error check in DoActionRequest

* Added a test
2019-01-04 10:57:13 -07:00
Daniel Schalla
ccb9429f51 Trigger Login Hooks with OAuth (#10061) 2019-01-04 08:50:22 -05:00
Jason Blais
f36b66fb9a MM-13559 Update model.post.is_valid.file_ids.app_error text per report (#10055)
Ticket: https://mattermost.atlassian.net/browse/MM-13559
Report: https://github.com/mattermost/mattermost-server/issues/10023
2019-01-03 10:26:34 -05:00
Pradeep Murugesan
99160ff0bc [GH-6798] added a new api endpoint to get the bulk reactions for posts (#10049)
* 6798 added a new api to get the bulk reactions for posts

* 6798 added the permsission check before getting the reactions

* GH-6798 added a new app function for the new endpoint

* 6798 added a store method to get reactions for multiple posts

* 6798 connected the app function with the new store function

* 6798 fixed the review comments
2019-01-03 08:35:08 -05:00
Dan Maas
7b7b89d5ae Update NOTICE.txt (#10054)
- add new dependency (text)
- handle switch to forked dependency (go-gomail -> go-mail)
- misc copyright owner updates
2019-01-02 11:56:06 -08:00
Christopher Speller
2999009052 Revert "Support for Embeded chat (#9129)" (#10017)
This reverts commit 3fcecd521a.
2019-01-02 07:57:36 -08:00
Christopher Speller
daa6c4172a Fixing first user being created with system admin privilages without being explicity specified. (#10014) 2019-01-02 07:29:08 -08:00
Hanzei
701c617fe3 Fix typos (#10024) 2018-12-19 17:30:08 +01:00
Harrison Healey
8c81ba1a78 MM-13526 Add validation when setting a user's Locale field (#10022) 2018-12-19 09:36:39 -05:00
Carlos Tadeu Panato Junior
b3ed9a8507 upgrade db to 5.7 (#10019) 2018-12-19 09:25:11 -05:00
Harrison Healey
f639c7c617 MM-13512 Prevent getting a user by email based on privacy settings (#10021)
* MM-13512 Prevent getting a user by email based on privacy settings

* Add additional config settings to tests
2018-12-18 16:04:25 -05:00
Christopher Speller
8b2ceaff8b Adding default robots.txt (#10016) 2018-12-18 08:37:42 -05:00
Hanzei
b68720360b Fix shadowed variables: Part 4 (#10009) 2018-12-18 14:06:53 +01:00
Hanzei
cebfa38a64 Fix shadowed variables in api4 package (#10010) 2018-12-18 14:06:44 +01:00
Jesse Hallam
4286456077 MM-10856: deduplicate posts with the same pending post id (#10006)
* MM-10856: deduplicate posts with the same pending post id

Leverage a fixed size cache with a window of 30 seconds to deduplicate posts received by a single app server. Clients that duplicate the same pending post id will see one request potentially delayed until the first finishes, after which the same payload should be returned by both.  Duplicate posts outside the 30 second window will not be de-duplicated.

Note that the cache is not synchronized between app servers. In an HA cluster consisting of more than one app server, sticky load balancing (e.g. hashing by IP or Session ID) is required to route the users to the same app instance for multiple requests.

Other options considered for this feature:
* adding a column to the `Posts` table: rejected as being too heavyweight
* maintaining a `PendingPostIds` table: similarly rejected for the database impact
* using the pending post id as the post id and relying on the unique constraints on the Post table: rejected for being difficult to show that it's safe to use a client-provided value as the row identifier

* utils/lru: simplify to ttl internally and for new methods

* move seenPendingPostIdsCache to App.Server

* just fail concurrent post requests, vs. trying to wait

* add debug log when create post is deduplicated
2018-12-17 15:16:57 -08:00
Christopher Speller
ef4e37fb6b Fix update user auth. (#10013) 2018-12-17 15:04:30 -05:00
Christopher Speller
8429add371 Cleanup related to context refactor (#9988) 2018-12-17 08:51:46 -08:00
Lev
829f183bb0 MM-8662: Preserve plugin's enabled state when overwriting (#10005)
If a plugin upload overwrites an exiosting plugin, the new one will be
immediately enabled if the old one was enabled.
2018-12-17 08:35:12 -05:00
Joram Wilander
6c2e216c3f Require at least one element in interactive dialogs (#10003) 2018-12-14 16:30:07 +01:00
Joram Wilander
c06e42b24a Include PluginsEnabled in limited client config (#9998) 2018-12-14 12:13:21 +01:00
Jesse Hallam
594f15051d MM-13498: fix subpath assets rewrite (#9997)
* MM-13498: check that subpath rewrite of csp meta tag succeeds

* MM-13498: fix subpath assets rewrite
2018-12-13 17:42:38 -05:00
Lev
fae4f60b33 MM-7633: Optimize memory utilization during file uploads (#9835)
* MM-7633: Optimize memory utilization during file uploads

Refactored the file upload code to reduce redundant buffering and stream
directly to the file store. Added tests.

Benchmark results:
```
levs-mbp:mattermost-server levb$  go test -v -run nothing -bench Upload -benchmem ./app
...
BenchmarkUploadFile/random-5Mb-gif-raw-ish_DoUploadFile-4         	      10	 122598031 ns/op	21211370 B/op	    1008 allocs/op
BenchmarkUploadFile/random-5Mb-gif-raw_UploadFileTask-4           	     100	  20211926 ns/op	 5678750 B/op	     126 allocs/op
BenchmarkUploadFile/random-5Mb-gif-UploadFiles-4                  	       2	1037051184 ns/op	81806360 B/op	 3705013 allocs/op
BenchmarkUploadFile/random-5Mb-gif-UploadFileTask-4               	       2	 933644431 ns/op	67015868 B/op	 3704410 allocs/op
BenchmarkUploadFile/random-2Mb-jpg-raw-ish_DoUploadFile-4         	     100	  13110509 ns/op	 6032614 B/op	    8052 allocs/op
BenchmarkUploadFile/random-2Mb-jpg-raw_UploadFileTask-4           	     100	  10729867 ns/op	 1738303 B/op	     125 allocs/op
BenchmarkUploadFile/random-2Mb-jpg-UploadFiles-4                  	       2	 925274912 ns/op	70326352 B/op	 3718856 allocs/op
BenchmarkUploadFile/random-2Mb-jpg-UploadFileTask-4               	       2	 995033336 ns/op	58113796 B/op	 3710943 allocs/op
BenchmarkUploadFile/zero-10Mb-raw-ish_DoUploadFile-4              	      30	  50777211 ns/op	54791929 B/op	    2714 allocs/op
BenchmarkUploadFile/zero-10Mb-raw_UploadFileTask-4                	      50	  36387339 ns/op	10503920 B/op	     126 allocs/op
BenchmarkUploadFile/zero-10Mb-UploadFiles-4                       	      30	  48657678 ns/op	54791948 B/op	    2719 allocs/op
BenchmarkUploadFile/zero-10Mb-UploadFileTask-4                    	      50	  37506467 ns/op	31492060 B/op	     131 allocs/op
...
```

https://mattermost.atlassian.net/browse/MM-7633 https://github.com/mattermost/mattermost-server/issues/7801

[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]
- [x] Added or updated unit tests (required for all new features)
- [ ] Added API documentation (required for all new APIs)
- [ ] All new/modified APIs include changes to the drivers
  *N/A*???
- [x] Includes text changes and localization file ([.../i18n/en.json](https://github.com/mattermost/mattermost-server/blob/master/i18n/en.json)) updates

Overview of changes:
- api4
    - Replaced `uploadFile` handler with `uploadFileStream` that reduces
      unnecessary buffering.
    - Added/refactored tests for the new API.
    - Refactored apitestlib/Check...Status functions.
- app
    - Added App.UploadFileTask, a more efficient refactor of UploadFile.
    - Consistently set `FileInfo.HasPreviewImage`
    - Added benchmarks for the new and prior implementations
    - Replaced passing around `*image.Image` with `image.Image` in the
      existing code.
- model
    - Added a more capable `client4.UploadFiles` API to match the new server
      API’s capabilities.
- I18n
    - Replaced `api.file.upload_file.bad_parse.app_error` with a more generic
      `api.file.upload_file.read_request.app_error`
- plugin
    - Removed type `plugin.multiPluginHookRunnerFunc` in favor of using
      `func(hooks Hooks) bool` explicitly, to help with testing
- tests
    - Added test files for testing images

Still remaining, but can be separate PRs - please let me know the preferred
course of action
    - Investigate JS client API - how does it do multipart?
    - Performance loss from old code on (small) image processing?
    - Deprecate the old functions, change other API implementations to use
      UploadFileTask

Definitely separate future PRs - should I file tickets foe these?
    - Only invoke t.readAll() if there are indeed applicable plugins to run
    - Find a way to leverage goexif buffer rather than re-reading

Suggested long-term improvements - should I file separate tickets for these?
- Actually allow uploading of large (GB-sized) files. This may require a
  change in how the file is passed to plugins.
- (Many) api4 tests should probably be subtests and share a server setup -
  will be much faster
- Performance improvements in image processing (goexif/thumbnail/preview)
  (maybe use https://mattermost.atlassian.net/browse/MM-10188 for this)

Questions:
1. I am commiting MBs of test images, are there better alternatives? I can
   probably create much less dense images that would take up considerably less
   space, even at pretty large sizes
2. I18n: Do I need to do anything special for the string change? Or just wait
   until it gets picked up and translated/updated?
3. The image dimensions are flipped in resulting FileInfo to match the actual
   orientation. Is this by design? Should add a test for it, perhaps?
4. What to do in the case of partial success? S3 but not DB, some files but not
   others? For now, just doing what the old code did, I think.
5. Make maxUploadDrainBytes configurable? Also, should this be the systemic
   behavior of all APIs with non-empty body? Otherwise dropped altogether?
   Check all other ioutil.ReadAll() from sockets. Find a way to set a total
   byte limit on request Body?

* WIP - Fixed for GetPluginsEnvironment() changes

* WIP - PR feedback

1. Refactored checkHTTPStatus to improve failure messages
2. Use `var name []type` rather than `name := ([]type)(nil)`
3. Replaced single-letter `p` with a more intention-revealing `part`
4. Added tests for full image size, `HasPreviewImage`

* WIP - rebased (c.Session->c.App.Session)

* WIP - PR feedback: eliminated use of Request.MultipartReader

Instead of hacking the request object to use r.MultipartReader now have own
functions `parseMultipartRequestHeader` and `multipartReader` eliminating the
need to hack the request object to use Request.MultipartReader limitations.

* WIP - PR feedback: UploadFileX with functional options

* WIP - PR feedback: style

* WIP - PR feedback: errors cleanup

* WIP - clarified File Upload benchmarks

* WIP - PR feedback: display the value of erroneous formname

* WIP - PR feedback: fixed handling of multiple channel_ids

* WIP - rebased from master - fixed tests

* PR Feedback

* PR feedback - moved client4.UploadFiles to _test for now
2018-12-13 22:32:07 +01:00
Jesse Hallam
86fa3866c1 Speed up build (#9993)
* configure MySQL to use tmpfs

* simplify use of COMPOSE_PROJECT_NAME, and set envs vs. overriding config.json, fix error output, --no-ansi

* cmd/mattermost/commands/*_test.go: ignore MM_SQLSETTINGS_DATASOURCE from the env

* clean up exit 1 semantics
2018-12-13 16:29:47 -05:00
Hanzei
1f197d7c55 Fix downloading of prepackged plugins for releases (#9994) 2018-12-13 11:29:49 -05:00
Harrison Healey
ea8e9497a8 MM-13253/MM-13254 Call PreparePostForClient in app.UpdatePost (#9983) 2018-12-13 09:47:30 -05:00
George Goldberg
487f82f30e MM-13027: Don't have a diagnostics segment key in dev builds. (#9938)
* MM-13027: Don't have a diagnostics segment key in dev builds.

* Fix tests.
2018-12-13 12:31:53 +00:00
Vaibhav Thakkar
dbd3801271 Add GetFile API in app and plugin (#9820) 2018-12-13 10:46:42 +01:00
Lev
0541e765ad MM-8662: Added force flag to uploadPlugin http API (#9969)
MM-8662: Added `force` flag to uploadPlugin http API
2018-12-12 10:13:24 -08:00
Harrison Healey
aff3156c56 MM-13238 Fix link cache being cleared too often with image proxy (#9981) 2018-12-12 13:11:53 -05:00
Joram Wilander
6ced89255b Register opengraph struct with gob for plugins (#9992) 2018-12-12 10:09:40 -08:00
Christopher Speller
fb12a739e5 Fix SQL syntax error when a non-existant channelId is attemted to be viewed. (#9975) 2018-12-12 10:08:55 -08:00
Harrison Healey
749a3e7538 MM-10417 Improve HTTPService for use in image proxy (#9966)
* Replaced httpservice with proper http.Client

* Added HTTPService.MakeTransport

* Expose timeouts used by HTTPServiceImpl

* Add additional documentation to HTTPService

* Remove MockedHTTPService

* Fix missing license
2018-12-12 11:39:14 -05:00
Chetanya Kandhari
f42c00ee53 MM-13349: Fix TOS not displaying using sso login in RN apps (#9989) 2018-12-12 10:46:24 -05:00
akhilanandbv003
11059b0251 Gh 9610 add plugin api for update user active method (#9854)
* wip

* wip

* After running make plugin-mocks

* Add
TestUpdateUserActive and run make pluginapi

* Adding plugin_api_test.go

* Better formatting of code using gofmt

* Fix tests and run make pluginapi

* Specify the minimum server version on the comments

* Include more tests as per the CR

* Fix tests

* Checking err.Id intsead of err & Removed comments and trailing spaces

* wip

* Fix tests as per CR and spaces

* Make changes to tests as per CR
2018-12-12 10:18:40 -05:00
Jesús Espino
febc5115fd MM-13220: Fixes for bulk export problems (#9980)
* MM-13220: Fixes for bulk export problems

* fixing tests
2018-12-12 14:20:22 +01:00
Jesús Espino
a7b6c71421 MM-12976: Moving MFA to Team edition (#9971)
* MM-12976: Moving MFA to Team edition

* Changing the mfa disabled i18n key and string
2018-12-12 11:50:19 +01:00
Michael Kochell
f94567c97b [MM-9937] Add support for sending a message to a different channel than where the slash command was issued from (#9878)
* add support for channel_id in a slash command response

* add test for HandleCommandResponsePost
2018-12-12 07:43:31 +01:00
Jesse Hallam
8d7cb44f30 Build tweaks (#9985)
* fix TEST_DATABASE_MYSQL_ROOT_PASSWD line wrap

* archiveArtifacts report*.xml
2018-12-11 20:41:11 +01:00