60 lines
2.6 KiB
Markdown
60 lines
2.6 KiB
Markdown
# 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.
|