rivervanrain/indieweb

为Elgg提供IndieWeb集成

安装: 1

依赖项: 0

建议者: 0

安全: 0

星级: 2

关注者: 2

分支: 0

公开问题: 0

类型:elgg-plugin

2.0.1 2024-09-30 10:05 UTC

This package is auto-updated.

Last update: 2024-09-30 10:08:41 UTC


README

Elgg 6.0

为Elgg提供IndieWeb集成

关于

将IndieWeb的哲学理念集成到您的Elgg网站上。基于IndieWeb Drupal插件,由Kristof De Jaeger aka swentel开发。

特性

  • Webmention:发送和接收webmention和pingback;通过brid.gy发送webmention和同步内容,喜欢等;存储同步;自动从in-reply-to创建评论;在评论中回复并通过Webmention.io和另一个外部或内部端点发送webmention
  • Microformats:将Microformats2应用于您的标记;内容、图像等的Microformats
  • IndieAuth:允许用户使用IndieAuth登录和创建账户;内置IndieAuth授权和认证API;公开端点和使用外部或内部端点
  • Micropub:创建、更新和删除内容笔记、文章、事件、RSVP、回复、喜欢、重新发布、书签、签到和问题
  • Microsub:内置Microsub服务器或使用外部服务;公开Microsub端点,外部或内部
  • Feeds:创建JF2订阅源
  • 媒体缓存:将图像存储在本地,以供内部webmention和microsub端点使用
  • WebSub:WebSub PuSH 0.4用于发布和订阅,与Microsub支持订阅源集成
  • 联系人:存储联系人以供Micropub联系人查询,允许自动完成

Webmention

Webmention.io是一个托管服务,旨在轻松处理任何网页上的webmention。Elgg中的Webmention公开了一个端点/webmention,通过此服务接收Webmention。

Webmention.io是开源的,因此您也可以自行托管此服务。

您需要在Webmention.io上创建账户以接收webhook。一旦在该服务中记录了一个Webmention,您就可以将webhook设置为https://your_domain/webmention并输入一个密钥。

要创建账户,您需要通过IndieAuth进行认证,这需要您在指向您的社交账户的链接上添加rel=me属性。请参阅设置说明以获取完整说明。有关更多信息,请参阅下面的IndieAuth

您还可以使用内置端点,这样您就不需要依赖外部服务。

配置位于/admin/indieweb/webmention。所有接收到的Webmention的概览在/admin/indieweb/webmention/received

使用Bridgy发送Webmention和同步内容

在Elgg中,您可以通过在发布到字段集中发布新的实体来同步和发送Webmention,该字段集中受/admin/indieweb/webmention上的发送配置保护。

对于内容分发,实体表单中将提供复选框,用于按目标发送您的内 容(例如,Fediverse等)。还有一个可用于渲染POSSE-Post-Discoverysyndication字段

您还可以配置仅在自定义URL字段中输入,以发送Webmention。

当您切换到分发,并创建实体时,Webmention将发送到Bridgy等。

Bridgy将社交网络上的评论、点赞和转发拉回到您的网站。您还可以用它来在社交网络上发布,或评论、点赞、转发,甚至进行 RSVP - 从您的网站。Bridgy是开源的,因此您也可以自己托管该服务。为了从这些网络接收内容,bridgy将发送webmention,因此您只需启用webmention端点。

您的内 容需要在内容、图像等上具有适当的Microformat类。

注意:Bridgy更喜欢p-summary而不是e-content,但对于原始推文,则首先使用p-name。请参阅https://brid.gy/about#microformats

您可以在Bridgy上预览您的帖子以验证您的标记是否正确。

所有已发送Webmention的概述在/admin/indieweb/webmention/sent

Microformats

Microformats是Elgg中HTML的扩展,用于标记人、组织、事件、位置、博客文章、产品、评论、简历、食谱等。

网站使用Microformats发布标准API,该API被搜索引擎、聚合器和其他工具消费和使用。

示例

  <p class="h-card">My name is <a class="u-url p-name" rel="me" href="/">Your name</a>

为发布(或其他功能)添加的类

  • h-entry:添加在实体包装器上
  • h-event:添加在事件实体的包装器上
  • dt-publishedu-urlp-name在实体的metadata
  • e-content:添加在默认body字段上
  • p-summary:添加在默认summary字段上
  • u-photo:添加在图像样式上
  • u-video:添加在视频样式上

还有几个链接、类别、RSVP、地理缓存、签到和地理的表单字段格式化程序。

对于引用有一个特殊情况:如果您有link字段和body,则转发格式化程序将设置一个静态变量,以便将body字段和link字段移动到特殊容器内。这只适用于body字段,因此请确保您在实体子类型的内容上使用该字段。

Micropub

允许发布到您的Elgg应用。

在您发布之前,您需要验证并启用IndieAuth身份验证API。每个请求都将包含一个访问令牌,该令牌将被验证以确保确实是由您发布。

请参阅IndieAuth进行配置。有关Micropub的更多信息。

一个非常好的客户端是quill。完整的列表可在Micropub客户端中找到。Indigenous(适用于iOS和Android)也是micropub阅读器。

即使您没有决定使用Micropub端点,配置屏幕也为您提供了一个很好的概述,说明您可以创建哪些内容类型和字段,这些内容类型可用于发送Webmention或由Microformat解析器读取。

还有一个媒体端点,您可以在其中上传文件(仅限音频、图像和视频)。

您可以在/admin/indieweb/micropub配置Micropub。

支持的帖子类型

  • 文章:博客文章
  • 注意:小型帖子,将其视为推文或The Wire帖子
  • 回复:对URL进行回复
  • 转发:转发URL
  • 点赞:点赞URL
  • 书签:将URL添加到书签
  • 事件:创建事件
  • RSVP:创建RSVP
  • 问题:在存储库中创建问题
  • 签到:在某个位置签到

了解更多关于 帖子 的信息。

您可以在 /admin/indieweb/micropub/posts 配置此功能。

联系人

允许存储联系人,这些联系人可用于Micropub联系人查询。

可以在 /admin/indieweb/micropub 启用Micropub的 contact 端点。

更多信息请访问 昵称

Microsub

Microsub 是一个规范草案的早期版本,为客户端提供了一种标准化的方式来消费和交互由服务器收集的源。

阅读器有Indigenous(iOS和Android)、Monocle和Together等,还有更多即将到来。服务器有Aperture、Ekster等。

更多信息请参阅 Microsub-spec

在Elgg中启用Microsub允许您公开一个Microsub标题链接,这可以是内置的Microsub服务器或设置为外部服务。

内置服务器通道和来源在 /admin/indieweb/microsub/channels 管理。

注意:服务器必须始终有一个具有 uid notifications 的通道,并且必须始终至少有一个其他通道用于用户。

已实现的Microsub动作

  • GET action=channels:检索通道列表
  • GET action=timeline:检索通道中的项目列表
  • POST action=timeline:标记条目为已读,从通道中移动或删除条目
  • POST action=channels:创建、更新、排序和删除通道
  • POST action=follow, unfollow:订阅、取消订阅源,更新源通道
  • POST/GET action=search, preview:搜索和预览url

提示:使用HTML格式化以获取最佳上下文。

注意:当您将源配置为 清理源条目 时,默认情况下我们内部计数多5个项目。原因是某些源使用固定条目(例如Mastodon),这些条目可能会出现和消失,并混淆页面上总可视条目的数量。或者简单地因为后来删除了帖子。

Aperture

如果您使用 Aperture 作为Microsub服务器,当此站点收到Webmention时,您可以发送Micropub帖子到一个通道。典型示例是将该通道名称标记为 通知,这样您就可以在Monocle或Indigenous等阅读器上查看传入的Webmention。以下Webmention被发送: 转发书签提及回复

请求

默认情况下,所有对Microsub端点的请求都是匿名的。这允许获取通道及其中的帖子。当请求为匿名时,不允许写操作(如管理通道、订阅、搜索、标记(未)阅读等)。

这对于在阅读器中展示端点来说很理想。

注意:您仍然可以进行认证请求,但由于匿名请求,项目始终会被标记为未读。

媒体缓存

当使用内置的Webmention/Microsub端点或联系人时,会存储大量文件url到外部图像。这些文件将被下载并本地缓存。缓存是在处理Webmention或Microsub项目时生成的,因此对请求的影响最小。

IndieAuth

IndieAuth 是一种使用您自己的域名来登录网站的方式。它通过将您的网站链接到一个或多个身份验证提供者(如Twitter或Google)来实现,然后在支持IndieAuth的网站的登录表单中输入您的域名。

Indieauth.comIndielogin.com 是一款托管服务,可以为您完成这项任务,后者还提供了身份验证API。它们都是开源的,因此您也可以自行托管该服务。

简单的方法是在您的首页添加指向您社交媒体账户的 rel="me" 链接,并在每个服务中添加指向您主页的链接。它们甚至可以隐藏。

  <a href="https://twitter.com/elgg" target="_blank" title="Twitter" rel="me"></a>

如果您不想使用第三方服务,也可以使用PGP密钥。有关详细信息,请参阅 https://indieauth.com/setup

此插件不会公开任何这些链接或帮助您设置PGP,您将需要自行管理。

如果您使用像 Quill(网络或本土(iOS、Android)或其他可以发布通过Micropub或通过Microsub读取的客户端),让这些客户端通过您的域名登录的最简单方法也是使用 https://indieauth.com,并交换访问令牌以进行进一步请求。只有当您想使用Micropub或Microsub时才公开这些头链接。

您还可以使用内置的身份验证和令牌端点。然后您可以使用Elgg用户(仅限网站管理员)授权自己。支持PKCE。

公钥和私钥

在内部使用端点时,访问令牌使用私钥加密,并使用公钥解密。您可以通过UI生成它们,或者通过运行以下命令手动创建它们。

openssl genrsa -out private.key 2048
openssl rsa -in private.key -pubout > public.key

理想情况下,这些密钥应该存储在您的webroot之外的一个文件夹中。如果不可能,请确保权限设置为600。然后请在 /admin/indieweb/indieauth 中填写路径。

WebSub

WebSub(以前称为PubSubHubbub或PuSH,以及简短地PubSub)是一种基于通知的协议,用于实时发布和订阅流和旧式feed文件。

Elgg的WebSub允许您将内容发布到中心,并从中心接收Microsub feed的通知,从而无需轮询。

默认的发布中心是 switchboard

pubsubhubbubsuperfeedr 也可以用于获取订阅和通知。

当您切换到发布时,会在队列中创建一个条目,您可以通过cron处理它。这将向配置的中心发送请求。已发布内容的概述在 /admin/indieweb/websub/pub

更多配置在 /admin/indieweb/websub

有关更多信息,请参阅 如何发布和消费WebSubWebSub

订阅源

在JF2中生成订阅源。

您将需要订阅源的情况:

  • 当您使用Bridgy时:服务将查找带有 rel="feed" 的html链接标头,并使用这些页面进行爬取,以便知道需要向哪些内容发送webmention。
  • 您想要允许IndieWeb阅读器(Monocle、Together、Indigenous)订阅您的内容。这些是替代类型,它们可以链接到包含microformat条目的页面。建议在该页面上也放置一个 h-card,因为一些解析器不会访问主页来获取该内容。

例如,使用 yourdomain.com/blog/all?view=jf2feed 来查看订阅源。

有关更多信息,请参阅

通过Bridgy Fed或ActivityPub插件进行Fediverse

Bridgey Fed 允许您从Elgg应用程序与Mastodon和Hubzilla等联邦社交网络进行交互。它将Webmention中的回复、点赞和转发翻译为联邦社交网络协议如ActivityPub和OStatus,反之亦然。Bridgey Fed是开源的,因此您也可以自己托管该服务。请参阅Bridgey Fed

目前支持Mastodon,并将继续增加更多。您不需要在任何社交网络上创建账户。

只需将Fediverse|https://fed.brid.gy/添加为聚合目标,并在发布新内容时选择它。发布、回复、点赞、转发和关注都能正常工作。

  • 请参阅Bridgey Fed设置以获取更多设置信息。
  • 如果您使用microsub服务器,您可以通过microformats源订阅fediverse用户。

如果您想使用Elgg本身与Fediverse进行交互,您还可以安装ActivityPub插件

IndieWebify.me / sturdy-backbone.glitch.me / xray.p3k.io

使用IndieWebify.me进行初步检查,以查看您的站点是否已准备好Indieweb。它可以在您使用此模块(和可选的更多)进行配置后扫描某些标记。

请注意,在Indiewebify中,作者发现对于帖子并不完全工作,请使用https://sturdy-backbone.glitch.me

另一个好工具是http://xray.p3k.io,它以JSON格式显示结果。

用法

一旦激活,插件将提供以下功能

  • 它将监听对象的创建事件,如果对象的描述包含URL,它将尝试向其发送webmention。
  • 它在一个http://yoursite.url/webmention/上公开webmention端点(设置适当的头部值)。

OpenWeb图标

我们使用OpenWeb Icons来使一些菜单项看起来更美观。

使用此代码片段将图标添加到菜单中

<i class="openwebicons-indieweb" style="font-size: 16px;"></i>

<i class="openwebicons-feed-colored" style="font-size: 20px;"></i>

更多示例在项目页面

开发者片段

/** Elgg\IndieWeb\Webmention\Client\WebmentionClient **/
$svc = elgg()->webmention;
$response = $svc->get($source);

/** Elgg\IndieWeb\Microsub\Client\MicrosubClient **/
$microsub_client = elgg()->microsub;
$microsub_client->sendNotification($webmention, $parsed);

/** \Elgg\IndieWeb\Cache\MediaCacher **/
$image = elgg()->mediacacher->saveImageFromUrl($author_value);

// Get the target guid
$target_guid = indieweb_get_guid($target);
$webmention->setMetadata('target_guid', $target_guid);
						
$target = indieweb_get_path($target);
$webmention->setMetadata('target', $target);