From 2067f380b55a670eabea43e2eb1fd408091aa153 Mon Sep 17 00:00:00 2001 From: octospacc Date: Sun, 10 Sep 2023 21:01:17 +0200 Subject: [PATCH] [activitypub] Change pkgname; Add ACP page, federation switch --- .../spaccinc/activitypub/config/routing.yml | 12 ---- .../spaccinc/activitypub/config/services.yml | 7 -- .../activitypub/acp/activitypub_info.php | 21 ++++++ .../activitypub/acp/activitypub_module.php | 21 ++++++ .../style/acp_spaccinc_activitypub_main.html | 34 ++++++++++ .../activitypub/composer.json | 6 +- .../activitypub/config/routing.yml | 11 ++++ .../activitypub/config/services.yml | 17 +++++ .../activitypub/controller/acp_controller.php | 66 +++++++++++++++++++ .../controller/activitypub_controller.php | 35 +++++----- .../activitypub/language/en/common.php | 15 +++++ .../language/en/info_acp_activitypub.php | 18 +++++ .../migrations/install_acp_module.php | 37 +++++++++++ 13 files changed, 260 insertions(+), 40 deletions(-) delete mode 100755 phpBB/ext/spaccinc/activitypub/config/routing.yml delete mode 100755 phpBB/ext/spaccinc/activitypub/config/services.yml create mode 100644 phpBB/ext/spaccincphpbb/activitypub/acp/activitypub_info.php create mode 100644 phpBB/ext/spaccincphpbb/activitypub/acp/activitypub_module.php create mode 100644 phpBB/ext/spaccincphpbb/activitypub/adm/style/acp_spaccinc_activitypub_main.html rename phpBB/ext/{spaccinc => spaccincphpbb}/activitypub/composer.json (84%) mode change 100755 => 100644 create mode 100644 phpBB/ext/spaccincphpbb/activitypub/config/routing.yml create mode 100644 phpBB/ext/spaccincphpbb/activitypub/config/services.yml create mode 100644 phpBB/ext/spaccincphpbb/activitypub/controller/acp_controller.php rename phpBB/ext/{spaccinc => spaccincphpbb}/activitypub/controller/activitypub_controller.php (90%) mode change 100755 => 100644 create mode 100644 phpBB/ext/spaccincphpbb/activitypub/language/en/common.php create mode 100644 phpBB/ext/spaccincphpbb/activitypub/language/en/info_acp_activitypub.php create mode 100644 phpBB/ext/spaccincphpbb/activitypub/migrations/install_acp_module.php diff --git a/phpBB/ext/spaccinc/activitypub/config/routing.yml b/phpBB/ext/spaccinc/activitypub/config/routing.yml deleted file mode 100755 index fe97ec7..0000000 --- a/phpBB/ext/spaccinc/activitypub/config/routing.yml +++ /dev/null @@ -1,12 +0,0 @@ -spaccinc_activitypub_activitypub_webfinger: - path: /.well-known/webfinger - defaults: { _controller: spaccinc.activitypub.controller.activitypub:webfinger } - -spaccinc_activitypub_activitypub_nodeinfo_known: - path: /.well-known/nodeinfo - defaults: { _controller: spaccinc.activitypub.controller.activitypub:nodeinfo_known } - -spaccinc_activitypub_activitypub_activitypub: - path: /activitypub - defaults: { _controller: spaccinc.activitypub.controller.activitypub:activitypub } - diff --git a/phpBB/ext/spaccinc/activitypub/config/services.yml b/phpBB/ext/spaccinc/activitypub/config/services.yml deleted file mode 100755 index 34ba338..0000000 --- a/phpBB/ext/spaccinc/activitypub/config/services.yml +++ /dev/null @@ -1,7 +0,0 @@ -services: - spaccinc.activitypub.controller.activitypub: - class: spaccinc\activitypub\controller\activitypub_controller - arguments: - - '@request' - - '@dbal.conn' - diff --git a/phpBB/ext/spaccincphpbb/activitypub/acp/activitypub_info.php b/phpBB/ext/spaccincphpbb/activitypub/acp/activitypub_info.php new file mode 100644 index 0000000..0735c42 --- /dev/null +++ b/phpBB/ext/spaccincphpbb/activitypub/acp/activitypub_info.php @@ -0,0 +1,21 @@ + '\spaccincphpbb\activitypub\acp\activitypub_module', + 'title' => 'ACP_SPACCINC_ACTIVITYPUB_TITLE', + 'modes' => [ + 'settings' => [ + 'title' => 'ACP_SPACCINC_ACTIVITYPUB_TITLE', + 'auth' => 'ext_spaccincphpbb/activitypub && acl_a_board', + 'cat' => ['ACP_SPACCINC_ACTIVITYPUB_TITLE'], + ], + ], + ]; + } +} diff --git a/phpBB/ext/spaccincphpbb/activitypub/acp/activitypub_module.php b/phpBB/ext/spaccincphpbb/activitypub/acp/activitypub_module.php new file mode 100644 index 0000000..970e418 --- /dev/null +++ b/phpBB/ext/spaccincphpbb/activitypub/acp/activitypub_module.php @@ -0,0 +1,21 @@ +get('spaccincphpbb.activitypub.controller.acp'); + $this->tpl_name = 'acp_spaccinc_activitypub_main'; + $this->page_title = 'ACP_SPACCINC_ACTIVITYPUB_TITLE'; + $acp_controller->set_page_url($this->u_action); + $acp_controller->display_options(); + } +} diff --git a/phpBB/ext/spaccincphpbb/activitypub/adm/style/acp_spaccinc_activitypub_main.html b/phpBB/ext/spaccincphpbb/activitypub/adm/style/acp_spaccinc_activitypub_main.html new file mode 100644 index 0000000..d507214 --- /dev/null +++ b/phpBB/ext/spaccincphpbb/activitypub/adm/style/acp_spaccinc_activitypub_main.html @@ -0,0 +1,34 @@ +{% include 'overall_header.html' %} + +

{{ lang('ACP_SPACCINC_ACTIVITYPUB_TITLE') }}

+ +{% if S_ERROR %} +
+

{{ lang('WARNING') }}

+

{{ ERROR_MSG }}

+
+{% endif %} + +
+ +
+ {{ lang('SETTINGS') }} +
+
+
+
+
+ +
+ +
+   + {{ S_FORM_TOKEN }} +
+ +
+ +{% include 'overall_footer.html' %} diff --git a/phpBB/ext/spaccinc/activitypub/composer.json b/phpBB/ext/spaccincphpbb/activitypub/composer.json old mode 100755 new mode 100644 similarity index 84% rename from phpBB/ext/spaccinc/activitypub/composer.json rename to phpBB/ext/spaccincphpbb/activitypub/composer.json index 3d89add..692ab4e --- a/phpBB/ext/spaccinc/activitypub/composer.json +++ b/phpBB/ext/spaccincphpbb/activitypub/composer.json @@ -1,10 +1,10 @@ { - "name": "spaccinc/activitypub", + "name": "spaccincphpbb/activitypub", "type": "phpbb-extension", "description": "ActivityPub for phpBB", "homepage": "https://gitlab.com/SpaccInc/SpaccCommunityPlatform", - "version": "0.0.1-dev", - "time": "2023-09-07", + "version": "0.0.2-dev", + "time": "2023-09-09", "license": "[to be defined]", "authors": [ { diff --git a/phpBB/ext/spaccincphpbb/activitypub/config/routing.yml b/phpBB/ext/spaccincphpbb/activitypub/config/routing.yml new file mode 100644 index 0000000..23b0118 --- /dev/null +++ b/phpBB/ext/spaccincphpbb/activitypub/config/routing.yml @@ -0,0 +1,11 @@ +spaccincphpbb_activitypub_activitypub_webfinger: + path: /.well-known/webfinger + defaults: { _controller: spaccincphpbb.activitypub.controller.activitypub:webfinger } + +spaccincphpbb_activitypub_activitypub_nodeinfo_known: + path: /.well-known/nodeinfo + defaults: { _controller: spaccincphpbb.activitypub.controller.activitypub:nodeinfo_known } + +spaccincphpbb_activitypub_activitypub_activitypub: + path: /activitypub + defaults: { _controller: spaccincphpbb.activitypub.controller.activitypub:activitypub } diff --git a/phpBB/ext/spaccincphpbb/activitypub/config/services.yml b/phpBB/ext/spaccincphpbb/activitypub/config/services.yml new file mode 100644 index 0000000..242ef64 --- /dev/null +++ b/phpBB/ext/spaccincphpbb/activitypub/config/services.yml @@ -0,0 +1,17 @@ +services: + spaccincphpbb.activitypub.controller.activitypub: + class: spaccincphpbb\activitypub\controller\activitypub_controller + arguments: + - '@config' + - '@request' + - '@dbal.conn' + + spaccincphpbb.activitypub.controller.acp: + class: spaccincphpbb\activitypub\controller\acp_controller + arguments: + - '@config' + - '@language' + - '@log' + - '@request' + - '@template' + - '@user' diff --git a/phpBB/ext/spaccincphpbb/activitypub/controller/acp_controller.php b/phpBB/ext/spaccincphpbb/activitypub/controller/acp_controller.php new file mode 100644 index 0000000..2131fbe --- /dev/null +++ b/phpBB/ext/spaccincphpbb/activitypub/controller/acp_controller.php @@ -0,0 +1,66 @@ +config = $config; + $this->language = $language; + $this->log = $log; + $this->request = $request; + $this->template = $template; + $this->user = $user; + } + + public function display_options() + { + $this->language->add_lang('common', 'spaccincphpbb/activitypub'); + add_form_key('spaccincphpbb_activitypub_acp'); + $errors = []; + + if ($this->request->is_set_post('submit')) + { + if (!check_form_key('spaccincphpbb_activitypub_acp')) + { + $errors[] = $this->language->lang('FORM_INVALID'); + } + + if (empty($errors)) + { + $this->config->set('spaccincphpbb_activitypub_setfederation', $this->request->variable('spaccincphpbb_activitypub_setfederation', 0)); + $this->log->add('admin', $this->user->data['user_id'], $this->user->ip, 'LOG_ACP_SPACCINC_ACTIVITYPUB_SETTINGS'); + trigger_error($this->language->lang('CONFIG_UPDATED') . adm_back_link($this->u_action)); + } + } + + $s_errors = !empty($errors); + + $this->template->assign_vars([ + 'S_ERROR' => $s_errors, + 'ERROR_MSG' => $s_errors ? implode('
', $errors) : '', + 'U_ACTION' => $this->u_action, + 'SPACCINCPHPBB_ACTIVITYPUB_SETFEDERATION' => (bool)$this->config['spaccincphpbb_activitypub_setfederation'], + ]); + } + + public function set_page_url($u_action) + { + $this->u_action = $u_action; + } +} diff --git a/phpBB/ext/spaccinc/activitypub/controller/activitypub_controller.php b/phpBB/ext/spaccincphpbb/activitypub/controller/activitypub_controller.php old mode 100755 new mode 100644 similarity index 90% rename from phpBB/ext/spaccinc/activitypub/controller/activitypub_controller.php rename to phpBB/ext/spaccincphpbb/activitypub/controller/activitypub_controller.php index 4785aa1..d6d867a --- a/phpBB/ext/spaccinc/activitypub/controller/activitypub_controller.php +++ b/phpBB/ext/spaccincphpbb/activitypub/controller/activitypub_controller.php @@ -1,16 +1,14 @@ config = $config; $this->request = $request; $this->db = $db; @@ -45,19 +45,6 @@ class activitypub_controller $this->server_addr = ((!empty($this->request->server('HTTPS')) && (strtolower($this->request->server('HTTPS')) == 'on' || $this->request->server('HTTPS') == '1')) ? 'https://' : 'http://') . $this->server_name; } - //private function server_name() - //{ - // // - // //return strtolower(htmlspecialchars_decode($this->request->header('Host', $this->request->server('SERVER_NAME')))); - //} - - //private function server_addr() - //{ - // // - // $proto = (!empty($this->request->server('HTTPS')) && (strtolower($this->request->server('HTTPS')) == 'on' || $this->request->server('HTTPS') == '1')) ? 'https://' : 'http://'; - // return $proto . $this->server_name; - //} - private function get_sql_row($sql) { $result = $this->db->sql_query($sql); @@ -68,6 +55,10 @@ class activitypub_controller public function nodeinfo_known() { + if (!$this->config['spaccincphpbb_activitypub_setfederation']) { + return; + } + set_error_handler([$this, 'exception_error_handler']); $server_addr = $this->server_addr; $response = new Response(json_encode([ @@ -83,6 +74,10 @@ class activitypub_controller public function webfinger() { + if (!$this->config['spaccincphpbb_activitypub_setfederation']) { + return; + } + set_error_handler([$this, 'exception_error_handler']); $server_name = $this->server_name; $server_addr = $this->server_addr; @@ -135,6 +130,10 @@ class activitypub_controller public function activitypub() { + if (!$this->config['spaccincphpbb_activitypub_setfederation']) { + return; + } + set_error_handler([$this, 'exception_error_handler']); $server_addr = $this->server_addr; $uri_id = htmlspecialchars_decode($server_addr . $this->request->server('REQUEST_URI')); @@ -157,7 +156,7 @@ class activitypub_controller 'version' => '2.0', 'software' => [ 'name' => 'phpBB ActivityPub', - 'version' => '0.0.1', + 'version' => '0.0.1-dev', ], 'protocols' => [ 'activitypub', diff --git a/phpBB/ext/spaccincphpbb/activitypub/language/en/common.php b/phpBB/ext/spaccincphpbb/activitypub/language/en/common.php new file mode 100644 index 0000000..a70e996 --- /dev/null +++ b/phpBB/ext/spaccincphpbb/activitypub/language/en/common.php @@ -0,0 +1,15 @@ + 'ActivityPub for phpBB Module', + 'ACP_SPACCINC_ACTIVITYPUB_SETFEDERATION' => 'Enable ActivityPub federation for this board', + 'ACP_SPACCINC_ACTIVITYPUB_SETDOMAIN' => 'Full domain name to use for federation', + 'ACP_SPACCINC_ACTIVITYPUB_SETDOMAIN_INFO' => 'The domain on which federation will be handled. NEVER change this after enabling federation, unless you know the implications.', +]); diff --git a/phpBB/ext/spaccincphpbb/activitypub/migrations/install_acp_module.php b/phpBB/ext/spaccincphpbb/activitypub/migrations/install_acp_module.php new file mode 100644 index 0000000..f406cb8 --- /dev/null +++ b/phpBB/ext/spaccincphpbb/activitypub/migrations/install_acp_module.php @@ -0,0 +1,37 @@ +config['spaccincphpbb_activitypub_setfederation']); + } + + public static function depends_on() + { + return ['\phpbb\db\migration\data\v320\v320']; + } + + public function update_data() + { + return [ + ['config.add', ['spaccincphpbb_activitypub_setfederation', 0]], + + ['module.add', [ + 'acp', + 'ACP_CAT_DOT_MODS', + 'ACP_SPACCINC_ACTIVITYPUB_TITLE' + ]], + ['module.add', [ + 'acp', + 'ACP_SPACCINC_ACTIVITYPUB_TITLE', + [ + 'module_basename' => '\spaccincphpbb\activitypub\acp\activitypub_module', + 'modes' => ['settings'], + ], + ]], + ]; + } +}