Commit graph

353 commits

Author SHA1 Message Date
Thomas Citharel aca2ed612e
Add datetime_to_date_string/3 and is_same_day?/2 to Mobilizon.Service.DateTime
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-10-18 11:13:37 +02:00
Thomas Citharel cd89efa1e3
Export timezone in ICS files
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-10-18 11:12:18 +02:00
Thomas Citharel b383d11f51
Fix backend tests
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-10-12 08:49:12 +02:00
Thomas Citharel 62af1e72d6
Some fixes
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-10-11 17:56:23 +02:00
Thomas Citharel d58ca5743d
Add timezone handling
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-10-11 17:37:17 +02:00
Thomas Citharel dee7c58449
Spec fixes
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-10-11 15:14:54 +02:00
Thomas Citharel 98449b9cfd
Spec fixes
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-10-05 16:05:52 +02:00
Thomas Citharel f4284e1d3a
Remove unused functions
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-10-05 16:05:51 +02:00
Thomas Citharel 0c667b13ae
Export participants to different formats
* CSV
* PDF (requires Python dependency `weasyprint`)
* ODS (requires Python dependency `pyexcel_ods3`)

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-10-05 10:52:55 +02:00
Thomas Citharel 2b808d998e
Delete participations after warning participants
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-09-30 15:58:12 +02:00
Thomas Citharel fd980176bc
Add some debug logging to actor suspension process
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-09-30 15:58:09 +02:00
Thomas Citharel b5d9b82bdd
Refactor Mobilizon.Federation.ActivityPub and add typespecs
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-09-29 16:31:11 +02:00
Thomas Citharel 55e7696230
Absinthe middleware actor provider
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-09-27 09:42:11 +02:00
Thomas Citharel 1893d9f55b
Various refactoring and typespec improvements
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-09-26 17:52:24 +02:00
Thomas Citharel 75e254d8b4
Actor suspension refactoring
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-09-26 17:52:23 +02:00
Thomas Citharel acbe0e6c59
Fix rendering metadata from deleted (empty) comments
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-09-26 17:52:22 +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 ab843dff4c
Fixed deduplicated files from orphan media being deleted as well
Happens when a file is uploaded, then orphaned, and a similar file is
used somewhere. The CleanMedia job service didn't consider that case

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-08-22 16:17:20 +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 46bfa2c422
Add a default timezone if user's timezone is set to null
Closes #746

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-08-20 16:54:34 +02:00
Thomas Citharel a3d02184f0
Fix sitemap creation on Docker
Docker is installed at root but priv/ lies in lib/mobilizon-x/
We can use Application.app_dir(:mobilizon, "priv/static") to get the
correct path

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-08-19 15:23:33 +02:00
Thomas Citharel de102755f8
Add sane limits to feeds
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-08-16 16:23:13 +02:00
Thomas Citharel 33bf8334fe
Allow all rel values for event & post links in descriptions
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-08-09 14:26:19 +02:00
Thomas Citharel 93ba408671
Improve group profile metadata
* Add canonical link
* Add link alternate to application/activity+json representation
* add robots noindex on remote profiles

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-08-04 10:49:02 +02:00
Thomas Citharel bd71dd6cf1
Handle SSL being already started in LDAP connection
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-08-03 14:58:06 +02:00
Thomas Citharel cceb083ad7
Improve error reporting and add test
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-08-03 12:15:54 +02:00
Thomas Citharel a670a7d7a7
Fix and improve language handling
- Refactor plugs to detect and set language
- Translate ecto validation errors
- Use Gettext directly, not Mobilizon.Web.Gettext
- Set the language in the <html> attribute according to the one loaded
  on front-end

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-07-27 20:11:56 +02:00
Thomas Citharel cc33ee7ada Merge branch 'fix-unattached-media-cleanup' into 'master'
Refactor the query to detect unattached media

See merge request framasoft/mobilizon!996
2021-07-22 14:40:03 +00:00
Thomas Citharel fa8cae681f
Add possibility to create users with provider (such as LDAP)
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-07-22 15:09:12 +02:00
Thomas Citharel db1649ded8
Refactor the query to detect unattached media
The previous one was going 💥 in production

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-07-21 19:44:13 +02:00
Thomas Citharel d7bcfd5be6
Add target to allowed attributes on <a> links so that links open in new
tabs

Closes #786

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-07-21 10:34:07 +02:00
Thomas Citharel 69e3db1e9b
Fix push notifications for group, members & post activities
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-06-30 12:16:06 +02:00
Thomas Citharel f5aa7ffa74
Fix crash when trying to notify activities not from groups
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-06-30 10:13:57 +02:00
Thomas Citharel 5cdac95a85
Send announcement notifications to anonymous participants
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-06-27 18:16:34 +02:00
Thomas Citharel ed182e358b
Fix scheduler test
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-06-27 16:18:53 +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 3ed25bab81
Send notifications to event organizer when new comment is posted
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-06-27 13:16:17 +02:00
Thomas Citharel b1eeebe05a
Default to UTC when no timezone in user settings in recaps
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-06-26 17:52:07 +02:00
Thomas Citharel 784c607c65
Send activity digests
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-06-26 16:09:02 +02:00
Thomas Citharel 7a6667bd3b
Make mentions send notifications
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-06-23 20:12:13 +02:00
Thomas Citharel 6c6ae7c712
Fix resource preview crash when resource has no image_remote_url
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-06-22 17:13:04 +02:00
Thomas Citharel 8caf1e302b
Add basic metadata to opengraph preview
Also refactor datetime & address utils

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-06-22 16:01:55 +02:00
Thomas Citharel 691d71d9f7
Decode URI sent in notification payloads
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-06-17 16:19:35 +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 005f7e20ca
Remove compile-time dependencies for some config values
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-06-07 10:24:57 +02:00
Thomas Citharel d3164899f3
Fix tests
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-06-04 13:33:26 +02:00
Thomas Citharel c0ab3d9905
Fix credo warnings
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-06-04 13:33:25 +02:00
Thomas Citharel 37c1790273
Test CommentActivity legacy notifications
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-06-04 13:33:25 +02:00
Thomas Citharel 57c07836aa
Add a test to LegacyNotifierBuilder
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-06-04 13:33:25 +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 bab751591f
Make sure we have a valid timezone
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-06-04 13:33:19 +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 938f698b7a
Add webpush front-end support
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-06-04 13:33:12 +02:00
Thomas Citharel 9f5e3a39ec
Add Push notifications backend support
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-06-04 13:32:06 +02:00
Thomas Citharel 86c2512c62
WIP
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-06-04 13:32:05 +02:00
Thomas Citharel b0394fdb02
Use post picture as OGP picture if existing
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-05-19 11:35:19 +02:00
Thomas Citharel 5b36e71581
Fix rich media parsers
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-05-03 15:34:25 +02:00
Thomas Citharel 46120b16b6
Fix merging URIs for media from url when doing a rich media preview
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-05-03 14:57:30 +02:00
Thomas Citharel 687d1685f0
Fix metadata remote image URL
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-04-23 09:57:23 +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 3df80b96aa
Expose instance wide Atom feed in the HTML if enabled
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-04-19 12:41:19 +02:00
Thomas Citharel 5ac02bae5d
Use runtime configuration for HTTP clients user-agent
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-04-12 12:01:49 +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 386dbbb3a6
Fix path issue when fetching favicon for resources
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-04-08 10:39:01 +02:00
Thomas Citharel 8e6aa8c85c
Decode HTML entities when sanitized
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-03-30 09:12:53 +02:00
Thomas Citharel acf51a3130
Fix issues when group isn't local
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-03-29 18:23:03 +02:00
Thomas Citharel cde9f8873e
Expose personal tokened feeds
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-03-26 19:36:48 +01:00
Thomas Citharel 1aa699fef0
Introduce instance ICS & Atom feeds (disabled by default)
And refactor the feed modules

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-03-26 16:19:58 +01:00
Thomas Citharel 80adf2307d
Extract tag parsing to own code, because linkify doesn't handle tag into
HTML

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-03-26 09:16:31 +01:00
Thomas Citharel 95516a4067
Fix registering new user account with same email as unconfirmed
Refactors get_user_by_email/2

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-03-25 10:22:40 +01:00
Thomas Citharel 7b9910f251
Resources fixes and improvements
- Fix getting page description
- Fix fetching metadata from Twitter (thx @marienfressinaud)
- Improve error handling

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-03-24 11:07:00 +01:00
Thomas Citharel 35e641bcff
Fix geospatial runtime configuration
Geospatial configuration was only evaluated at compile-time, not at
runtime

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-03-16 15:33:44 +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 74e0e009d1
Add cron job to clean old activities
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-03-02 14:34:52 +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 b1cc3868a6
Add user setting to provide location and show events near location on
homepage

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-02-12 19:10:22 +01:00
Thomas Citharel f0141c97e8
Refactor rich media parsers to restrict the allowed properties
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-01-22 19:44:59 +01:00
Thomas Citharel e76a270e72
Feed improvements
And show public feed links on the group page

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-01-19 15:30:02 +01:00
Thomas Citharel b69daa7b54
Attach event ics files to event-related emails
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2021-01-11 11:29:28 +01:00
setop 3f856daf41 add "hr"to allowed tags in HTML
because it doesn't hurt and it is useful in event description and all other HTML content
2021-01-10 00:01:57 +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 4e7ab231ad
Allow data-media-id attribute in img tags
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-12-16 09:54:09 +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 d35ccff5a1
Add tests for participation without account
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-12-07 15:55:49 +01:00
Thomas Citharel d6d9309784
[LDAP] Allow to filter users by memberOf
Closes #528

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-12-01 09:16:41 +01:00
Thomas Citharel 0f5941a046
[LDAP] Allow to bind to an admin with a different FQDN
By directly providing the full DN

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-12-01 09:16:28 +01:00
Thomas Citharel 2141f92a30
Fix tests
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-11-30 16:46:26 +01:00
Thomas Citharel 207d5c0eb0
Use better upstream deps
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-11-30 12:48:23 +01:00
Thomas Citharel 10eb64720e
Fix tests with scheduler notifications
Close #390

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-11-30 12:23:40 +01:00
Thomas Citharel 0e1dc0df8d
Clean unconfirmed users
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-11-27 11:10:12 +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 15a82c7bce
[Metadata] Fix actors not sanitizing their description and refactor
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-11-17 15:45:08 +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 ce7b8e05a1
Fallback GitStatus version code to mix env value
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-10-23 18:55:47 +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 2b3d1d7f79
Fix issue with hostname validation
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-10-20 09:58:19 +02:00
Thomas Citharel 2ad043a91d
Fix OEmbed preview parser
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2020-10-20 09:58:18 +02:00