Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F21841727
http_signature.ex
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
1 KB
Referenced Files
None
Subscribers
None
http_signature.ex
View Options
defmodule
Pleroma.Web.Plugs.HTTPSignaturePlug
do
alias
Pleroma.Web.HTTPSignatures
alias
Pleroma.Web.ActivityPub.Utils
import
Plug.Conn
require
Logger
def
init
(
options
)
do
options
end
def
call
(%{
assigns
:
%{
valid_signature
:
true
}}
=
conn
,
_opts
)
do
conn
end
def
call
(
conn
,
_opts
)
do
user
=
Utils
.
get_ap_id
(
conn
.
params
[
"actor"
])
Logger
.
debug
(
"Checking sig for
#{
user
}
"
)
[
signature
|
_
]
=
get_req_header
(
conn
,
"signature"
)
cond
do
signature
&&
String
.
contains?
(
signature
,
user
)
->
# set (request-target) header to the appropriate value
# we also replace the digest header with the one we computed
conn
=
conn
|>
put_req_header
(
"(request-target)"
,
String
.
downcase
(
"
#{
conn
.
method
}
"
)
<>
"
#{
conn
.
request_path
}
"
)
conn
=
if
conn
.
assigns
[
:digest
]
do
conn
|>
put_req_header
(
"digest"
,
conn
.
assigns
[
:digest
])
else
conn
end
assign
(
conn
,
:valid_signature
,
HTTPSignatures
.
validate_conn
(
conn
))
signature
->
Logger
.
debug
(
"Signature not from actor"
)
assign
(
conn
,
:valid_signature
,
false
)
true
->
Logger
.
debug
(
"No signature header!"
)
conn
end
end
end
File Metadata
Details
Attached
Mime Type
text/x-ruby
Expires
Sat, Dec 27, 11:50 PM (1 d, 12 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
796082
Default Alt Text
http_signature.ex (1 KB)
Attached To
Mode
rPUBE pleroma-upstream
Attached
Detach File
Event Timeline
Log In to Comment