Commit graph

534 commits

Author SHA1 Message Date
d2f0ce0391
chore: moved http signatures code in separate file 2024-05-13 18:52:42 +02:00
cb9cae1af8
fix: calling this a fix is preposterous
but it should *not* work *less* often???
2024-05-13 17:17:19 +02:00
d5e01cc655
fix: urlencoding is too precise, just replace %20
omg i really chose such a bad way to do this i need to pick a proper one
2024-05-13 15:07:58 +02:00
4aff505a16
fix: more verbose errors 2024-05-13 14:56:16 +02:00
025981228d
fix: urlencode reconstructed urls
ouch wordpress, thank you but clean your urls pls
2024-05-13 14:41:37 +02:00
8f806b1bd6
feat: on debug level show in/out activities 2024-05-13 13:52:38 +02:00
6efc5c4ad6
fix: after fetching object recheck if present 2024-05-13 02:51:17 +02:00
6edb379578
fix: webfinger request should not request ld+json 2024-05-13 02:15:40 +02:00
21cde13f96
fix: webfinger/fetch if checks 2024-05-13 02:01:07 +02:00
8a1afadea0
feat: logged in user can search by webfinger
more expensive than "localized" +..@..@ urls because must always make
one extra request but allows easier searching
2024-05-13 01:48:51 +02:00
f2867e56e7
feat: webfinger resolution in fetcher 2024-05-13 01:48:32 +02:00
e11b972826
fix: properly clean follow counts 2024-05-13 01:41:21 +02:00
8a36e91fde
fix: empty digest is rejected by mastodon, revert 2024-05-12 02:26:55 +02:00
7fa15a57a8
feat: add url field to objects
so that we can configure a frontend url and have posts redirect there
when remote instances press "external source"
2024-05-12 01:58:51 +02:00
aa19211b8e
fix: very ugly way to infer media-type
since lemmy sends us images but doesnt tell us what they are...
2024-05-12 01:21:12 +02:00
38efbeb76f
chore: imports 2024-05-12 00:56:27 +02:00
1219dbca34
fix: ownerships 2024-05-12 00:56:22 +02:00
ab0300894f
fix: treat lemmy images like attachments 2024-05-12 00:54:48 +02:00
18f712194c
chore: comment out so i dont get warns compiling 2024-05-11 22:54:41 +02:00
79bc9c938b
fix: process emojireacts as likes for now 2024-05-11 22:50:39 +02:00
0a0facae79
fix: dont print twice the server response body 2024-05-11 22:47:59 +02:00
fc572f1c69
fix: update cli tasks to receive built context 2024-05-11 22:47:43 +02:00
15746c699f
feat: server config file and default generator 2024-05-11 22:47:29 +02:00
b062608134
fix: dispatcher auto restarts
since akkoma is destroying my postgres, I/O is maxed out and sqlite
queries time out. restart the dispatcher worker if it fails!
this is kind of a nasty fix, but whatev
2024-05-11 21:59:02 +02:00
e96b778392
fix: send empty digest rather than digest of ""
maybe fixes iceshrimp? maybe breaks everyone else??
2024-05-11 19:19:42 +02:00
e9fe8ba236
fix: also reject deletions which are not GONE 2024-05-11 17:37:31 +02:00
292b9f06d8
fix: show remote server response when its an error 2024-05-11 17:08:38 +02:00
5b22c0c33b
feat: added /api/v1/instance in mastodon api
because aode relay blasts me of requests on that endpoint... aode you
should limit how many fetches you do!!!!!!!!!!
2024-05-11 15:59:35 +02:00
488cac9703
fix: accept link attachments
kind of hacky way but should work
2024-05-08 02:26:18 +02:00
c56203bf57
chore: moved cli tasks under cli dir
also they're optional, turn off the feature flag if u dont want them
2024-05-06 01:09:14 +02:00
854fd95a4d
fix: correctly reconstruct urls for users too 2024-05-03 06:23:28 +02:00
6cb45bd5f0
chore: shut many unused warning with one smple trick 2024-05-03 06:17:26 +02:00
85a2bedc1a
fix: bad fix for sqlite 2024-05-03 05:10:26 +02:00
97b0c822f4
fix: oof my method sucks!!!!! 2024-05-03 05:05:07 +02:00
9e42d4b460
feat: add server crawler
i may remove this tho, it definitely should not be arbitrarily invokable
by local users!!!
2024-05-03 04:43:25 +02:00
7454da6525
chore: cleanup 2024-05-03 04:12:15 +02:00
a0df9f8cc4
fix: use rsa-sha256 for http signatures
peertube (and thus iceshrimp because it uses peertube's lib) seems to
not support hs2019
2024-05-03 04:11:10 +02:00
1ab351cc7f
fix: increase replies counts from local replies 2024-05-02 16:35:46 +02:00
34df958af0
feat: parse markdown when posting
can't be toggled off for now 🤷
2024-05-02 16:29:01 +02:00
64d7f25aa2
fix: mastodon doesn't tell who likes are intended
why cant you fill your to fields???????? mastodon is a joke
2024-05-02 15:29:42 +02:00
583ddce914
fix: ld_context in dispatcher again 2024-05-02 15:21:45 +02:00
df072d8cc6
fix: faker task new field 2024-05-02 15:16:14 +02:00
ee8ab38570
fix: add updated field on objects and set it 2024-05-02 15:15:16 +02:00
8b75e2be84
fix: dispatch activities with @context 2024-05-02 15:12:36 +02:00
23c9a0a106
fix: some impls dont include to in folreqs
i mean, it's obviously addressed to the target actor of this activity,
but it would cost nothing to put it in the `to` field... i do! added
special cases to make sure follow/accept/reject activities are at least
addressed to target actor
2024-05-02 14:36:56 +02:00
4a7425ef24
fix: mut 2024-05-02 13:31:09 +02:00
44de7040ec
fix: when updating must reset changing fields 2024-05-02 13:16:23 +02:00
4095b0eece
fix: add context extensions depending on type
if actor, add both counters and fe, if object add just fe:likedByMe, to
avoid sending useless text every time
2024-05-02 05:10:38 +02:00
0b21dd47e6
fix: skip local users while updating 2024-05-02 03:03:43 +02:00
5d58ef40a9
feat: added users update task 2024-05-02 03:02:36 +02:00
9bc7ddb0ae
chore: separate fetcher fetch from pull
fetch uses db and inserts, pull just gets the remote resource
2024-05-02 02:58:56 +02:00
01c02c5258
feat: impl Addressed on object and activity models 2024-05-02 02:58:45 +02:00
bcd8f27933
fix: use new apb fields 2024-05-02 00:47:11 +02:00
b1e4c4e79b
fix: add sensitive to context since we use it 2024-05-01 21:21:26 +02:00
dbf2450433
fix: select only user id column 2024-05-01 18:45:30 +02:00
84a446b494
fix: answer deletions with 200 2024-05-01 18:43:43 +02:00
bb4f6e9df0
fix: show follow/by for remote users too
this is super ugly because there's a ton of duplication but let's see if
it works first...
2024-05-01 18:37:26 +02:00
4527ff884e
feat: show in user queries if follow/by self 2024-05-01 17:47:37 +02:00
75d03195d9
feat: allow checking if identity is someone 2024-05-01 17:47:21 +02:00
e8b36cecdf
chore: should move this later 2024-04-30 16:51:30 +02:00
f2dc3f69f2
chore: refactor, moved cli tasks under directory 2024-04-30 16:48:28 +02:00
b0ebeb9fff
fix: mastodont sized 2024-04-30 16:48:00 +02:00
6f033de946
fix: try fetching following/followers, dont fail 2024-04-30 16:47:34 +02:00
938d219d7d
fix: whoops other way around 2024-04-30 15:33:41 +02:00
a6c3ef9a3e
feat: increment statuses count
be it when posting, receiving a Create or fetching an object, increment
relevant user statuses count
2024-04-30 14:22:44 +02:00
a966f7fcb5
fix: fetch remote users following/followers count 2024-04-30 14:17:29 +02:00
0bfa49fed6
chore: imports 2024-04-30 04:29:03 +02:00
3237a38d74
fix: insert liked element also in single obj view 2024-04-30 02:57:50 +02:00
8af2cd2664
fix: maybe don't filter whole queries 2024-04-30 02:05:28 +02:00
a4cdd2e67b
feat: show followers, following, statuses in users 2024-04-30 01:51:38 +02:00
45d16fa0a3
feat: query and show objects liked by you
it shows it in quite a jank way: inside the "audience" collections you
find your id as only item. it's weird af but technically valid ap i
think? will probably be replaced with a local api extension as soon as i
read about those
2024-04-30 01:50:25 +02:00
63ba54dad9
fix: activity redirects when fetching different id 2024-04-30 01:49:05 +02:00
3df01b5b0a
chore: helper to reconstruct ids 2024-04-30 01:48:30 +02:00
f0cdd4bd7a
feat: like and share relations with object 2024-04-30 00:53:57 +02:00
97ed5d60b1
feat: show users following/followers
use audience for followers, generator for following and replies for
total statuses count. restored followers, following and outbox as bare
links. silly AP!!!
2024-04-30 00:53:07 +02:00
5bdf139ef5
chore: imports 2024-04-29 22:02:18 +02:00
7f996aa2c1
feat: kinda botched way to ignore relays
basically relays send us a lot of announce activities to share posts
but we don't care about those activities: it's db bloat and it increases
the shares count. keep a table keeping track of followed relays and
lazily skip activities by them, just fetch. IMPORTANT relays are only
loaded at startup, so if you subscribe to a new relay restart your
server once it accepts!!!
2024-04-29 21:58:08 +02:00
a6e12468b7
fix: db fix tasks would get stuck on sqlite
i think because the db would end up locked, added brackets to be sure to
drop the streaming reference. also it could crash when updating records
not found, just spit a warn
2024-04-29 21:23:12 +02:00
e4b92584db
chore: imports, renamed future routes 2024-04-29 21:23:02 +02:00
3e0e4ff8d3
fix: also update comments count when fetching 2024-04-29 21:22:48 +02:00
35804730de
fix: temporarily don't set replies
we don't serve those routes yet
2024-04-29 21:02:41 +02:00
3129970fb5
feat: added fix task to recalculate stats
note that won't reset everything to 0, just force set every post which
has a count != 0
also this is kind of a bad way to do it. at least we stream objects, but
we could have it happen all inside our db with SELECT, DISTINCT and SUM,
i just don't know how to represent it in sea_orm. an intermediate
optimization may be selecting only certain columns but it's relevant
almost only for replies
2024-04-29 20:53:19 +02:00
4fe53f7011
fix: increment share and like counters for outbox 2024-04-29 20:40:20 +02:00
5ae9a140b4
feat: show likes and shares and replies in objects
it's done with anonymous inline collections, which hold a "totalItems"
field. for replies it's perfect, for likes it's stretched ("audience",
used as a Collection) and for shares it's really stretched ("generator",
used as a Collection). also using audience and generator as collections
seems weird because they should be objects but collections are objects
so it should be fine? i haven't seen these fields used anyway so it
should be safe to "claim" it for ourselves?
2024-04-29 20:30:29 +02:00
95f9d05875
fix: redirect after fetching if id is different
for example, pleroma servers objects under /notice/abcd... but the
object id itself is different, under /objects/<uuid>. when fetching
pleroma redirects, but we get unreliable behavior. redirect so that we
can force clients to use the proper id
2024-04-29 20:11:19 +02:00
ab91a4c7bc
fix: your inbox contains posts by you 2024-04-26 13:48:57 +02:00
ed0a4fd211
fix: always forget about this... 2024-04-24 05:21:04 +02:00
3156b8d2d2
feat: sensitive field
this is not part of activitystreams afaik and should not be in apub but
it's quite convenient to do it this way sooooooooooo for now will do
2024-04-24 05:19:39 +02:00
abf4e8b370
fix: always embed specific activities 2024-04-24 05:04:30 +02:00
2ba96e802e
fix: show own activities/objects 2024-04-24 04:08:07 +02:00
768081c251
fix: big refactor of timelines querying
should not be more reliable, consistent and all around less buggy, but
it may actually break some things so let's find out
2024-04-24 02:32:23 +02:00
165bf19f8c
feat: don't add next link when done paginating 2024-04-23 23:37:57 +02:00
ba07b2cb9d
fix(apb): correct node order when iterating
use a VecDeque under the hood to be able to pop_front()
2024-04-23 20:58:37 +02:00
4b4d52ef6f
feat: fetch related things
fetching an object will get its author
fetching an activity will get its object and author
2024-04-23 17:56:46 +02:00
597dee934d
fix: try hiding locked activities for public objs
idk if this works but basically when there's a public object from a
private activity, the query joins the activity anyway because it uses
the object relation, try using the addressing relation and see what
comes out
2024-04-23 17:21:32 +02:00
8a6c05f4fb
fix: relay follow/accept are public 2024-04-23 16:54:03 +02:00
2a9cf5bcf5
feat: command to also accept relay follow reqs
this has quite awful UX because you can't really know if relay is
following back without checking logs, but whatevvvv works for now
2024-04-23 16:26:19 +02:00
dfbadf5d11
fix: oops i meant server inbox GET, now it is 2024-04-23 06:29:52 +02:00
2bf4469270
feat: server timeline is object-based 2024-04-23 06:21:02 +02:00
70920985cf
fix: use hs2019 instead of rsa-sha256
im not sure why but apparently there's some bug somewhere? maybe some
instances are picky and want the new thing? should still be fine using
sha256 as signing tho
2024-04-23 05:46:48 +02:00
1731bcb1c6
fix: remove again trailing slash 2024-04-23 05:31:19 +02:00
2cb6cfd2f1
fix: well-known nodeinfo base url 2024-04-23 05:29:26 +02:00
8b88d24250
fix: show signature when invalid 2024-04-23 05:19:24 +02:00
e316e1a840
fix: also change main key name for actor 2024-04-23 05:07:04 +02:00
4f8132a642
fix: dispatcher check doesn't include trailing 2024-04-23 05:01:59 +02:00
8150b9082d
fix: proper addressing, ctx.base() with trailing /
maybe aode-relay (and rust IRI parser) goes mad if there's no
trailing slash? idk, i'm speculating
2024-04-23 04:56:29 +02:00
63d78e7ff5
fix: delete with filters instead of activemodel 2024-04-23 04:24:27 +02:00
43d5571b27
feat: better error mappings to http 2024-04-23 04:07:32 +02:00
377ed9665d
fix: set published before converting to model
user may not have set it and we overwrite it anyway. id instead is
necessary, so if it's not given we should return 500
2024-04-23 03:59:27 +02:00
867740b2e6
fix: actually hook up all outbox actions 2024-04-23 03:45:50 +02:00
852b45f8dd
fix: also fix context for fetched objects 2024-04-23 03:04:54 +02:00
46de9aebd6
feat: implemented update, delete, announce outbox 2024-04-22 22:52:19 +02:00
8dece0f004
feat: implemented authed inbox 2024-04-22 22:52:05 +02:00
3c6b2ae3e6
fix: don't embed remote objects when dispatching
weak check but should still save some bytes
2024-04-22 22:42:00 +02:00
b62b461305
fix: dispatcher fetch app key for app deliveries 2024-04-22 04:23:11 +02:00
1d8b69dda7
fix: try setting digest always
aode relay complains that digest is missing on fetches? idk, let's try
putting an empty digest, will aode work? will mastodon/akkoma still
work? will this fix some *keys too???
2024-04-22 04:11:59 +02:00
4d0fb9b684
fix: pass actor, inbox gets resolved automatically 2024-04-22 04:03:47 +02:00
32707bda0c
feat: added command to follow relays 2024-04-22 03:56:07 +02:00
87a5a77e19
chore: imports 2024-04-22 02:52:18 +02:00
f2f7b51fdc
feat: order by publish date, not discovery
also centralized ordering inside select_* queries
2024-04-22 02:49:04 +02:00
b6f10e9cc1
fix: webfinger for application returns itself 2024-04-22 01:51:37 +02:00
dfec715594
chore: comments, clearer code 2024-04-22 01:01:42 +02:00
e9a19b3cb4
feat: fetch threads recursively up to 16 2024-04-22 00:43:17 +02:00
d575ef0bef
fix: add endpoints and preferred username to app 2024-04-22 00:37:21 +02:00
e8dd15f8bd
fix: also context gives full objects
would clear local cached image oof
2024-04-22 00:16:40 +02:00
96524dbd6f
fix: cheap fix for mastodon contexts 2024-04-22 00:01:09 +02:00
cc287d3aa4
feat: show attachments in inbox, outbox and /object
attachments are lazy loaded, so it may be efficient if not all posts
have media, but it should probably be eager loaded anyway eventually
2024-04-21 23:22:55 +02:00
c595f5f5e3
feat: process and store remote attachment urls 2024-04-21 22:58:33 +02:00
cd9d3f9db4
fix: use preferred_username before using url 2024-04-21 21:15:58 +02:00
624492bcfb
feat: introduced arbitrary fetch route for users 2024-04-21 19:15:47 +02:00
48bba8af40
feat: root url redirects browsers to /web 2024-04-21 19:01:51 +02:00
4e5e8f8532
fix: use WrappedObject type for context query 2024-04-21 17:11:50 +02:00
645e14cc32
fix: ops wrong relation direction 2024-04-21 16:39:56 +02:00
a083edef6e
fix: sqlite won't update columns anyway
since this migration breaks all sqlite dbs, i changed the original
migration so that future ones won't panic when reaching here. note that,
if you are on sqlite, just `sqlite3 <your_db> .dump > backup.sql` and
then, after rebuilding and re-migrating db, `cat backup.sql | sqlite3 <your_db>`
2024-04-21 16:30:29 +02:00
46a2e53da0
fix: use wrapped object since we ask for more cols 2024-04-21 16:14:47 +02:00
5d501a3018
fix: renamed methods 2024-04-21 15:42:15 +02:00
379b4daa84
fix: don't create mock activities
basically remade addressing table so that activity too can be null
2024-04-21 15:41:29 +02:00
fa74c3dd0a
chore: imports 2024-04-20 04:34:47 +02:00
6c3aead68b
feat: handle announces 2024-04-20 04:33:23 +02:00
f3dcbffeca
feat: parse object comments count from replies 2024-04-20 04:26:31 +02:00
1ca97668a1
chore: new helper, renamed base->domain 2024-04-20 04:26:16 +02:00
4d4cbe0ef8
feat: create mock activities for fetched objects 2024-04-20 04:24:48 +02:00
2d10f29b56
fix: restore federation, remove embedded follow___
it was so good, why make **just these** only links?????
2024-04-19 18:31:20 +02:00
b338a7191f
fix: jfc mastodon stop sending me deletions!!!!!!! 2024-04-19 16:15:05 +02:00
01d0e4df85
fix: context and replies and follow___ /page 2024-04-19 06:57:01 +02:00
789fae1eae
fix: oops revert! breaks querying
probably im doing it wrong somewhere else but nonetheless fuck go back
2024-04-19 06:21:26 +02:00
bccf1f3a26
fix: ensure viewer has perms even for fetches
before, the first fetch would bypass addressing checks. now we always do
2 trips to db when viewing+fetching remote stuff: 1st to make sure we
  have it, second to make sure we can view it
2024-04-19 05:26:51 +02:00
d7ff6014c4
fix: select_object doesnt return embeddedactivity 2024-04-19 05:05:26 +02:00
4883597ee3
fix: don't rename columns while joining 2024-04-19 05:02:59 +02:00
629990fee8
fix: find objects not activities 2024-04-19 04:57:06 +02:00