Commit graph

477 commits

Author SHA1 Message Date
d60d29bf98
fix: continue as anon if can't fetch user 2024-04-13 03:31:37 +02:00
c342b7c936
fix: object view
quite wasteful to do it like this but for some reason previous way
didn't work??
2024-04-13 03:28:52 +02:00
bb16a5b7d2
fix: return response rather than parsing
so that deliveries work
2024-04-13 03:21:25 +02:00
855434ee12
fix: try using again the new lib? 2024-04-13 03:09:47 +02:00
3a48e91655
fix: force overrule signature algorithm
really what?????
2024-04-13 03:03:54 +02:00
70c978caa0
fix: having more fun with http signatures 2024-04-13 02:55:10 +02:00
ff55d2fea4
fix: mastodon compat 2024-04-13 02:35:18 +02:00
46bbeea3ab
feat: verify inbox http signatures 2024-04-13 01:49:23 +02:00
d66f09d130
feat: inbox requests remote server auth 2024-04-13 01:49:04 +02:00
5863bdf04e
feat: signed fetches, improved signatures code
should make sure that it still works
2024-04-13 00:44:53 +02:00
95ab7a50ef
chore: refactored a little 2024-04-12 22:56:29 +02:00
576e809b69
fix: timelines ordering
what??? ASCENDING goes from most recent to least recent?? maybe
ascending oldness??????
2024-04-12 22:41:04 +02:00
d3d5f98dfd
feat: authorized fetch on activities and objects 2024-04-12 22:21:23 +02:00
4e34446894
fix: oops must be generic impl 2024-04-12 21:55:19 +02:00
5de807b3d9
fix: don't clear audiences
still quite jank way to do it but at least should work again?
2024-04-12 21:42:06 +02:00
ca59c30e70
fix: auth filter conditions any, not all 2024-04-12 21:18:01 +02:00
0fa88e51e6
feat: added all inboxes and outboxes
base POST to /outbox still returns NOT IMPLEMENTED tho
2024-04-12 20:01:47 +02:00
af8d11e75b
feat: inbox/outbox security and obj embedding 2024-04-12 19:36:00 +02:00
0d340185cf
feat: improved addressing select 2024-04-12 19:35:26 +02:00
3a874ed3e7
fix: insert activities, expand addressing
remote activities for Likes and Follows should still be added to our
database so we know where to verify those and we can present them in a
timeline for notifications
2024-04-12 18:40:24 +02:00
9e67eead69
feat: multi-join maybe? fix inbox not embedding obj
got this from https://github.com/SeaQL/sea-orm/discussions/1502, not
sure it's what i need but i'm trying some stuff
2024-04-11 17:00:09 +02:00
d5c5d341e8
fix: ownerships 2024-04-11 16:59:47 +02:00
0261f87306
feat: first mastodon route yay, mastodon default on 2024-04-11 00:52:44 +02:00
86e84d88aa
chore: updated apb things, restructured a bit 2024-04-11 00:29:32 +02:00
4c2eb7b990
chore: better routing structure 2024-04-09 04:35:57 +02:00
bb26ff763d
chore: restructured completely
kinda MVC:
Model -> model
View -> routes
Controller -> server
2024-04-09 01:14:48 +02:00
20ca18f9e3
chore: also modularized APInbox 2024-04-08 02:55:21 +02:00
7ce872cfff
chore: separated outbox business logic in methods
dumped all in server but temporary, now can be properly modularized
also fixed endpoints
2024-04-08 02:30:43 +02:00
24d547e93a
feat: subdivide into features 2024-04-06 18:03:13 +02:00
a624222751
feat: listed half of mastodon's api routes 2024-04-06 17:20:44 +02:00
ca871a867f
docs: some readmes
pretty useless but at least they're there
2024-04-06 17:20:14 +02:00
520c8eff3a
feat: separated apb types into crate, reworked
no more "impl ..." hell, each trait has associated types so that we know
it's a "Self::Link" or a "Self::Actor", but in practice they can both be
a "serde_json::Value" and thus we can change its type. also Node::Array
is now a Vec<T> rather than Vec<Node<T>> because it makes more sense.
Node is Iterable and will yield zero (Empty|Link), one (Object) or many
(Array) Ts
2024-04-06 16:56:13 +02:00
b5867b90ac
feat: accept also bare note to publish 2024-03-28 05:24:38 +01:00
0ec839f42f
fix: followers was wrong because full model 2024-03-28 05:19:13 +01:00
3725097749
fix: followers querying with full id 2024-03-28 05:14:50 +01:00
d7efbf5131
chore: imports cleanup 2024-03-28 05:14:17 +01:00
e68332bc31
chore: refactor collections with utils, moved stuff 2024-03-28 04:52:17 +01:00
68823559c1
feat: process updates for notes and users 2024-03-28 04:47:49 +01:00
5bad5e0405
fix: more lenient nodeinfo 2024-03-28 04:05:47 +01:00
4274367285
feat: immediately wakeup dispatcher when sending 2024-03-27 05:09:20 +01:00
70c1f96959
fix: maybe fix for expanding addressings 2024-03-27 04:46:57 +01:00
746c5e5921
fix: log follow request accept/reject 2024-03-27 04:40:50 +01:00
bd4d123223
fix: less extreme logging for deliveries 2024-03-27 04:38:14 +01:00
742c769014
fix: filter out empty targets 2024-03-27 04:36:46 +01:00
625b8e0e02
fix: when missing embedded object still show url! 2024-03-27 04:28:09 +01:00
fe30ad59d7
feat: normalized pagination 2024-03-27 04:23:42 +01:00
139e973277
fix: don't insert when there's nothing to insert 2024-03-27 04:13:29 +01:00
ac2c86f16e
feat: crude implementation of most inbox flows 2024-03-27 04:00:27 +01:00
db8ecc7c3d
chore: moved around stuff 2024-03-27 04:00:18 +01:00
c3face463e
feat: crude implementation for most outbox methods 2024-03-27 03:24:14 +01:00
f83103ba72
fix: Node::id() returns owned value, imports fix 2024-03-27 03:23:54 +01:00
b37d799f59
fix: oh yes that was it! now digest 2024-03-27 02:11:14 +01:00
21db907e17
fix: omg is it the day of the week? 2024-03-27 02:08:50 +01:00
e75758b320
fix: if this is it............. 2024-03-27 02:07:02 +01:00
44adbeb434
fix: maybe without the day? omg mastodon... 2024-03-27 01:56:44 +01:00
b730598abe
fix: well it's not standard duhh 2024-03-27 01:53:41 +01:00
ad012bd2ee
fix: what the fuck mastodon?
or is it rust's fault?
2024-03-27 01:48:55 +01:00
4d06af9c54
fix: ooo is it this one? 2024-03-27 01:44:27 +01:00
f2513f30c8
fix: show me what they say when rejecting sign :( 2024-03-27 00:24:14 +01:00
a2f77fa6fb
fix: apparently i need to put flat links...
what's the point of being ActivityPub if you expect a fixed structure!!!
2024-03-27 00:15:17 +01:00
e9dc33a39d
fix: typo 2024-03-26 23:55:57 +01:00
603724ebcc
feat: improved dispatcher sleep logic 2024-03-26 23:53:44 +01:00
6097493932
chore: faker creates test user, not root 2024-03-26 23:53:30 +01:00
46394af394
fix: include request-target 2024-03-26 23:42:22 +01:00
8437de6c1b
fix: add back algorithm, fix digest fn 2024-03-26 21:48:39 +01:00
e8eff349cf
fix: ops must include digest and compose header 2024-03-26 21:30:41 +01:00
fc4674ecca
fix: maybe if i do it the old way?? 2024-03-26 21:24:10 +01:00
98cb07b547
fix: does 'require_header' change anything? 2024-03-26 21:14:01 +01:00
923d96bd7f
fix: are these the issue? 2024-03-26 21:09:49 +01:00
46b9a339f7
fix: also full AP header 2024-03-26 21:02:07 +01:00
2f5344af37
fix: correct path for signature 2024-03-26 20:22:15 +01:00
a99c21654d
fix: use date format mastodon shows in docs
can't be this, or can it?
2024-03-26 20:17:41 +01:00
8bf41aa28b
fix: use a reasonable crate for http signing
http_signatures is abandoned, http_sig is weird???
2024-03-26 19:27:35 +01:00
d321d0b22a
fix: calculate digest, remove algo field
https://docs.joinmastodon.org/spec/security/#http
2024-03-26 05:25:51 +01:00
4afb0ae946
fix: generate keys on the fly 2024-03-26 04:20:35 +01:00
8ed4251d31
fix: #main-key ... 2024-03-26 04:14:23 +01:00
82f8abd96b
fix: well known without protocol 2024-03-26 03:54:25 +01:00
d918caa815
fix: was getting host wrongly, also log way more 2024-03-26 03:49:09 +01:00
90cae9e5fd
fix: header and LD context... 2024-03-26 03:41:17 +01:00
8ba25d511e
fix: more resilient priv key selection 2024-03-26 03:21:00 +01:00
e6b30975cc
feat: catch dispatcher errors 2024-03-26 03:11:59 +01:00
81b6a7183a
fix: log delivery responses bodies 2024-03-26 03:05:43 +01:00
83b0b35043
fix: check status code when delivering 2024-03-26 02:50:58 +01:00
d5c73e85e8
fix: fetch activity case for non embedded 2024-03-26 02:46:10 +01:00
34a3769fba
fix: acktually algorithm is required by spec 2024-03-26 02:27:40 +01:00
7d1473691e
fix: valid ids for inserted things 2024-03-26 02:24:09 +01:00
a7a6a23560
fix: also insert like relation when posting likes 2024-03-26 02:13:03 +01:00
c6703a0a1e
fix: add published which must be non null 2024-03-26 02:07:46 +01:00
36aec4f447
fix: improvements for debugging 2024-03-26 02:05:20 +01:00
b464aa0e98
fix: register outbox route 2024-03-26 01:31:17 +01:00
f588df751f
fix: don't attempt to deliver to public target 2024-03-26 01:25:15 +01:00
794548d14a
fix: duhhh 2024-03-26 01:19:34 +01:00
0c8afc2780
fix: some logging on fetcher and dispatcher 2024-03-26 01:14:43 +01:00
13f99532fe
fix: put bac protocol in urls 2024-03-26 01:02:48 +01:00
6a050c0bb4
fix: actually fixed it 2024-03-26 00:58:01 +01:00
3a0ca6af86
feat: control how many statuses to insert 2024-03-26 00:53:07 +01:00
71acddb766
feat: crude handling of line and create 2024-03-26 00:50:07 +01:00
d7e846370a
feat: show public key of user 2024-03-26 00:49:56 +01:00
b0d8957f41
feat: Node::get() returns owned object 2024-03-26 00:49:42 +01:00
be75ac33d1
feat: parse some algorithms for digest, all rsa 2024-03-26 00:49:27 +01:00
4a99a3dc40
chore: small improvements and fixed some warns 2024-03-26 00:49:07 +01:00
6d078f7068
feat: show pub key and created time for app actor 2024-03-26 00:48:37 +01:00
f74aab7852
feat: implemented GET inbox to browse home feed 2024-03-25 21:48:58 +01:00
b0e4940ec8
feat: validate incoming http signatures 2024-03-25 21:19:25 +01:00
e1b93e8a93
feat: added basic fetcher, get keys at startup 2024-03-25 21:19:02 +01:00
88808f020c
feat: storage for application keys 2024-03-25 21:18:27 +01:00
6ea4f06d54
feat: initial work on validating http signatures 2024-03-25 05:12:49 +01:00
d0816a0f6a
fix: from -> actor 2024-03-25 05:12:09 +01:00
6be1a445be
chore: not all pub 2024-03-25 05:08:29 +01:00
5d7ce0e3c4
feat: simple delivery system + http signatures 2024-03-25 05:07:58 +01:00
76c0bd5218
feat: store base domain and protocol separately 2024-03-25 05:02:39 +01:00
de74669bd7
chore: moved version as const 2024-03-25 05:02:20 +01:00
7f69abf6c0
fix: cleanup 2024-03-25 02:27:31 +01:00
6be486ca3d
fix: add also server column for server addressing 2024-03-25 02:26:47 +01:00
acd4fa0bd4
feat: work on authed outbox/inbox 2024-03-25 02:00:57 +01:00
384d5147ed
feat: initial auth extractor 2024-03-25 01:58:30 +01:00
41899556bf
fix: session id is session 2024-03-25 01:58:06 +01:00
fbd175e8f3
chore: oops merge made a mess 2024-03-25 01:57:13 +01:00
a3df3e882e
feat: super barebones auth route 2024-03-24 23:55:48 +01:00
e02a48d9da
fix: wrong id type for addressing model 2024-03-24 05:55:50 +01:00
2958107c49
fix: actually insert addressing on receiving
also some nice utils to handle link vecs
2024-03-24 05:49:36 +01:00
28ba5f1b40
feat: add global inbox get, which respects privacy 2024-03-24 04:58:49 +01:00
2ac7fa0588
chore: split inbox/outbox, added forgotten mods 2024-03-24 04:05:09 +01:00
65032ef606
fix: faker followers/following counts 2024-03-24 04:04:48 +01:00
0d1250fd6f
feat: add addressing table
this should allow to build timelines and check access permissions
quickly. my only concern is keeping thousands, if not even millions, of
rows always with full strings. future optimizations may look into an
intermediary table to map ids to integers and optimize this table's
storage
2024-03-24 04:03:44 +01:00
7251a3e92c
feat: added sessions with credentials 2024-03-24 04:03:22 +01:00
2673860106
chore: better ap user route 2024-03-23 20:24:38 +01:00
34b7db5ce6
feat: default for config 2024-03-23 20:24:29 +01:00
13afd5be87
chore: split server context and router 2024-03-23 20:24:14 +01:00
d36ac82dd9
feat: add followers and followers count to users
redo migrations (: honestly if you're expecting to keep a long-lasting
db at this stage of development i have bad news for you
2024-03-23 16:44:27 +01:00
72c2cd5f81
chore: cleaned up all model modules 2024-03-23 06:32:15 +01:00
1a7a4f6df6
chore: ok clippy 2024-03-23 06:14:34 +01:00
c361528b2f
feat: moved object creation out of entity 2024-03-23 06:10:53 +01:00
05245c2776
fix: faker also insert config and credentials 2024-03-23 06:10:33 +01:00
f48509e2d8
feat: added tables+entities for config, credentials
simple password auth is bad and shall likely go but it's easy for now
and i need a way to login to test user interactions as i make the outbox
working
2024-03-23 05:02:39 +01:00
b90f7307bc
fix: datetime utc, also in likes
redo all migrations ehe
2024-03-23 04:40:39 +01:00
490358e9ed
chore: merged follow___ into one function 2024-03-23 04:40:02 +01:00
a18d0fd3d4
chore: split down ap/user file 2024-03-23 04:31:48 +01:00
84882dd5bd fix: published is optional on activities 2024-03-22 17:59:46 +01:00
812fe05b6b fix: cleaner way to stop showing sqlx logs 2024-03-22 17:54:49 +01:00
69c06d4a9c fix: hide sqlx queries
args are hidden anyway and they are quite unreadable
2024-03-22 17:49:25 +01:00
65cd8e8070 feat: process deletions, log inbox activity better 2024-03-22 17:44:04 +01:00
95eaa9596c feat: added simpler ways to ignore+log errors 2024-03-22 17:43:57 +01:00
0ec636a868
fix: sqlite returns runtime error, catch it
prob too wide but i wanna use sqlite
2024-03-22 06:53:40 +01:00
4fd8ad2c2c
fix: sqlite can't handle u64 2024-03-22 06:35:50 +01:00
afcd9d8572
fix: unique 2024-03-22 06:25:30 +01:00
89cd0d0335
fix: it wasn't that easy 2024-03-22 05:59:24 +01:00
9f1e6da4b9
feat: add likes and shares, process likes
also redid migrations because its easier and also its just me using this
cursed thing and i can just delete the db and migrations look nicer this
way
2024-03-22 05:34:08 +01:00
e26346cf66
fix: followers, following 2024-03-22 05:33:39 +01:00
80c38dc211
fix: forgot auto increment 2024-03-22 03:11:47 +01:00
02ae091962
feat: manage follower/followig collections 2024-03-22 02:50:38 +01:00
8cb8632521
feat: added relation table 2024-03-22 02:29:37 +01:00
7751114bda
fix: disable shared inbox/outbox
they aren't really implemented anyway and it's too much hassle now,
they're only relevant for big instances, not 1-user dev junk
2024-03-22 01:56:06 +01:00
20415a0386
feat: barebones following/followers collections 2024-03-22 01:52:02 +01:00
5c1ee72d68
fix: log what comes to our inbox 2024-03-22 01:41:42 +01:00
5eec008343
fix: strip acct: from webfinger if given 2024-03-22 01:22:03 +01:00
69f0239764
feat: nodeinfo (well barebones but kinda) 2024-03-22 01:21:50 +01:00
3e81574783
fix: host-meta is xrd+xml 2024-03-22 00:21:35 +01:00
aab31eac67
feat: handle host-meta and webfingers 2024-03-22 00:17:52 +01:00
efb1f506c3
fix: add cc/to , clear bcc/bto in object too 2024-03-21 20:40:07 +01:00
d127385310
docs: added some readme about ap and as folders 2024-03-21 20:37:16 +01:00
c2f3224e0e
fix: context <-> conversation
damn you mastodon!
2024-03-21 20:36:56 +01:00
8ad5738579
feat: add audiences to objects too 2024-03-21 20:36:46 +01:00
d53644ea1f
chore: moved faker in its own file 2024-03-21 20:36:28 +01:00
b222090aee
fix: also for object 2024-03-21 20:11:00 +01:00
9da5b09ec6
fix: need the full content-type... 2024-03-21 19:55:55 +01:00
ca5c6c9971
fix: update base migration 2024-03-21 19:51:00 +01:00
d318ccb782
fix: ld_context to all 2024-03-21 19:32:07 +01:00
017f508907
feat: add context to objects 2024-03-21 19:25:37 +01:00
c4f677097b
fix: make @context addition explicit
also moved things around: object() is now into LD trait
2024-03-21 19:15:19 +01:00
483076b6b2
fix: show published time on users 2024-03-21 16:47:15 +01:00
f6150387ca
chore: a lil bit of self promotion :3 2024-03-21 03:35:07 +01:00
bc182bdf70
fix: i checked the logs, content type ld+json...
was it really just this??? ffs
2024-03-21 03:07:35 +01:00
cacef6e029
fix: oops mixed preferred_username and name 2024-03-21 02:50:48 +01:00
d109faf5cd
fix: add #main-key key id + endpoints placeholder 2024-03-21 02:45:24 +01:00
baa39aa81f
fix: all users are discoverable for now
does it even make a difference?
2024-03-21 02:36:41 +01:00
1d97b8d3f5
feat: add discoverable to actors
idk if it makes a difference? ap doesnt mention it but everyone has it
2024-03-21 02:32:35 +01:00
b27c2cf31a
fix: image and icon are inline anonymous objects.. 2024-03-21 02:32:13 +01:00
de9c3498bc
feat: add pubkey to actor
veeeeery crude impl, with hardcoded pubkey in faker cmd, but whatevs i
want activitupub.academy to fetch meeee
2024-03-21 02:11:31 +01:00
fe36ed2a52
feat: activity view embeds object 2024-03-21 01:42:29 +01:00
399061eff0
fix: activity with embedded object, not user... 2024-03-21 01:24:55 +01:00
1215f49499
fix: base app Actor, domain stripper 2024-03-21 01:11:20 +01:00
4f4cd5bf9b
feat: outbox with embedded objects 2024-03-21 01:11:08 +01:00
32dbd9e9ce
fix: temp rename relationship field to avoid clash 2024-03-21 01:10:33 +01:00
59e8b298f5
feat: Node::maybe_object 2024-03-21 01:10:04 +01:00
45c5ea69a6
fix: .flat() returning empty arrays 2024-03-21 01:09:54 +01:00
30637f93ee
feat: extended database entities 2024-03-21 01:09:33 +01:00
efc9c79ab0
chore: prelude to import all ActivityStream traits 2024-03-21 00:05:00 +01:00
a5c51f00ea
feat: more link helpers and node constructors 2024-03-21 00:04:44 +01:00
bf8cd97c8f
chore: Mut traits take owned self rather than &mut 2024-03-21 00:04:01 +01:00
9a7199c496
feat: serve application actor on /
mastodon uses /actor, but i think the root is fine?
2024-03-20 11:24:54 +01:00
a6b6ca6965
fix: id extractor 2024-03-20 11:00:21 +01:00
db369683a0
feat: @context in base, actor fields, impl activity 2024-03-20 11:00:01 +01:00
dcaf5d5c2b
feat: more compact _id methods, url! macro 2024-03-20 09:42:25 +01:00
178ad1b75d
fix: dedicated methods for uris
so i dont always wonder if its plural or not
2024-03-20 09:19:31 +01:00
225d8b9292
fix: clap clashes 2024-03-20 09:04:08 +01:00
5386c7ba7a
feat: allow specifying base domain 2024-03-20 08:56:35 +01:00
b2079a2c91
feat: simple outbox without objects
links dont require me to do relations now, but are likely needed
2024-03-20 07:55:24 +01:00
c51ca0744b
chore: polish 2024-03-20 07:55:03 +01:00
1cede82df6
feat: constructors for Node 2024-03-20 07:54:24 +01:00
9f06aa5993
feat: getters/setters for collection and page 2024-03-20 07:54:14 +01:00
8a4e40c93a
feat: create 100 fake entities 2024-03-20 07:53:45 +01:00
339d92986e
chore: moved AP routes in separate folder dir 2024-03-20 05:44:50 +01:00
49cf3205c4
feat: plce and profile 2024-03-20 05:44:40 +01:00
680c61ff9a
feat: mut traits, getter/setters for base+object 2024-03-20 05:44:10 +01:00
35f85695ba
feat: macros for getters/setters, refactored 2024-03-20 05:42:35 +01:00
863ea0408d
fix: macro allows zero flat, removed invalid type 2024-03-19 22:47:52 +01:00
a4374c4ff0
feat: debug fetch command to get remote stuff 2024-03-19 07:39:12 +01:00
410b077fea
fix: actor type from json Value 2024-03-19 07:38:48 +01:00
ef54867369
fix: add json header otherwise we get html 2024-03-19 07:38:33 +01:00
4e45e359b2
fix: other way round, now correctly fetches 2024-03-19 07:38:12 +01:00
3a53c6a2ed
feat: added back ToJson trait for db entities 2024-03-19 06:49:21 +01:00
106380d3b7
feat: improved Node API 2024-03-19 06:49:02 +01:00
67c3e80cf6
feat: improve Node fetching and handling 2024-03-19 05:47:46 +01:00
a73852b3b7
feat: refactored and expanded activitypub types 2024-03-19 05:15:41 +01:00
7d69f8148c
chore: refactored type enums 2024-03-19 01:00:44 +01:00
0adeb667c4
feat: add constructors for entities 2024-03-16 20:09:06 +01:00
32d6e80820
docs: added readme, renamed
upub is actually a pretty cool name, should snipe the crates.io name
asap
2024-03-16 06:06:31 +01:00
52f7ee0990
feat: faker cmd for fake test entities 2024-03-16 05:46:14 +01:00
85c9b363f6
feat: db model for activity and object + routes 2024-03-16 05:45:58 +01:00
40cee0fc87
feat: added basic server for actors 2024-03-16 03:30:04 +01:00
170756588d
feat: added migrations
TODO gate them under feature flag eventually ™️
2024-03-16 03:29:06 +01:00
7876b95de5
feat: recreated models, now with sea_orm
old ones from mastodon's blog weren't that useful since all
objects/activities are traits in the end
2024-03-16 03:27:36 +01:00
e8a7e4e31c
feat: add types enum and basic inbox match 2024-03-15 19:43:29 +01:00
ac3f07f804
feat: work on activitystream types 2024-03-14 05:27:08 +01:00
6bae33f0a6
chore: sample axum route 2024-02-09 17:07:55 +01:00
c69027638f
feat: add simple models
actor, webfinger, activity, object
thanks gargron
https://blog.joinmastodon.org/2018/06/how-to-implement-a-basic-activitypub-server/
2023-12-30 05:08:05 +01:00