Ryan Barrett
ceb72e516c
Web.send: ignore accept activities
...
webmention/mf2 have no corrolary yet
2023-07-11 13:25:31 -07:00
Ryan Barrett
911dc56367
merging receive: check for already seen activity ids more carefully
...
for #529
2023-07-11 13:25:30 -07:00
Ryan Barrett
2c861dbbf4
merging receive: if incoming object has no id (eg web/mf2), default to URL
...
for #529
2023-07-11 13:25:30 -07:00
Ryan Barrett
56ebdba049
merging receive: propagate new/changed from receive into new Object
...
for #529
2023-07-11 13:25:30 -07:00
Ryan Barrett
79dd28eeb3
merging receive: Object.users bug fix, fix most test_activitypub tests
...
for #529
2023-07-11 13:25:30 -07:00
Ryan Barrett
9c62786f06
merging receive: delivery bug fix, stop suppressing webmention send errors
...
for #529
2023-07-11 13:25:30 -07:00
Ryan Barrett
5f4d6757e7
merging Protocol/Web receive: minor fix for extracting activity id
...
for #529
2023-07-11 13:25:30 -07:00
Ryan Barrett
568681a19e
merging Protocol/Web receive: start to work through test_web
...
for #529
2023-07-11 13:25:30 -07:00
Ryan Barrett
ab24b8680f
start using Protocol.owner_key
2023-07-11 13:25:30 -07:00
Ryan Barrett
3333509f5b
add Protocol.owner_key
2023-07-11 13:25:30 -07:00
Ryan Barrett
79c1f71a58
merging Protocol/Web receive: use actor for deletes, not g.user
...
for #529
2023-07-11 13:25:30 -07:00
Ryan Barrett
903f26bb0a
merging Protocol/Web receive: reposts, deletes
...
for #529
2023-07-11 13:25:29 -07:00
Ryan Barrett
b3a3de73f2
extend Web/ActivityPub.owns_id() to return False if blocklisted
2023-07-11 13:25:29 -07:00
Ryan Barrett
2ea78a894b
merging Protocol/Web receive: tests for repost, update reply
...
for #529
2023-07-11 13:25:29 -07:00
Ryan Barrett
ee3a596dbb
Summary merging Protocol/Web receive: change receive to take Object
...
for #529
2023-07-11 13:25:29 -07:00
Ryan Barrett
3ceeae418f
add Object.activity_changed
2023-07-11 13:25:29 -07:00
Ryan Barrett
6157f3f3b5
merging Protocol/Web receive: improve logic for bare objects
...
for #529
2023-07-11 13:25:29 -07:00
Ryan Barrett
4f8bcf9606
merging Protocol/Web receive: move _deliver, _targets from Web to Protocol
...
for #529
2023-07-11 13:25:29 -07:00
Ryan Barrett
d0d6a13044
merging Protocol/Web receive: tweaks to Object.users, Object.labels
...
for #529
2023-07-11 13:25:28 -07:00
Ryan Barrett
ecbc76dd94
minor, use common.add a few more places
2023-07-11 13:25:28 -07:00
Ryan Barrett
54881ea707
lots more on merging Protocol/Web receive and deliver
...
for #529
2023-07-11 13:25:28 -07:00
Ryan Barrett
f254dea004
merge Protocol.receive: follow tweaks, like test
...
for #529
2023-07-11 13:25:28 -07:00
Ryan Barrett
be7aa50eac
start merging web.webmention_task into Protocol.receive
...
for #529
2023-07-11 13:25:28 -07:00
Ryan Barrett
0caca9243e
add common.add to add to repeated properties only if not already there
...
tried a bunch of other more sophisticated ways to do this in snarfed/webutil@280a93e092 (plus snarfed/webutil@6cb9c1f719 ), tried a custom repeated property class that acted like a set instead of a list, but couldn't get it to work reliably or compatibly enough.
2023-06-29 22:15:07 -07:00
Ryan Barrett
342f67dfa2
Protocol.load bug fix, leave new/changed None if we don't know for sure
...
eg if local is False
2023-06-28 15:27:11 -07:00
Ryan Barrett
45d1468825
Protocol.deliver bug fix for normalizing target URLs
...
fixes https://console.cloud.google.com/errors/detail/CKnQ7sWFhfODRQ;time=P30D?project=bridgy-federated
2023-06-27 22:31:15 -07:00
Ryan Barrett
40ae3dec8e
start to port test_activitypub tests to test_protocol, using Fake protocol
...
also minor tweaks to Protocol.deliver
2023-06-27 09:48:47 -07:00
Ryan Barrett
9140318f4a
generalize Protocol.accept_follow, other bug fixes in Protocol.receive
...
for #529 , fixes https://console.cloud.google.com/errors/detail/CMbJ6a6j56LErwE;time=P30D?project=bridgy-federated
2023-06-26 20:22:55 -07:00
Ryan Barrett
c5d3dfb967
generalize protocol.accept_follow away from AP/AS2
...
didn't realize those bits were still there!
2023-06-25 12:54:44 -07:00
Ryan Barrett
65b4f1495f
Protocol.receive: fail "intra-BF" activities from ourselves
...
for #558
2023-06-23 11:20:29 -07:00
Ryan Barrett
c97ee862a5
Protocol.load: return copies of cached objects, not the originals
...
...so that modifications aren't durable in memory until we put() them. for #558
2023-06-22 12:30:25 -07:00
Ryan Barrett
2a7425a8c6
formalize Protocol.target_for() to take any object, not just actors
...
important because webmention endpoints are per page (object), not per site (actor).
2023-06-20 17:06:32 -07:00
Ryan Barrett
ab1c28ee4d
noop, lint fixes from flake8
...
remaining:
$ flake8 --extend-ignore=E501 *.py tests/*.py
"pyflakes" failed during execution due to "'FlakesChecker' object has no attribute 'NAMEDEXPR'"
Run flake8 with greater verbosity to see more details
activitypub.py:15:1: F401 'oauth_dropins.webutil.util.json_loads' imported but unused
activitypub.py:36:1: F401 'web' imported but unused
activitypub.py:48:1: E302 expected 2 blank lines, found 1
activitypub.py:51:9: F811 redefinition of unused 'web' from line 36
app.py:6:1: F401 'flask_app.app' imported but unused
app.py:9:1: F401 'activitypub' imported but unused
app.py:9:1: F401 'convert' imported but unused
app.py:9:1: F401 'follow' imported but unused
app.py:9:1: F401 'pages' imported but unused
app.py:9:1: F401 'redirect' imported but unused
app.py:9:1: F401 'superfeedr' imported but unused
app.py:9:1: F401 'ui' imported but unused
app.py:9:1: F401 'webfinger' imported but unused
app.py:9:1: F401 'web' imported but unused
app.py:9:1: F401 'xrpc_actor' imported but unused
app.py:9:1: F401 'xrpc_feed' imported but unused
app.py:9:1: F401 'xrpc_graph' imported but unused
app.py:9:19: E401 multiple imports on one line
models.py:19:1: F401 'oauth_dropins.webutil.util.json_loads' imported but unused
models.py:364:31: E114 indentation is not a multiple of four (comment)
models.py:364:31: E116 unexpected indentation (comment)
protocol.py:17:1: F401 'oauth_dropins.webutil.util.json_loads' imported but unused
redirect.py:26:1: F401 'oauth_dropins.webutil.util.json_loads' imported but unused
web.py:18:1: F401 'oauth_dropins.webutil.util.json_loads' imported but unused
webfinger.py:13:1: F401 'oauth_dropins.webutil.util.json_loads' imported but unused
webfinger.py:110:13: E122 continuation line missing indentation or outdented
webfinger.py:111:13: E122 continuation line missing indentation or outdented
webfinger.py:131:13: E122 continuation line missing indentation or outdented
webfinger.py:132:13: E122 continuation line missing indentation or outdented
webfinger.py:133:13: E122 continuation line missing indentation or outdented
webfinger.py:134:13: E122 continuation line missing indentation or outdented
tests/__init__.py:2:1: F401 'oauth_dropins.webutil.tests' imported but unused
tests/test_follow.py:11:1: F401 'oauth_dropins.webutil.util.json_dumps' imported but unused
tests/test_follow.py:14:1: F401 '.testutil.Fake' imported but unused
tests/test_models.py:156:15: E122 continuation line missing indentation or outdented
tests/test_models.py:157:15: E122 continuation line missing indentation or outdented
tests/test_models.py:158:11: E122 continuation line missing indentation or outdented
tests/test_web.py:12:1: F401 'oauth_dropins.webutil.util.json_dumps' imported but unused
tests/test_web.py:17:1: F401 '.testutil' imported but unused
tests/test_web.py:1513:13: E128 continuation line under-indented for visual indent
tests/test_web.py:1514:9: E124 closing bracket does not match visual indentation
tests/testutil.py:106:1: E402 module level import not at top of file
tests/testutil.py:107:1: E402 module level import not at top of file
tests/testutil.py:108:1: E402 module level import not at top of file
tests/testutil.py:109:1: E402 module level import not at top of file
tests/testutil.py:110:1: E402 module level import not at top of file
tests/testutil.py:301:24: E203 whitespace before ':'
tests/testutil.py:301:25: E701 multiple statements on one line (colon)
tests/testutil.py:301:25: E231 missing whitespace after ':'
2023-06-20 11:29:31 -07:00
Ryan Barrett
f5133b3ee3
bug fix for Protocol.load with remote=False and existing empty Object
...
fixes https://console.cloud.google.com/errors/detail/CI7JpJWfoff1Ew;time=P30D?project=bridgy-federated
2023-06-18 22:26:30 -07:00
Ryan Barrett
21ab9e34ed
Revise Protocol.load shallow and refresh kwargs, rename to local and remote
...
and use in for_id to optimize datastore usage.
2023-06-18 07:30:40 -07:00
Ryan Barrett
146abbf718
add shallow kwarg to Protocol.load
2023-06-17 14:13:17 -07:00
Ryan Barrett
1821e90f36
add Object.as_as2()
2023-06-16 14:09:28 -07:00
Ryan Barrett
374354a21f
add Protocol.target_for()
...
for #529
2023-06-16 13:16:17 -07:00
Ryan Barrett
d3c4415cd3
migrate User.actor_as2 to obj key pointing to Object
...
for #547
2023-06-15 21:23:31 -07:00
Ryan Barrett
002c6a9740
add Protocol.subdomain_url()
...
for #512 , #548
2023-06-14 14:57:59 -07:00
Ryan Barrett
ed734f3532
Protocol.receive: finish full protocol inference based on target ids
...
for #548 , #512
2023-06-14 13:46:13 -07:00
Ryan Barrett
bfb462e414
Protocol.for_id: handle null Object.source_protocol
2023-06-13 21:36:56 -07:00
Ryan Barrett
e6f72f33b6
Web.load: default check_backlink kwarg to False, pass it through to fetch
2023-06-13 20:24:42 -07:00
Ryan Barrett
7b3aeb2e8e
add Protocol.key_for to let us normalize Web keys from http://x.com/ => x.com
...
for #548 , #512
2023-06-13 14:30:00 -07:00
Ryan Barrett
730fa9155d
handle per-protocol subdomains in Protocol.for_id
...
for #548
2023-06-13 13:43:41 -07:00
Ryan Barrett
48c40c10a8
add Protocol.for_id and .owns_id
...
fixes #548
2023-06-13 13:21:30 -07:00
Ryan Barrett
98ec4fafdd
Protocol.for_domain: add fed kwarg, support URLs as well as domains
2023-06-12 22:05:13 -07:00
Ryan Barrett
436595c2a2
AP users: generalize protocol in Protocol.deliver
...
for #512
2023-06-12 21:43:08 -07:00
Ryan Barrett
fed9e40145
AP users: generalize sending class in Protocol.receive
...
for #512
2023-06-12 20:52:42 -07:00
Ryan Barrett
3448ec7368
AP users: generalize receiving class in Protocol.receive
...
for #512
2023-06-12 19:01:50 -07:00
Ryan Barrett
f951c143e3
fix tests for 0902994af0
2023-06-12 15:50:47 -07:00
Ryan Barrett
cb1f80832f
AP users: add Protocol.ABBREV, Protocol.OTHER_LABELS
...
for #512
2023-06-11 08:14:17 -07:00
Ryan Barrett
510cd036bf
AP users: add Protocol.for_domain and for_request
...
getting ready to serve per-protocol subdomains, eg nostr.brid.gy, ap.brid.gy, etc
for #512
2023-06-10 19:55:08 -07:00
Ryan Barrett
cb5e7bf8c7
noop, minor protocol generalization and cleanup
...
for #512
2023-06-10 15:07:26 -07:00
Ryan Barrett
c98ab3f2d5
AP users: Object schema change, domains => users
...
also for AP => wm, only try to send webmentions to domains that we already have an existing Web user for. the vast majority of targets are fediverse URLs, and we were trying to send them all wms, ie at least running wm discovery and finding nothing. harmless, but a waste.
2023-06-09 12:56:45 -07:00
Ryan Barrett
05f244b86f
AP => wm follow bug fix: store correct actor_as2, not Follow object
...
🤦
fixes https://console.cloud.google.com/errors/detail/CKOFx6_Wrfzf6wE;time=P30D?project=bridgy-federated
2023-06-09 12:28:13 -07:00
Ryan Barrett
afbb453043
AP users: finish migrating follow.py to Follower schema with new from/to
...
for #512 , fixes https://console.cloud.google.com/errors/detail/CPn404XJ2rC6rAE;time=P30D?project=bridgy-federated
2023-06-07 23:51:41 -07:00
Ryan Barrett
7c82bf7ec5
AP users: finish migrating Follower from string domains/ids to User keys
...
for #512
2023-06-07 19:06:44 -07:00
Ryan Barrett
71dadc2ba5
AP users: ignore webmention sending failures
...
since webmention support is optional for web users: https://fed.brid.gy/docs#error-handling
for #512
2023-06-04 15:11:52 -07:00
Ryan Barrett
daba73ce38
update a few user page links in the web UI, /user/ => /web/
...
for #512
2023-06-03 08:03:38 -07:00
Ryan Barrett
9d1dc652f9
Protocol.load: bug fix, handle Object.as1 going from non-None to None
...
fixes https://console.cloud.google.com/errors/detail/CI3L3MzXjPza9gE;time=P30D?project=bridgy-federated
2023-06-02 21:53:44 -07:00
Ryan Barrett
35060c172a
switch actor_id() and address90 back to User methods, to be implemented by subclasses
...
partially reverts 9e906f18e4
2023-05-31 10:10:14 -07:00
Ryan Barrett
9e906f18e4
move address, actor_id from User to activitypub.py, /web-site to web.py
...
for #512
2023-05-30 17:24:49 -07:00
Ryan Barrett
47b04f5574
rename Web.LABEL from 'webmention' to 'web'
2023-05-30 12:15:36 -07:00
Ryan Barrett
6e834713f1
when replying to Follow with Accept, include original Follow object verbatim
...
notably, including id. fixes #522 (again)
2023-05-29 19:04:26 -07:00
Ryan Barrett
c8b2103e13
rename Webmention class => Web, webmention.py => web.py
2023-05-26 17:40:29 -07:00
Ryan Barrett
eaa4e5333a
start to make User subclasses for each protocol
...
#512
2023-05-26 16:07:36 -07:00
Ryan Barrett
cf86f4d808
AP users: extract out Protocol.serve() method
...
#512
2023-05-23 21:30:57 -07:00
Ryan Barrett
892047a10c
add Protocol metaclass and protocol.protocols global for storing subclasses
2023-05-23 15:15:28 -07:00
Ryan Barrett
d2ab48b23e
switch circular imports to runtime imports; split out flask_app.py from app.py
...
runtime imports are just as bad, but...meh. eventually I'll untangle them for real. #486
2023-04-18 17:18:17 -07:00
Ryan Barrett
212f2b11ec
wm => AP: add delete support
...
fixes #30
2023-04-17 15:36:29 -07:00
Ryan Barrett
629c1a2bd4
unify Object.new/changed generation into Protocol.load
...
also:
* switch back to preserving fragments in URL ids
* webmention.fetch: if URL id redirects, preserve original id in Object
2023-04-03 07:53:15 -07:00
Ryan Barrett
3a97ba587d
noop: Protocol.load: switch from @cached decorator to manual cache
...
...so that I can add a refresh kwarg that bypasses the cache
2023-04-02 20:36:23 -07:00
Ryan Barrett
e41ce9216c
noop, rename Protocol.get_object => Protocol.load
2023-03-29 13:13:32 -07:00
Ryan Barrett
e6be9cabb8
incoming AP: when we can't load the keyId, store a deleted Object
...
prevents re-fetching the same failing keyId actor over and over when we get the same Delete actor activity sent to all of our inboxes
2023-03-29 12:51:37 -07:00
Ryan Barrett
5493e2f297
add 'activity' to Object.labels automatically in new _pre_put_hook
2023-03-28 11:14:08 -07:00
Ryan Barrett
68de408789
Protocol.get_object(): store object before returning
...
also flesh out FakeProtocol
hopefully helps with https://console.cloud.google.com/errors/detail/CKCN17fmoZHraw;time=P30D?project=bridgy-federated , don't really know though
2023-03-27 14:14:37 -07:00
Ryan Barrett
28e8baff6c
change Protocol.fetch() to return an Object instead of populating one
2023-03-22 20:49:28 -07:00
Ryan Barrett
acf474e2a9
standardize fetch(id, obj) args
2023-03-20 19:25:05 -07:00
Ryan Barrett
88dd51b05b
continue abstracting logic in Protocol class
...
lots more to do.
also convert Object.as1 to AS2 in ActivityPub.send if necessary.
2023-03-20 19:17:55 -07:00
Ryan Barrett
fb5f7b3fb0
move current user into Flask g request-global
2023-03-20 14:28:14 -07:00
Ryan Barrett
b2c60226b7
add Webmention.send, tweak method signature
2023-03-20 11:26:43 -07:00
Ryan Barrett
bf15f4ca95
fix wm => AP reposts
...
fixes #453
2023-03-19 16:21:44 -07:00
Ryan Barrett
5e3c623552
add User.actor_id()
2023-03-19 09:34:42 -07:00
Ryan Barrett
6ce9a83181
don't add notification label unless an activity involves the user
...
for #442 (ish)
2023-03-13 20:38:46 -07:00
Ryan Barrett
71174b69f9
don't deliver replies to followers
...
also start new test_protocol file. fixes #444 .
2023-03-13 17:25:10 -07:00
Ryan Barrett
01768fd58e
move accept_follow from activitypub to protocol
2023-03-11 13:01:23 -08:00
Ryan Barrett
9cc8451182
fix webmention endpoint discovery cache key
...
#423
2023-03-11 12:14:48 -08:00
Ryan Barrett
76e26a7c2c
cache webmention endpoint discovery for 2h
2023-03-10 22:24:58 -08:00
Ryan Barrett
deb4b12659
AS2: short circuit out on Delete actor that we don't have stored
...
...since when we try to fetch the actor to get their key to verify the signature, we get an HTTP 410 response, at least from Mastodon.
2023-03-10 07:36:50 -08:00
Ryan Barrett
ffd8810b44
start to separate logic from protocols with new Protocol/ActivityPub classes
...
for #388
2023-03-10 07:36:50 -08:00