Merge branch 'develop' into 'edits'
# Conflicts: # priv/static/schemas/litepub-0.1.jsonld
|
@ -1 +0,0 @@
|
|||
https://github.com/hashnuke/heroku-buildpack-elixir
|
|
@ -9,3 +9,65 @@ test/
|
|||
|
||||
# Required to get version
|
||||
!.git
|
||||
|
||||
# App artifacts
|
||||
/_build
|
||||
/db
|
||||
/deps
|
||||
/*.ez
|
||||
/test/instance
|
||||
/test/uploads
|
||||
/.elixir_ls
|
||||
/test/fixtures/DSCN0010_tmp.jpg
|
||||
/test/fixtures/test_tmp.txt
|
||||
/test/fixtures/image_tmp.jpg
|
||||
/test/tmp/
|
||||
/test/frontend_static_test/
|
||||
/doc
|
||||
/instance
|
||||
/priv/ssh_keys
|
||||
|
||||
# Prevent committing custom emojis
|
||||
/priv/static/emoji/custom/*
|
||||
|
||||
# Generated on crash by the VM
|
||||
erl_crash.dump
|
||||
|
||||
# Files matching config/*.secret.exs pattern contain sensitive
|
||||
# data and you should not commit them into version control.
|
||||
#
|
||||
# Alternatively, you may comment the line below and commit the
|
||||
# secrets files as long as you replace their contents by environment
|
||||
# variables.
|
||||
/config/*.secret.exs
|
||||
/config/generated_config.exs
|
||||
/config/runtime.exs
|
||||
/config/*.env
|
||||
|
||||
|
||||
# Database setup file, some may forget to delete it
|
||||
/config/setup_db*.psql
|
||||
|
||||
# Whitelist Landing FE
|
||||
!/instance/static/frontends/landing-fe/vendor/**
|
||||
|
||||
.DS_Store
|
||||
.env
|
||||
|
||||
# Editor config
|
||||
/.vscode/
|
||||
|
||||
# Prevent committing docs files
|
||||
/priv/static/doc/*
|
||||
docs/generated_config.md
|
||||
|
||||
# Code test coverage
|
||||
/cover
|
||||
/Elixir.*.coverdata
|
||||
|
||||
.idea
|
||||
pleroma.iml
|
||||
|
||||
# Editor temp files
|
||||
/*~
|
||||
/*#
|
||||
|
|
3
.gitignore
vendored
|
@ -36,9 +36,6 @@ erl_crash.dump
|
|||
# Database setup file, some may forget to delete it
|
||||
/config/setup_db*.psql
|
||||
|
||||
# Whitelist Landing FE
|
||||
!/instance/static/frontends/landing-fe/vendor/**
|
||||
|
||||
.DS_Store
|
||||
.env
|
||||
|
||||
|
|
|
@ -6,6 +6,9 @@ variables: &global_variables
|
|||
POSTGRES_PASSWORD: postgres
|
||||
DB_HOST: postgres
|
||||
MIX_ENV: test
|
||||
# Needed for Dokku deployment.
|
||||
# https://github.com/dokku/dokku/issues/2514#issuecomment-616775470
|
||||
GIT_DEPTH: 0
|
||||
|
||||
cache: &global_cache_policy
|
||||
key:
|
||||
|
@ -88,7 +91,6 @@ unit-testing:
|
|||
|
||||
unit-testing-erratic:
|
||||
stage: test
|
||||
retry: 2
|
||||
allow_failure: true
|
||||
only:
|
||||
changes: *build_changes_policy
|
||||
|
@ -187,34 +189,27 @@ docs-deploy:
|
|||
- apk add curl
|
||||
script:
|
||||
- curl -X POST -F"token=$DOCS_PIPELINE_TRIGGER" -F'ref=master' -F"variables[BRANCH]=$CI_COMMIT_REF_NAME" https://git.pleroma.social/api/v4/projects/673/trigger/pipeline
|
||||
|
||||
# Deploy with Dokku
|
||||
# https://github.com/dokku/gitlab-ci
|
||||
# https://github.com/dokku/ci-docker-image
|
||||
review_app:
|
||||
image: alpine:3.9
|
||||
image: dokku/ci-docker-image
|
||||
stage: deploy
|
||||
before_script:
|
||||
- apk update && apk add openssh-client git
|
||||
when: manual
|
||||
environment:
|
||||
name: review/$CI_COMMIT_REF_NAME
|
||||
url: https://$CI_ENVIRONMENT_SLUG.pleroma.online/
|
||||
on_stop: stop_review_app
|
||||
url: https://$CI_ENVIRONMENT_SLUG.dokku.soapbox.pub
|
||||
# on_stop: stop_review_app
|
||||
only:
|
||||
- branches
|
||||
except:
|
||||
- master
|
||||
- develop
|
||||
script:
|
||||
- echo "$CI_ENVIRONMENT_SLUG"
|
||||
- mkdir -p ~/.ssh
|
||||
- eval $(ssh-agent -s)
|
||||
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
|
||||
- ssh-keyscan -H "pleroma.online" >> ~/.ssh/known_hosts
|
||||
- (ssh -t dokku@pleroma.online -- apps:create "$CI_ENVIRONMENT_SLUG") || true
|
||||
- (ssh -t dokku@pleroma.online -- git:set "$CI_ENVIRONMENT_SLUG" keep-git-dir true) || true
|
||||
- ssh -t dokku@pleroma.online -- config:set "$CI_ENVIRONMENT_SLUG" APP_NAME="$CI_ENVIRONMENT_SLUG" APP_HOST="$CI_ENVIRONMENT_SLUG.pleroma.online" MIX_ENV=dokku
|
||||
- (ssh -t dokku@pleroma.online -- postgres:create $(echo $CI_ENVIRONMENT_SLUG | sed -e 's/-/_/g')_db) || true
|
||||
- (ssh -t dokku@pleroma.online -- postgres:link $(echo $CI_ENVIRONMENT_SLUG | sed -e 's/-/_/g')_db "$CI_ENVIRONMENT_SLUG") || true
|
||||
- (ssh -t dokku@pleroma.online -- certs:add "$CI_ENVIRONMENT_SLUG" /home/dokku/server.crt /home/dokku/server.key) || true
|
||||
- git push -f dokku@pleroma.online:$CI_ENVIRONMENT_SLUG $CI_COMMIT_SHA:refs/heads/master
|
||||
variables:
|
||||
GIT_REMOTE_URL: ssh://dokku@$DOKKU_HOST/$CI_ENVIRONMENT_SLUG
|
||||
script: dokku-deploy
|
||||
after_script: [dokku-unlock]
|
||||
before_script: []
|
||||
allow_failure: true
|
||||
|
||||
spec-deploy:
|
||||
stage: deploy
|
||||
|
|
|
@ -13,6 +13,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|||
### Changed
|
||||
- Allow users to remove their emails if instance does not need email to register
|
||||
- Uploadfilter `Pleroma.Upload.Filter.Exiftool` has been renamed to `Pleroma.Upload.Filter.Exiftool.StripLocation`
|
||||
- Updated the recommended pleroma.vcl configuration for Varnish to target Varnish 7.0+
|
||||
|
||||
### Added
|
||||
- `activeMonth` and `activeHalfyear` fields in NodeInfo usage.users object
|
||||
|
@ -48,6 +49,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|||
- Fixed crash when pinned_objects is nil
|
||||
- Fixed slow timelines when there are a lot of deactivated users
|
||||
- Fixed account deletion API
|
||||
- Fixed lowercase HTTP HEAD method in the Media Proxy Preview code
|
||||
|
||||
### Removed
|
||||
|
||||
|
|
10
Dockerfile
|
@ -1,6 +1,8 @@
|
|||
FROM ubuntu:22.04 as build
|
||||
|
||||
ENV MIX_ENV=prod
|
||||
ARG MIX_ENV=prod \
|
||||
OAUTH_CONSUMER_STRATEGIES="twitter facebook google microsoft slack github keycloak:ueberauth_keycloak_strategy"
|
||||
|
||||
WORKDIR /src
|
||||
|
||||
RUN apt-get update &&\
|
||||
|
@ -24,8 +26,8 @@ ARG DEBIAN_FRONTEND="noninteractive"
|
|||
ENV TZ="Etc/UTC"
|
||||
|
||||
LABEL maintainer="hello@soapbox.pub" \
|
||||
org.opencontainers.image.title="soapbox-be" \
|
||||
org.opencontainers.image.description="Soapbox BE for Docker" \
|
||||
org.opencontainers.image.title="rebased" \
|
||||
org.opencontainers.image.description="Rebased" \
|
||||
org.opencontainers.image.authors="hello@soapbox.pub" \
|
||||
org.opencontainers.image.vendor="soapbox.pub" \
|
||||
org.opencontainers.image.documentation="https://gitlab.com/soapbox-pub/soapbox-be" \
|
||||
|
@ -53,6 +55,4 @@ COPY --from=build --chown=pleroma:0 /src/release ${HOME}
|
|||
COPY ./config/docker.exs /etc/pleroma/config.exs
|
||||
COPY ./docker-entrypoint.sh ${HOME}
|
||||
|
||||
EXPOSE 4000
|
||||
|
||||
ENTRYPOINT ["/opt/pleroma/docker-entrypoint.sh"]
|
||||
|
|
18
README.md
|
@ -1,16 +1,16 @@
|
|||
# Soapbox BE
|
||||
# Rebased
|
||||
|
||||
![Soapbox BE](https://gitlab.com/soapbox-pub/soapbox-be/uploads/288bc05ba65e60970ffddd37d58f7c21/be-1-0-thumb.png)
|
||||
![Rebased](rebased.png)
|
||||
|
||||
**Soapbox BE** is the preferred backend for Soapbox.
|
||||
It is based on [Pleroma](https://pleroma.social/).
|
||||
**Rebased** is a Fediverse backend written in Elixir.
|
||||
It's compatible with the Mastodon API and is the recommended backend for Soapbox.
|
||||
|
||||
## Your social media server
|
||||
|
||||
Soapbox empowers people to take control of their social media experience.
|
||||
Rebased empowers people to take control of their social media experience.
|
||||
Hosting your own server means that *you* get to decide the rules.
|
||||
|
||||
Soapbox connects to over 4,000 other servers on the Fediverse.
|
||||
Rebased connects to over 4,000 other servers on the Fediverse.
|
||||
It is designed to spread your message far and wide, while being resilient to deplatforming.
|
||||
|
||||
## Installation
|
||||
|
@ -19,15 +19,15 @@ See [the installation guide](https://soapbox.pub/install/).
|
|||
|
||||
## License
|
||||
|
||||
Soapbox is free software: you can redistribute it and/or modify
|
||||
Rebased is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Soapbox is distributed in the hope that it will be useful,
|
||||
Rebased is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with Soapbox. If not, see <https://www.gnu.org/licenses/>.
|
||||
along with Rebased. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
|
13
app.json
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"name": "Rebased",
|
||||
"description": "Rebased, the recommended backend for Soapbox written in Elixir.",
|
||||
"keywords": [
|
||||
"fediverse"
|
||||
],
|
||||
"website": "https://soapbox.pub",
|
||||
"dokku": {
|
||||
"plugins": [
|
||||
"postgres"
|
||||
]
|
||||
}
|
||||
}
|
|
@ -189,7 +189,7 @@
|
|||
description: "Pleroma: An efficient and flexible fediverse server",
|
||||
short_description: "",
|
||||
background_image: "/images/city.jpg",
|
||||
instance_thumbnail: "/instance/thumbnail.jpeg",
|
||||
instance_thumbnail: "/instance/thumbnail.png",
|
||||
limit: 5_000,
|
||||
description_limit: 5_000,
|
||||
remote_limit: 100_000,
|
||||
|
@ -629,7 +629,14 @@
|
|||
for strategy <- oauth_consumer_strategies do
|
||||
strategy_module_name = "Elixir.Ueberauth.Strategy.#{String.capitalize(strategy)}"
|
||||
strategy_module = String.to_atom(strategy_module_name)
|
||||
{String.to_atom(strategy), {strategy_module, [callback_params: ["state"]]}}
|
||||
|
||||
params =
|
||||
case strategy do
|
||||
"keycloak" -> [uid_field: :email, default_scope: "openid profile"]
|
||||
_ -> [callback_params: ["state"]]
|
||||
end
|
||||
|
||||
{String.to_atom(strategy), {strategy_module, params}}
|
||||
end
|
||||
|
||||
config :ueberauth,
|
||||
|
@ -752,7 +759,7 @@
|
|||
"name" => "fedi-fe",
|
||||
"git" => "https://git.pleroma.social/pleroma/fedi-fe",
|
||||
"build_url" =>
|
||||
"https://git.pleroma.social/pleroma/fedi-fe/-/jobs/artifacts/${ref}/download?job=build",
|
||||
"https://git.pleroma.social/pleroma/fedi-fe/-/jobs/artifacts/${ref}/download?job=build_release",
|
||||
"ref" => "master",
|
||||
"custom-http-headers" => [
|
||||
{"service-worker-allowed", "/"}
|
||||
|
@ -772,6 +779,14 @@
|
|||
"https://gitlab.com/soapbox-pub/soapbox-fe/-/jobs/artifacts/${ref}/download?job=build-production",
|
||||
"ref" => "develop",
|
||||
"build_dir" => "static"
|
||||
},
|
||||
"glitch-lily" => %{
|
||||
"name" => "glitch-lily",
|
||||
"git" => "https://lily-is.land/infra/glitch-lily",
|
||||
"build_url" =>
|
||||
"https://lily-is.land/infra/glitch-lily/-/jobs/artifacts/${ref}/download?job=build",
|
||||
"ref" => "servant",
|
||||
"build_dir" => "public"
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2,23 +2,28 @@
|
|||
|
||||
config :pleroma, Pleroma.Web.Endpoint,
|
||||
url: [host: System.get_env("DOMAIN", "localhost"), scheme: "https", port: 443],
|
||||
http: [ip: {0, 0, 0, 0}, port: 4000]
|
||||
http: [ip: {0, 0, 0, 0}, port: System.get_env("PORT", "5000")]
|
||||
|
||||
config :pleroma, :instance,
|
||||
name: System.get_env("INSTANCE_NAME", "Pleroma"),
|
||||
name: System.get_env("INSTANCE_NAME", "Soapbox"),
|
||||
email: System.get_env("ADMIN_EMAIL"),
|
||||
notify_email: System.get_env("NOTIFY_EMAIL"),
|
||||
limit: 5000,
|
||||
registrations_open: false,
|
||||
healthcheck: true
|
||||
|
||||
config :pleroma, Pleroma.Repo,
|
||||
adapter: Ecto.Adapters.Postgres,
|
||||
username: System.get_env("DB_USER", "pleroma"),
|
||||
password: System.fetch_env!("DB_PASS"),
|
||||
database: System.get_env("DB_NAME", "pleroma"),
|
||||
hostname: System.get_env("DB_HOST", "db"),
|
||||
pool_size: 10
|
||||
# Prefer `DATABASE_URL` if set, otherwise use granular env.
|
||||
case System.get_env("DATABASE_URL") do
|
||||
database_url when is_binary(database_url) ->
|
||||
config :pleroma, Pleroma.Repo, url: database_url
|
||||
|
||||
_ ->
|
||||
config :pleroma, Pleroma.Repo,
|
||||
username: System.get_env("DB_USER", "postgres"),
|
||||
password: System.get_env("DB_PASS", "postgres"),
|
||||
database: System.get_env("DB_NAME", "postgres"),
|
||||
hostname: System.get_env("DB_HOST", "db")
|
||||
end
|
||||
|
||||
# Configure web push notifications
|
||||
config :web_push_encryption, :vapid_details, subject: "mailto:#{System.get_env("NOTIFY_EMAIL")}"
|
||||
|
|
|
@ -6,9 +6,6 @@
|
|||
# Twitter-like block behavior
|
||||
config :pleroma, :activitypub, blockers_visible: false
|
||||
|
||||
# Set the default frontend to an instructions page
|
||||
config :pleroma, :frontends, primary: %{"name" => "landing-fe", "ref" => "vendor"}
|
||||
|
||||
# Sane default upload filters
|
||||
config :pleroma, Pleroma.Upload,
|
||||
filters: [
|
||||
|
@ -37,6 +34,9 @@
|
|||
# Allow privileged staff
|
||||
config :pleroma, :instance, privileged_staff: true
|
||||
|
||||
# Enable instance favicons
|
||||
config :pleroma, :instances_favicons, enabled: true
|
||||
|
||||
# Hellthread limits
|
||||
config :pleroma, :mrf_hellthread,
|
||||
delist_threshold: 15,
|
||||
|
|
|
@ -122,6 +122,8 @@
|
|||
|
||||
config :pleroma, :mrf, policies: []
|
||||
|
||||
config :pleroma, :instances_favicons, enabled: false
|
||||
|
||||
config :pleroma, :pipeline,
|
||||
object_validator: Pleroma.Web.ActivityPub.ObjectValidatorMock,
|
||||
mrf: Pleroma.Web.ActivityPub.MRFMock,
|
||||
|
|
|
@ -2,8 +2,10 @@
|
|||
|
||||
set -e
|
||||
|
||||
DATABASE_URL=${DATABASE_URL:-"postgres://${DB_USER:-postgres}:${DB_PASS:-postgres}@${DB_HOST:-db}:5432/${DB_NAME:-postgres}"}
|
||||
|
||||
echo "-- Waiting for database..."
|
||||
while ! pg_isready -U ${DB_USER:-pleroma} -d postgres://${DB_HOST:-db}:5432/${DB_NAME:-pleroma} -t 1; do
|
||||
while ! pg_isready -d $DATABASE_URL -t 1; do
|
||||
sleep 1s
|
||||
done
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Recommended varnishncsa logging format: '%h %l %u %t "%m %{X-Forwarded-Proto}i://%{Host}i%U%q %H" %s %b "%{Referer}i" "%{User-agent}i"'
|
||||
# Please use Varnish 7.0+ for proper Range Requests / Chunked encoding support
|
||||
vcl 4.1;
|
||||
import std;
|
||||
|
||||
|
@ -22,11 +23,6 @@ sub vcl_recv {
|
|||
set req.http.X-Forwarded-Proto = "https";
|
||||
}
|
||||
|
||||
# CHUNKED SUPPORT
|
||||
if (req.http.Range ~ "bytes=") {
|
||||
set req.http.x-range = req.http.Range;
|
||||
}
|
||||
|
||||
# Pipe if WebSockets request is coming through
|
||||
if (req.http.upgrade ~ "(?i)websocket") {
|
||||
return (pipe);
|
||||
|
@ -35,9 +31,9 @@ sub vcl_recv {
|
|||
# Allow purging of the cache
|
||||
if (req.method == "PURGE") {
|
||||
if (!client.ip ~ purge) {
|
||||
return(synth(405,"Not allowed."));
|
||||
return (synth(405,"Not allowed."));
|
||||
}
|
||||
return(purge);
|
||||
return (purge);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -53,17 +49,11 @@ sub vcl_backend_response {
|
|||
return (retry);
|
||||
}
|
||||
|
||||
# CHUNKED SUPPORT
|
||||
if (bereq.http.x-range ~ "bytes=" && beresp.status == 206) {
|
||||
set beresp.ttl = 10m;
|
||||
set beresp.http.CR = beresp.http.content-range;
|
||||
}
|
||||
|
||||
# Bypass cache for large files
|
||||
# 50000000 ~ 50MB
|
||||
if (std.integer(beresp.http.content-length, 0) > 50000000) {
|
||||
set beresp.uncacheable = true;
|
||||
return(deliver);
|
||||
return (deliver);
|
||||
}
|
||||
|
||||
# Don't cache objects that require authentication
|
||||
|
@ -94,7 +84,7 @@ sub vcl_synth {
|
|||
if (resp.status == 750) {
|
||||
set resp.status = 301;
|
||||
set resp.http.Location = req.http.x-redir;
|
||||
return(deliver);
|
||||
return (deliver);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -106,25 +96,12 @@ sub vcl_pipe {
|
|||
}
|
||||
}
|
||||
|
||||
sub vcl_hash {
|
||||
# CHUNKED SUPPORT
|
||||
if (req.http.x-range ~ "bytes=") {
|
||||
hash_data(req.http.x-range);
|
||||
unset req.http.Range;
|
||||
}
|
||||
}
|
||||
|
||||
sub vcl_backend_fetch {
|
||||
# Be more lenient for slow servers on the fediverse
|
||||
if (bereq.url ~ "^/proxy/") {
|
||||
set bereq.first_byte_timeout = 300s;
|
||||
}
|
||||
|
||||
# CHUNKED SUPPORT
|
||||
if (bereq.http.x-range) {
|
||||
set bereq.http.Range = bereq.http.x-range;
|
||||
}
|
||||
|
||||
if (bereq.retries == 0) {
|
||||
# Clean up the X-Varnish-Backend-503 flag that is used internally
|
||||
# to mark broken backend responses that should be retried.
|
||||
|
@ -143,14 +120,6 @@ sub vcl_backend_fetch {
|
|||
}
|
||||
}
|
||||
|
||||
sub vcl_deliver {
|
||||
# CHUNKED SUPPORT
|
||||
if (resp.http.CR) {
|
||||
set resp.http.Content-Range = resp.http.CR;
|
||||
unset resp.http.CR;
|
||||
}
|
||||
}
|
||||
|
||||
sub vcl_backend_error {
|
||||
# Retry broken backend responses.
|
||||
set bereq.http.X-Varnish-Backend-503 = "1";
|
||||
|
|
Before Width: | Height: | Size: 8.7 KiB |
Before Width: | Height: | Size: 981 B |
Before Width: | Height: | Size: 4 KiB |
Before Width: | Height: | Size: 81 B |
Before Width: | Height: | Size: 8.6 KiB |
|
@ -1,74 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Welcome to Soapbox</title>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover,user-scalable=no">
|
||||
<link rel="icon" type="image/png" href="/favicon.png">
|
||||
<style type="text/css">
|
||||
:root {
|
||||
--brand-color: #0482d8;
|
||||
--background-color: #f2f2f2;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: var(--background-color);
|
||||
font-family: 'Lato', sans-serif;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
main {
|
||||
max-width: 500px;
|
||||
margin: 0 auto;
|
||||
padding: 30px;
|
||||
}
|
||||
|
||||
.logo {
|
||||
width: 100%;
|
||||
display: block;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.5rem;
|
||||
font-weight: normal;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
p {
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--brand-color);
|
||||
}
|
||||
|
||||
code {
|
||||
display: block;
|
||||
color: white;
|
||||
background-color: black;
|
||||
border-radius: 10px;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
code.inline {
|
||||
display: inline;
|
||||
border-radius: 4px;
|
||||
padding: 4px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<main>
|
||||
<img class="logo" src="/assets/soapbox-logo-wide.svg" alt="Soapbox" />
|
||||
<h2>Almost done...</h2>
|
||||
<p>Congrats! 🎉 You've installed Soapbox BE. Now you just need to install a frontend.</p>
|
||||
<h2>Installing Soapbox FE</h2>
|
||||
<p>To install <a href="https://gitlab.com/soapbox-pub/soapbox-fe" target="_blank">Soapbox FE</a>, SSH into the server and download a .zip of the latest build:</p>
|
||||
<code>curl -L https://gitlab.com/soapbox-pub/soapbox-fe/-/jobs/artifacts/develop/download?job=build-production -o soapbox-fe.zip</code>
|
||||
<p>Then unpack it into the <code class="inline">instance</code> directory:</p>
|
||||
<code>busybox unzip soapbox-fe.zip -o -d /opt/pleroma/instance</code>
|
||||
<p><strong>That's it!</strong> Just refresh this page.</p>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
|
@ -421,6 +421,38 @@ def run(["list"]) do
|
|||
|> Stream.run()
|
||||
end
|
||||
|
||||
def run(["fix_follow_state", local_user, remote_user]) do
|
||||
start_pleroma()
|
||||
|
||||
with {:local, %User{} = local} <- {:local, User.get_by_nickname(local_user)},
|
||||
{:remote, %User{} = remote} <- {:remote, User.get_by_nickname(remote_user)},
|
||||
{:follow_data, %{data: %{"state" => request_state}}} <-
|
||||
{:follow_data, Pleroma.Web.ActivityPub.Utils.fetch_latest_follow(local, remote)} do
|
||||
calculated_state = User.following?(local, remote)
|
||||
|
||||
shell_info(
|
||||
"Request state is #{request_state}, vs calculated state of following=#{calculated_state}"
|
||||
)
|
||||
|
||||
if calculated_state == false && request_state == "accept" do
|
||||
shell_info("Discrepancy found, fixing")
|
||||
Pleroma.Web.CommonAPI.reject_follow_request(local, remote)
|
||||
shell_info("Relationship fixed")
|
||||
else
|
||||
shell_info("No discrepancy found")
|
||||
end
|
||||
else
|
||||
{:local, _} ->
|
||||
shell_error("No local user #{local_user}")
|
||||
|
||||
{:remote, _} ->
|
||||
shell_error("No remote user #{remote_user}")
|
||||
|
||||
{:follow_data, _} ->
|
||||
shell_error("No follow data for #{local_user} and #{remote_user}")
|
||||
end
|
||||
end
|
||||
|
||||
defp set_moderator(user, value) do
|
||||
{:ok, user} =
|
||||
user
|
||||
|
|
|
@ -12,13 +12,16 @@ defmodule Pleroma.Application do
|
|||
require Logger
|
||||
|
||||
@name Mix.Project.config()[:name]
|
||||
@compat_name Mix.Project.config()[:compat_name]
|
||||
@version Mix.Project.config()[:version]
|
||||
@repository Mix.Project.config()[:source_url]
|
||||
@mix_env Mix.env()
|
||||
|
||||
def name, do: @name
|
||||
def compat_name, do: @compat_name
|
||||
def version, do: @version
|
||||
def named_version, do: @name <> " " <> @version
|
||||
def compat_version, do: @compat_name <> " " <> @version
|
||||
def repository, do: @repository
|
||||
|
||||
def user_agent do
|
||||
|
@ -26,7 +29,7 @@ def user_agent do
|
|||
case Config.get([:http, :user_agent], :default) do
|
||||
:default ->
|
||||
info = "#{Pleroma.Web.Endpoint.url()} <#{Config.get([:instance, :email], "")}>"
|
||||
named_version() <> "; " <> info
|
||||
compat_version() <> "; " <> info
|
||||
|
||||
custom ->
|
||||
custom
|
||||
|
@ -112,7 +115,17 @@ def start(_type, _args) do
|
|||
|
||||
# See http://elixir-lang.org/docs/stable/elixir/Supervisor.html
|
||||
# for other strategies and supported options
|
||||
opts = [strategy: :one_for_one, name: Pleroma.Supervisor]
|
||||
# If we have a lot of caches, default max_restarts can cause test
|
||||
# resets to fail.
|
||||
# Go for the default 3 unless we're in test
|
||||
max_restarts =
|
||||
if @mix_env == :test do
|
||||
100
|
||||
else
|
||||
3
|
||||
end
|
||||
|
||||
opts = [strategy: :one_for_one, name: Pleroma.Supervisor, max_restarts: max_restarts]
|
||||
result = Supervisor.start_link(children, opts)
|
||||
|
||||
set_postgres_server_version()
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
# emoji-test.txt
|
||||
# Date: 2021-08-26, 17:22:23 GMT
|
||||
# © 2021 Unicode®, Inc.
|
||||
# Date: 2022-08-12, 20:24:39 GMT
|
||||
# © 2022 Unicode®, Inc.
|
||||
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
|
||||
# For terms of use, see http://www.unicode.org/terms_of_use.html
|
||||
# For terms of use, see https://www.unicode.org/terms_of_use.html
|
||||
#
|
||||
# Emoji Keyboard/Display Test Data for UTS #51
|
||||
# Version: 14.0
|
||||
# Version: 15.0
|
||||
#
|
||||
# For documentation and usage, see http://www.unicode.org/reports/tr51
|
||||
# For documentation and usage, see https://www.unicode.org/reports/tr51
|
||||
#
|
||||
# This file provides data for testing which emoji forms should be in keyboards and which should also be displayed/processed.
|
||||
# Format: code points; status # emoji name
|
||||
|
@ -92,6 +92,7 @@
|
|||
1F62C ; fully-qualified # 😬 E1.0 grimacing face
|
||||
1F62E 200D 1F4A8 ; fully-qualified # 😮💨 E13.1 face exhaling
|
||||
1F925 ; fully-qualified # 🤥 E3.0 lying face
|
||||
1FAE8 ; fully-qualified # 🫨 E15.0 shaking face
|
||||
|
||||
# subgroup: face-sleepy
|
||||
1F60C ; fully-qualified # 😌 E0.6 relieved face
|
||||
|
@ -155,7 +156,7 @@
|
|||
|
||||
# subgroup: face-negative
|
||||
1F624 ; fully-qualified # 😤 E0.6 face with steam from nose
|
||||
1F621 ; fully-qualified # 😡 E0.6 pouting face
|
||||
1F621 ; fully-qualified # 😡 E0.6 enraged face
|
||||
1F620 ; fully-qualified # 😠 E0.6 angry face
|
||||
1F92C ; fully-qualified # 🤬 E5.0 face with symbols on mouth
|
||||
1F608 ; fully-qualified # 😈 E1.0 smiling face with horns
|
||||
|
@ -190,8 +191,7 @@
|
|||
1F649 ; fully-qualified # 🙉 E0.6 hear-no-evil monkey
|
||||
1F64A ; fully-qualified # 🙊 E0.6 speak-no-evil monkey
|
||||
|
||||
# subgroup: emotion
|
||||
1F48B ; fully-qualified # 💋 E0.6 kiss mark
|
||||
# subgroup: heart
|
||||
1F48C ; fully-qualified # 💌 E0.6 love letter
|
||||
1F498 ; fully-qualified # 💘 E0.6 heart with arrow
|
||||
1F49D ; fully-qualified # 💝 E0.6 heart with ribbon
|
||||
|
@ -210,14 +210,20 @@
|
|||
2764 200D 1FA79 ; unqualified # ❤🩹 E13.1 mending heart
|
||||
2764 FE0F ; fully-qualified # ❤️ E0.6 red heart
|
||||
2764 ; unqualified # ❤ E0.6 red heart
|
||||
1FA77 ; fully-qualified # 🩷 E15.0 pink heart
|
||||
1F9E1 ; fully-qualified # 🧡 E5.0 orange heart
|
||||
1F49B ; fully-qualified # 💛 E0.6 yellow heart
|
||||
1F49A ; fully-qualified # 💚 E0.6 green heart
|
||||
1F499 ; fully-qualified # 💙 E0.6 blue heart
|
||||
1FA75 ; fully-qualified # 🩵 E15.0 light blue heart
|
||||
1F49C ; fully-qualified # 💜 E0.6 purple heart
|
||||
1F90E ; fully-qualified # 🤎 E12.0 brown heart
|
||||
1F5A4 ; fully-qualified # 🖤 E3.0 black heart
|
||||
1FA76 ; fully-qualified # 🩶 E15.0 grey heart
|
||||
1F90D ; fully-qualified # 🤍 E12.0 white heart
|
||||
|
||||
# subgroup: emotion
|
||||
1F48B ; fully-qualified # 💋 E0.6 kiss mark
|
||||
1F4AF ; fully-qualified # 💯 E0.6 hundred points
|
||||
1F4A2 ; fully-qualified # 💢 E0.6 anger symbol
|
||||
1F4A5 ; fully-qualified # 💥 E0.6 collision
|
||||
|
@ -226,21 +232,20 @@
|
|||
1F4A8 ; fully-qualified # 💨 E0.6 dashing away
|
||||
1F573 FE0F ; fully-qualified # 🕳️ E0.7 hole
|
||||
1F573 ; unqualified # 🕳 E0.7 hole
|
||||
1F4A3 ; fully-qualified # 💣 E0.6 bomb
|
||||
1F4AC ; fully-qualified # 💬 E0.6 speech balloon
|
||||
1F441 FE0F 200D 1F5E8 FE0F ; fully-qualified # 👁️🗨️ E2.0 eye in speech bubble
|
||||
1F441 200D 1F5E8 FE0F ; unqualified # 👁🗨️ E2.0 eye in speech bubble
|
||||
1F441 FE0F 200D 1F5E8 ; unqualified # 👁️🗨 E2.0 eye in speech bubble
|
||||
1F441 FE0F 200D 1F5E8 ; minimally-qualified # 👁️🗨 E2.0 eye in speech bubble
|
||||
1F441 200D 1F5E8 ; unqualified # 👁🗨 E2.0 eye in speech bubble
|
||||
1F5E8 FE0F ; fully-qualified # 🗨️ E2.0 left speech bubble
|
||||
1F5E8 ; unqualified # 🗨 E2.0 left speech bubble
|
||||
1F5EF FE0F ; fully-qualified # 🗯️ E0.7 right anger bubble
|
||||
1F5EF ; unqualified # 🗯 E0.7 right anger bubble
|
||||
1F4AD ; fully-qualified # 💭 E1.0 thought balloon
|
||||
1F4A4 ; fully-qualified # 💤 E0.6 zzz
|
||||
1F4A4 ; fully-qualified # 💤 E0.6 ZZZ
|
||||
|
||||
# Smileys & Emotion subtotal: 177
|
||||
# Smileys & Emotion subtotal: 177 w/o modifiers
|
||||
# Smileys & Emotion subtotal: 180
|
||||
# Smileys & Emotion subtotal: 180 w/o modifiers
|
||||
|
||||
# group: People & Body
|
||||
|
||||
|
@ -300,6 +305,18 @@
|
|||
1FAF4 1F3FD ; fully-qualified # 🫴🏽 E14.0 palm up hand: medium skin tone
|
||||
1FAF4 1F3FE ; fully-qualified # 🫴🏾 E14.0 palm up hand: medium-dark skin tone
|
||||
1FAF4 1F3FF ; fully-qualified # 🫴🏿 E14.0 palm up hand: dark skin tone
|
||||
1FAF7 ; fully-qualified # 🫷 E15.0 leftwards pushing hand
|
||||
1FAF7 1F3FB ; fully-qualified # 🫷🏻 E15.0 leftwards pushing hand: light skin tone
|
||||
1FAF7 1F3FC ; fully-qualified # 🫷🏼 E15.0 leftwards pushing hand: medium-light skin tone
|
||||
1FAF7 1F3FD ; fully-qualified # 🫷🏽 E15.0 leftwards pushing hand: medium skin tone
|
||||
1FAF7 1F3FE ; fully-qualified # 🫷🏾 E15.0 leftwards pushing hand: medium-dark skin tone
|
||||
1FAF7 1F3FF ; fully-qualified # 🫷🏿 E15.0 leftwards pushing hand: dark skin tone
|
||||
1FAF8 ; fully-qualified # 🫸 E15.0 rightwards pushing hand
|
||||
1FAF8 1F3FB ; fully-qualified # 🫸🏻 E15.0 rightwards pushing hand: light skin tone
|
||||
1FAF8 1F3FC ; fully-qualified # 🫸🏼 E15.0 rightwards pushing hand: medium-light skin tone
|
||||
1FAF8 1F3FD ; fully-qualified # 🫸🏽 E15.0 rightwards pushing hand: medium skin tone
|
||||
1FAF8 1F3FE ; fully-qualified # 🫸🏾 E15.0 rightwards pushing hand: medium-dark skin tone
|
||||
1FAF8 1F3FF ; fully-qualified # 🫸🏿 E15.0 rightwards pushing hand: dark skin tone
|
||||
|
||||
# subgroup: hand-fingers-partial
|
||||
1F44C ; fully-qualified # 👌 E0.6 OK hand
|
||||
|
@ -473,11 +490,11 @@
|
|||
1F932 1F3FE ; fully-qualified # 🤲🏾 E5.0 palms up together: medium-dark skin tone
|
||||
1F932 1F3FF ; fully-qualified # 🤲🏿 E5.0 palms up together: dark skin tone
|
||||
1F91D ; fully-qualified # 🤝 E3.0 handshake
|
||||
1F91D 1F3FB ; fully-qualified # 🤝🏻 E3.0 handshake: light skin tone
|
||||
1F91D 1F3FC ; fully-qualified # 🤝🏼 E3.0 handshake: medium-light skin tone
|
||||
1F91D 1F3FD ; fully-qualified # 🤝🏽 E3.0 handshake: medium skin tone
|
||||
1F91D 1F3FE ; fully-qualified # 🤝🏾 E3.0 handshake: medium-dark skin tone
|
||||
1F91D 1F3FF ; fully-qualified # 🤝🏿 E3.0 handshake: dark skin tone
|
||||
1F91D 1F3FB ; fully-qualified # 🤝🏻 E14.0 handshake: light skin tone
|
||||
1F91D 1F3FC ; fully-qualified # 🤝🏼 E14.0 handshake: medium-light skin tone
|
||||
1F91D 1F3FD ; fully-qualified # 🤝🏽 E14.0 handshake: medium skin tone
|
||||
1F91D 1F3FE ; fully-qualified # 🤝🏾 E14.0 handshake: medium-dark skin tone
|
||||
1F91D 1F3FF ; fully-qualified # 🤝🏿 E14.0 handshake: dark skin tone
|
||||
1FAF1 1F3FB 200D 1FAF2 1F3FC ; fully-qualified # 🫱🏻🫲🏼 E14.0 handshake: light skin tone, medium-light skin tone
|
||||
1FAF1 1F3FB 200D 1FAF2 1F3FD ; fully-qualified # 🫱🏻🫲🏽 E14.0 handshake: light skin tone, medium skin tone
|
||||
1FAF1 1F3FB 200D 1FAF2 1F3FE ; fully-qualified # 🫱🏻🫲🏾 E14.0 handshake: light skin tone, medium-dark skin tone
|
||||
|
@ -1455,7 +1472,7 @@
|
|||
1F575 1F3FF ; fully-qualified # 🕵🏿 E2.0 detective: dark skin tone
|
||||
1F575 FE0F 200D 2642 FE0F ; fully-qualified # 🕵️♂️ E4.0 man detective
|
||||
1F575 200D 2642 FE0F ; unqualified # 🕵♂️ E4.0 man detective
|
||||
1F575 FE0F 200D 2642 ; unqualified # 🕵️♂ E4.0 man detective
|
||||
1F575 FE0F 200D 2642 ; minimally-qualified # 🕵️♂ E4.0 man detective
|
||||
1F575 200D 2642 ; unqualified # 🕵♂ E4.0 man detective
|
||||
1F575 1F3FB 200D 2642 FE0F ; fully-qualified # 🕵🏻♂️ E4.0 man detective: light skin tone
|
||||
1F575 1F3FB 200D 2642 ; minimally-qualified # 🕵🏻♂ E4.0 man detective: light skin tone
|
||||
|
@ -1469,7 +1486,7 @@
|
|||
1F575 1F3FF 200D 2642 ; minimally-qualified # 🕵🏿♂ E4.0 man detective: dark skin tone
|
||||
1F575 FE0F 200D 2640 FE0F ; fully-qualified # 🕵️♀️ E4.0 woman detective
|
||||
1F575 200D 2640 FE0F ; unqualified # 🕵♀️ E4.0 woman detective
|
||||
1F575 FE0F 200D 2640 ; unqualified # 🕵️♀ E4.0 woman detective
|
||||
1F575 FE0F 200D 2640 ; minimally-qualified # 🕵️♀ E4.0 woman detective
|
||||
1F575 200D 2640 ; unqualified # 🕵♀ E4.0 woman detective
|
||||
1F575 1F3FB 200D 2640 FE0F ; fully-qualified # 🕵🏻♀️ E4.0 woman detective: light skin tone
|
||||
1F575 1F3FB 200D 2640 ; minimally-qualified # 🕵🏻♀ E4.0 woman detective: light skin tone
|
||||
|
@ -2302,7 +2319,7 @@
|
|||
1F3CC 1F3FF ; fully-qualified # 🏌🏿 E4.0 person golfing: dark skin tone
|
||||
1F3CC FE0F 200D 2642 FE0F ; fully-qualified # 🏌️♂️ E4.0 man golfing
|
||||
1F3CC 200D 2642 FE0F ; unqualified # 🏌♂️ E4.0 man golfing
|
||||
1F3CC FE0F 200D 2642 ; unqualified # 🏌️♂ E4.0 man golfing
|
||||
1F3CC FE0F 200D 2642 ; minimally-qualified # 🏌️♂ E4.0 man golfing
|
||||
1F3CC 200D 2642 ; unqualified # 🏌♂ E4.0 man golfing
|
||||
1F3CC 1F3FB 200D 2642 FE0F ; fully-qualified # 🏌🏻♂️ E4.0 man golfing: light skin tone
|
||||
1F3CC 1F3FB 200D 2642 ; minimally-qualified # 🏌🏻♂ E4.0 man golfing: light skin tone
|
||||
|
@ -2316,7 +2333,7 @@
|
|||
1F3CC 1F3FF 200D 2642 ; minimally-qualified # 🏌🏿♂ E4.0 man golfing: dark skin tone
|
||||
1F3CC FE0F 200D 2640 FE0F ; fully-qualified # 🏌️♀️ E4.0 woman golfing
|
||||
1F3CC 200D 2640 FE0F ; unqualified # 🏌♀️ E4.0 woman golfing
|
||||
1F3CC FE0F 200D 2640 ; unqualified # 🏌️♀ E4.0 woman golfing
|
||||
1F3CC FE0F 200D 2640 ; minimally-qualified # 🏌️♀ E4.0 woman golfing
|
||||
1F3CC 200D 2640 ; unqualified # 🏌♀ E4.0 woman golfing
|
||||
1F3CC 1F3FB 200D 2640 FE0F ; fully-qualified # 🏌🏻♀️ E4.0 woman golfing: light skin tone
|
||||
1F3CC 1F3FB 200D 2640 ; minimally-qualified # 🏌🏻♀ E4.0 woman golfing: light skin tone
|
||||
|
@ -2427,7 +2444,7 @@
|
|||
26F9 1F3FF ; fully-qualified # ⛹🏿 E2.0 person bouncing ball: dark skin tone
|
||||
26F9 FE0F 200D 2642 FE0F ; fully-qualified # ⛹️♂️ E4.0 man bouncing ball
|
||||
26F9 200D 2642 FE0F ; unqualified # ⛹♂️ E4.0 man bouncing ball
|
||||
26F9 FE0F 200D 2642 ; unqualified # ⛹️♂ E4.0 man bouncing ball
|
||||
26F9 FE0F 200D 2642 ; minimally-qualified # ⛹️♂ E4.0 man bouncing ball
|
||||
26F9 200D 2642 ; unqualified # ⛹♂ E4.0 man bouncing ball
|
||||
26F9 1F3FB 200D 2642 FE0F ; fully-qualified # ⛹🏻♂️ E4.0 man bouncing ball: light skin tone
|
||||
26F9 1F3FB 200D 2642 ; minimally-qualified # ⛹🏻♂ E4.0 man bouncing ball: light skin tone
|
||||
|
@ -2441,7 +2458,7 @@
|
|||
26F9 1F3FF 200D 2642 ; minimally-qualified # ⛹🏿♂ E4.0 man bouncing ball: dark skin tone
|
||||
26F9 FE0F 200D 2640 FE0F ; fully-qualified # ⛹️♀️ E4.0 woman bouncing ball
|
||||
26F9 200D 2640 FE0F ; unqualified # ⛹♀️ E4.0 woman bouncing ball
|
||||
26F9 FE0F 200D 2640 ; unqualified # ⛹️♀ E4.0 woman bouncing ball
|
||||
26F9 FE0F 200D 2640 ; minimally-qualified # ⛹️♀ E4.0 woman bouncing ball
|
||||
26F9 200D 2640 ; unqualified # ⛹♀ E4.0 woman bouncing ball
|
||||
26F9 1F3FB 200D 2640 FE0F ; fully-qualified # ⛹🏻♀️ E4.0 woman bouncing ball: light skin tone
|
||||
26F9 1F3FB 200D 2640 ; minimally-qualified # ⛹🏻♀ E4.0 woman bouncing ball: light skin tone
|
||||
|
@ -2462,7 +2479,7 @@
|
|||
1F3CB 1F3FF ; fully-qualified # 🏋🏿 E2.0 person lifting weights: dark skin tone
|
||||
1F3CB FE0F 200D 2642 FE0F ; fully-qualified # 🏋️♂️ E4.0 man lifting weights
|
||||
1F3CB 200D 2642 FE0F ; unqualified # 🏋♂️ E4.0 man lifting weights
|
||||
1F3CB FE0F 200D 2642 ; unqualified # 🏋️♂ E4.0 man lifting weights
|
||||
1F3CB FE0F 200D 2642 ; minimally-qualified # 🏋️♂ E4.0 man lifting weights
|
||||
1F3CB 200D 2642 ; unqualified # 🏋♂ E4.0 man lifting weights
|
||||
1F3CB 1F3FB 200D 2642 FE0F ; fully-qualified # 🏋🏻♂️ E4.0 man lifting weights: light skin tone
|
||||
1F3CB 1F3FB 200D 2642 ; minimally-qualified # 🏋🏻♂ E4.0 man lifting weights: light skin tone
|
||||
|
@ -2476,7 +2493,7 @@
|
|||
1F3CB 1F3FF 200D 2642 ; minimally-qualified # 🏋🏿♂ E4.0 man lifting weights: dark skin tone
|
||||
1F3CB FE0F 200D 2640 FE0F ; fully-qualified # 🏋️♀️ E4.0 woman lifting weights
|
||||
1F3CB 200D 2640 FE0F ; unqualified # 🏋♀️ E4.0 woman lifting weights
|
||||
1F3CB FE0F 200D 2640 ; unqualified # 🏋️♀ E4.0 woman lifting weights
|
||||
1F3CB FE0F 200D 2640 ; minimally-qualified # 🏋️♀ E4.0 woman lifting weights
|
||||
1F3CB 200D 2640 ; unqualified # 🏋♀ E4.0 woman lifting weights
|
||||
1F3CB 1F3FB 200D 2640 FE0F ; fully-qualified # 🏋🏻♀️ E4.0 woman lifting weights: light skin tone
|
||||
1F3CB 1F3FB 200D 2640 ; minimally-qualified # 🏋🏻♀ E4.0 woman lifting weights: light skin tone
|
||||
|
@ -3262,8 +3279,8 @@
|
|||
1FAC2 ; fully-qualified # 🫂 E13.0 people hugging
|
||||
1F463 ; fully-qualified # 👣 E0.6 footprints
|
||||
|
||||
# People & Body subtotal: 2986
|
||||
# People & Body subtotal: 506 w/o modifiers
|
||||
# People & Body subtotal: 2998
|
||||
# People & Body subtotal: 508 w/o modifiers
|
||||
|
||||
# group: Component
|
||||
|
||||
|
@ -3306,6 +3323,8 @@
|
|||
1F405 ; fully-qualified # 🐅 E1.0 tiger
|
||||
1F406 ; fully-qualified # 🐆 E1.0 leopard
|
||||
1F434 ; fully-qualified # 🐴 E0.6 horse face
|
||||
1FACE ; fully-qualified # 🫎 E15.0 moose
|
||||
1FACF ; fully-qualified # 🫏 E15.0 donkey
|
||||
1F40E ; fully-qualified # 🐎 E0.6 horse
|
||||
1F984 ; fully-qualified # 🦄 E1.0 unicorn
|
||||
1F993 ; fully-qualified # 🦓 E5.0 zebra
|
||||
|
@ -3373,6 +3392,9 @@
|
|||
1F9A9 ; fully-qualified # 🦩 E12.0 flamingo
|
||||
1F99A ; fully-qualified # 🦚 E11.0 peacock
|
||||
1F99C ; fully-qualified # 🦜 E11.0 parrot
|
||||
1FABD ; fully-qualified # 🪽 E15.0 wing
|
||||
1F426 200D 2B1B ; fully-qualified # 🐦⬛ E15.0 black bird
|
||||
1FABF ; fully-qualified # 🪿 E15.0 goose
|
||||
|
||||
# subgroup: animal-amphibian
|
||||
1F438 ; fully-qualified # 🐸 E0.6 frog
|
||||
|
@ -3399,6 +3421,7 @@
|
|||
1F419 ; fully-qualified # 🐙 E0.6 octopus
|
||||
1F41A ; fully-qualified # 🐚 E0.6 spiral shell
|
||||
1FAB8 ; fully-qualified # 🪸 E14.0 coral
|
||||
1FABC ; fully-qualified # 🪼 E15.0 jellyfish
|
||||
|
||||
# subgroup: animal-bug
|
||||
1F40C ; fully-qualified # 🐌 E0.6 snail
|
||||
|
@ -3433,6 +3456,7 @@
|
|||
1F33B ; fully-qualified # 🌻 E0.6 sunflower
|
||||
1F33C ; fully-qualified # 🌼 E0.6 blossom
|
||||
1F337 ; fully-qualified # 🌷 E0.6 tulip
|
||||
1FABB ; fully-qualified # 🪻 E15.0 hyacinth
|
||||
|
||||
# subgroup: plant-other
|
||||
1F331 ; fully-qualified # 🌱 E0.6 seedling
|
||||
|
@ -3451,9 +3475,10 @@
|
|||
1F343 ; fully-qualified # 🍃 E0.6 leaf fluttering in wind
|
||||
1FAB9 ; fully-qualified # 🪹 E14.0 empty nest
|
||||
1FABA ; fully-qualified # 🪺 E14.0 nest with eggs
|
||||
1F344 ; fully-qualified # 🍄 E0.6 mushroom
|
||||
|
||||
# Animals & Nature subtotal: 151
|
||||
# Animals & Nature subtotal: 151 w/o modifiers
|
||||
# Animals & Nature subtotal: 159
|
||||
# Animals & Nature subtotal: 159 w/o modifiers
|
||||
|
||||
# group: Food & Drink
|
||||
|
||||
|
@ -3492,10 +3517,11 @@
|
|||
1F966 ; fully-qualified # 🥦 E5.0 broccoli
|
||||
1F9C4 ; fully-qualified # 🧄 E12.0 garlic
|
||||
1F9C5 ; fully-qualified # 🧅 E12.0 onion
|
||||
1F344 ; fully-qualified # 🍄 E0.6 mushroom
|
||||
1F95C ; fully-qualified # 🥜 E3.0 peanuts
|
||||
1FAD8 ; fully-qualified # 🫘 E14.0 beans
|
||||
1F330 ; fully-qualified # 🌰 E0.6 chestnut
|
||||
1FADA ; fully-qualified # 🫚 E15.0 ginger root
|
||||
1FADB ; fully-qualified # 🫛 E15.0 pea pod
|
||||
|
||||
# subgroup: food-prepared
|
||||
1F35E ; fully-qualified # 🍞 E0.6 bread
|
||||
|
@ -3607,8 +3633,8 @@
|
|||
1FAD9 ; fully-qualified # 🫙 E14.0 jar
|
||||
1F3FA ; fully-qualified # 🏺 E1.0 amphora
|
||||
|
||||
# Food & Drink subtotal: 134
|
||||
# Food & Drink subtotal: 134 w/o modifiers
|
||||
# Food & Drink subtotal: 135
|
||||
# Food & Drink subtotal: 135 w/o modifiers
|
||||
|
||||
# group: Travel & Places
|
||||
|
||||
|
@ -3974,11 +4000,10 @@
|
|||
1F3AF ; fully-qualified # 🎯 E0.6 bullseye
|
||||
1FA80 ; fully-qualified # 🪀 E12.0 yo-yo
|
||||
1FA81 ; fully-qualified # 🪁 E12.0 kite
|
||||
1F52B ; fully-qualified # 🔫 E0.6 water pistol
|
||||
1F3B1 ; fully-qualified # 🎱 E0.6 pool 8 ball
|
||||
1F52E ; fully-qualified # 🔮 E0.6 crystal ball
|
||||
1FA84 ; fully-qualified # 🪄 E13.0 magic wand
|
||||
1F9FF ; fully-qualified # 🧿 E11.0 nazar amulet
|
||||
1FAAC ; fully-qualified # 🪬 E14.0 hamsa
|
||||
1F3AE ; fully-qualified # 🎮 E0.6 video game
|
||||
1F579 FE0F ; fully-qualified # 🕹️ E0.7 joystick
|
||||
1F579 ; unqualified # 🕹 E0.7 joystick
|
||||
|
@ -4013,8 +4038,8 @@
|
|||
1F9F6 ; fully-qualified # 🧶 E11.0 yarn
|
||||
1FAA2 ; fully-qualified # 🪢 E13.0 knot
|
||||
|
||||
# Activities subtotal: 97
|
||||
# Activities subtotal: 97 w/o modifiers
|
||||
# Activities subtotal: 96
|
||||
# Activities subtotal: 96 w/o modifiers
|
||||
|
||||
# group: Objects
|
||||
|
||||
|
@ -4040,6 +4065,7 @@
|
|||
1FA73 ; fully-qualified # 🩳 E12.0 shorts
|
||||
1F459 ; fully-qualified # 👙 E0.6 bikini
|
||||
1F45A ; fully-qualified # 👚 E0.6 woman’s clothes
|
||||
1FAAD ; fully-qualified # 🪭 E15.0 folding hand fan
|
||||
1F45B ; fully-qualified # 👛 E0.6 purse
|
||||
1F45C ; fully-qualified # 👜 E0.6 handbag
|
||||
1F45D ; fully-qualified # 👝 E0.6 clutch bag
|
||||
|
@ -4055,6 +4081,7 @@
|
|||
1F461 ; fully-qualified # 👡 E0.6 woman’s sandal
|
||||
1FA70 ; fully-qualified # 🩰 E12.0 ballet shoes
|
||||
1F462 ; fully-qualified # 👢 E0.6 woman’s boot
|
||||
1FAAE ; fully-qualified # 🪮 E15.0 hair pick
|
||||
1F451 ; fully-qualified # 👑 E0.6 crown
|
||||
1F452 ; fully-qualified # 👒 E0.6 woman’s hat
|
||||
1F3A9 ; fully-qualified # 🎩 E0.6 top hat
|
||||
|
@ -4103,6 +4130,8 @@
|
|||
1FA95 ; fully-qualified # 🪕 E12.0 banjo
|
||||
1F941 ; fully-qualified # 🥁 E3.0 drum
|
||||
1FA98 ; fully-qualified # 🪘 E13.0 long drum
|
||||
1FA87 ; fully-qualified # 🪇 E15.0 maracas
|
||||
1FA88 ; fully-qualified # 🪈 E15.0 flute
|
||||
|
||||
# subgroup: phone
|
||||
1F4F1 ; fully-qualified # 📱 E0.6 mobile phone
|
||||
|
@ -4275,7 +4304,7 @@
|
|||
1F5E1 ; unqualified # 🗡 E0.7 dagger
|
||||
2694 FE0F ; fully-qualified # ⚔️ E1.0 crossed swords
|
||||
2694 ; unqualified # ⚔ E1.0 crossed swords
|
||||
1F52B ; fully-qualified # 🔫 E0.6 water pistol
|
||||
1F4A3 ; fully-qualified # 💣 E0.6 bomb
|
||||
1FA83 ; fully-qualified # 🪃 E13.0 boomerang
|
||||
1F3F9 ; fully-qualified # 🏹 E1.0 bow and arrow
|
||||
1F6E1 FE0F ; fully-qualified # 🛡️ E0.7 shield
|
||||
|
@ -4354,12 +4383,14 @@
|
|||
1FAA6 ; fully-qualified # 🪦 E13.0 headstone
|
||||
26B1 FE0F ; fully-qualified # ⚱️ E1.0 funeral urn
|
||||
26B1 ; unqualified # ⚱ E1.0 funeral urn
|
||||
1F9FF ; fully-qualified # 🧿 E11.0 nazar amulet
|
||||
1FAAC ; fully-qualified # 🪬 E14.0 hamsa
|
||||
1F5FF ; fully-qualified # 🗿 E0.6 moai
|
||||
1FAA7 ; fully-qualified # 🪧 E13.0 placard
|
||||
1FAAA ; fully-qualified # 🪪 E14.0 identification card
|
||||
|
||||
# Objects subtotal: 304
|
||||
# Objects subtotal: 304 w/o modifiers
|
||||
# Objects subtotal: 310
|
||||
# Objects subtotal: 310 w/o modifiers
|
||||
|
||||
# group: Symbols
|
||||
|
||||
|
@ -4455,6 +4486,7 @@
|
|||
262E ; unqualified # ☮ E1.0 peace symbol
|
||||
1F54E ; fully-qualified # 🕎 E1.0 menorah
|
||||
1F52F ; fully-qualified # 🔯 E0.6 dotted six-pointed star
|
||||
1FAAF ; fully-qualified # 🪯 E15.0 khanda
|
||||
|
||||
# subgroup: zodiac
|
||||
2648 ; fully-qualified # ♈ E0.6 Aries
|
||||
|
@ -4503,6 +4535,7 @@
|
|||
1F505 ; fully-qualified # 🔅 E1.0 dim button
|
||||
1F506 ; fully-qualified # 🔆 E1.0 bright button
|
||||
1F4F6 ; fully-qualified # 📶 E0.6 antenna bars
|
||||
1F6DC ; fully-qualified # 🛜 E15.0 wireless
|
||||
1F4F3 ; fully-qualified # 📳 E0.6 vibration mode
|
||||
1F4F4 ; fully-qualified # 📴 E0.6 mobile phone off
|
||||
|
||||
|
@ -4693,8 +4726,8 @@
|
|||
1F533 ; fully-qualified # 🔳 E0.6 white square button
|
||||
1F532 ; fully-qualified # 🔲 E0.6 black square button
|
||||
|
||||
# Symbols subtotal: 302
|
||||
# Symbols subtotal: 302 w/o modifiers
|
||||
# Symbols subtotal: 304
|
||||
# Symbols subtotal: 304 w/o modifiers
|
||||
|
||||
# group: Flags
|
||||
|
||||
|
@ -4709,7 +4742,7 @@
|
|||
1F3F3 200D 1F308 ; unqualified # 🏳🌈 E4.0 rainbow flag
|
||||
1F3F3 FE0F 200D 26A7 FE0F ; fully-qualified # 🏳️⚧️ E13.0 transgender flag
|
||||
1F3F3 200D 26A7 FE0F ; unqualified # 🏳⚧️ E13.0 transgender flag
|
||||
1F3F3 FE0F 200D 26A7 ; unqualified # 🏳️⚧ E13.0 transgender flag
|
||||
1F3F3 FE0F 200D 26A7 ; minimally-qualified # 🏳️⚧ E13.0 transgender flag
|
||||
1F3F3 200D 26A7 ; unqualified # 🏳⚧ E13.0 transgender flag
|
||||
1F3F4 200D 2620 FE0F ; fully-qualified # 🏴☠️ E11.0 pirate flag
|
||||
1F3F4 200D 2620 ; minimally-qualified # 🏴☠ E11.0 pirate flag
|
||||
|
@ -4983,9 +5016,9 @@
|
|||
# Flags subtotal: 275 w/o modifiers
|
||||
|
||||
# Status Counts
|
||||
# fully-qualified : 3624
|
||||
# minimally-qualified : 817
|
||||
# unqualified : 252
|
||||
# fully-qualified : 3655
|
||||
# minimally-qualified : 827
|
||||
# unqualified : 242
|
||||
# component : 9
|
||||
|
||||
#EOF
|
||||
|
|
|
@ -1587,13 +1587,19 @@ def block(%User{} = blocker, %User{} = blocked) do
|
|||
blocker
|
||||
end
|
||||
|
||||
# clear any requested follows as well
|
||||
# clear any requested follows from both sides as well
|
||||
blocked =
|
||||
case CommonAPI.reject_follow_request(blocked, blocker) do
|
||||
{:ok, %User{} = updated_blocked} -> updated_blocked
|
||||
nil -> blocked
|
||||
end
|
||||
|
||||
blocker =
|
||||
case CommonAPI.reject_follow_request(blocker, blocked) do
|
||||
{:ok, %User{} = updated_blocker} -> updated_blocker
|
||||
nil -> blocker
|
||||
end
|
||||
|
||||
unsubscribe(blocked, blocker)
|
||||
|
||||
unfollowing_blocked = Config.get([:activitypub, :unfollow_blocked], true)
|
||||
|
|
|
@ -91,8 +91,9 @@ def create(relationship_type, %User{} = source, %User{} = target, expires_at \\
|
|||
expires_at: expires_at
|
||||
})
|
||||
|> Repo.insert(
|
||||
on_conflict: {:replace_all_except, [:id]},
|
||||
conflict_target: [:source_id, :relationship_type, :target_id]
|
||||
on_conflict: {:replace_all_except, [:id, :inserted_at]},
|
||||
conflict_target: [:source_id, :relationship_type, :target_id],
|
||||
returning: true
|
||||
)
|
||||
end
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.QuestionValidator do
|
|||
|
||||
field(:closed, ObjectValidators.DateTime)
|
||||
field(:voters, {:array, ObjectValidators.ObjectID}, default: [])
|
||||
field(:votersCount, :integer)
|
||||
field(:nonAnonymous, :boolean)
|
||||
embeds_many(:anyOf, QuestionOptionsValidator)
|
||||
embeds_many(:oneOf, QuestionOptionsValidator)
|
||||
|
|
|
@ -723,6 +723,14 @@ def replies(%{"replies" => %{"items" => items}}) when not is_nil(items) do
|
|||
|
||||
def replies(_), do: []
|
||||
|
||||
defp set_voters_count(%{"voters" => [_ | _] = voters} = obj) do
|
||||
obj
|
||||
|> Map.merge(%{"votersCount" => length(voters)})
|
||||
|> Map.delete("voters")
|
||||
end
|
||||
|
||||
defp set_voters_count(obj), do: obj
|
||||
|
||||
# Prepares the object of an outgoing create activity.
|
||||
def prepare_object(object) do
|
||||
object
|
||||
|
@ -735,6 +743,7 @@ def prepare_object(object) do
|
|||
|> set_reply_to_uri
|
||||
|> set_quote_url
|
||||
|> set_replies
|
||||
|> set_voters_count
|
||||
|> strip_internal_fields
|
||||
|> strip_internal_tags
|
||||
|> set_type
|
||||
|
|
|
@ -18,7 +18,7 @@ def render("show.json", _) do
|
|||
title: Keyword.get(instance, :name),
|
||||
description: Keyword.get(instance, :description),
|
||||
short_description: Keyword.get(instance, :short_description),
|
||||
version: "#{@mastodon_api_level} (compatible; #{Pleroma.Application.named_version()})",
|
||||
version: "#{@mastodon_api_level} (compatible; #{Pleroma.Application.compat_version()})",
|
||||
email: Keyword.get(instance, :email),
|
||||
urls: %{
|
||||
streaming_api: Pleroma.Web.Endpoint.websocket_url()
|
||||
|
@ -54,7 +54,8 @@ def render("show.json", _) do
|
|||
birthday_min_age: Config.get([:instance, :birthday_min_age])
|
||||
},
|
||||
stats: %{mau: Pleroma.User.active_user_count()},
|
||||
vapid_public_key: Keyword.get(Pleroma.Web.Push.vapid_config(), :public_key)
|
||||
vapid_public_key: Keyword.get(Pleroma.Web.Push.vapid_config(), :public_key),
|
||||
oauth_consumer_strategies: Pleroma.Config.oauth_consumer_strategies()
|
||||
},
|
||||
configuration: configuration(),
|
||||
soapbox: %{
|
||||
|
|
|
@ -71,6 +71,10 @@ defp options_and_votes_count(options) do
|
|||
end)
|
||||
end
|
||||
|
||||
defp voters_count(%{data: %{"votersCount" => voters}}) when is_number(voters) do
|
||||
voters
|
||||
end
|
||||
|
||||
defp voters_count(%{data: %{"voters" => [_ | _] = voters}}) do
|
||||
length(voters)
|
||||
end
|
||||
|
|
|
@ -54,7 +54,7 @@ defp handle_preview(conn, url) do
|
|||
media_proxy_url = MediaProxy.url(url)
|
||||
|
||||
with {:ok, %{status: status} = head_response} when status in 200..299 <-
|
||||
Pleroma.HTTP.request("head", media_proxy_url, [], [], pool: :media) do
|
||||
Pleroma.HTTP.request("HEAD", media_proxy_url, [], [], pool: :media) do
|
||||
content_type = Tesla.get_header(head_response, "content-type")
|
||||
content_length = Tesla.get_header(head_response, "content-length")
|
||||
content_length = content_length && String.to_integer(content_length)
|
||||
|
|
|
@ -24,7 +24,7 @@ def get_nodeinfo("2.0") do
|
|||
%{
|
||||
version: "2.0",
|
||||
software: %{
|
||||
name: Pleroma.Application.name() |> String.downcase(),
|
||||
name: Pleroma.Application.compat_name() |> String.downcase(),
|
||||
version: Pleroma.Application.version()
|
||||
},
|
||||
protocols: Publisher.gather_nodeinfo_protocol_names(),
|
||||
|
|
|
@ -47,15 +47,17 @@ def call(conn, _) do
|
|||
#
|
||||
@spec fetch_user_and_token(String.t()) :: {:ok, User.t(), Token.t()} | nil
|
||||
defp fetch_user_and_token(token) do
|
||||
query =
|
||||
token_query =
|
||||
from(t in Token,
|
||||
where: t.token == ^token,
|
||||
join: user in assoc(t, :user),
|
||||
preload: [user: user]
|
||||
where: t.token == ^token
|
||||
)
|
||||
|
||||
with %Token{user: user} = token_record <- Repo.one(query) do
|
||||
with %Token{user_id: user_id} = token_record <- Repo.one(token_query),
|
||||
false <- is_nil(user_id),
|
||||
%User{} = user <- User.get_cached_by_id(user_id) do
|
||||
{:ok, user, token_record}
|
||||
else
|
||||
_ -> nil
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -5,11 +5,23 @@
|
|||
<meta name="viewport" content="width=device-width,initial-scale=1,minimal-ui">
|
||||
<title><%= Pleroma.Config.get([:instance, :name]) %></title>
|
||||
<link rel="stylesheet" href="/instance/static.css">
|
||||
<style>
|
||||
:root {
|
||||
<%= Pleroma.Web.Utils.Colors.shades_to_css(
|
||||
"primary",
|
||||
Pleroma.Config.get([:frontend_configurations, :soapbox_fe, "brandColor"], "#0482d8")
|
||||
) %>
|
||||
<%= Pleroma.Web.Utils.Colors.shades_to_css(
|
||||
"accent",
|
||||
Pleroma.Config.get([:frontend_configurations, :soapbox_fe, "accentColor"], "#2bd110")
|
||||
) %>
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="instance-header">
|
||||
<a class="instance-header__content" href="/">
|
||||
<img class="instance-header__thumbnail" src="<%= Pleroma.Config.get([:instance, :instance_thumbnail]) %>">
|
||||
<img class="instance-header__thumbnail" src="<%= Pleroma.Config.get([:frontend_configurations, :soapbox_fe, "logo"], Pleroma.Config.get([:instance, :instance_thumbnail])) %>">
|
||||
<h1 class="instance-header__title"><%= Pleroma.Config.get([:instance, :name]) %></h1>
|
||||
</a>
|
||||
</div>
|
||||
|
|
90
lib/pleroma/web/utils/colors.ex
Normal file
|
@ -0,0 +1,90 @@
|
|||
# Pleroma: A lightweight social networking server
|
||||
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||
# SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
defmodule Pleroma.Web.Utils.Colors do
|
||||
alias Pleroma.Web.Utils.Colors.RGB
|
||||
|
||||
# Adapted from:
|
||||
# https://gitlab.com/soapbox-pub/soapbox-fe/-/blob/develop/app/soapbox/utils/colors.ts
|
||||
@intensity_map %{
|
||||
50 => 0.95,
|
||||
100 => 0.9,
|
||||
200 => 0.75,
|
||||
300 => 0.3,
|
||||
400 => 0.2,
|
||||
600 => 0.9,
|
||||
700 => 0.75,
|
||||
800 => 0.3,
|
||||
900 => 0.19
|
||||
}
|
||||
|
||||
def get_shades("#" <> base_color) do
|
||||
base_color = base_color |> hex_to_rgb()
|
||||
|
||||
shades = %{
|
||||
500 => base_color |> rgb_to_string()
|
||||
}
|
||||
|
||||
shades =
|
||||
[50, 100, 200, 300, 400]
|
||||
|> Enum.reduce(shades, fn level, map ->
|
||||
Map.put(map, level, lighten(base_color, Map.get(@intensity_map, level)))
|
||||
end)
|
||||
|
||||
shades =
|
||||
[600, 700, 800, 900]
|
||||
|> Enum.reduce(shades, fn level, map ->
|
||||
Map.put(map, level, darken(base_color, Map.get(@intensity_map, level)))
|
||||
end)
|
||||
|
||||
shades
|
||||
end
|
||||
|
||||
def get_shades(_) do
|
||||
get_shades("#0482d8")
|
||||
end
|
||||
|
||||
defp lighten(%RGB{red: red, green: green, blue: blue}, intensity) do
|
||||
%RGB{
|
||||
red: round(red + (255 - red) * intensity),
|
||||
green: round(green + (255 - green) * intensity),
|
||||
blue: round(blue + (255 - blue) * intensity)
|
||||
}
|
||||
|> rgb_to_string()
|
||||
end
|
||||
|
||||
defp darken(%RGB{red: red, green: green, blue: blue}, intensity) do
|
||||
%RGB{
|
||||
red: round(red * intensity),
|
||||
green: round(green * intensity),
|
||||
blue: round(blue * intensity)
|
||||
}
|
||||
|> rgb_to_string()
|
||||
end
|
||||
|
||||
defp rgb_to_string(%RGB{red: red, green: green, blue: blue}) do
|
||||
"#{red}, #{green}, #{blue}"
|
||||
end
|
||||
|
||||
defp hex_to_rgb(<<red::binary-size(2), green::binary-size(2), blue::binary-size(2)>>) do
|
||||
%RGB{
|
||||
red: hex_to_decimal(red),
|
||||
green: hex_to_decimal(green),
|
||||
blue: hex_to_decimal(blue)
|
||||
}
|
||||
end
|
||||
|
||||
defp hex_to_decimal(hex) do
|
||||
{decimal, ""} = Integer.parse(hex, 16)
|
||||
|
||||
decimal
|
||||
end
|
||||
|
||||
def shades_to_css(name, base_color \\ nil) do
|
||||
get_shades(base_color)
|
||||
|> Map.to_list()
|
||||
|> Enum.reduce([], fn {key, shade}, list -> list ++ ["--color-#{name}-#{key}: #{shade};"] end)
|
||||
|> Enum.join("\n")
|
||||
end
|
||||
end
|
13
lib/pleroma/web/utils/colors/rgb.ex
Normal file
|
@ -0,0 +1,13 @@
|
|||
# Pleroma: A lightweight social networking server
|
||||
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||
# SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
defmodule Pleroma.Web.Utils.Colors.RGB do
|
||||
defstruct red: 0, green: 0, blue: 0
|
||||
|
||||
@type t :: %__MODULE__{
|
||||
red: non_neg_integer(),
|
||||
green: non_neg_integer(),
|
||||
blue: non_neg_integer()
|
||||
}
|
||||
end
|
|
@ -9,6 +9,12 @@ defmodule Pleroma.Workers.ReceiverWorker do
|
|||
|
||||
@impl Oban.Worker
|
||||
def perform(%Job{args: %{"op" => "incoming_ap_doc", "params" => params}}) do
|
||||
Federator.perform(:incoming_ap_doc, params)
|
||||
with {:ok, res} <- Federator.perform(:incoming_ap_doc, params) do
|
||||
{:ok, res}
|
||||
else
|
||||
{:error, :origin_containment_failed} -> {:cancel, :origin_containment_failed}
|
||||
{:error, {:reject, reason}} -> {:cancel, reason}
|
||||
e -> e
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
9
mix.exs
|
@ -6,6 +6,8 @@ defmodule Pleroma.Mixfile do
|
|||
def project do
|
||||
[
|
||||
app: :pleroma,
|
||||
name: "Rebased",
|
||||
compat_name: "Pleroma",
|
||||
version: version("2.4.52"),
|
||||
elixir: "~> 1.9",
|
||||
elixirc_paths: elixirc_paths(Mix.env()),
|
||||
|
@ -18,12 +20,11 @@ def project do
|
|||
test_coverage: [tool: ExCoveralls],
|
||||
preferred_cli_env: ["coveralls.html": :test],
|
||||
# Docs
|
||||
name: "Pleroma",
|
||||
homepage_url: "https://pleroma.social/",
|
||||
source_url: "https://git.pleroma.social/pleroma/pleroma",
|
||||
homepage_url: "https://soapbox.pub/",
|
||||
source_url: "https://gitlab.com/soapbox-pub/rebased",
|
||||
docs: [
|
||||
source_url_pattern:
|
||||
"https://git.pleroma.social/pleroma/pleroma/blob/develop/%{path}#L%{line}",
|
||||
"https://gitlab.com/soapbox-pub/rebased/blob/develop/%{path}#L%{line}",
|
||||
logo: "priv/static/images/logo.png",
|
||||
extras: ["README.md", "CHANGELOG.md"] ++ Path.wildcard("docs/**/*.md"),
|
||||
groups_for_extras: [
|
||||
|
|
9
mix.lock
|
@ -90,6 +90,8 @@
|
|||
"nimble_parsec": {:hex, :nimble_parsec, "0.5.0", "90e2eca3d0266e5c53f8fbe0079694740b9c91b6747f2b7e3c5d21966bba8300", [:mix], [], "hexpm", "5c040b8469c1ff1b10093d3186e2e10dbe483cd73d79ec017993fb3985b8a9b3"},
|
||||
"nimble_pool": {:hex, :nimble_pool, "0.2.4", "1db8e9f8a53d967d595e0b32a17030cdb6c0dc4a451b8ac787bf601d3f7704c3", [:mix], [], "hexpm", "367e8071e137b787764e6a9992ccb57b276dc2282535f767a07d881951ebeac6"},
|
||||
"nodex": {:git, "https://git.pleroma.social/pleroma/nodex", "cb6730f943cfc6aad674c92161be23a8411f15d1", [ref: "cb6730f943cfc6aad674c92161be23a8411f15d1"]},
|
||||
"oauth2": {:hex, :oauth2, "0.9.4", "632e8e8826a45e33ac2ea5ac66dcc019ba6bb5a0d2ba77e342d33e3b7b252c6e", [:mix], [{:hackney, "~> 1.7", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "407c6b9f60aa0d01b915e2347dc6be78adca706a37f0c530808942da3b62e7af"},
|
||||
"oauther": {:hex, :oauther, "1.3.0", "82b399607f0ca9d01c640438b34d74ebd9e4acd716508f868e864537ecdb1f76", [:mix], [], "hexpm", "78eb888ea875c72ca27b0864a6f550bc6ee84f2eeca37b093d3d833fbcaec04e"},
|
||||
"oban": {:hex, :oban, "2.3.4", "ec7509b9af2524d55f529cb7aee93d36131ae0bf0f37706f65d2fe707f4d9fd8", [:mix], [{:ecto_sql, ">= 3.4.3", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.14", [hex: :postgrex, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c70ca0434758fd1805422ea4446af5e910ddc697c0c861549c8f0eb0cfbd2fdf"},
|
||||
"oembed_providers": {:hex, :oembed_providers, "0.1.0", "9b336ee5f3ca20ee4ed005383c74b154d30d0abeb98e95828855c0e2841ae46b", [:mix], [{:glob, "~> 1.0", [hex: :glob, repo: "hexpm", optional: false]}, {:jason, "~> 1.2", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "ac1dda0f743aa6fdead3eef59decfefc9de91d550bf0805b8fce16ed10d421ba"},
|
||||
"open_api_spex": {:hex, :open_api_spex, "3.10.0", "94e9521ad525b3fcf6dc77da7c45f87fdac24756d4de588cb0816b413e7c1844", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:plug, "~> 1.7", [hex: :plug, repo: "hexpm", optional: false]}, {:poison, "~> 3.1", [hex: :poison, repo: "hexpm", optional: true]}], "hexpm", "2dbb2bde3d2b821f06936e8dfaf3284331186556291946d84eeba3750ac28765"},
|
||||
|
@ -135,6 +137,13 @@
|
|||
"trailing_format_plug": {:hex, :trailing_format_plug, "0.0.7", "64b877f912cf7273bed03379936df39894149e35137ac9509117e59866e10e45", [:mix], [{:plug, "> 0.12.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "bd4fde4c15f3e993a999e019d64347489b91b7a9096af68b2bdadd192afa693f"},
|
||||
"tzdata": {:hex, :tzdata, "1.0.5", "69f1ee029a49afa04ad77801febaf69385f3d3e3d1e4b56b9469025677b89a28", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "55519aa2a99e5d2095c1e61cc74c9be69688f8ab75c27da724eb8279ff402a5a"},
|
||||
"ueberauth": {:hex, :ueberauth, "0.6.3", "d42ace28b870e8072cf30e32e385579c57b9cc96ec74fa1f30f30da9c14f3cc0", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "afc293d8a1140d6591b53e3eaf415ca92842cb1d32fad3c450c6f045f7f91b60"},
|
||||
"ueberauth_facebook": {:hex, :ueberauth_facebook, "0.8.0", "9ec8571f804dd5c06f4e305d70606b39fc0ac8a8f43ed56ebb76012a97d14729", [:mix], [{:oauth2, "~> 0.9", [hex: :oauth2, repo: "hexpm", optional: false]}, {:ueberauth, "~> 0.4", [hex: :ueberauth, repo: "hexpm", optional: false]}], "hexpm", "6d0c88d6ea4cc40cf99b3abcf8aaa435a31f836dc8921e8b4015d760e183f7ba"},
|
||||
"ueberauth_github": {:hex, :ueberauth_github, "0.7.0", "637067c5500f7b13c18caca3db66d09eba661524e0d0e9518b54151e99484bad", [:mix], [{:oauth2, "~> 0.9", [hex: :oauth2, repo: "hexpm", optional: false]}, {:ueberauth, "~> 0.4", [hex: :ueberauth, repo: "hexpm", optional: false]}], "hexpm", "05d5ec9ac501a8ca82c41275436d1d0cf05f5c380ab194c5d79414a02de2645e"},
|
||||
"ueberauth_google": {:hex, :ueberauth_google, "0.8.0", "dc0e8417061c74107a3ba1419943cc930d3403b5c536b3757886964a3a70c333", [:mix], [{:oauth2, "~> 0.9", [hex: :oauth2, repo: "hexpm", optional: false]}, {:ueberauth, "~> 0.4", [hex: :ueberauth, repo: "hexpm", optional: false]}], "hexpm", "72cd7710cd721ec340a2eda418658e77254ab516ddcb52257db834055878cdc7"},
|
||||
"ueberauth_keycloak_strategy": {:hex, :ueberauth_keycloak_strategy, "0.2.0", "5ed0471a1cbb2ad4c0b371ab9f2a8e413070d9f307a2e55925a613254e7be619", [:mix], [{:oauth2, "~> 0.9", [hex: :oauth2, repo: "hexpm", optional: false]}, {:ueberauth, "~> 0.4", [hex: :ueberauth, repo: "hexpm", optional: false]}], "hexpm", "9db30c00fe7e55f032254e6220d7c9b260e14367bfd0dba6c29760ce05a0131c"},
|
||||
"ueberauth_microsoft": {:hex, :ueberauth_microsoft, "0.4.0", "1c0be9c218e93c426e32c416421e9d41ea59fdf1e3b24310ed5be41df46ddcc1", [:mix], [{:oauth2, "~> 0.8", [hex: :oauth2, repo: "hexpm", optional: false]}, {:ueberauth, "~> 0.4", [hex: :ueberauth, repo: "hexpm", optional: false]}], "hexpm", "0b124367853a9becd265639f9eaa0c5318a313feb8ebd51464c8c68be1353e20"},
|
||||
"ueberauth_slack": {:hex, :ueberauth_slack, "0.3.0", "ec8f6c96e1d41a458a00b5d8cd918c1f387998884fe4636e67dd88b1bd06f928", [:mix], [{:oauth2, "~> 0.5", [hex: :oauth2, repo: "hexpm", optional: false]}, {:ueberauth, "~> 0.2", [hex: :ueberauth, repo: "hexpm", optional: false]}], "hexpm", "b4012b2cf1664dc80eda5762c5d3a495a819456186ab789da8ce4e7b9c0fa22f"},
|
||||
"ueberauth_twitter": {:hex, :ueberauth_twitter, "0.4.0", "4b98620341bc91bac90459093bba093c650823b6e2df35b70255c493c17e9227", [:mix], [{:httpoison, "~> 1.0", [hex: :httpoison, repo: "hexpm", optional: false]}, {:oauther, "~> 1.1", [hex: :oauther, repo: "hexpm", optional: false]}, {:ueberauth, "~> 0.6", [hex: :ueberauth, repo: "hexpm", optional: false]}], "hexpm", "fb29c9047ca263038c0c61f5a0ec8597e8564aba3f2b4cb02704b60205fd4468"},
|
||||
"unicode_util_compat": {:hex, :unicode_util_compat, "0.7.0", "bc84380c9ab48177092f43ac89e4dfa2c6d62b40b8bd132b1059ecc7232f9a78", [:rebar3], [], "hexpm", "25eee6d67df61960cf6a794239566599b09e17e668d3700247bc498638152521"},
|
||||
"unsafe": {:hex, :unsafe, "1.0.1", "a27e1874f72ee49312e0a9ec2e0b27924214a05e3ddac90e91727bc76f8613d8", [:mix], [], "hexpm", "6c7729a2d214806450d29766abc2afaa7a2cbecf415be64f36a6691afebb50e5"},
|
||||
"web_push_encryption": {:hex, :web_push_encryption, "0.3.1", "76d0e7375142dfee67391e7690e89f92578889cbcf2879377900b5620ee4708d", [:mix], [{:httpoison, "~> 1.0", [hex: :httpoison, repo: "hexpm", optional: false]}, {:jose, "~> 1.11.1", [hex: :jose, repo: "hexpm", optional: false]}], "hexpm", "4f82b2e57622fb9337559058e8797cb0df7e7c9790793bdc4e40bc895f70e2a2"},
|
||||
|
|
Before Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 95 B |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 981 B |
Before Width: | Height: | Size: 1 KiB After Width: | Height: | Size: 4 KiB |
Before Width: | Height: | Size: 124 B After Width: | Height: | Size: 81 B |
Before Width: | Height: | Size: 2.8 MiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 8.6 KiB |
Before Width: | Height: | Size: 1,014 KiB |
Before Width: | Height: | Size: 854 KiB |
Before Width: | Height: | Size: 1.9 MiB |
Before Width: | Height: | Size: 533 KiB |
45
priv/static/images/rebased-wide.svg
Normal file
|
@ -0,0 +1,45 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="172.99954mm"
|
||||
height="26.458334mm"
|
||||
viewBox="0 0 172.99955 26.458334"
|
||||
version="1.1"
|
||||
id="svg31383"
|
||||
xml:space="preserve"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"><defs
|
||||
id="defs31380" /><g
|
||||
aria-label="Rebased"
|
||||
id="text1402"
|
||||
style="font-size:31.2405px;fill:#0482d8;stroke:#0482d8;stroke-width:14.5079"><path
|
||||
d="M 31.199042,24.663189 V 2.7948393 H 41.72709 q 3.061569,0 5.279644,0.999696 2.249316,0.999696 3.467696,2.8741259 1.218379,1.8431895 1.218379,4.3736698 0,2.530481 -1.218379,4.37367 -1.21838,1.811949 -3.467696,2.780405 -2.218075,0.968455 -5.279644,0.968455 h -6.435543 l 3.280252,-3.030328 v 8.528656 z m 13.089769,0 -5.373366,-7.966327 h 7.810125 l 5.435847,7.966327 z m -5.717012,-7.716403 -3.280252,-3.342734 h 5.966935 q 1.530785,0 2.249316,-0.687291 0.749772,-0.687291 0.749772,-1.87443 0,-1.1871388 -0.749772,-1.8744298 -0.718531,-0.687291 -2.249316,-0.687291 h -5.966935 l 3.280252,-3.3427335 z"
|
||||
style="font-weight:900;font-family:Montserrat;-inkscape-font-specification:'Montserrat Heavy';stroke:none"
|
||||
id="path2359" /><path
|
||||
d="m 63.689128,24.975594 q -3.12405,0 -5.467087,-1.155899 -2.311797,-1.155898 -3.592658,-3.15529 -1.28086,-2.030632 -1.28086,-4.561113 0,-2.592961 1.24962,-4.592353 1.28086,-1.9993923 3.467695,-3.1240503 2.218076,-1.124658 4.96724,-1.124658 2.53048,0 4.654834,0.999696 2.155595,0.999696 3.436455,2.9678473 1.312101,1.968152 1.312101,4.873518 0,0.374886 -0.03124,0.843494 -0.03124,0.437367 -0.06248,0.812253 H 59.190496 v -3.405215 h 9.403391 l -2.655443,0.905975 q 0,-0.999696 -0.374886,-1.686987 -0.343645,-0.718532 -0.968455,-1.093418 -0.62481,-0.406126 -1.499544,-0.406126 -0.874734,0 -1.530785,0.406126 -0.62481,0.374886 -0.968455,1.093418 -0.343646,0.687291 -0.343646,1.686987 v 1.062177 q 0,1.093417 0.437367,1.87443 0.437367,0.781012 1.24962,1.187139 0.812253,0.374886 1.968152,0.374886 1.187139,0 1.936911,-0.312405 0.781012,-0.312405 1.624506,-0.937215 l 3.686379,3.717619 q -1.24962,1.343341 -3.09281,2.061873 -1.811949,0.687291 -4.37367,0.687291 z"
|
||||
style="font-weight:900;font-family:Montserrat;-inkscape-font-specification:'Montserrat Heavy';stroke:none"
|
||||
id="path2361" /><path
|
||||
d="m 86.057319,24.975594 q -2.343037,0 -3.7801,-0.937215 -1.437063,-0.937215 -2.093113,-2.905367 -0.62481,-1.968151 -0.62481,-5.02972 0,-3.030328 0.687291,-4.967239 0.687291,-1.9681518 2.124353,-2.9053668 1.468304,-0.9684555 3.686379,-0.9684555 2.249316,0 4.123746,1.062177 1.87443,1.062177 2.999088,3.0615693 1.124658,1.968151 1.124658,4.717315 0,2.749164 -1.124658,4.748556 -1.124658,1.968151 -2.999088,3.061569 -1.87443,1.062177 -4.123746,1.062177 z M 74.654537,24.663189 V 1.4827383 h 7.060353 v 8.3724539 l -0.312405,6.2480998 -0.03124,6.2481 v 2.311797 z m 9.715795,-5.185923 q 0.781013,0 1.405823,-0.374886 0.62481,-0.374886 0.999696,-1.124658 0.374886,-0.781012 0.374886,-1.87443 0,-1.124658 -0.374886,-1.843189 -0.374886,-0.749772 -0.999696,-1.124658 -0.62481,-0.374886 -1.405823,-0.374886 -0.781012,0 -1.405822,0.374886 -0.62481,0.374886 -0.999696,1.124658 -0.374886,0.718531 -0.374886,1.843189 0,1.093418 0.374886,1.87443 0.374886,0.749772 0.999696,1.124658 0.62481,0.374886 1.405822,0.374886 z"
|
||||
style="font-weight:900;font-family:Montserrat;-inkscape-font-specification:'Montserrat Heavy';stroke:none"
|
||||
id="path2363" /><path
|
||||
d="M 106.4261,24.663189 V 21.63286 l -0.49985,-0.812253 v -5.748251 q 0,-1.24962 -0.78101,-1.905671 -0.74978,-0.65605 -2.468,-0.65605 -1.1559,0 -2.34304,0.374886 -1.18714,0.343645 -2.030633,0.968455 L 96.054251,9.1991417 q 1.499544,-0.937215 3.592657,-1.437063 2.093112,-0.499848 4.092502,-0.499848 4.40491,0 6.81043,1.9681515 2.43676,1.9681518 2.43676,6.2480998 v 9.184707 z m -4.84228,0.312405 q -2.093114,0 -3.498937,-0.718532 -1.405822,-0.718531 -2.124354,-1.90567 -0.718531,-1.21838 -0.718531,-2.686683 0,-1.655746 0.843493,-2.811645 0.843494,-1.155898 2.561721,-1.749468 1.749468,-0.593569 4.404908,-0.593569 h 3.56142 v 3.405214 h -2.43676 q -1.12466,0 -1.65575,0.374886 -0.49984,0.343646 -0.49984,1.062177 0,0.59357 0.43736,0.999696 0.46861,0.374886 1.24962,0.374886 0.71853,0 1.3121,-0.374886 0.62481,-0.406126 0.90598,-1.24962 l 0.90597,2.093113 q -0.40612,1.905671 -1.71822,2.842886 -1.31211,0.937215 -3.53018,0.937215 z"
|
||||
style="font-weight:900;font-family:Montserrat;-inkscape-font-specification:'Montserrat Heavy';stroke:none"
|
||||
id="path2365" /><path
|
||||
d="m 122.73363,24.975594 q -2.18683,0 -4.31118,-0.468608 -2.12436,-0.468607 -3.43646,-1.218379 l 1.93691,-4.654834 q 1.21838,0.718531 2.81165,1.124658 1.6245,0.406126 3.15529,0.406126 1.28086,0 1.71822,-0.218683 0.46861,-0.218684 0.46861,-0.59357 0,-0.374886 -0.53109,-0.531088 -0.53108,-0.187443 -1.40582,-0.281165 -0.87473,-0.09372 -1.93691,-0.218683 -1.03094,-0.156203 -2.09311,-0.437367 -1.06218,-0.281165 -1.93691,-0.843494 -0.87474,-0.562329 -1.40583,-1.499544 -0.53108,-0.968455 -0.53108,-2.436759 0,-1.624506 0.96845,-2.936607 0.9997,-1.3121008 2.93661,-2.0931133 1.96815,-0.812253 4.84227,-0.812253 1.87443,0 3.74886,0.3436455 1.87443,0.3436455 3.21778,1.062177 l -1.93691,4.6548348 q -1.31211,-0.718532 -2.59297,-0.968456 -1.24962,-0.281164 -2.34303,-0.281164 -1.34335,0 -1.84319,0.249924 -0.46861,0.249924 -0.46861,0.562329 0,0.374886 0.53109,0.562329 0.53109,0.187443 1.40582,0.281164 0.87473,0.09372 1.90567,0.249924 1.06218,0.124962 2.09311,0.437367 1.06218,0.281165 1.93692,0.843494 0.87473,0.562329 1.40582,1.530784 0.53109,0.937215 0.53109,2.405519 0,1.530784 -0.96846,2.874125 -0.96845,1.312101 -2.93661,2.124354 -1.96815,0.781013 -4.936,0.781013 z"
|
||||
style="font-weight:900;font-family:Montserrat;-inkscape-font-specification:'Montserrat Heavy';stroke:none"
|
||||
id="path2367" /><path
|
||||
d="m 143.13363,24.975594 q -3.12405,0 -5.46709,-1.155899 -2.31179,-1.155898 -3.59265,-3.15529 -1.28086,-2.030632 -1.28086,-4.561113 0,-2.592961 1.24962,-4.592353 1.28086,-1.9993923 3.46769,-3.1240503 2.21808,-1.124658 4.96724,-1.124658 2.53048,0 4.65484,0.999696 2.15559,0.999696 3.43645,2.9678473 1.3121,1.968152 1.3121,4.873518 0,0.374886 -0.0312,0.843494 -0.0312,0.437367 -0.0625,0.812253 H 138.635 v -3.405215 h 9.40339 l -2.65544,0.905975 q 0,-0.999696 -0.37489,-1.686987 -0.34364,-0.718532 -0.96845,-1.093418 -0.62481,-0.406126 -1.49955,-0.406126 -0.87473,0 -1.53078,0.406126 -0.62481,0.374886 -0.96846,1.093418 -0.34364,0.687291 -0.34364,1.686987 v 1.062177 q 0,1.093417 0.43736,1.87443 0.43737,0.781012 1.24962,1.187139 0.81226,0.374886 1.96816,0.374886 1.18713,0 1.93691,-0.312405 0.78101,-0.312405 1.6245,-0.937215 l 3.68638,3.717619 q -1.24962,1.343341 -3.09281,2.061873 -1.81195,0.687291 -4.37367,0.687291 z"
|
||||
style="font-weight:900;font-family:Montserrat;-inkscape-font-specification:'Montserrat Heavy';stroke:none"
|
||||
id="path2369" /><path
|
||||
d="m 161.59676,24.975594 q -2.21807,0 -4.12375,-1.062177 -1.87443,-1.093418 -2.99908,-3.061569 -1.12466,-1.999392 -1.12466,-4.748556 0,-2.749164 1.12466,-4.717315 1.12465,-1.9993923 2.99908,-3.0615693 1.90568,-1.062177 4.12375,-1.062177 2.24932,0 3.68638,0.9684555 1.43706,0.937215 2.12435,2.9053668 0.68729,1.936911 0.68729,4.967239 0,3.061569 -0.65605,5.02972 -0.62481,1.968152 -2.06187,2.905367 -1.40582,0.937215 -3.7801,0.937215 z m 1.68699,-5.498328 q 0.78101,0 1.40582,-0.374886 0.62481,-0.374886 0.9997,-1.124658 0.37488,-0.781012 0.37488,-1.87443 0,-1.124658 -0.37488,-1.843189 -0.37489,-0.749772 -0.9997,-1.124658 -0.62481,-0.374886 -1.40582,-0.374886 -0.78101,0 -1.40582,0.374886 -0.62481,0.374886 -0.9997,1.124658 -0.37489,0.718531 -0.37489,1.843189 0,1.093418 0.37489,1.87443 0.37489,0.749772 0.9997,1.124658 0.62481,0.374886 1.40582,0.374886 z m 2.99909,5.185923 v -2.311797 l -0.0312,-6.2481 -0.31241,-6.2480998 V 1.4827383 h 7.06035 V 24.663189 Z"
|
||||
style="font-weight:900;font-family:Montserrat;-inkscape-font-specification:'Montserrat Heavy';stroke:none"
|
||||
id="path2371" /></g><path
|
||||
id="path337-7-6-2"
|
||||
style="fill:#0482d8;stroke-width:1.9864"
|
||||
d="m 22.583601,3.874735 a 13.229167,13.229167 0 0 1 0,18.708865 13.229167,13.229167 0 0 1 -18.7088674,2e-6 13.229167,13.229167 0 0 1 0,-18.7088685 13.229167,13.229167 0 0 1 18.7088674,1.5e-6 z" /><path
|
||||
id="path337-7-6-2-2"
|
||||
clip-path="none"
|
||||
style="fill:#ffffff;stroke-width:9.25897"
|
||||
d="M 412.38163 316.12998 A 19.374084 19.374084 0 0 0 399.20541 310.95896 A 19.374084 19.374084 0 0 0 379.83112 330.33325 A 19.374084 19.374084 0 0 0 380.13771 333.69203 L 359.06189 339.76917 A 14.165557 14.165557 0 0 0 345.32189 329.02006 A 14.165557 14.165557 0 0 0 338.49022 330.78631 L 328.8959 316.6682 A 14.846037 14.846037 0 0 0 332.03156 298.75188 A 14.846037 14.846037 0 0 0 319.42252 290.85398 A 61.663666 61.663666 0 0 0 306.59716 313.95325 A 14.846037 14.846037 0 0 0 325.71937 318.87389 L 335.28644 333.2032 A 14.165557 14.165557 0 0 0 331.1561 343.18586 A 14.165557 14.165557 0 0 0 345.32189 357.35165 A 14.165557 14.165557 0 0 0 359.47066 343.91484 L 381.1903 337.45958 A 19.374084 19.374084 0 0 0 399.20541 349.70754 A 19.374084 19.374084 0 0 0 418.5797 330.33325 A 19.374084 19.374084 0 0 0 412.38163 316.12998 z "
|
||||
transform="matrix(0.1517009,-0.1517009,0.1517009,0.1517009,-92.512315,18.419317)" /></svg>
|
After Width: | Height: | Size: 9.2 KiB |
|
@ -1 +1,75 @@
|
|||
<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,user-scalable=no"><!--server-generated-meta--><link rel=icon type=image/png href=/favicon.png><link href=/static/css/app.7d2d223f75c3a14b0991.css rel=stylesheet></head><body class=hidden><noscript>To use Pleroma, please enable JavaScript.</noscript><div id=app></div><script type=text/javascript src=/static/js/vendors~app.cea10ab53f3aa19fc30e.js></script><script type=text/javascript src=/static/js/app.6c972d84b60f601b01f8.js></script></body></html>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Welcome to Rebased</title>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover,user-scalable=no">
|
||||
<link rel="icon" type="image/png" href="/favicon.png">
|
||||
<style type="text/css">
|
||||
:root {
|
||||
--brand-color: #0482d8;
|
||||
--background-color: #f2f2f2;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: var(--background-color);
|
||||
font-family: 'Lato', sans-serif;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
main {
|
||||
max-width: 500px;
|
||||
margin: 0 auto;
|
||||
padding: 30px;
|
||||
}
|
||||
|
||||
.logo {
|
||||
width: 100%;
|
||||
display: block;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.5rem;
|
||||
font-weight: normal;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
p {
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--brand-color);
|
||||
}
|
||||
|
||||
code {
|
||||
display: block;
|
||||
color: white;
|
||||
background-color: black;
|
||||
border-radius: 10px;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
code.inline {
|
||||
display: inline;
|
||||
border-radius: 4px;
|
||||
padding: 4px;
|
||||
}
|
||||
</style>
|
||||
<!--server-generated-meta-->
|
||||
</head>
|
||||
<body>
|
||||
<main>
|
||||
<img class="logo" src="/images/rebased-wide.svg" alt="Rebased" />
|
||||
<h2>Almost done...</h2>
|
||||
<p>Congrats! 🎉 You've installed Rebased. Now you just need to install a frontend.</p>
|
||||
<h2>Installing Soapbox</h2>
|
||||
<p>To install <a href="https://gitlab.com/soapbox-pub/soapbox-fe" target="_blank">Soapbox</a>, SSH into the server and download a .zip of the latest build:</p>
|
||||
<code>curl -L https://gitlab.com/soapbox-pub/soapbox-fe/-/jobs/artifacts/develop/download?job=build-production -o soapbox-fe.zip</code>
|
||||
<p>Then unpack it into the <code class="inline">instance</code> directory:</p>
|
||||
<code>busybox unzip soapbox-fe.zip -o -d /opt/pleroma/instance</code>
|
||||
<p><strong>That's it!</strong> Just refresh this page.</p>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
|
Before Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 9.6 KiB |
|
@ -42,7 +42,8 @@
|
|||
"vcard": "http://www.w3.org/2006/vcard/ns#",
|
||||
"sm": "http://smithereen.software/ns#",
|
||||
"nonAnonymous": "sm:nonAnonymous",
|
||||
"formerRepresentations": "litepub:formerRepresentations"
|
||||
"formerRepresentations": "litepub:formerRepresentations",
|
||||
"votersCount" : "toot:votersCount"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
Before Width: | Height: | Size: 628 KiB |
|
@ -1,28 +0,0 @@
|
|||
{
|
||||
"alwaysShowSubjectInput": true,
|
||||
"background": "/static/aurora_borealis.jpg",
|
||||
"collapseMessageWithSubject": false,
|
||||
"greentext": false,
|
||||
"hideFilteredStatuses": false,
|
||||
"hideMutedPosts": false,
|
||||
"hidePostStats": false,
|
||||
"hideSitename": false,
|
||||
"hideUserStats": false,
|
||||
"loginMethod": "password",
|
||||
"logo": "/static/logo.svg",
|
||||
"logoMargin": ".1em",
|
||||
"logoMask": true,
|
||||
"logoLeft": false,
|
||||
"minimalScopesMode": false,
|
||||
"nsfwCensorImage": "",
|
||||
"postContentType": "text/plain",
|
||||
"redirectRootLogin": "/main/friends",
|
||||
"redirectRootNoLogin": "/main/all",
|
||||
"scopeCopy": true,
|
||||
"showFeaturesPanel": true,
|
||||
"showInstanceSpecificPanel": false,
|
||||
"sidebarRight": false,
|
||||
"subjectLineBehavior": "email",
|
||||
"theme": "pleroma-dark",
|
||||
"webPushNotifications": false
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"sources":["webpack:///./src/hocs/with_subscription/with_subscription.scss"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,C","file":"static/css/2.0778a6a864a1307a6c41.css","sourcesContent":[".with-subscription-loading {\n padding: 10px;\n text-align: center;\n}\n.with-subscription-loading .error {\n font-size: 14px;\n}"],"sourceRoot":""}
|
Before Width: | Height: | Size: 34 KiB |