Compare commits

..

No commits in common. "2561febffdf341552c3553ee8300d0305e2b45a5" and "9617189e963b89f4353168e20d48ff086a0c53bb" have entirely different histories.

12 changed files with 45 additions and 202 deletions

View file

@ -26,10 +26,10 @@ cache: &global_cache_policy
- _build
stages:
- check-changelog
- build
- lint
- test
- check-changelog
- benchmark
- deploy
- release

View file

@ -1 +0,0 @@
Set default values on validators for transient objects (attachment, poll options)

View file

@ -64,7 +64,7 @@ config :pleroma, Pleroma.Upload,
link_name: false,
proxy_remote: false,
filename_display_max_length: 30,
default_description: :filename,
default_description: nil,
base_url: nil
config :pleroma, Pleroma.Uploaders.Local, uploads: "uploads"
@ -157,18 +157,18 @@ config :pleroma, :http,
adapter: []
config :pleroma, :instance,
name: "Shigusegubu",
email: "pleroma@hjkos.com",
notify_email: "pleroma@hjkos.com",
description: "SigSegV, a pleroma instance",
short_description: "HJ's semi-personal instance",
name: "Pleroma",
email: "example@example.com",
notify_email: "noreply@example.com",
description: "Pleroma: An efficient and flexible fediverse server",
short_description: "",
background_image: "/images/city.jpg",
instance_thumbnail: "/instance/thumbnail.jpeg",
favicon: "/favicon.png",
limit: 5_000,
description_limit: 5_000,
remote_limit: 100_000,
upload_limit: 200_000_000,
upload_limit: 16_000_000,
avatar_upload_limit: 2_000_000,
background_upload_limit: 4_000_000,
banner_upload_limit: 4_000_000,
@ -187,16 +187,18 @@ config :pleroma, :instance,
federation_reachability_timeout_days: 7,
allow_relay: true,
public: true,
quarantined_instances: [{ "pleroma.rareome.ga", "leaks private posts or sumshit i dont rember" }],
quarantined_instances: [],
static_dir: "instance/static/",
allowed_post_formats: [
"text/plain",
"text/html",
"text/markdown",
"text/bbcode"
],
autofollowed_nicknames: [],
autofollowing_nicknames: [],
max_pinned_statuses: 1,
attachment_links: true,
attachment_links: false,
max_report_comment_size: 1000,
report_strip_status: true,
safe_dm_mentions: false,
@ -289,8 +291,8 @@ config :pleroma, :markup,
config :pleroma, :frontend_configurations,
pleroma_fe: %{
alwaysShowSubjectInput: false,
background: "/static/sigsegv_s.png",
alwaysShowSubjectInput: true,
background: "/images/city.jpg",
collapseMessageWithSubject: false,
disableChat: false,
greentext: false,
@ -303,18 +305,18 @@ config :pleroma, :frontend_configurations,
logo: "/static/logo.svg",
logoMargin: ".1em",
logoMask: true,
minimalScopesMode: true,
minimalScopesMode: false,
noAttachmentLinks: false,
nsfwCensorImage: "",
postContentType: "text/plain",
redirectRootLogin: "/main/friends",
redirectRootNoLogin: "/main/all",
scopeCopy: false,
scopeCopy: true,
sidebarRight: false,
showFeaturesPanel: true,
showInstanceSpecificPanel: true,
subjectLineBehavior: "noop",
theme: "sigsegv2",
showInstanceSpecificPanel: false,
subjectLineBehavior: "email",
theme: "pleroma-dark",
webPushNotifications: false
}
@ -370,23 +372,8 @@ config :pleroma, :mrf_hellthread,
config :pleroma, :mrf_simple,
media_removal: [],
media_nsfw: [
{ "preteengirls.biz", "pron or even cp" },
{ "melalandia.tk", "i don't rember" },
{ "pl.smuglo.li", "instance is dead but i still remember, rip smuglo" },
{ "baraag.net", "pron" },
{ "humblr.social", "3dpd pron" },
{ "pawoo.net", "tasteful pron, mostly." },
{ "sinblr.com", "3dpd pron" }
],
federated_timeline_removal: [
{ "preteengirls.biz", "pron or even cp" },
{ "melalandia.tk", "i don't rember" },
{ "baraag.net", "pron" },
{ "humblr.social", "3dpd pron" },
{ "pawoo.net", "tasteful pron, mostly." },
{ "sinblr.com", "3dpd pron" }
],
media_nsfw: [],
federated_timeline_removal: [],
report_removal: [],
reject: [],
followers_only: [],
@ -479,7 +466,7 @@ config :pleroma, :media_preview_proxy,
min_content_length: 100 * 1024
config :pleroma, :shout,
enabled: false,
enabled: true,
limit: 5_000
config :phoenix, :format_encoders, json: Jason, "activity+json": Jason
@ -809,7 +796,7 @@ config :pleroma, :web_cache_ttl,
config :pleroma, :modules, runtime_dir: "instance/modules"
config :pleroma, configurable_from_database: true
config :pleroma, configurable_from_database: false
config :pleroma, Pleroma.Repo,
parameters: [gin_fuzzy_search_limit: "500", jit: "off"],
@ -873,11 +860,8 @@ config :pleroma, Pleroma.Web.ApiSpec.CastAndValidate, strict: false
config :pleroma, :mrf,
policies: [
Pleroma.Web.ActivityPub.MRF.SimplePolicy,
Pleroma.Web.ActivityPub.MRF.HellthreadPolicy,
Pleroma.Web.ActivityPub.MRF.AntiFollowbotPolicy,
Pleroma.Web.ActivityPub.MRF.TagPolicy,
Pleroma.Web.ActivityPub.MRF.ObjectAgePolicy,
Pleroma.Web.ActivityPub.MRF.TagPolicy,
Pleroma.Web.ActivityPub.MRF.InlineQuotePolicy
],
transparency: true,

View file

@ -1,115 +0,0 @@
Advanced_Sorcery, /emoji/sgsgb/Advanced_Sorcery.png
FACE_QUAD, /emoji/sgsgb/FACE_QUAD.png
Yukkuri_Reimu, /emoji/sgsgb/Yukkuri_Reimu.png
a_to, /emoji/sgsgb/a_to.png
angrypirds, /emoji/sgsgb/angrypirds.png
annoying_dog_hole, /emoji/sgsgb/annoying_dog_hole.png
award_bios, /emoji/sgsgb/award_bios.png
bananya, /emoji/sgsgb/bananya.png
bandits, /emoji/sgsgb/bandits.png
blobcatknife, /emoji/sgsgb/blobcatknife.png
cacolaugh, /emoji/sgsgb/cacolaugh.png
catboythink, /emoji/sgsgb/catboythink.png
cirno_run, /emoji/sgsgb/cirno_run.png
debian, /emoji/sgsgb/debian.png
denton, /emoji/sgsgb/denton.png
denton_laugh, /emoji/sgsgb/denton_laugh.png
dio, /emoji/sgsgb/dio.png
dogcited, /emoji/sgsgb/dogcited.png
dong, /emoji/sgsgb/dong.png
duane, /emoji/sgsgb/duane.png
e, /emoji/sgsgb/e.png
energy_star, /emoji/sgsgb/energy_star.png
flynn_smirk, /emoji/sgsgb/flynn_smirk.png
furrythink, /emoji/sgsgb/furrythink.png
granddad, /emoji/sgsgb/granddad.png
heavy_losingeh, /emoji/sgsgb/heavy_losingeh.png
heavy_winninggreat, /emoji/sgsgb/heavy_winninggreat.png
herrington, /emoji/sgsgb/herrington.png
hogan, /emoji/sgsgb/hogan.png
hyperjoy, /emoji/sgsgb/hyperjoy.png
itisamystery, /emoji/sgsgb/itisamystery.png
jacobson, /emoji/sgsgb/jacobson.png
jake, /emoji/sgsgb/jake.png
jyushimatsu_think, /emoji/sgsgb/jyushimatsu_think.png
kinzo, /emoji/sgsgb/kinzo.png
kms, /emoji/sgsgb/kms.png
kokoko, /emoji/sgsgb/kokoko.png
loss, /emoji/sgsgb/loss.png
luck, /emoji/sgsgb/luck.png
lucknorm, /emoji/sgsgb/lucknorm.png
marko, /emoji/sgsgb/marko.png
megaman, /emoji/sgsgb/megaman.png
miyanozoom, /emoji/sgsgb/miyanozoom.png
monster_energy_ultra, /emoji/sgsgb/monster_energy_ultra.png
moraledn, /emoji/sgsgb/moraledn.png
moraleup, /emoji/sgsgb/moraleup.png
multiply, /emoji/sgsgb/multiply.png
mycomputer, /emoji/sgsgb/mycomputer.png
necromancy1, /emoji/sgsgb/necromancy1.png
necromancy2, /emoji/sgsgb/necromancy2.png
necromancy3, /emoji/sgsgb/necromancy3.png
nice, /emoji/sgsgb/nice.png
nyoron, /emoji/sgsgb/nyoron.png
ohgno, /emoji/sgsgb/ohgno.png
ohyes, /emoji/sgsgb/ohyes.png
orangeman, /emoji/sgsgb/orangeman.png
payyap, /emoji/sgsgb/payyap.png
pooh, /emoji/sgsgb/pooh.png
poohington, /emoji/sgsgb/poohington.png
poptepipic1, /emoji/sgsgb/poptepipic1.png
poptepipic10, /emoji/sgsgb/poptepipic10.png
poptepipic11, /emoji/sgsgb/poptepipic11.png
poptepipic12, /emoji/sgsgb/poptepipic12.png
poptepipic13, /emoji/sgsgb/poptepipic13.png
poptepipic14, /emoji/sgsgb/poptepipic14.png
poptepipic15, /emoji/sgsgb/poptepipic15.png
poptepipic16, /emoji/sgsgb/poptepipic16.png
poptepipic17, /emoji/sgsgb/poptepipic17.png
poptepipic18, /emoji/sgsgb/poptepipic18.png
poptepipic19, /emoji/sgsgb/poptepipic19.png
poptepipic2, /emoji/sgsgb/poptepipic2.png
poptepipic20, /emoji/sgsgb/poptepipic20.png
poptepipic21, /emoji/sgsgb/poptepipic21.png
poptepipic22, /emoji/sgsgb/poptepipic22.png
poptepipic23, /emoji/sgsgb/poptepipic23.png
poptepipic3, /emoji/sgsgb/poptepipic3.png
poptepipic4, /emoji/sgsgb/poptepipic4.png
poptepipic5, /emoji/sgsgb/poptepipic5.png
poptepipic6, /emoji/sgsgb/poptepipic6.png
poptepipic7, /emoji/sgsgb/poptepipic7.png
poptepipic8, /emoji/sgsgb/poptepipic8.png
poptepipic9, /emoji/sgsgb/poptepipic9.png
puke, /emoji/sgsgb/puke.png
quake_net, /emoji/sgsgb/quake_net.png
quake_ram, /emoji/sgsgb/quake_ram.png
ranger, /emoji/sgsgb/ranger.png
ranger_none, /emoji/sgsgb/ranger_none.png
risitas1, /emoji/sgsgb/risitas1.png
risitas2, /emoji/sgsgb/risitas2.png
rokalife, /emoji/sgsgb/rokalife.png
sandro, /emoji/sgsgb/sandro.png
scut, /emoji/sgsgb/scut.png
serious, /emoji/sgsgb/serious.png
shag, /emoji/sgsgb/shag.png
shinitai_i, /emoji/sgsgb/shinitai_i.png
shinitai_ni, /emoji/sgsgb/shinitai_ni.png
shinitai_shi, /emoji/sgsgb/shinitai_shi.png
shinitai_ta, /emoji/sgsgb/shinitai_ta.png
shotging, /emoji/sgsgb/shotging.png
skelethor, /emoji/sgsgb/skelethor.png
smug_marisa, /emoji/sgsgb/smug_marisa.png
spurdo, /emoji/sgsgb/spurdo.png
stalkers, /emoji/sgsgb/stalkers.png
tenshi_eating_corndog, /emoji/sgsgb/tenshi_eating_corndog.png
thinkingwat, /emoji/sgsgb/thinkingwat.png
thnk, /emoji/sgsgb/thnk.png
tobdog, /emoji/sgsgb/tobdog.png
todd, /emoji/sgsgb/todd.png
trash, /emoji/sgsgb/trash.png
tuturu, /emoji/sgsgb/tuturu.png
tux, /emoji/sgsgb/tux.png
uwot, /emoji/sgsgb/uwot.png
uwot2, /emoji/sgsgb/uwot2.png
uwot3, /emoji/sgsgb/uwot3.png
vanpeek, /emoji/sgsgb/vanpeek.png

View file

@ -6,7 +6,6 @@ After=network.target postgresql.service
ExecReload=/bin/kill $MAINPID
KillMode=process
Restart=on-failure
StandardOutput=journal
; Name of the user that runs the Pleroma service.
User=pleroma
@ -15,11 +14,9 @@ Environment="MIX_ENV=prod"
; Make sure that all paths fit your installation.
; Path to the home directory of the user running the Pleroma service.
Environment="HOME=/home/pleroma"
Environment="HOME=/var/lib/pleroma"
; Path to the folder containing the Pleroma installation.
WorkingDirectory=/home/pleroma/pleroma
; Path to the environment file. the file contains RELEASE_COOKIE and etc
;EnvironmentFile=/opt/pleroma/config/pleroma.env
WorkingDirectory=/opt/pleroma
; Path to the Mix binary.
ExecStart=/usr/bin/mix phx.server
@ -27,7 +24,7 @@ ExecStart=/usr/bin/mix phx.server
; Use private /tmp and /var/tmp folders inside a new file system namespace, which are discarded after the process stops.
PrivateTmp=true
; The /home, /root, and /run/user folders can not be accessed by this service anymore. If your Pleroma user has its home folder in one of the restricted places, or use one of these folders as its working directory, you have to set this to false.
ProtectHome=false
ProtectHome=true
; Mount /usr, /boot, and /etc as read-only for processes invoked by this service.
ProtectSystem=full
; Sets up a new /dev mount for the process and only adds API pseudo devices like /dev/null, /dev/zero or /dev/random but not physical devices. Disabled by default because it may not work on devices like the Raspberry Pi.

View file

@ -90,17 +90,6 @@ defmodule Pleroma.Constants do
do: ~r/^[^[:cntrl:] ()<>@,;:\\"\/\[\]?=]+\/[^[:cntrl:] ()<>@,;:\\"\/\[\]?=]+(; .*)?$/
)
const(activity_json_canonical_mime_type,
do: "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\""
)
const(activity_json_mime_types,
do: [
"application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"",
"application/activity+json"
]
)
const(upload_object_types, do: ["Document", "Image"])
const(activity_json_canonical_mime_type,

View file

@ -12,13 +12,13 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AttachmentValidator do
@primary_key false
embedded_schema do
field(:id, :string)
field(:type, :string, default: "Link")
field(:type, :string)
field(:mediaType, ObjectValidators.MIME, default: "application/octet-stream")
field(:name, :string)
field(:blurhash, :string)
embeds_many :url, UrlObjectValidator, primary_key: false do
field(:type, :string, default: "Link")
field(:type, :string)
field(:href, ObjectValidators.Uri)
field(:mediaType, ObjectValidators.MIME, default: "application/octet-stream")
field(:width, :integer)

View file

@ -14,10 +14,10 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.QuestionOptionsValidator do
embeds_one :replies, Replies, primary_key: false do
field(:totalItems, :integer)
field(:type, :string, default: "Collection")
field(:type, :string)
end
field(:type, :string, default: "Note")
field(:type, :string)
end
def changeset(struct, data) do

View file

@ -13,8 +13,10 @@ defmodule Pleroma.Web.PleromaAPI.BookmarkFolderView do
%{
id: folder.id |> to_string(),
name: folder.name,
emoji: folder.emoji,
emoji_url: get_emoji_url(folder.emoji)
emoji: get_emoji(folder.emoji),
source: %{
emoji: folder.emoji
}
}
end
@ -22,18 +24,18 @@ defmodule Pleroma.Web.PleromaAPI.BookmarkFolderView do
render_many(folders, __MODULE__, "show.json", Map.delete(opts, :folders))
end
defp get_emoji_url(nil) do
defp get_emoji(nil) do
nil
end
defp get_emoji_url(emoji) do
defp get_emoji(emoji) do
if Emoji.unicode?(emoji) do
nil
emoji
else
emoji = Emoji.get(emoji)
if emoji != nil do
Endpoint.url() |> URI.merge(emoji.file) |> to_string()
Endpoint.url() |> URI.merge(emoji.relative_url) |> to_string()
else
nil
end

View file

@ -33,7 +33,9 @@ defmodule Pleroma.Web.PleromaAPI.BookmarkFolderControllerTest do
"id" => ^folder_id,
"name" => "Bookmark folder",
"emoji" => nil,
"emoji_url" => nil
"source" => %{
"emoji" => nil
}
}
] = result
end
@ -55,24 +57,9 @@ defmodule Pleroma.Web.PleromaAPI.BookmarkFolderControllerTest do
assert %{
"name" => "Bookmark folder",
"emoji" => "📁",
"emoji_url" => nil
} = result
end
test "it creates a bookmark folder with custom emoji", %{conn: conn} do
result =
conn
|> put_req_header("content-type", "application/json")
|> post("/api/v1/pleroma/bookmark_folders", %{
name: "Bookmark folder",
emoji: ":firefox:"
})
|> json_response_and_validate_schema(200)
assert %{
"name" => "Bookmark folder",
"emoji" => ":firefox:",
"emoji_url" => "http://localhost:4001/emoji/Firefox.gif"
"source" => %{
"emoji" => "📁"
}
} = result
end