Commit graph

229 commits

Author SHA1 Message Date
Thomas Citharel 75e254d8b4
Actor suspension refactoring
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-09-26 17:52:23 +02:00
Thomas Citharel de047c8939
Various typespec and compilation improvements
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-09-26 17:52:20 +02:00
Thomas Citharel cc197d7638
Fix federating geo coordinates
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-09-06 12:46:29 +02:00
Thomas Citharel d577b07c6e
Introduce event language detection
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-08-20 18:01:29 +02:00
Thomas Citharel f204141262
Content is visible only @ap_public is in "to"
Closes #711

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-08-16 11:16:45 +02:00
Thomas Citharel 34e2c4f310
Fix geocoordinates mixmatch
Closes #828

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-08-16 10:23:16 +02:00
Thomas Citharel e05735265b
Fix remote group moderators managing event participations
Closes #827

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-08-13 12:24:30 +02:00
Thomas Citharel cfffe5b248
Better handle deleted comments
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-08-10 20:49:46 +02:00
Thomas Citharel 6f9db37ca3
Fix checking origin from a tombstone
When comparing an activity with their origin, only compare the ID
directly, as Tombstones don't have actors anymore

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-08-10 20:49:45 +02:00
Thomas Citharel 56861d6483
Fix audience for comments under a remote event from group
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-08-10 12:46:44 +02:00
Thomas Citharel d3a05b5568
Federate metadata
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-08-10 12:46:44 +02:00
Thomas Citharel a5822d179c
Fix editing event from original instance on a group event
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-08-02 11:45:50 +02:00
Thomas Citharel 4b864ba423
Allow to use inline "Join" when processing an Accept
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-08-02 11:45:48 +02:00
Thomas Citharel 099b85e9a9
Refactor audience to introduce maybe_add_followers/2
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-08-01 10:51:23 +02:00
Thomas Citharel e6c05c481a
Fix variables names
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-08-01 10:51:22 +02:00
Thomas Citharel ecf7bb1fef
Various event AP converter changes and add tests
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-08-01 10:51:22 +02:00
Thomas Citharel caf9493a00
Various changes needed for AP refactor
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-08-01 10:51:22 +02:00
Thomas Citharel 78dc7613bc
Refactor Mobilizon.Federation.ActivityPub.Audience and add tests
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-08-01 10:51:21 +02:00
Thomas Citharel 221dd0609e
Fix accessing group draft post
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-08-01 10:51:21 +02:00
Thomas Citharel ecfcc4fe83
Don't preload just public events, group draft can be fetched as well
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-08-01 10:51:20 +02:00
Thomas Citharel 505b16611b
Fix event local detection
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-08-01 10:51:20 +02:00
Thomas Citharel 20ff0a7f6c
Refactor Mobilizon.Federation.ActivityPub.Permission to handle
permissions

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-08-01 10:51:19 +02:00
Thomas Citharel c394f2cc5a
Use Permission module to check if user can have access to resource
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-08-01 10:51:18 +02:00
Thomas Citharel 0995043d04
Add the :role_needed_to_access permission check and refactor
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-08-01 10:51:17 +02:00
Thomas Citharel 867e88481d
Fix getting visibility from AP Post
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-08-01 10:51:17 +02:00
Thomas Citharel 7ec6f158ec
Add wrapper to Sentry to not load it when not configured
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-06-27 15:21:33 +02:00
Thomas Citharel 725a3c8b9e
Fix accessing outdated page of group
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-06-16 11:27:14 +02:00
Thomas Citharel 19792abd41
Better handling of bad host-meta responses
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-06-10 15:18:12 +02:00
Thomas Citharel a24e08a6de
Add blurhash support to backend
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-06-10 15:18:08 +02:00
Thomas Citharel a336e76aae
Run mix format on Elixir 12
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-06-07 16:49:43 +02:00
Thomas Citharel 58bffc5c66
WIP notification settings
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-06-04 13:33:25 +02:00
Thomas Citharel f84cc299ba
Log when a follow request is auto-accepted
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-06-04 13:33:16 +02:00
Thomas Citharel 4100b2f962
Refresh profiles in a background task
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-06-04 13:33:16 +02:00
Thomas Citharel 2692d32c5e
Add url to error log
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-04-29 10:23:47 +02:00
Thomas Citharel 614ead1777
Transmogrifier event create Handle any type of error
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-04-28 18:19:09 +02:00
Thomas Citharel 4fd6ecf53d
Improve AP error handling
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-04-28 18:06:17 +02:00
Thomas Citharel 8185fcd0bd
Refresh after invite accept only if remote group
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-04-26 10:17:57 +02:00
Thomas Citharel ed52474b51
Disable sentry logging unknown activities
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-04-26 09:21:00 +02:00
Thomas Citharel eaadf261ac
Handle actor fetch issues better
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-04-23 09:25:57 +02:00
Thomas Citharel 280f461ba7
Refactor the ActivityPub module
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-04-22 19:29:47 +02:00
Thomas Citharel 67b537f380
Fix sentry issues
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-04-22 19:29:46 +02:00
Thomas Citharel cb4a801519
Small fixes
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-04-20 17:10:34 +02:00
Thomas Citharel d98e68203e
Handle sending mail more properly
With custom sentry reporting issues

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-04-20 15:02:24 +02:00
Thomas Citharel 53fd77f5da
Fixes discussions being sent to followers instead of members
Closes #681

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-04-16 16:01:10 +02:00
Thomas Citharel fb614cf877
Handle AP fetch issues properly
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-04-12 12:01:51 +02:00
Thomas Citharel cbf772f282
Add a check for valid URI before fetching it in AP Client
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-04-12 12:01:50 +02:00
Thomas Citharel b34958d3af
Refactor Webfinger module, use XRD host-meta to find webfinger endpoint
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-04-12 12:01:49 +02:00
Thomas Citharel bd53bfc46b
Fix usage of is_bitstring instead of is_binary
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-04-08 16:41:49 +02:00
Thomas Citharel fa99c09c57
Use tasks to process refreshing elements
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-04-08 10:39:01 +02:00
Thomas Citharel 076c14b54e
Don't auto-approve instance follows
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-03-30 09:12:53 +02:00
Thomas Citharel e6189390ac
Fix creating discussion with title containing only spaces
Also sanitize first comment

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-03-24 15:47:03 +01:00
Thomas Citharel 6fe22ac6ed
Handle ActivityPub Fetcher returning text that's not JSON
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-03-16 16:50:43 +01:00
Thomas Citharel 1f926902aa
Add comments under events to activities
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-03-10 17:40:55 +01:00
Thomas Citharel 6a23f03b70
Federate draft status
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-03-08 15:58:54 +01:00
Thomas Citharel 3bffabccb6
Only federate group draft posts to members
Closes #615

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-03-08 13:43:53 +01:00
Thomas Citharel 03824b898c
Get membership status only for the current group
Closes #575

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-03-05 11:23:17 +01:00
Thomas Citharel e70b21ae79
Only refresh groups that need updating
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-03-02 14:48:59 +01:00
Thomas Citharel 3fe64a4389
Introduce the group activity section
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-02-26 09:37:06 +01:00
Thomas Citharel 177341b491
Fix events & posts not being sent to group followers
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-02-04 16:48:42 +01:00
Thomas Citharel a4545bcf67
Exclude persons from being followed
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-01-24 16:17:16 +01:00
Thomas Citharel 4fbdc94e7c
Fix following groups + Add interface to manage followers
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-01-22 11:52:52 +01:00
Thomas Citharel 12d2ab669d
Improve Member federation
Federate the member ID instead of the person ID

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-01-18 16:19:07 +01:00
Cédric Van Rompay 08df0be1b7 update location of litepub JSON-LD context
previous URL returns "HTTP 301 Moved Permanently"
2020-12-19 13:38:04 +01:00
Thomas Citharel f7d064c022
Handle Hubzilla posts better
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-12-17 17:32:12 +01:00
Thomas Citharel d1472d94de
Expose posts media through AP
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-12-16 09:54:56 +01:00
Thomas Citharel 9b27e70eb0
Save remote profiles avatars & banners locally
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-12-15 17:17:42 +01:00
Thomas Citharel 06050c9cd6
Fix leftover
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-12-01 17:42:07 +01:00
Thomas Citharel 6d8710f0fe
Send the membership emails in the correct language
And send them as well if the member is on the same instance 🙈

Close #472

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-12-01 10:21:07 +01:00
Thomas Citharel c9457fe0d3
Track usage of media files and add a job to clean them
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-11-26 17:53:33 +01:00
Thomas Citharel 19c9cf5e16
Fix refreshing groups
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-11-20 11:44:00 +01:00
Thomas Citharel 44559a71ee
Remove duplicate @doc blocs
Elixir 11 notifies this a lot

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-11-06 15:48:05 +01:00
Thomas Citharel 7c11807c14
Allow to join an open group
Also:

* Refactor interacting with a remote event so that you can interact with
  a remote group as well
* Add a setting for group admins to pick between an open and invite-only
  group
* Fix new groups without posts/todos/resources/events/conversations URL
  set
* Repair local groups that haven't got their
  posts/todos/resources/events/conversations URL set
* Add a scheduled job to refresh remote groups every hour
* Add a user setting to pick when to receive notifications when there's
  new members to approve (will be used when this feature is available)
* Fix pagination for members

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-11-06 15:19:36 +01:00
Thomas Citharel 6cda3c0a94
Don't allow remote comments to be inserted if parent event doesn't allow it
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-11-02 10:49:58 +01:00
prichier 751b72a434 Fix Mix.env use in prod app & MR threads 2020-10-31 02:42:06 +01:00
Thomas Citharel 19b0f4fc91 Merge branch 'vpzomtrrfrt/mobilizon-port-support' into 'master'
Check port in compare_urls

See merge request framasoft/mobilizon!651
2020-10-26 10:01:31 +01:00
Colin Reeder 1cf59ef24a
Check port in compare_urls 2020-10-26 09:33:20 +01:00
Colin Reeder 32629a8d4b Fix is_public? for non-lists 2020-10-25 12:17:31 -06:00
Thomas Citharel afc9febf0b Merge branch 'docs-email' into 'master'
Docs email

See merge request framasoft/mobilizon!627
2020-10-21 11:38:13 +02:00
Thomas Citharel 85aa9df4f8
Fix webfinger not following redirections by using a custom dedicated Tesla client
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-10-21 11:20:15 +02:00
Thomas Citharel e29704a928
Add task to refresh an instance relay
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-10-21 11:02:28 +02:00
Thomas Citharel 23dcb47ce5
Make sure only group moderators can update/delete events, posts
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-10-20 09:58:17 +02:00
Thomas Citharel fc1d392211
Couple of fixes for groups
- Fix posts update federation and add tests
- Fix posts deletion federation and add tests

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-10-20 09:44:04 +02:00
Thomas Citharel 479bd466b5
Improve debug logger message in webfinger module
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-10-15 17:19:15 +02:00
Thomas Citharel 05e5fc35d5
Improve profile registration
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-10-06 12:35:45 +02:00
Thomas Citharel aced4d039b
Fix posts and rework graphql errors
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-10-01 15:07:15 +02:00
Thomas Citharel 36cdcaa864
Send all event reminder notifications
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-09-30 10:45:01 +02:00
Thomas Citharel 49a5725da3
Improve and activate groups
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-09-29 10:25:00 +02:00
Thomas Citharel aed2dadb35 Merge branch 'patch-1' into 'master'
add debut statement to create activity

See merge request framasoft/mobilizon!563
2020-09-21 11:53:55 +02:00
Thomas Citharel b0e8a32d2a
Improvements to group page
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-09-21 11:18:49 +02:00
setop 31a2ede77f add debut statement to create activity 2020-09-12 00:42:35 +02:00
Thomas Citharel 489fd74545
Allow to refresh instance outbox when they accept subscription
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-09-02 10:57:18 +02:00
Thomas Citharel c011a988a8
Fix relay outbox endpoint
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-09-02 10:50:22 +02:00
Thomas Citharel 1984f71cbf
Add group admin profiles
And other fixes

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-08-27 12:12:54 +02:00
Thomas Citharel 4782221ef4
Allow to update a member role
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-08-20 10:54:58 +02:00
Thomas Citharel bdb4350624
Add an authenticated fetch route for members
If the member is remote, it redirects to original instance

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-08-19 11:29:02 +02:00
Thomas Citharel 156eba0551
Improve member adding and excluding flow
Allow to exclude a member

Send emails to the member when it's excluded

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-08-18 14:37:31 +02:00
Thomas Citharel c09deb5bc6
Fix remote group visibility and use Mastodon's discoverable attribute
Make sure actor visibility is :public or :unlisted

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-08-12 10:45:48 +02:00
Thomas Citharel 3807ab1b63
Allow events to be searched by location and period
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-08-10 15:40:18 +02:00
Thomas Citharel 74031892c5
Fix a line no longer used
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-07-31 11:08:29 +02:00
Thomas Citharel 2eda4eca3e Merge branch 'fix-accepting-follows' into 'master'
Fix accepting follows

See merge request framasoft/mobilizon!518
2020-07-31 10:00:18 +02:00
Thomas Citharel d268a16c4f
Fix trying to create signatures for remote actors
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-07-31 09:21:10 +02:00
Thomas Citharel b9cdd2f02f
Prevent upserting local actor
By comparing it's URI

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-07-31 09:01:27 +02:00
Thomas Citharel d4cde716d4
Fix redirections on WebFinger
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-07-30 17:57:20 +02:00
Thomas Citharel 9c9f1385fb
Introduce group posts
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-07-30 16:55:35 +02:00
Thomas Citharel e0fad9ddd1
Update Instance Actor when updating instance settings
Also fix an issue when publishing activities to followers/group members

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-07-07 16:55:59 +02:00
Thomas Citharel 83aa005faf
Drop HTMLSanitizeEx and fix title sanitizing
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-06-24 16:37:00 +02:00
Thomas Citharel 47297127a2
Improve comment section
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-06-15 16:50:01 +02:00
Thomas Citharel 5990633fb9
Use ActivityPub.get_or_fetch_actor_by_url/2 instead of
directly Actors.get_actor_by_url

So that we can refresh actors when they're stale

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-06-15 11:45:58 +02:00
Thomas Citharel beb35a09c6
Introduce basic user and profile management
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-06-12 19:16:40 +02:00
Thomas Citharel 2e64da11e3 Merge branch 'fix-online-address' into 'master'
Fix online address validation

See merge request framasoft/mobilizon!450
2020-06-09 11:27:45 +02:00
Thomas Citharel 2634c7f46b
Fix online address validation
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-06-09 11:13:22 +02:00
Thomas Citharel 39ae24edb8
Fix activitypub HTTPoison issue
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-06-09 10:40:20 +02:00
Thomas Citharel 3e74f59ee8
Send Notifications when participation approval
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-06-08 13:59:27 +02:00
Thomas Citharel c56e299a09
Validate number of places being a positive integer
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-06-05 11:38:49 +02:00
Thomas Citharel 42f07c17e5
Disable mix docs for now
Because of https://github.com/elixir-lang/ex_doc/issues/1172

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-06-04 10:58:27 +02:00
Thomas Citharel 4144e9ffd0
Introduce group basic federation, event new page and notifications
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-06-03 16:01:26 +02:00
Thomas Citharel c732ec7f87
Add ability to add message for participation and improve participation
management interface

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-03-06 09:00:48 +01:00
Thomas Citharel 39b7afd1cd
Blind key rotation and stale duration for profiles
See https://blog.dereferenced.org/the-case-for-blind-key-rotation

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-02-14 18:21:18 +01:00
Thomas Citharel 18c8b7bc14
Fix event online URL AP attachment
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-02-07 18:41:36 +01:00
Thomas Citharel 9e3df495dc
Move configuration to traditional way
️ This is the way.

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-02-06 16:12:13 +01:00
Thomas Citharel 2ed9050a90
Add anonymous and remote participations 2020-01-29 17:28:11 +01:00
rustra 3505736705 Fix Credo code readability issues 2020-01-28 20:15:59 +01:00
rustra 97651e88e9 Implement Credo software design suggestions 2020-01-28 19:18:33 +01:00
rustra 8856cc2f55 Rename MobilizonWeb to Mobilizon.Web 2020-01-26 21:39:49 +01:00
rustra b3f8d52bc9 Move API under GraphQL context 2020-01-26 21:15:04 +01:00
rustra 3577fe42e1 Improve Federation boundaries 2020-01-24 22:02:10 +01:00
rustra 8ca5c0b320 Separate Web modules related to Federation 2020-01-23 01:03:33 +01:00
rustra d1251280c5 Put HTTPSignatures, WebFinger and ActivityStream alongside with ActivityPub 2020-01-22 22:40:40 +01:00
rustra cdb520a95b Split Federation as separate context 2020-01-22 02:14:42 +01:00