diff -r c437d4824174 openidurl/openidurl.module --- a/openidurl/openidurl.module Sun Oct 26 13:33:17 2008 -0400 +++ b/openidurl/openidurl.module Sun Oct 26 21:36:41 2008 +0000 @@ -31,7 +31,7 @@ $server = variable_get('openidurl_server', NULL); $delegate = variable_get('openidurl_delegate', NULL); $xrds = variable_get('openidurl_xrds', NULL); - _openidurl_set_html_head($server, $delegate, $xrds); + _openidurl_response($server, $delegate, $xrds); } } else { @@ -84,8 +84,48 @@ '#default_value' => variable_get('openidurl_xrds', ''), '#description' => t("This is the OpenID XRDS location (e.g. http://yourname.myopenid.com/xrds)."), ); + $form['openidurl_emitxrds'] = array( + '#type' => 'checkbox', + '#title' => t('Emit XRDS Yadis Response'), + '#default_value' => variable_get('openidurl_emitxrds', false), + '#description' => t("Respond to XRDS requests with a Yadis document including the OpenID information above. You probably want to turn this on, UNLESS your drupal site is supporting XRDS requests in a more general way."), + ); return system_settings_form($form); }; + +function _openidurl_response($server = NULL, $delegate = NULL, $xrds = NULL) { + if (variable_get('openidurl_emitxrds', false)) { + header('Vary: Accept'); + if (stristr($_SERVER['HTTP_ACCEPT'], 'application/xrds+xml')) { + header('Content-Type: application/xrds+xml'); + print _openidurl_yadis($server, $delegate, $xrds); + exit(); + } + } + _openidurl_set_html_head($server, $delegate, $xrds); +} + +function _openidurl_yadis($server = NULL, $delegate = NULL, $xrds = NULL) { + return << + + + + http://openid.net/signon/1.0 + $server + $delegate + + + http://specs.openid.net/auth/2.0/signon + $server + $delegate + + + + +EOF; +} /** * Valid permissions for this module