1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
<?vsp
--
-- $Id: mc.vsp,v 1.1.4.2 2011/08/03 11:42:19 source Exp $
--
-- This file is part of the OpenLink Software Virtuoso Open-Source (VOS)
-- project.
--
-- Copyright (C) 1998-2011 OpenLink Software
--
-- This project is free software; you can redistribute it and/or modify it
-- under the terms of the GNU General Public License as published by the
-- Free Software Foundation; only version 2 of the License, dated June 1991.
--
-- This program 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
-- General Public License for more details.
--
-- You should have received a copy of the GNU General Public License along
-- with this program; if not, write to the Free Software Foundation, Inc.,
-- 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
--
declare sid, mbox, digest, id, mu, rc, webid, accept, fmt any;
rc := 0;
accept := http_request_header_full (lines, 'Accept', '*/*');
fmt := DB.DBA.HTTP_RDF_GET_ACCEPT_BY_Q (accept);
if (fmt = 'application/json')
http_header ('Content-Type: application/json\r\n');
if (not is_https_ctx ())
goto failed;
sid := {?'confirm'};
webid := FOAF_SSL_WEBID_GET ();
rc := WEBID_AUTH_GEN (null, 0, '', 1, 0);
mbox := (select VS_UID from VSPX_SESSION where VS_SID = sid and VS_REALM = 'mv');
if (rc and mbox is not null)
{
digest := sha1_digest (mbox);
id := sprintf ('http://%{URIQADefaultHost}s/mv/data/') || bin2hex (cast (decode_base64 (digest) as varbinary));
mu := 'mailto:' || mbox;
sparql insert into graph iri ('http://localhost/mv') { `iri (?:id)` foaf:primaryTopic `iri(?:webid)` . `iri(?:webid)` foaf:mbox_sha1sum ?:digest . };
if (fmt = 'application/json')
{
http (sprintf ('{"status":"verified", "document_url":"%s"}', id));
return;
}
}
failed:
if (fmt = 'application/json') -- failure
{
http_status_set (400);
http ('{"status":"failed"}');
return;
}
?>
<html>
<head>
<title>Mail confirmation service</title>
</head>
<body>
<?vsp if (rc and mbox is not null) { ?>
<h1>Your e-mail is confirmed</h1><div>The document descriptor can be seen at <a href="<?V id ?>"><?V id ?></a></div>
<?vsp } else { ?>
<h1>You are not authenticated.</h1>
<?vsp }?>
</body>
</html>
|