blob: 162c1a16d6f40c19566f23a2e6610ea1456e6a5b [file] [log] [blame]
#
# Check signatures for validity using gpg on the server
#
class CheckSignature < Vue
def initialize
@signature = nil
@checked = nil
end
def render
if @signature
_div.alert @alert, class: @flag
end
end
def mounted()
@signature = CheckSignature.find(decodeURIComponent(@@selected), @@attachments)
if @signature and @signature != @checked
@flag = 'alert-info'
@alert = 'checking signature'
data = {
message: window.parent.location.pathname,
attachment: @@selected,
signature: @signature
}
HTTP.post('../../actions/check-signature', data).then {|response|
output = response.output + response.error
if output.include? 'Good signature'
@flag = 'alert-success'
else
@flag = 'alert-danger'
end
@alert = output
@checked = @signature
}.catch {|error|
@alert = error
@flag = 'alert-warning'
}
end
end
# find signature file that matches the selected attachment from the list
# of attachments
def self.find(selected, attachments)
return unless selected
# first look for a signature that matches this selected file
signature = attachments.find {|attachment|
attachment == selected + '.asc' or attachment == selected + '.sig'
}
# if no exact match, look closer at the other attachment if there
# are exactly two attachments
if not signature and attachments.length == 2
signature = attachments.find {|attachment| attachment != selected}
unless signature.end_with? '.asc' or signature.end_with? '.sig'
signature = nil
end
end
return signature
end
end