Go to file
Sascha Nitsch 6b3d2c133b support for user discovery endpoint 2024-07-23 22:37:02 +02:00
.phan folder restructuring, namespace adjustments 2024-07-20 19:17:36 +02:00
htdocs renamed file to avoid name conflicts 2024-07-22 15:40:16 +02:00
php/federator support for user discovery endpoint 2024-07-23 22:37:02 +02:00
plugins/federator support for user discovery endpoint 2024-07-23 22:37:02 +02:00
sql support for user discovery endpoint 2024-07-23 22:37:02 +02:00
templates/federator support for user discovery endpoint 2024-07-23 22:37:02 +02:00
.gitignore folder restructuring, namespace adjustments 2024-07-20 19:17:36 +02:00
Doxyfile documentation updates 2024-07-17 15:45:19 +02:00
README.md support for user discovery endpoint 2024-07-23 22:37:02 +02:00
composer.json initial import 2024-07-17 00:03:39 +02:00
config.ini initial webfinger support 2024-07-20 23:21:27 +02:00
contentnation.ini support for active fetching of user info 2024-07-21 17:02:39 +02:00
phpdoc.dist.xml documentation updates 2024-07-17 15:45:19 +02:00
progress.md new checkbox 2024-07-22 17:39:59 +02:00
rediscache.ini support for nodeinfo 2024-07-22 17:27:48 +02:00
release.sh folder restructuring, namespace adjustments 2024-07-20 19:17:36 +02:00

README.md

A system to connect non-federated system to federation (ActivityPub)

NOTE: this is work in progress, it is nowhere near completion nor function

installation

install dependencies by using

composer install

Upload/copy the files to a directory where php can be run from. The files in the htdocs should be the only reachable, the others should not be served via the web server. Structure:

  • htdocs <= reachable
  • php <= implementation
  • plugins <= plugin directory for well - plugins
  • config.ini <= the configuration

The default config includes a dummy plugin to connect to a non-exisitng server. It accepts any session id and profile name. The database is not used yet, but it must be created and the user with given account data must be able to reach it.

Needed SQL commands:

create database federator;
create user if not exists 'federator'@'localhost' identified by '*change*me*';
grant select,insert,update,delete on federator.* to 'federator'@'localhost';
create user if not exists 'federatoradmin'@'localhost' identified by '*change*me*as*well';
grant all privileges on federator.* to 'federatoradmin'@'localhost';

After this, change the settings in the ini file to match above changed passwords. change to php/federator and run php maintenance dbupgrade to install all the needed table. Also run this after an update.

If the include redis cache is enabled, create a users.acl for redis with the content:

user federator on ~u_* +get +set  ~s_* +get +setex ~m_* +get +setex >redis*change*password

change password in the rediscache.ini to match your given password.

To configure an apache server, add the following rewrite rules:

<Directory /where/ever/you/put/it>
  RewriteEngine on
  RewriteBase /
  RewriteCond expr "%{HTTP:accept} -strcmatch '*application/ld+json*'" [OR]
  RewriteCond expr "%{HTTP:accept} -strcmatch '*application/jrd+json*'" [OR]
  RewriteCond expr "%{HTTP:accept} -strcmatch '*application/activity+json*'" [OR]
  RewriteCond expr "%{HTTP:content-type} -strcmatch '*application/activity+json*'"
  RewriteRule ^@(.*)$ /federator.php?_call=fedusers/$1 [L,END]
  RewriteRule ^users/(.*)$ /federator.php?_call=fedusers/$1 [L,END]
  RewriteRule ^api/federator/(.+)$ federator.php?_call=$1 [L,END]
  RewriteRule ^(\.well-known/.*)$ /federator.php?_call=$1 [L,END]
  RewriteRule ^(nodeinfo/2\.[01])$ /federator.php?_call=$1 [L,END]
</Directory>

With the dummy plugin and everything installed correctly a

curl -v http://localhost/api/federator/v1/dummy/moo -H "X-Session: somethingvalid" -H "X-Profile: ihaveone"

should return a piece of ascii art.