cprintf("000\n");
}
-
+#if 0
/*
* Attempt to register (populate the vCard) the currently-logged-in user
* using the data from Simple Registration Extension, if present.
}
vcard_free(v);
}
+#endif
/*
if (CC->logged_in) {
attach_openid(&CC->user, oiddata->claimed_id);
if (oiddata->sreg_keys != NULL) {
- populate_vcard_from_sreg(oiddata->sreg_keys);
+ /* populate_vcard_from_sreg(oiddata->sreg_keys); */
}
}
snprintf(new_password, sizeof new_password, "%08lx%08lx", random(), random());
CtdlSetPassword(new_password);
attach_openid(&CC->user, claimed_id);
- populate_vcard_from_sreg(sreg_keys);
+ /* populate_vcard_from_sreg(sreg_keys); */
return(0);
}
struct xrds xrds;
int return_value = 0;
- syslog(LOG_DEBUG,
- " --- XRDS DOCUMENT BEGIN --- \n%s\n --- XRDS DOCUMENT END ---",
- ChrPtr(ReplyBuf)
- );
+ /* syslog(LOG_DEBUG, "XRDS document:\n%s\n", ChrPtr(ReplyBuf)); */
memset(&xrds, 0, sizeof (struct xrds));
xrds.selected_service_priority = INT_MAX;
RedirectUrl = NewStrBufDup(oiddata->op_url);
- StrBufAppendBufPlain(RedirectUrl, HKEY("?openid.ns=http:%2F%2Fspecs.openid.net%2Fauth%2F2.0"), 0);
+ StrBufAppendBufPlain(RedirectUrl, HKEY("?openid.ns="), 0);
+ StrBufUrlescAppend(RedirectUrl, NULL, "http://specs.openid.net/auth/2.0");
StrBufAppendBufPlain(RedirectUrl, HKEY("&openid.mode=checkid_setup"), 0);
StrBufAppendBufPlain(RedirectUrl, HKEY("&openid.identity="), 0);
StrBufUrlescAppend(RedirectUrl, oiddata->claimed_id, NULL);
+ /* return_to completes the round trip */
StrBufAppendBufPlain(RedirectUrl, HKEY("&openid.return_to="), 0);
StrBufUrlescAppend(RedirectUrl, return_to, NULL);
-/*
- We probably have to do something here to set up Simple Registration
- StrBufAppendBufPlain(RedirectUrl, HKEY("&openid.sreg.optional="), 0);
- StrBufUrlescAppend(RedirectUrl, NULL, "nickname,email,fullname,postcode,country,dob,gender");
-*/
+ /* Attribute Exchange
+ * See:
+ * http://openid.net/specs/openid-attribute-exchange-1_0.html
+ * http://code.google.com/apis/accounts/docs/OpenID.html#endpoint
+ * http://test-id.net/OP/AXFetch.aspx
+ */
+
+ StrBufAppendBufPlain(RedirectUrl, HKEY("&openid.ns.ax="), 0);
+ StrBufUrlescAppend(RedirectUrl, NULL, "http://openid.net/srv/ax/1.0");
+
+ StrBufAppendBufPlain(RedirectUrl, HKEY("&openid.ax.mode=fetch_request"), 0);
+
+ StrBufAppendBufPlain(RedirectUrl, HKEY("&openid.ax.required=firstname,lastname,friendly,nickname"), 0);
+
+ StrBufAppendBufPlain(RedirectUrl, HKEY("&openid.ax.type.firstname="), 0);
+ StrBufUrlescAppend(RedirectUrl, NULL, "http://axschema.org/namePerson/first");
+
+ StrBufAppendBufPlain(RedirectUrl, HKEY("&openid.ax.type.lastname="), 0);
+ StrBufUrlescAppend(RedirectUrl, NULL, "http://axschema.org/namePerson/last");
+
+ StrBufAppendBufPlain(RedirectUrl, HKEY("&openid.ax.type.friendly="), 0);
+ StrBufUrlescAppend(RedirectUrl, NULL, "http://axschema.org/namePerson/friendly");
- syslog(LOG_DEBUG, "\033[36m%s\033[0m", ChrPtr(RedirectUrl));
+ StrBufAppendBufPlain(RedirectUrl, HKEY("&openid.ax.type.nickname="), 0);
+ StrBufUrlescAppend(RedirectUrl, NULL, "http://axschema.org/namePerson/nickname");
+
+ syslog(LOG_DEBUG, "OpenID: redirecting client to %s", ChrPtr(RedirectUrl));
cprintf("%d %s\n", CIT_OK, ChrPtr(RedirectUrl));
}
char thiskey[1024];
char thisdata[1024];
HashList *keys = NULL;
+ const char *Key;
+ void *Value;
ctdl_openid *oiddata = (ctdl_openid *) CC->openid_data;
if (oiddata == NULL) {
len = sizeof(thiskey) - 1;
}
extract_token(thisdata, buf, 1, '|', sizeof thisdata);
- syslog(LOG_DEBUG, "%s: ["SIZE_T_FMT"] %s", thiskey, strlen(thisdata), thisdata);
Put(keys, thiskey, len, strdup(thisdata), NULL);
}
CURLFORM_END
);
-/*
-
-FIXME put the rest of this crap in here
-
- if (GetHash(keys, k_keyname, strlen(k_keyname), (void *) &k_value)) {
- snprintf(k_o_keyname, sizeof k_o_keyname, "openid.%s", k_keyname);
- curl_formadd(&formpost, &lastptr,
- CURLFORM_COPYNAME, k_o_keyname,
- CURLFORM_COPYCONTENTS, k_value,
- CURLFORM_END);
- syslog(LOG_DEBUG, "%25s : %s", k_o_keyname, k_value);
- }
-*/
+ HashPos *HashPos = GetNewHashPos(keys, 0);
+ while (GetNextHashPos(keys, HashPos, &len, &Key, &Value) != 0) {
+ syslog(LOG_DEBUG, "%s = %s", Key, (char *)Value);
+ if (strcasecmp(Key, "mode")) {
+ char k_o_keyname[1024];
+ snprintf(k_o_keyname, sizeof k_o_keyname, "openid.%s", (const char *)Key);
+ curl_formadd(&formpost, &lastptr,
+ CURLFORM_COPYNAME, k_o_keyname,
+ CURLFORM_COPYCONTENTS, (char *)Value,
+ CURLFORM_END
+ );
+ }
+ }
curl = ctdl_openid_curl_easy_init(errmsg);
curl_easy_setopt(curl, CURLOPT_URL, ChrPtr(oiddata->op_url));
curl_easy_cleanup(curl);
curl_formfree(formpost);
- /* syslog(LOG_DEBUG, "\033[36m --- VALIDATION REPLY ---\n%s\033[0m", ChrPtr(ReplyBuf)); */
-
+ /* syslog(LOG_DEBUG, "Validation reply: \n%s", ChrPtr(ReplyBuf)); */
if (cbmstrcasestr(ChrPtr(ReplyBuf), "is_valid:true") == NULL) {
oiddata->verified = 0;
}
else {
cprintf("\n");
}
- syslog(LOG_DEBUG, "The desired Simple Registration name is already taken.");
+ syslog(LOG_DEBUG, "The desired display name is already taken.");
}
}
}