-
Notifications
You must be signed in to change notification settings - Fork 77
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[DONE] Yaal Coop/Add ActivityPub functionality #1170
base: develop
Are you sure you want to change the base?
Conversation
️✅ There are no secrets present in this pull request anymore.If these secrets were true positive and are still valid, we highly recommend you to revoke them. 🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request. |
b2e297c
to
c06326f
Compare
Bonjour, Si vous êtes certains que les "secrets" détectés par GitGuardian n'en sont pas, je vous invite à insérer les variables à ignorer dans un cartouche de ce type : # ggignore-start
# gitguardian:ignore
# Generate one using `openssl rand -hex 32`
PEERTUBE_SECRET=804061c0547350xxxxx
# ggignore-end Ou pour éviter que toutes les configurations laissées par défaut partagent le même secret, mettez # Generate one using `openssl rand -hex 32`
PEERTUBE_SECRET=TO_CHANGE |
La migration de |
Bonjour, |
Je pense que ça va être compliqué de s'engager sur une livraison vendredi... Il nous reste des ajustements à faire et je suis en arrêt pour covid... |
nous prévoyons en effet une 3.8 pour mercredi prochain. Nous voulions avoir le temps de faire les review et test fonctionnel de votre contribution. |
Vous pouvez mettre à jour votre branche depuis develop pour recupérer la dernière version de pod et fixer les conflits |
3233327
to
b957ed5
Compare
7a90a1b
to
2a45f72
Compare
Hello @Badatos , Concernant GitGuardian, j'ai tenté :
Localement, le précommit GitGuardian ne renvoie pas d'incidents. Mais la CI échoue toujours sur ces deux variables... |
Petite question, mise à part les gitguardian, est-ce que la PR est terminée ? si oui, pouvez-vous la passer en DONE qu'on puisse review svp ? Merci ! |
Non, je pense que la PR ne sera pas terminée avant la release... |
ha ok, comme la PR passait les tests, je le croyais mais pas grave ! |
Super pour la commande. On a dû oublier d'enlever ces lignes qui nous aidaient en local... Bizarre, il y a pourtant bien un fichier |
En effet ! l'erreur vient en fait un peu plus bas :
|
Ah, oui, c'est pour ça qu'il y a cette première ligne dans |
OOOOK ! :)
Et cette fois, les requêtes partent bien !! ;) Merci pour l'aide. Reste maintenant à trouver comment mettre ce worker celery en place en tant que service... |
Je pousse un correctif sur cet entrypoint et sur la doc |
J'imagine qu'il faudra mettre cette doc à jour pour ajouter la partie ActivityPub : https://www.esup-portail.org/wiki/display/ES/Gestion+de+l%27encodage%2C+de+la+transcription+et+de+l%27xAPI |
J'ai essayé de documenter ce que j'ai fait ici : Si vous voyez une erreur n'hésitez-pas ;) Je m'interroge tout de meme sur le fait de devoir ajouter la ligne Peut-être serait-il plus simple d'ajouter les lignes suivantes directement dans la tache : import os
# Set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings') ... tel que c'est recommandé dans la doc Celery (https://docs.celeryq.dev/en/latest/django/first-steps-with-django.html#django-first-steps) Ca simplifierait la doc d'installation, et éviterait de potentielles erreurs. |
Je pense qu'il y a un copié collé malheureux au niveau de la configuration à ajouter dans la config pour l'installation sur le serveur d'encodage, ce sont les variables pour xAPI. J'ai poussé les corrections ! |
Bien vu ! je corrige la doc. |
Bonjour @LoanR,
Je tente d'ajouter le 1er dans les "followings" du 2e. Au début, cela fonctionne : le statut passe bien en Ci-dessous le log du conteneur pod-activitypub-with-volumes :
|
Côté serveur n°1, la requête est bien arrivée mais a déclenché une erreur :
==> il semble que data soit None. Il doit manquer une vérif ici. |
Dans les logs du serveur n°1, on devrait avoir un warning juste avant cette erreur qui est un dump du contenu de la requête ActivityPub, quelque chose commençant par |
Le dump en question n'a rien a afficher quand data = None |
Étrange, c'est comme si la requête arrivait bien sur le serveur 2, mais sans contenu... |
L'objet "Following" que j'ai créé sur le serveur 2 a comme url Est-ce voulu que le https soit converti en http ? |
J'ai l'impression que la fonction |
Bonne piste, soit il y a effectivement un problème avec http en local et https en prod, ou alors le well-known n'envoie pas la bonne url... ⏳ |
En effet :
|
On avance :)
... Mais toujours aucun "Follower" n'apparait sur pod-test :/ |
Le dump de data est toujours à None ? |
Lorsque le serveur 2 envoie une requete "follow" au serveur 1, voici ce qui apparait dans les requetes du serveur 1 :
La dernière requete "/ap/inbox" est en HTTP 204 No Content, c'est normal ? |
Voici le data dump :
|
Je pense qu'avec un pod dans un conteneur en local ça ne peut pas fonctionner. J'explique ce que je pense qu'il se passe :
Pour pouvoir aller plus loin, il faudrait avoir deux instances de pod accessibles l'une pour l'autre. Donc une autre instance de test, ou bien utiliser un service comme ngrok pour avoir une url pour le pod local dockerisé accessible depuis le web. |
Ok, merci pour les infos ! En attendant, je vous invite tout de même à modifier la ligne 136 du fichier views.py : if (
data["type"] in ("Announce", "Update", "Delete")
and not settings.TEST_SETTINGS
and not check_signatures(request)
):
return HttpResponse("Signature could not be verified", status=403) Après : if (
data is None or
(data["type"] in ("Announce", "Update", "Delete")
and not settings.TEST_SETTINGS
and not check_signatures(request))
):
return HttpResponse("Signature could not be verified", status=403) Ca évitera de déclencher une Exception quand data est None. |
J'ai 'ajouté un try except pour clarifier et logger les erreurs. |
J'ai rebase sur develop, il y avait un conflit. |
New configuration
ActivityPub signature
Full documentation about ActivityPub requests signatures can be found
pod/activitypub/README.md
-> new public and private keys are needed for ActivityPub to workpod/activitypub/ap.key
pod/activitypub/ap.pub
.Requirements before running container
You need to run migrations for the new ActivityPub models
Follower
,Following
,ExternalVideo
and for some changes inVideo
model.ElasticSearch index needs also to be rebuilt:
id
was along
number, it is now akeyword
, andis_external
is a newboolean
.Local testing
docker-compose-full-dev-with-volumes.yml
now launches a Peertube instance available onpeertube.localhost:9000
for testing purpose.To be able to use a local version, from previous builds, the
Site
object must be changed on Django admin to point onpod.localhost:8000
.You can federate to an instance by adding its url in Django admin,
Following
thenSend the federation request
action.To get existing videos via ActivityPub of a followed instance, you also need to
Reindex the instance videos
.