Commit Graph

304 Commits

Author SHA1 Message Date
tobi
7ce3a1e6f3
[bugfix] Don't try to update suspended accounts ()
* [bugfix] Don't try to update suspended accounts

* bail early if requesting account suspended
2023-11-10 17:16:58 +01:00
kim
34d0879c16
[bugfix] fix poll vote count responses on client and fedi API vote creation ()
* increment poll votes *before* enqueuing vote to client API worker

* increment vote counts before federating status update after vote in local poll

* improved vote count calculation during backend -> frontend model conversion
2023-11-08 23:37:35 +01:00
kim
e9e5dc5a40
[feature] add support for polls + receiving federated status edits () 2023-11-08 14:32:17 +00:00
kim
41435a6c4e
[feature] support canceling scheduled tasks, some federation API performance improvements () 2023-11-04 20:21:20 +00:00
tobi
dd4b0241ea
[bugfix] Allow blocked accounts to show in precise search () 2023-10-30 19:01:00 +01:00
tobi
4dc0547dc0
[feature] Customizable media cleaner schedule () 2023-10-30 17:35:11 +00:00
tobi
c7b6cd7770
[feature] Status thread mute/unmute functionality ()
* add db models + functions for keeping track of threads

* give em the old linty testy

* create, remove, check mutes

* swagger

* testerino

* test mute/unmute via api

* add info log about new index creation

* thread + allow muting of any remote statuses that mention a local account

* IsStatusThreadMutedBy -> IsThreadMutedByAccount

* use common processing functions in status processor

* set = NULL

* favee!

* get rekt darlings, darlings get rekt

* testrig please, have mercy muy liege
2023-10-25 15:04:53 +01:00
kim
69ba9a79a1
[chore] de-interface{} the federator and dereferencer structs ()
* de-interface{} the federator and dereferencer structs

* fix broken type signatures
2023-10-23 10:58:13 +01:00
tobi
805c67b759
[bugfix] add missing "local" param in public timeline link headers () 2023-10-18 12:32:40 +02:00
kim
c6e00afc7c
[feature] tentatively start adding polls support () 2023-10-04 13:09:42 +01:00
tobi
2b6b9cdf83
[bugfix] Fix paging for empty items ()
* use minID properly for public timeline

* return paged response properly even when 0 items

* use gtserror

* page more consistently (for now)

* test

* aaa
2023-09-29 15:31:10 +02:00
tobi
536d9e482d
[chore/bugfix] Deinterface text.Formatter, allow underscores in hashtags () 2023-09-29 10:39:56 +02:00
tobi
b6b8f82c87
[bugfix] Move follow.show_reblogs check further up to avoid showing unwanted reblogs in home timeline () 2023-09-29 10:39:35 +02:00
kim
8f67dd583d
[chore] deinterface the typeutils.Converter and update to use state structure ()
* update typeconverter to use state structure

* deinterface the typeutils.TypeConverter -> typeutils.Converter

* finish copying over old type converter code comments

* fix cherry-pick merge issues, fix tests pointing to old typeutils interface type still
2023-09-23 18:44:11 +02:00
tobi
183eaa5b29
[feature] Implement explicit domain allows + allowlist federation mode ()
* love like winter! wohoah, wohoah

* domain allow side effects

* tests! logging! unallow!

* document federation modes

* linty linterson

* test

* further adventures in documentation

* finish up domain block documentation (i think)

* change wording a wee little bit

* docs, example

* consolidate shared domainPermission code

* call mode once

* fetch federation mode within domain blocked func

* read domain perm import in streaming manner

* don't use pointer to slice for domain perms

* don't bother copying blocks + allows before deleting

* admonish!

* change wording just a scooch

* update docs
2023-09-21 12:12:04 +02:00
kim
fc11deeb83
[feature] add paging to AP following / followers endpoints () 2023-09-20 16:49:46 +01:00
kim
7293d6029b
[feature] add paging to account follows, followers and follow requests endpoints () 2023-09-12 14:00:35 +01:00
tobi
4b594516ec
[feature] Allow admins to expire remote public keys; refetch expired keys on demand () 2023-09-12 10:43:12 +01:00
kim
b093947d84
[chore] much improved paging package () 2023-09-07 15:58:37 +01:00
tobi
3ed1ca68e5
[feature] Store admin actions in the db, prevent conflicting actions () 2023-09-04 14:55:17 +01:00
f0x52
92de8fb396
[feature] Instance rules ()
* init instance rules database model, admin api

* expose instance rules in public instance api

* public /api/v1/instance/rules route

* GET ruleById

* createRule route

* createRule auth check

* updateRule

* deleteRule

* list rules on about page

* ruleGet auth

* add about page ids for anchors

* process and store adding violated rules to reports

* admin api models for instance rules

* instance rule edit frontend

* change rule inputs to textareas

* database fixes after rebase ()

* remove unused imports

* fix db migration column name

* fix tests

* fix more tests

* fix postgres error with wrongly used Ident

* add some tests, fiddle with rule model a bit, fix postgres migration

* swagger docs

---------

Co-authored-by: tsmethurst <tobi.smethurst@protonmail.com>
2023-08-19 14:33:15 +02:00
kim
e9c3663cce
[chore] ensure worker contexts have request ID () 2023-08-15 17:01:01 +01:00
tobi
dc96562b40
[bugfix] Use custom bluemonday policy to disallow inline img tags () 2023-08-11 14:40:11 +02:00
tobi
a26af1310f
[bugfix] Populate followReq before accessing targetaccount pointer () 2023-08-11 11:05:49 +02:00
tobi
992c7ce4c2
[chore] Add test to ensure show_reblogs on follow works as expected () 2023-08-10 17:10:27 +02:00
kim
91cbcd589e
[performance] remove last of relational queries to instead rely on caches () 2023-08-10 15:08:41 +01:00
tobi
9770d54237
[feature] List replies policy, refactor async workers ()
* Add/update some DB functions.

* move async workers into subprocessor

* rename FromFederator -> FromFediAPI

* update home timeline check to include check for current status first before moving to parent status

* change streamMap to pointer to mollify linter

* update followtoas func signature

* fix merge

* remove errant debug log

* don't use separate errs.Combine() check to wrap errs

* wrap parts of workers functionality in sub-structs

* populate report using new db funcs

* embed federator (tiny bit tidier)

* flesh out error msg, add continue(!)

* fix other error messages to be more specific

* better, nicer

* give parseURI util function a bit more util

* missing headers

* use pointers for subprocessors
2023-08-09 19:14:33 +02:00
kim
3920bc87d1
[bugfix] don't accept unrelated statuses ()
Co-authored-by: Daenney <daenney@users.noreply.github.com>
Co-authored-by: tsmethurst <tobi.smethurst@protonmail.com>
2023-08-08 12:26:34 +01:00
Daenney
be3718f6e4
[chore] Use generic pointer function ()
This replaces the different $TypePtr functions with a generic
implementation.
2023-08-07 18:38:11 +01:00
Vyr Cossont
0f812746b7
[feature] Allow full BCP 47 in language inputs ()
* Allow full BCP 47 in language inputs

Fixes 

* Fuse validation and normalization for languages

* Remove outdated comment line

* Move post language canonicalization test
2023-08-07 10:25:54 +02:00
kim
9a291dea84
[performance] add caching of status fave, boost of, in reply to ID lists () 2023-08-04 12:28:33 +01:00
tobi
e8a20f587c
[bugfix] Rework MultiError to wrap + unwrap errors properly ()
* rework multierror a bit

* test multierror
2023-08-02 17:21:46 +02:00
tobi
cec29e2a8d
[bugfix] Allow instance accounts to be shown in search results in certain circumstances () 2023-08-02 08:31:09 +01:00
tobi
2796a2e82f
[feature] Hashtag federation (in/out), hashtag client API endpoints ()
* update go-fed

* do the things

* remove unused columns from tags

* update to latest lingo from main

* further tag shenanigans

* serve stub page at tag endpoint

* we did it lads

* tests, oh tests, ohhh tests, oh tests (doo doo doo doo)

* swagger docs

* document hashtag usage + federation

* instanceGet

* don't bother parsing tag href

* rename whereStartsWith -> whereStartsLike

* remove GetOrCreateTag

* dont cache status tag timelineability
2023-07-31 15:47:35 +02:00
kim
ed2477ebea
[performance] cache follow, follow request and block ID lists () 2023-07-31 11:25:29 +01:00
Vyr Cossont
b874e9251e
[feature] Implement markers API ()
* Implement markers API

Fixes 

* Correct import grouping in markers files

* Regenerate Swagger for markers API

* Shorten names for readability

* Cache markers for 6 hours

* Update DB ref

* Update envparsing.sh
2023-07-29 12:49:14 +02:00
Vyr Cossont
22ac4607a1
[feature] Support setting private notes on accounts ()
* Support setting private notes on accounts

* Reformat comment whitespace

* Add missing license headers

* Use apiutil.ParseID

* Rename Note model and cache to AccountNote

* Update golden cache config in test/envparsing.sh

* Rename gtsmodel/note.go to gtsmodel/accountnote.go

* Update AccountNote uniqueness constraint name

Now has same prefix as other indexes on this table.

---------

Co-authored-by: tobi <31960611+tsmethurst@users.noreply.github.com>
2023-07-27 10:30:39 +02:00
kim
5f3e095717
[performance] retry db queries on busy errors ()
* catch SQLITE_BUSY errors, wrap bun.DB to use our own busy retrier, remove unnecessary db.Error type

Signed-off-by: kim <grufwub@gmail.com>

* remove dead code

Signed-off-by: kim <grufwub@gmail.com>

* remove more dead code, add missing error arguments

Signed-off-by: kim <grufwub@gmail.com>

* update sqlite to use maxOpenConns()

Signed-off-by: kim <grufwub@gmail.com>

* add uncommitted changes

Signed-off-by: kim <grufwub@gmail.com>

* use direct calls-through for the ConnIface to make sure we don't double query hook

Signed-off-by: kim <grufwub@gmail.com>

* expose underlying bun.DB better

Signed-off-by: kim <grufwub@gmail.com>

* retry on the correct busy error

Signed-off-by: kim <grufwub@gmail.com>

* use longer possible maxRetries for db retry-backoff

Signed-off-by: kim <grufwub@gmail.com>

* remove the note regarding max-open-conns only applying to postgres

Signed-off-by: kim <grufwub@gmail.com>

* improved code commenting

Signed-off-by: kim <grufwub@gmail.com>

* remove unnecessary infof call (just use info)

Signed-off-by: kim <grufwub@gmail.com>

* rename DBConn to WrappedDB to better follow sql package name conventions

Signed-off-by: kim <grufwub@gmail.com>

* update test error string checks

Signed-off-by: kim <grufwub@gmail.com>

* shush linter

Signed-off-by: kim <grufwub@gmail.com>

* update backoff logic to be more transparent

Signed-off-by: kim <grufwub@gmail.com>

---------

Signed-off-by: kim <grufwub@gmail.com>
2023-07-25 10:34:05 +02:00
kim
9eff0d46e4
[feature/performance] support uncaching remote emoji + scheduled cleanup functions () 2023-07-24 13:14:13 +01:00
tobi
5a29a031ad
[chore] Admin CLI + new account creation refactoring ()
* set maxPasswordLength to 72 bytes, rename validate function

* refactor NewSignup

* refactor admin account CLI commands

* refactor oidc create user

* refactor processor create

* tweak password change, check old != new password
2023-07-23 12:33:17 +02:00
tobi
89ee9d5004
[bugfix] Return all accounts when list accounts limit <= 0 () 2023-07-21 13:56:38 +01:00
kim
f4319740ab
[bugfix] more robust list timeline invalidation () 2023-07-18 09:43:17 +01:00
tobi
1951e6c840
[bugfix] Update account Update logic () 2023-07-12 12:20:15 +01:00
tobi
ca5492b65f
[bugfix] Tidy up rss feed serving; don't error on empty feed ()
* [bugfix] Tidy up rss feed serving; don't error on empty feed

* fall back to account creation time as rss feed update time

* return feed early when account has no eligible statuses
2023-07-10 17:05:59 +02:00
tobi
6dbb8ba7aa
[bugfix] Fix delete follow req instead of follow () 2023-07-08 23:12:06 +02:00
tobi
f40bb02f31
[bugfix] Delete mutual follow (requests) when receiving block from remote ()
* [bugfix] Delete mutual follow (requests) on block

* fix test
2023-07-08 16:43:12 +02:00
tobi
ac564c1862
[bugfix] Reorder web view logic, other small fixes () 2023-07-07 14:58:53 +02:00
tobi
e70bf8a6c8
[chore/bugfix] Domain block tidying up, Implement first pass of 207 Multi-Status ()
* [chore/refactor] update domain block processing

* expose domain block import errors a lil better

* move/remove unused query keys
2023-07-07 11:34:12 +02:00
tobi
3e19f480e6
[bugfix] Ensure InReplyToID set properly, update dereference ancestors func () 2023-06-24 08:32:10 +01:00
kim
9a22102fa8
[bugfix/chore] oauth entropy fix + media cleanup tasks rewrite () 2023-06-22 20:46:36 +01:00