summaryrefslogtreecommitdiff
path: root/internal
AgeCommit message (Collapse)AuthorFiles
2023-01-13[bugfix] Mount bookmarks endpoint correctly (#1338)Libravatar tobi1
2023-01-13[chore] Remove omitempty on account source; refactor tests to use ↵Libravatar tobi18
prettyprint json (#1337) * remove omitEmpty tag on account source items * update tests
2023-01-11[performance] media processing improvements (#1288)Libravatar kim31
* media processor consolidation and reformatting, reduce amount of required syscalls Signed-off-by: kim <grufwub@gmail.com> * update go-store library, stream jpeg/png encoding + use buffer pools, improved media processing AlreadyExists error handling Signed-off-by: kim <grufwub@gmail.com> * fix duration not being set, fix mp4 test expecting error Signed-off-by: kim <grufwub@gmail.com> * fix test expecting media files with different extension Signed-off-by: kim <grufwub@gmail.com> * remove unused code Signed-off-by: kim <grufwub@gmail.com> * fix expected storage paths in tests, update expected test thumbnails Signed-off-by: kim <grufwub@gmail.com> * remove dead code Signed-off-by: kim <grufwub@gmail.com> * fix cached presigned s3 url fetching Signed-off-by: kim <grufwub@gmail.com> * fix tests Signed-off-by: kim <grufwub@gmail.com> * fix test models Signed-off-by: kim <grufwub@gmail.com> * update media processing to use sync.Once{} for concurrency protection Signed-off-by: kim <grufwub@gmail.com> * shutup linter Signed-off-by: kim <grufwub@gmail.com> * fix passing in KVStore GetStream() as stream to PutStream() Signed-off-by: kim <grufwub@gmail.com> * fix unlocks of storage keys Signed-off-by: kim <grufwub@gmail.com> * whoops, return the error... Signed-off-by: kim <grufwub@gmail.com> * pour one out for tobi's code <3 Signed-off-by: kim <grufwub@gmail.com> * add back the byte slurping code Signed-off-by: kim <grufwub@gmail.com> * check for both ErrUnexpectedEOF and EOF Signed-off-by: kim <grufwub@gmail.com> * add back links to file format header information Signed-off-by: kim <grufwub@gmail.com> Signed-off-by: kim <grufwub@gmail.com>
2023-01-11[feature] Add local user and post count to nodeinfo responses (#1325)Libravatar Sleep2
* Add local user and post count to nodeinfo responses This fixes #1307 (at least partially). The nodeinfo endpoint should now return the total users on an instance, along with their post count. * Update NodeInfoUsers docstring and swagger yaml file
2023-01-10[feature] Implement Report database model and utility functions (#1310)Libravatar tobi17
* implement report database model * implement report cache + config changes * implement report database functions * report uri / regex functions * update envparsing test * remove unnecessary uri index * remove unused function + cache lookup * process error when storing report
2023-01-08[bugfix] return early in websocket upgrade handler (#1315)Libravatar kim4
* launch websocket streaming in goroutine to allow upgrade handler to return * don't send any message on ping, improved close check on failed read * use context to signal wsconn close, ensure canceled in read goroutine Signed-off-by: kim <grufwub@gmail.com>
2023-01-08[bugfix] fix panic during status delete loop by breaking out early on ↵Libravatar kim1
len(statuses) == 0 (#1317) Signed-off-by: kim <grufwub@gmail.com> Signed-off-by: kim <grufwub@gmail.com>
2023-01-05[chore] Update/add license headers for 2023 (#1304)Libravatar tobi741
2023-01-05[chore] Fix emoji notnull constraint on initial gtsmodel (#1303)Libravatar tobi1
2023-01-04[feature] HTTP request throttling middleware (#1297)Libravatar tobi5
* [feature] Add throttling middleware to AP endpoints * refactor a lil bit * use config setting, start updating docs * doc updates * use relative links in faq doc * small docs fixes * return code 503 instead of 429 when throttled * throttle other endpoints too * simplify token channel prefills
2023-01-03[chore] shuffle middleware to split rate limitting into ↵Libravatar kim9
client/s2s/fileserver, share gzip middleware globally (#1290) Signed-off-by: kim <grufwub@gmail.com> Signed-off-by: kim <grufwub@gmail.com>
2023-01-02[chore] The Big Middleware and API Refactor (tm) (#1250)Libravatar tobi221
* interim commit: start refactoring middlewares into package under router * another interim commit, this is becoming a big job * another fucking massive interim commit * refactor bookmarks to new style * ambassador, wiz zeze commits you are spoiling uz * she compiles, we're getting there * we're just normal men; we're just innocent men * apiutil * whoopsie * i'm glad noone reads commit msgs haha :blob_sweat: * use that weirdo go-bytesize library for maxMultipartMemory * fix media module paths
2022-12-22[feature] For video attachments, store + return fps, bitrate, duration (#1282)Libravatar tobi16
* start messing about with different mp4 metadata extraction * heyyooo it works * add test cow * move useful multierror to gtserror package * error out if video doesn't seem to be a real mp4 * test parsing mkv in disguise as mp4 * tidy up error handling * remove extraneous line * update framerate formatting * use float32 for aspect * fixy mctesterson
2022-12-21[bugfix] fix media create error not being checked (#1283)Libravatar tobi1
2022-12-21[bugfix] Close reader gracefully when streaming recache of remote media to ↵Libravatar tobi8
fileserver api caller (#1281) * close pipereader on failed data function * gently slurp the bytes * readability updates * go fmt * tidy up file server tests + add more cases * start moving io wrappers to separate iotools package. Remove use of buffering while piping recache stream Signed-off-by: kim <grufwub@gmail.com> * add license text Signed-off-by: kim <grufwub@gmail.com> Co-authored-by: kim <grufwub@gmail.com>
2022-12-17[feature] Enable basic video support (mp4 only) (#1274)Libravatar tobi10
* [feature] basic video support * fix missing semicolon * replace text shadow with stacked icons Co-authored-by: f0x <f0x@cthu.lu>
2022-12-16[chore] fix some little config whoopsies (#1272)Libravatar tobi1
2022-12-16update go-cache to v3.2.0 with support for ignoring errors (#1273)Libravatar kim1
2022-12-16[chore/bugfix] Switch markdown from blackfriday to goldmark (#1267)Libravatar Autumn!5
Co-authored-by: Autumn! <autumnull@posteo.net>
2022-12-15[bugfix] Use null for empty api status `language` (#1268)Libravatar tobi4
* [bugfix] Use null for empty api status `language` * update swagger docs
2022-12-14[feature] support Sec-Websocket-Protocol in streaming API (#1254)Libravatar Matthew Phillips3
* [feature] support Sec-Websocket-Protocol in streaming API * Fix lint problem * Update based on reviews
2022-12-14[feature] domain block wildcarding (#1178)Libravatar kim5
* for domain block lookups, lookup along subdomain parts Signed-off-by: kim <grufwub@gmail.com> * only lookup up to a max of 5 domain parts to prevent DOS, limit inserted domains to max of 5 subdomains Signed-off-by: kim <grufwub@gmail.com> * add test for domain block wildcarding Signed-off-by: kim <grufwub@gmail.com> * check cached status first, increase cached domain time Signed-off-by: kim <grufwub@gmail.com> * fix domain wildcard part building logic Signed-off-by: kim <grufwub@gmail.com> * create separate domain.BlockCache{} type to hold all domain blocks in memory Signed-off-by: kim <grufwub@gmail.com> * remove unused variable Signed-off-by: kim <grufwub@gmail.com> * add docs and test to domain block cache, check for domain == host in domain block getter funcs Signed-off-by: kim <grufwub@gmail.com> * add license text Signed-off-by: kim <grufwub@gmail.com> * check order in which we check primary cache Signed-off-by: kim <grufwub@gmail.com> * add better documentation of how domain block checking is performed Signed-off-by: kim <grufwub@gmail.com> * change Signed-off-by: kim <grufwub@gmail.com> Signed-off-by: kim <grufwub@gmail.com>
2022-12-13[bugfix] fix unordered favorites (#1245)Libravatar Christoph Voigt3
* [bugfix] fix unordered favorites * add test for favouritesget * add license to new test files
2022-12-12[feature] allow uncaching of other media types (#1234)Libravatar kim9
* simplify pruneRemote, remove unncecessary media trace logging, update RemoteOlderThan() to include headers/avis Signed-off-by: kim <grufwub@gmail.com> * cleanup pruneallmeta, add remote header to pruneremote tests Signed-off-by: kim <grufwub@gmail.com> * fix olderthan duration additions Signed-off-by: kim <grufwub@gmail.com> * fix broken test now that test model header changed Signed-off-by: kim <grufwub@gmail.com> * instead use new remote test account for new header model Signed-off-by: kim <grufwub@gmail.com> * use newer generated ULID for remote_account_3 to ensure it is sorted last Signed-off-by: kim <grufwub@gmail.com> * reorganize serialized keys to match expected test account model order Signed-off-by: kim <grufwub@gmail.com> Signed-off-by: kim <grufwub@gmail.com>
2022-12-11[feature] support configuring database caches (#1246)Libravatar kim8
* update config generator to support nested structs, add cache configuration options * update envparsing test * add cache configuration to config parse tests * set cache configuration in testrig * move caches to sub-cache "gts" namespace, update envparsing, add cache config docs to example config Signed-off-by: kim <grufwub@gmail.com>
2022-12-10[feature] Start implementing refetch of lost media files via ↵Libravatar tobi12
`/api/v1/admin/media_refetch` (#1221) * [chore] Move ShortcodeDomain to its own little util func * [feature] Add RefetchEmojis function to media manager * [feature] Expose admin media refresh via admin API * update following review feedback - change/fix log levels - make sure not to try to refetch local emojis - small style refactoring + comments * log on emoji refetch start Signed-off-by: kim <grufwub@gmail.com> Co-authored-by: kim <grufwub@gmail.com>
2022-12-09[bugfix] fix unordered favorites (#1236)Libravatar Christoph Voigt1
2022-12-09[feature] Allow users to create + delete bookbarks, and view bookmarked ↵Libravatar Matthew Phillips22
statuses (#1168) * Implement Bookmarks * Update based on review comments * Update swagger doc * Fix argument passing to status.Bookmark * Update changed test * Updates based on latest PR review
2022-12-08[chore] move caches to a separate State{} structure (#1078)Libravatar kim21
* move caches to a separate State{} structure Signed-off-by: kim <grufwub@gmail.com> * fix call to log.Panic not using formatted call Signed-off-by: kim <grufwub@gmail.com> * move caches to use interfaces, to make switchouts easier in future Signed-off-by: kim <grufwub@gmail.com> * fix rebase issue Signed-off-by: kim <grufwub@gmail.com> * improve code comment Signed-off-by: kim <grufwub@gmail.com> * fix further issues after rebase Signed-off-by: kim <grufwub@gmail.com> * heh Signed-off-by: kim <grufwub@gmail.com> * add missing license text Signed-off-by: kim <grufwub@gmail.com> Signed-off-by: kim <grufwub@gmail.com>
2022-12-06[feature] overhaul the oidc system (#961)Libravatar Dominik Süß13
* [feature] overhaul the oidc system this allows for more flexible username handling and prevents account takeover using old email addresses * [feature] add migration path for old OIDC users * [feature] nicer error reporting for users * [docs] document the new OIDC flow * [fix] return early on oidc error * [docs]: add comments on the finalization logic
2022-12-06[feature] media: add webp support (#1155)Libravatar Sigrid Solveig Haflínudóttir5
* media: add webp support Signed-off-by: Sigrid Solveig Haflínudóttir <sigrid@ftrv.se> * bump exif-terminator to v0.5.0 Signed-off-by: Sigrid Solveig Haflínudóttir <sigrid@ftrv.se> Signed-off-by: Sigrid Solveig Haflínudóttir <sigrid@ftrv.se>
2022-12-05[bugfix]: Prevent extension of S3 presigned url TTL (#1208)Libravatar Dominik Süß1
Thanks :)
2022-12-04[chore] Fix a few possible cases of int truncation (#1207)Libravatar Daniele Sluijters8
This fixes a couple of cases where due to int being platform dependent a value could get truncated if running on 32bits.
2022-12-02[performance]: make s3 urls cacheable (#1194)v0.6.0-rc3Libravatar Dominik Süß1
Implements #864 and should speed up s3 based installations by a lot. With more static urls, we can then also implement #1026 for even better performance when used in conjunction with CDNs
2022-12-02[bugfix] Fix `admin account confirm` on pre-confirmed account setting email ↵Libravatar tobi1
address to empty string (#1203)
2022-12-02[bugfix] Add missing continues in emoji get funcs (#1200)Libravatar tobi1
2022-12-01[chore] Remove duplicate prefixes from sanitizer (#1195)Libravatar Daniele Sluijters1
In the previous changes that expanded the IPv4 and IPv6 deny lists based on the IANA registries we inadvertently added a number of duplicates. This is unnecessary as they're already caught by larger prefixes and means there's less entries to scan. This change removes all prefixes that are subnets of other prefixes.
2022-12-01[bugfix] Use case-insensitive selects when getting remote accounts by ↵v0.6.0-rc2Libravatar tobi2
username/domain (#1191) * [bugfix] Case-insensitive account selection * don't lowercase cache key
2022-11-30[feature] Support PKCS1 "RSA PUBLIC KEY" pem block type (#1179)Libravatar Sigrid Solveig Haflínudóttir1
* ap: add support for PKCS1 "RSA PUBLIC KEY" pem block type Signed-off-by: Sigrid Solveig Haflínudóttir <sigrid@ftrv.se> * ap: report no PEM data or unknown pem block type Signed-off-by: Sigrid Solveig Haflínudóttir <sigrid@ftrv.se> Signed-off-by: Sigrid Solveig Haflínudóttir <sigrid@ftrv.se>
2022-11-30[bugfix] Don't call `strings.ToLower()` on usernames when selecting account ↵Libravatar tobi7
by domain+username (#1190) * don't lowercase account username when doing a select * test getting remote user with uppercase username
2022-11-30[bugfix] Avoid accidentally marking changed emojis as orphaned + pruning ↵Libravatar tobi9
them (#1188) * add predictable instance account to tests, use it in emoji urls + paths * use static image url to select emojis when pruning orphaned
2022-11-29[bugfix] don't return error during account serialize on deleted emoji (#1177)Libravatar kim1
* only return error for emoji fetch if NOT errnoentries Signed-off-by: kim <grufwub@gmail.com> * reformat gts->api model slice conversion to standard error behaviours and reduce code reuse Signed-off-by: kim <grufwub@gmail.com> Signed-off-by: kim <grufwub@gmail.com>
2022-11-29[bugfix] wrap the correct error on failed account update (#1176)Libravatar kim1
Signed-off-by: kim <grufwub@gmail.com> Signed-off-by: kim <grufwub@gmail.com>
2022-11-29[chore] Tidy up some of the search logic (#1082)v0.6.0-rc1Libravatar tobi23
* start refactoring some of the search + deref logic * add tests for search api * rename GetRemoteAccount + GetRemoteStatus * make search function a bit simpler + clearer * fix little fucky wucky uwu owo i'm just a little guy * update faulty switch statements * update test to use storage struct * redo switches for clarity * reduce repeated logic in search tests * fastfail getstatus by uri * debug log + trace log better * add implementation note * return early if no result for namestring search * return + check on dereferencing error types * errors hah what errors * remove unneeded error type alias, add custom error text during stringification itself * fix a woops recursion :see_no_evil: Signed-off-by: kim <grufwub@gmail.com> Co-authored-by: kim <grufwub@gmail.com>
2022-11-27fix missing lookup cache key for invalid domain block (#1158)Libravatar kim1
2022-11-27[bugfix] Use Host domain for UA (#1156)Libravatar Daniele Sluijters1
In d6f4d196c978d81041ea99a32e2d6f63b0639472 we swapped to use the AccountDomain but that actually goes against the intent of the change. This reverts that change and uses the host domain again.
2022-11-26[chore] Set User-Agent header in transport (#1154)Libravatar Daniele Sluijters6
Currently requests set their own User-Agent. This moves it down to set it in the transport's do() method, to guarantee it's always set on all requests.
2022-11-26Tweak the User-Agent a bit (#1153)Libravatar Daniele Sluijters1
* [bugfix] Use AccountDomain for user agent By using the account domain we can pinpoint the source of the request more accurately when looking at the User-Agent header. * [chore] Align user-agent header with spec Based on RFC 7231, our User-Agent header doesn't quite match. It seems to always want Name [/ Version] pairs, with comments in parenthesis and multiple comments separated by a semicolon. Align our UA with that, using application name first by itself in case someone has customised it with the source instance in a comment. Follow that up with gotosocial/<version> and a comment pointing at the source code. This also drops the mention of gofed/activity since a fork is in use.
2022-11-26Additional IP range validations (#1152)Libravatar Daniele Sluijters4
* [bugfix] Ensure requests happen over TCP It's possible for the network to be udp4 or udp6. This is rather unlikely to occur, but since we're given the network anyway as part of the Sanitize function getting called we might as well check for it. * [chore] Align reserved v6 blocks to IANA registry * [chore] Add test for ValidateIP The net and netip packages diverge in that net.ParseIP will consider an IPv4-mapped address to be an IPv4 address and as such it would get caught by the IPv4Reserved list. However, netip considers it an IPv6 address, so we need to ensure the mapped range is in IPv6Reserved. * [chore] Align reserved v4 blocks to IANA registry This includes a number of tests for /32's explicitly called out in the registry to ensure we always consider those invalid.
2022-11-25[bugfix]: Fix IPv6 validation (#1150)Libravatar Daniele Sluijters1
* [bugfix]: Fix IPv6 validation The current code considers ff00::/8 valid, but contrary to the comment that's not the global unicast range. ff-prefixes in IPv6 denote multicast. This adapts the code to take the same approach as IPv4, explicitly blacklisting reserved internal/private ranges. * [chore] Add missing 4 in IPv4Reserved doc comment