From b3fc098b83bb4826c8814fa89f7b18d24d62b4cf Mon Sep 17 00:00:00 2001 From: Francis Dinh Date: Fri, 26 May 2023 22:26:14 -0400 Subject: [PATCH 1/7] docs: Update Pleroma references to Akkoma in optional packages guide This apparently slipped past though all of the doc updates from a while back. --- .../installation/optional/media_graphics_packages.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/docs/installation/optional/media_graphics_packages.md b/docs/docs/installation/optional/media_graphics_packages.md index cb3d71188..94552ec4e 100644 --- a/docs/docs/installation/optional/media_graphics_packages.md +++ b/docs/docs/installation/optional/media_graphics_packages.md @@ -1,19 +1,19 @@ # Optional software packages needed for specific functionality -For specific Pleroma functionality (which is disabled by default) some or all of the below packages are required: +For specific Akkoma functionality (which is disabled by default) some or all of the below packages are required: * `ImageMagic` * `ffmpeg` * `exiftool` Please refer to documentation in `docs/installation` on how to install them on specific OS. -Note: the packages are not required with the current default settings of Pleroma. +Note: the packages are not required with the current default settings of Akkoma. ## `ImageMagick` `ImageMagick` is a set of tools to create, edit, compose, or convert bitmap images. -It is required for the following Pleroma features: +It is required for the following Akkoma features: * `Pleroma.Upload.Filters.Mogrify`, `Pleroma.Upload.Filters.Mogrifun` upload filters (related config: `Plaroma.Upload/filters` in `config/config.exs`) * Media preview proxy for still images (related config: `media_preview_proxy/enabled` in `config/config.exs`) @@ -21,12 +21,12 @@ It is required for the following Pleroma features: `ffmpeg` is software to record, convert and stream audio and video. -It is required for the following Pleroma features: +It is required for the following Akkoma features: * Media preview proxy for videos (related config: `media_preview_proxy/enabled` in `config/config.exs`) ## `exiftool` `exiftool` is media files metadata reader/writer. -It is required for the following Pleroma features: +It is required for the following Akkoma features: * `Pleroma.Upload.Filters.Exiftool` upload filter (related config: `Plaroma.Upload/filters` in `config/config.exs`) From f0f0c76805555da84994c79593b8c5ead228dfce Mon Sep 17 00:00:00 2001 From: Francis Dinh Date: Fri, 26 May 2023 22:34:23 -0400 Subject: [PATCH 2/7] docs: Update Pleroma-FE references to Akkoma-FE The frontend got renamed a while back, so the docs should be updated to reflect that. --- docs/docs/administration/CLI_tasks/frontend.md | 2 +- docs/docs/administration/updating.md | 2 +- docs/docs/configuration/cheatsheet.md | 4 ++-- docs/docs/index.md | 8 ++++---- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/docs/administration/CLI_tasks/frontend.md b/docs/docs/administration/CLI_tasks/frontend.md index 382ac268e..5d0c7147a 100644 --- a/docs/docs/administration/CLI_tasks/frontend.md +++ b/docs/docs/administration/CLI_tasks/frontend.md @@ -42,7 +42,7 @@ For a frontend configured under the `available` key, it's enough to install it b This will download the latest build for the pre-configured `ref` and install it. It can then be configured as the one of the served frontends in the config file (see `primary` or `admin`). -You can override any of the details. To install a Pleroma-FE build from a different URL, you could do this: +You can override any of the details. To install an Akkoma-FE build from a different URL, you could do this: === "OTP" diff --git a/docs/docs/administration/updating.md b/docs/docs/administration/updating.md index 6cea56e5c..94bddfb6c 100644 --- a/docs/docs/administration/updating.md +++ b/docs/docs/administration/updating.md @@ -62,6 +62,6 @@ mix ecto.migrate # Start akkoma (replace with your system service manager's equivalent if different) sudo systemctl start akkoma -# Update Pleroma-FE frontend to latest stable. For other Frontends see Frontend Configuration doc for more information. +# Update Akkoma-FE frontend to latest stable. For other Frontends see Frontend Configuration doc for more information. mix pleroma.frontend install pleroma-fe --ref stable ``` diff --git a/docs/docs/configuration/cheatsheet.md b/docs/docs/configuration/cheatsheet.md index 1c4d9ec5d..3a8bda006 100644 --- a/docs/docs/configuration/cheatsheet.md +++ b/docs/docs/configuration/cheatsheet.md @@ -246,11 +246,11 @@ Notes: ### :frontend_configurations -This can be used to configure a keyword list that keeps the configuration data for any kind of frontend. By default, settings for `pleroma_fe` and `masto_fe` are configured. You can find the documentation for `pleroma_fe` configuration into [Pleroma-FE configuration and customization for instance administrators](https://docs-fe.akkoma.dev/stable/CONFIGURATION/#options). +This can be used to configure a keyword list that keeps the configuration data for any kind of frontend. By default, settings for `pleroma_fe` and `masto_fe` are configured. You can find the documentation for `pleroma_fe` configuration into [Akkoma-FE configuration and customization for instance administrators](https://docs-fe.akkoma.dev/stable/CONFIGURATION/#options). Frontends can access these settings at `/api/v1/pleroma/frontend_configurations` -To add your own configuration for Pleroma-FE, use it like this: +To add your own configuration for Akkoma-FE, use it like this: ```elixir config :pleroma, :frontend_configurations, diff --git a/docs/docs/index.md b/docs/docs/index.md index 241f790dc..8608f8196 100644 --- a/docs/docs/index.md +++ b/docs/docs/index.md @@ -3,7 +3,7 @@ # Introduction to Akkoma ## What is Akkoma? Akkoma is a federated social networking platform, compatible with Mastodon and other ActivityPub implementations. It is free software licensed under the AGPLv3. -It actually consists of two components: a backend, named simply Akkoma, and a user-facing frontend, named Pleroma-FE. It also includes the Mastodon frontend, if that's your thing. +It actually consists of two components: a backend, named simply Akkoma, and a user-facing frontend, named Akkoma-FE. It also includes the Mastodon frontend, if that's your thing. It's part of what we call the fediverse, a federated network of instances which speak common protocols and can communicate with each other. One account on an instance is enough to talk to the entire fediverse! @@ -31,11 +31,11 @@ Installation instructions can be found in the installation section of these docs ## I got an account, now what? Great! Now you can explore the fediverse! Open the login page for your Akkoma instance (e.g. ) and login with your username and password. (If you don't have an account yet, click on Register) -### Pleroma-FE -The default front-end used by Akkoma is Pleroma-FE. You can find more information on what it is and how to use it in the [Introduction to Pleroma-FE](https://docs-fe.akkoma.dev/stable/). +### Akkoma-FE +The default front-end used by Akkoma is Akkoma-FE. You can find more information on what it is and how to use it in the [Introduction to Akkoma-FE](https://docs-fe.akkoma.dev/stable/). ### Mastodon interface -If the Pleroma-FE interface isn't your thing, or you're just trying something new but you want to keep using the familiar Mastodon interface, we got that too! +If the Akkoma-FE interface isn't your thing, or you're just trying something new but you want to keep using the familiar Mastodon interface, we got that too! Just add a "/web" after your instance url (e.g. ) and you'll end on the Mastodon web interface, but with a Akkoma backend! MAGIC! The Mastodon interface is from the Glitch-soc fork. For more information on the Mastodon interface you can check the [Mastodon](https://docs.joinmastodon.org/) and [Glitch-soc](https://glitch-soc.github.io/docs/) documentation. From 0e5f55deea33348a26c7ca04c3eb2b6257a417ba Mon Sep 17 00:00:00 2001 From: Francis Dinh Date: Fri, 26 May 2023 22:54:12 -0400 Subject: [PATCH 3/7] more references being updated --- docs/docs/configuration/howto_theming_your_instance.md | 4 ++-- docs/theme/partials/source.html | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/docs/configuration/howto_theming_your_instance.md b/docs/docs/configuration/howto_theming_your_instance.md index c226d054b..093c12763 100644 --- a/docs/docs/configuration/howto_theming_your_instance.md +++ b/docs/docs/configuration/howto_theming_your_instance.md @@ -6,7 +6,7 @@ To add a custom theme to your instance, you'll first need to get a custom theme, ### Create your own theme -* You can create your own theme using the Pleroma FE by going to settings (gear on the top right) and choose the Theme tab. Here you have the options to create a personal theme. +* You can create your own theme using the Akkoma FE by going to settings (gear on the top right) and choose the Theme tab. Here you have the options to create a personal theme. * To download your theme, you can do Save preset * If you want to upload a theme to customise it further, you can upload it using Load preset @@ -70,4 +70,4 @@ config :pleroma, :frontend_configurations, } ``` -If you added it in the back-end configuration file, you'll need to restart your instance for the changes to take effect. If you don't see the changes, it's probably because the browser has cached the previous theme. In that case you'll want to clear browser caches. Alternatively you can use a private/incognito window just to see the changes. \ No newline at end of file +If you added it in the back-end configuration file, you'll need to restart your instance for the changes to take effect. If you don't see the changes, it's probably because the browser has cached the previous theme. In that case you'll want to clear browser caches. Alternatively you can use a private/incognito window just to see the changes. diff --git a/docs/theme/partials/source.html b/docs/theme/partials/source.html index 3ed0fff24..3b10223b1 100644 --- a/docs/theme/partials/source.html +++ b/docs/theme/partials/source.html @@ -38,11 +38,11 @@ {% endif %} {% if page and page.url.startswith('backend') %} - {% set repo_url = "https://git.pleroma.social/pleroma/pleroma" %} - {% set repo_name = "pleroma/pleroma" %} + {% set repo_url = "https://akkoma.dev/AkkomaGang/akkoma" %} + {% set repo_name = "AkkomaGang/akkoma" %} {% elif page and page.url.startswith('frontend') %} - {% set repo_url = "https://git.pleroma.social/pleroma/pleroma-fe" %} - {% set repo_name = "pleroma/pleroma-fe" %} + {% set repo_url = "https://akkoma.dev/AkkomaGang/akkoma-fe" %} + {% set repo_name = "AkkomaGang/akkoma-fe" %} {% else %} {% set repo_url = config.repo_url %} {% set repo_name = config.repo_name %} From 40627a94d4ff1f4a35b2edd228ff5de9a6248ff4 Mon Sep 17 00:00:00 2001 From: Francis Dinh Date: Mon, 29 May 2023 11:18:42 -0400 Subject: [PATCH 4/7] Add config for media subdomain for Caddy A recent group of vulnerabilities have been found in Pleroma (and inherited by Akkoma) that involve media files either uploaded by local users or proxied from remote instances (if media proxy is enabled). It is recommended that media files are served on a separate subdomain in order to mitigate this class of vulnerabilities. Based on https://meta.akkoma.dev/t/another-vector-for-the-injection-vulnerability-found/483/2 --- installation/caddy/Caddyfile | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/installation/caddy/Caddyfile b/installation/caddy/Caddyfile index 5cc75a1fc..d50848207 100644 --- a/installation/caddy/Caddyfile +++ b/installation/caddy/Caddyfile @@ -4,6 +4,9 @@ # 1. Replace 'example.tld' with your instance's domain wherever it appears. # 2. Copy this section into your Caddyfile and restart Caddy. +# If you are able to, it's highly recommended to have your media served via a separate subdomain for improved security. +# Uncomment the relevant sectons here and modify the base_url setting for Pleroma.Upload and :media_proxy accordingly. + example.tld { log { output file /var/log/caddy/akkoma.log @@ -14,4 +17,21 @@ example.tld { # this is explicitly IPv4 since Pleroma.Web.Endpoint binds on IPv4 only # and `localhost.` resolves to [::0] on some systems: see issue #930 reverse_proxy 127.0.0.1:4000 + + # Uncomment if using a separate media subdomain + #@mediaproxy path /media/* /proxy/* + #handle @mediaproxy { + # redir https://media.example.tld{uri} permanent + #} } + +# Uncomment if using a separate media subdomain +#media.example.tld { +# @mediaproxy path /media/* /proxy/* +# reverse_proxy @mediaproxy 127.0.0.1:4000 { +# transport http { +# response_header_timeout 10s +# read_timeout 15s +# } +# } +#} From 5fe41df8aaca3eeb90e98a155edf2d1a2a39f7b0 Mon Sep 17 00:00:00 2001 From: Francis Dinh Date: Fri, 26 May 2023 17:06:51 -0400 Subject: [PATCH 5/7] docs: Add Kaiteki to list of clients --- docs/docs/clients.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/docs/clients.md b/docs/docs/clients.md index 139796471..1452b9505 100644 --- a/docs/docs/clients.md +++ b/docs/docs/clients.md @@ -2,6 +2,14 @@ Note: Additional clients may work, but these are known to work with Akkoma. Apps listed here might not support all of Akkoma's features. +## Multiplatform +### Kaiteki +- Homepage: +- Source Code: +- Contact: [@kaiteki@fedi.software](https://fedi.software/@Kaiteki) +- Platforms: Web, Windows, Linux, Android +- Features: MastoAPI, Supports multiple backends + ## Desktop ### Whalebird - Homepage: From 1ae89bddcdd899b6491ba9d491bb350e86021235 Mon Sep 17 00:00:00 2001 From: lain Date: Tue, 2 Jun 2020 14:04:34 +0000 Subject: [PATCH 6/7] Merge branch 'feature/embeddable-posts' into 'develop' Add embeddable posts Closes #1288 See merge request pleroma/pleroma!2319 --- priv/static/embed.css | 115 ++++++++++++++++++++++++++++++++++++++++++ priv/static/embed.js | 43 ++++++++++++++++ 2 files changed, 158 insertions(+) create mode 100644 priv/static/embed.css create mode 100644 priv/static/embed.js diff --git a/priv/static/embed.css b/priv/static/embed.css new file mode 100644 index 000000000..cc79ee7ab --- /dev/null +++ b/priv/static/embed.css @@ -0,0 +1,115 @@ +body { + background-color: #282c37; + font-family: sans-serif; + color: white; + margin: 0; + padding: 1em; + padding-bottom: 0; +} + +.avatar { + cursor: pointer; +} + +.avatar img { + float: left; + border-radius: 4px; + margin-right: 4px; +} + +.activity-content { + padding-top: 1em; +} + +.attachment { + margin-top: 1em; +} + +.attachment img { + max-width: 100%; +} + +.date a { + text-decoration: none; +} + +.date a:hover { + text-decoration: underline; +} + +.date a, +.counts { + color: #666; + font-size: 0.9em; +} + +.counts dt, +.counts dd { + float: left; + margin-left: 1em; +} + +a { + color: white; +} + +.h-card { + min-height: 48px; + margin-bottom: 8px; +} + +.h-card a { + text-decoration: none; +} + +.h-card a:hover { + text-decoration: underline; +} + +.display-name { + padding-top: 4px; + display: block; + text-overflow: ellipsis; + overflow: hidden; + color: white; +} + +/* keep emoji from being hilariously huge */ +.display-name img { + max-height: 1em; +} + +.display-name .nickname { + padding-top: 4px; + display: block; +} + +.nickname:hover { + text-decoration: none; +} + +.pull-right { + float: right; +} + +.collapse { + margin: 0; + width: auto; +} + +a.button { + box-sizing: border-box; + display: inline-block; + color: white; + background-color: #419bdd; + border-radius: 4px; + border: none; + padding: 10px; + font-weight: 500; + font-size: 0.9em; +} + +a.button:hover { + text-decoration: none; + background-color: #61a6d9; +} diff --git a/priv/static/embed.js b/priv/static/embed.js new file mode 100644 index 000000000..f675f6417 --- /dev/null +++ b/priv/static/embed.js @@ -0,0 +1,43 @@ +(function () { + 'use strict' + + var ready = function (loaded) { + if (['interactive', 'complete'].indexOf(document.readyState) !== -1) { + loaded() + } else { + document.addEventListener('DOMContentLoaded', loaded) + } + } + + ready(function () { + var iframes = [] + + window.addEventListener('message', function (e) { + var data = e.data || {} + + if (data.type !== 'setHeightPleromaEmbed' || !iframes[data.id]) { + return + } + + iframes[data.id].height = data.height + }); + + [].forEach.call(document.querySelectorAll('iframe.pleroma-embed'), function (iframe) { + iframe.scrolling = 'no' + iframe.style.overflow = 'hidden' + + iframes.push(iframe) + + var id = iframes.length - 1 + + iframe.onload = function () { + iframe.contentWindow.postMessage({ + type: 'setHeightPleromaEmbed', + id: id + }, '*') + } + + iframe.onload() + }) + }) +})() From 593ddbd796fcecd1244e62188334ff5ecf3ab8ff Mon Sep 17 00:00:00 2001 From: Miki Hau Date: Wed, 31 May 2023 23:42:08 +0000 Subject: [PATCH 7/7] fix the /embed endpoint --- lib/pleroma/constants.ex | 2 +- lib/pleroma/web/templates/layout/embed.html.eex | 4 ++-- priv/static/{ => embed}/embed.css | 0 priv/static/{ => embed}/embed.js | 0 4 files changed, 3 insertions(+), 3 deletions(-) rename priv/static/{ => embed}/embed.css (100%) rename priv/static/{ => embed}/embed.js (100%) diff --git a/lib/pleroma/constants.ex b/lib/pleroma/constants.ex index 234dde1c9..94608a99b 100644 --- a/lib/pleroma/constants.ex +++ b/lib/pleroma/constants.ex @@ -25,7 +25,7 @@ defmodule Pleroma.Constants do const(static_only_files, do: - ~w(index.html robots.txt static static-fe finmoji emoji packs sounds images instance sw.js sw-pleroma.js favicon.png schemas doc embed.js embed.css) + ~w(index.html robots.txt static static-fe finmoji emoji packs sounds images instance embed sw.js sw-pleroma.js favicon.png schemas doc) ) const(status_updatable_fields, diff --git a/lib/pleroma/web/templates/layout/embed.html.eex b/lib/pleroma/web/templates/layout/embed.html.eex index 8b905f070..49f2cdb5b 100644 --- a/lib/pleroma/web/templates/layout/embed.html.eex +++ b/lib/pleroma/web/templates/layout/embed.html.eex @@ -6,10 +6,10 @@ <%= Pleroma.Config.get([:instance, :name]) %> <%= Phoenix.HTML.raw(assigns[:meta] || "") %> - + - <%= render @view_module, @view_template, assigns %> + <%= render view_module(@conn), view_template(@conn), assigns %> diff --git a/priv/static/embed.css b/priv/static/embed/embed.css similarity index 100% rename from priv/static/embed.css rename to priv/static/embed/embed.css diff --git a/priv/static/embed.js b/priv/static/embed/embed.js similarity index 100% rename from priv/static/embed.js rename to priv/static/embed/embed.js