2014-01-19 UTC
snarfed joined the channel
# 00:00 bear KartikPrabhu - that's why i'm happy you are making changes - I love that we will be working on making the code better. let me check the PR status now...
# 00:02 Jeena hm brid.gy says my notes have no webmention support, weird, perhaps it is not checking the http header?
# 00:04 snarfed if you click on the "XXX ago" link, it will show you the log
# 00:06 bear KartikPrabhu - I had one merge conflict to clear up but otherwise it was a clean PR - thanks
# 00:09 snarfed oh, boo. it looks like the webmention library i use doesn't look in the http header
# 00:09 Jeena I could add a html <link> but that would be cheating :D
# 00:10 Jeena and I think it is always good to have some people on different edges ;)
# 00:13 snarfed good question! it doesn't. it sends webmentions to any link that accepts them. :P
# 00:14 KartikPrabhu Jeena: when I am parsing your website using the python request module, I get an 'certificate verify failed' error. Any idea how to get around/fix this?
# 00:15 Jeena hm that is odd, because it is a real certificate, not a self signed one
# 00:15 aaronpk Jeena: did you add the certificate chain to your cert if necessary?
# 00:16 Jeena I'm not sure I understand what you're saying
# 00:16 aaronpk sometimes you need to add the intermediate cert to your certificate file
# 00:17 Jeena I got it from StartSSL and I did it how they write on their website
# 00:18 bear KartikPrabhu - you can pass in verify=False to the request to have python-requests not walk the chain
# 00:20 Jeena I have a file called sub.class1.server.ca.pem here, I will check the howto on their website
# 00:20 Jeena the fuck! Some of our services are offline and under maintenance at weekends during the night hours until 07:00 AM GMT. We apologize for the temporary inconvenience and thank you for your understanding.
# 00:21 bear yes, but… there are some bugs with older versions of both python-requests *and* openssl
# 00:21 aaronpk ok, I did include the intermediate cert for indiewebcamp.com, so it might not be a problem with jeena's server then
# 00:21 bear that cause them to improperly reference cached cert chain from the OS
# 00:22 Jeena yeah I kind of remember that I added one file to the other or something
# 00:22 bear and then I would love to see if your code works against indiewebcamp.com and also bear.im
# 00:23 snarfed bear, it sounds like you're familiar with python-requests? i'm trying to figure out how it handles multiple response headers with the same name. any idea?
# 00:23 bear that is memory speaking - working to verify my brain
# 00:24 KartikPrabhu bear, Jenna, aaronpk: it works with verify=False. surely python-requests--
# 00:24 Jeena I was thinking about disabling cert verrification in my code too but decided that I would do it only if it is a real problem some day in the future
# 00:24 bear we need to see if verify=true works on the other two
# 00:26 bear ok, so let's see if that is the same when jenna adds the intermediate cert
# 00:26 Jeena but I think I added it, and aaronpk added it to indiewebcamp too
# 00:26 bear notes the he also has a StartSSL cert
# 00:27 Jeena sadly the StartSSL FAQ where it says how I did it is down until 07:00 AM GMT
# 00:27 Jeena class 1 is that we only gave the email address
# 00:28 aaronpk so it could be that the root cert for the class 1 cert just isn't in KartikPrabhu's system
# 00:29 bear I would suggest that is ok only for webmention code
icco joined the channel
# 00:29 aaronpk you shouldn't really get in the habit of not verifying SSL certs
# 00:29 Jeena or first try it with true, when it fails retry it with fals?
# 00:30 bear KartikPrabhu - use verify=false for now and file a bug against our repo
# 00:30 aaronpk there aren't really any security risks in not verifying the SSL cert for a webmention I suppose
# 00:30 bear i'll work up a test using python-requests and start to find out why
# 00:31 KartikPrabhu bear: cool. Will also try adding finding a webmention end-point discovery in link header
# 00:31 bear i'm looking at sslabs.com results for jeena.net and while the cert chain looks good there are other issues common with self-hosted sites :)
# 00:32 bear what web server are you using? you can find good info on the indieweb site for both apache and nginx
# 00:33 bear yea, the nginx section covers a lot of ground and I look forward to any questions you may have so I can fix them on that page
# 00:35 Jeena Ok, I already saw my domain on that page, just didn't understand anything and assumed it was because of the fact that it was class1
icco joined the channel
# 00:42 KartikPrabhu rel="webmention"' format? Can I just do simple string parsing to get the endpoint?
# 00:45 snarfed KartikPrabhu: standard enough. the spec does say it's that format. also only a few people use the header
# 00:50 bear you went from an F earlier to an A now - again, nicely done!
# 00:50 snarfed jeena, just fyi, i pushed a fix to bridgy, it's sending you webmentions now
# 00:50 KartikPrabhu Jeena: and I am not getting the SSL error thing now. success all over
# 00:51 Jeena ah snarfed but it looks like my server crashed hm, will have a look at it
# 00:52 KartikPrabhu aaronpk: now only indiewebcamp gives the SSL error. Jeena's site seems to be fixed
icco, pfenwick, j12t and bnvk joined the channel
# 01:16 KartikPrabhu bear: new PR with verify=False thing, and endpoint discovery in link headers for ronkyuu
snarfed joined the channel
# 01:18 snarfed Jeena: thanks for filling that issue! I'll fix soon. hope that wasn't breaking your server!
# 01:19 Jeena hehe it was actually but I just need to handle stuff like that, I think I will try to get some mictoformat data out of it
# 01:49 Jeena you know, JSON would be so much easier to handle, I can't get my HTML parser to find <meta name='description'> vs. Description vs DESCRIPTION, etc.
# 01:50 aaronpk you'd have the same problem with JSON (description vs Description vs DESCRIPTION)
# 01:51 aaronpk I use the php-mf2 parser, and I get back a native object with the parsed results. I don't have to think about HTML parsing at all.
# 01:51 Jeena no because this would have been defined somewhere, the html world is just the wild west and you find all of those
# 01:52 Jeena I can use xpath for querying, so in theory I also get a native object, but everything looks like this:
# 01:52 Jeena parser.at("meta[@title='description'|meta[@title='Description']|meta[@title='DESCRIPTION']")
# 01:53 aaronpk you shouldn't need to think about parsing HTML if your'e using a library like php-mf2
# 01:53 aaronpk use a library that does all the dirty work and returns the structure of the page
# 01:55 aaronpk chances are if you're struggling with it, then someone else will be struggling with it in the future too
# 01:56 Jeena but php-mf2 gives you what? array("title" => "Description") I assume? how do you query something like that then?
# 01:57 Jeena it looks like in mf2 you also need to use a xpath query for querying for stuff like that
# 03:07 etymancer any guidelines on photo size for h-card?
# 03:12 Loqi Ok, I'll tell them that when I see them next
# 03:13 etymancer is tempted to try to (bang)tell Loqi something...
# 03:14 etymancer especially something with a (bang)tell $botname in it
# 03:14 etymancer does this make me a bad person?
# 03:20 etymancer also web sign-in damn well rocks.
KevinMarks2 joined the channel
# 03:41 etymancer oh, okay, I have to
# 03:41 etymancer !tell Loqi !tell Loqi you're a rad bot
# 03:41 Loqi Ok, I'll tell them that when I see them next
# 03:41 etymancer hm. unsatisfying.
scor joined the channel
KartikPrabhu joined the channel
scor joined the channel
# 05:56 KartikPrabhu aaronpk: when do you send a 400 status code for incoming webmentions?
KartikPrabhu joined the channel
# 07:01 KevinMarks heh etymancer - I remember bot shenanigans like that with jibot
scor, srushe_, dvirsky_, XgFgX, igalic, hallettj, bear, tantek, bear_ and dvirsky joined the channel
# 09:09 bear i'm trying to get an older microformat parser to grok mf2 and i've run headlong into long forgotten xpath query knowledge
squeakytoy, schalkneethling, glennjones and stefek99 joined the channel
# 09:56 stefek99 Hello - what was the name of the tools that integrates all post in social media (app.net, vine, instagram, twitter, G+) into one page?
# 09:56 stefek99 I remember it was active at IndieWebCamp in Brighton
# 09:56 stefek99 Now at #HackHumanity event and I would like to generate similar page (just forgot the name)
pfenwick joined the channel
# 09:57 stefek99 Can you help me with that? Searches for "social media tag aggregator" leads to thousand of non-meaningful results... (thanks)
# 10:00 stefek99 [re-post] Trying to find a tool that aggregate social media tags from the event... Kind of a >>storify<< but different...
schalkneethling joined the channel
# 10:08 stefek99 now improved my keyword accuracy for "social media aggregator" :)
# 10:10 stefek99 (easy, kind of obcious once you know it)
# 10:10 stefek99 Once again talking to oneself was so helpful (rubber duck method)
# 10:16 stefek99 Thanks, need to go! :)
# 10:17 KevinMarks I built the first one of those at technorati almost exactly 9 years ago
melvster, eschnou, glennjones, Zegnat, Jestre and pasevin joined the channel
marjolein, bnvk, eschnou, voxpelli, glennjones, CheckDavid and skinny joined the channel
CheckDavid and snarfed joined the channel
ix_, friedcell, scor, pfefferle, glennjones, voxpelli and snarfed joined the channel
barnabywalters joined the channel
pasevin joined the channel
snarfed, melvster and natwelch joined the channel
tantek, pasevin, iangreenleaf and caseorganic joined the channel
# 18:28 Loqi Ok, I'll tell them that when I see them next
# 18:29 neuro` tantek: nice new avatar on Twitter, but the resolution is very low on my client (low like "oh, cool pixel art")
# 18:30 tantek neuro` Twitter is lower resolution than my own site. In general ;)
# 18:30 tantek It's inevitable that silos will have downlevel content compared to indieweb sites.
# 18:32 neuro` tantek: not sure how Twitter resized it, lots of people I follow have high def avatar on twitter.
# 18:34 tantek but do they have their own websites? when silos are mere POSSE copies, they can be expected to be lower resolution and should be treated as such.
voxpelli joined the channel
caseorganic joined the channel
glennjones, bnvk, KevinMarks2 and snarfed joined the channel
j12t joined the channel
# 20:10 aaronpk KartikPrabhu: I only send a 400 for seriously malformed requests, like missing a source parameter, or when the URL parameters aren't actually URLs
# 20:18 KartikPrabhu aaronpk: Do you check if sourceURL can be retrieved and send 400 if not?
# 20:18 KartikPrabhu I am sending webmentions automatically on saving a new post and it seems that the webmention is sent before the article even has a URL
# 20:26 aaronpk you probably shouldn't send a webmention until your URL actually exists
# 20:27 KartikPrabhu yes! But the only way I have figured out to do it in Django is to modify the save method. So the very first time it is executed there is no actual post! It does work on re-save though :P
# 20:27 aaronpk ah, crazy! there isn't a post-save hook or something?
# 20:28 KartikPrabhu but tracking this down took a lot of work! I was very confused fora while that it didnt work only on first save :)
# 20:31 KartikPrabhu there is a post_save signal! I just didn't know what word to look for. Thanks aaronpk
bnvk, scor and skinny joined the channel
# 21:09 barnabywalters aaronpk: just started implementing indieauth stuff by trying to get equivalent behaviour to current approach using new flow
CheckDavid joined the channel
# 21:11 barnabywalters e.g. someone might want to authenticate to see some private content without authorising my server to post on their behalf
# 21:12 barnabywalters for the moment it’s probably safe to assume that if the person has a micropub endpoint (i.e. is you) they want to request the post scope, but going forward that’s going to be a UI issue we have to figure out
# 21:16 aaronpk I think you can probably infer the intended scope based on the page they are signing in from
# 21:17 barnabywalters the awesomesauce solution would be for the app to pass a list of scopes it supports to the authorisation endpoint and let the user choose what they want to give
# 21:17 aaronpk sort of. I know Github is moving to that model though.
# 21:18 barnabywalters observation: the new flow is significantly more complicated than the old one, which for the limited case of just signing in was amazingly simple. presumably the old flow will still continue to be “officially” supported?
# 21:19 aaronpk the old flow did not allow a website to specify its authorization endpoint
# 21:19 aaronpk so implementations hard-coded to indieauth.com, which is not idael
# 21:20 aaronpk so I would be fine to specify a simplified flow for identification (instead of identification plus authorization) but it would still require delegating to an authorization server
# 21:20 barnabywalters but not only is that a sane default, just discovering what authorisation endpoint the user wants to use and then completing the old flow as before is still easier than the complete new flow
CheckDavid joined the channel
# 21:21 aaronpk yes, you don't need an access token for identification
# 21:21 barnabywalters aaronpk: yep that sounds like a good plan — keep a simple yet distributed flow for the common case of just identification, and then have the new flow for more complex stuff
# 21:21 aaronpk I just want to make sure nobody is hard-coding to indieauth.com
# 21:22 aaronpk you should stick a random number in there for security
# 21:23 barnabywalters but I don’t need to store it because it’ll be passed to the authorisation endpoint, right?
# 21:24 aaronpk you will need to store it, which is where the security comes in. you generate a random number, store it in a session somewhere, then you use it when you want to get a token.
# 21:25 aaronpk if you want to take a shortcut for now, you can just leave it blank, cause blank=blank. that just means that if someone intercepts the auth code, they can steal the code and generate a token.
# 21:28 aaronpk yes! p.s. an encrypted cookie is basically what I was talking about with my JWT-encoded access tokens
# 21:35 barnabywalters where would you recommend storing the access token? in an encrypted cookie or on disk somewhere?
# 21:36 aaronpk $token = JWT::encode($token_data, $encryptionKey);
# 21:36 aaronpk when a request comes in with an access token, I decrypt it, so if it's a bogus token it won't decrypt properly
eschnou joined the channel
# 21:37 aaronpk you're going to have to decrypt it to put the plaintext token in the form though
# 21:44 barnabywalters ah I love having an encryption service set up so all I have to do to encrypt/decrypt is $app['encryption']->en/decrypt($value)
# 21:58 bear I logged into the wiki using site+persona
# 22:00 aaronpk bear: barnabywalters is testing out the new indieauth+authorization flow
# 22:00 aaronpk barnabywalters: so you did end up getting an authorization code?
# 22:01 aaronpk I made it return it in the parameter "token" if a client_id is not specified, for backwards compatibility
snarfed joined the channel
# 22:04 barnabywalters twitter failed (same no response code issue) then disappeared despite not rescanning
lukebrooker joined the channel
# 22:09 aaronpk but I'm confused why that would cause the issues that you're seeing
# 22:09 barnabywalters but wait, this means that everyone who wants to log into my site (e.g. to see private content) needs to build a token endpoint
# 22:09 aaronpk if they want to use your site to post to theirs, then yes
# 22:09 aaronpk which is why we need to formalize the identification-only flow
# 22:09 barnabywalters unless I fall back to the old flow if no token endpoint can be discovered for their me URL
EHLOVader and tantek joined the channel
# 22:11 EHLOVader aaronpk, trying to use your signing thing for a wildcard... do I have to fill in all the information?
# 22:11 EHLOVader The stateOrProvinceName field needed to be supplied and was missing
# 22:12 aaronpk hm yeah you might need to include that value then
# 22:13 aaronpk barnabywalters: you should fall back to the existing flow if there is no authorization endpoint found. if there is an authorization endpoint but no token endpoint, then we need to figure out how to handle that
# 22:15 EHLOVader I left it blank but didn't know, openssl kept asking me for one
# 22:16 aaronpk ah! if there is no token endpoint, then you should attempt to verify the auth code with the authorization server. (that is basically what the existing flow does)
# 22:18 barnabywalters we should write the spec (or other documentation) in such a way that it’s a logical progression from the simple flow to the complex flow
# 22:24 aaronpk oh yeah. the method parses it and returns as an array
howardshippin and KevinMarks2 joined the channel
# 22:34 barnabywalters aaronpk: okay now I’m getting No micro pub endpoint error on the client, so I assume everything up to that point is working fine
# 22:35 barnabywalters still getting blank page error when trying to sign in to my local instance though
# 22:38 aaronpk can you send me the authorization URL you are constructing?
# 22:40 aaronpk i might be able to re-create the problem on my local copy of indieauth.com that way
snarfed joined the channel
# 22:41 barnabywalters hm I wonder if it’s those crazy bytes in the state which are causing the problem
# 22:50 barnabywalters aaronpk: one really cool bit of discovery to add would be discovering app information
# 22:51 aaronpk yep! that's part of the reason the client_id is a URL
# 22:51 aaronpk so the auth server can fetch an h-card or something that describes the app
iangreenleaf joined the channel
# 23:15 aaronpk ok my micropub endpoint should accept an "access_token" parameter now
# 23:21 barnabywalters under what conditions might the token array be empty? because that’s what’s happening
# 23:21 aaronpk the token array after calling IndieAuth\Client::getAccessToken?
# 23:22 aaronpk probably if it couldn't decode the form-encoded string
# 23:23 barnabywalters yep, I see where the error was now — I wasn’t constructing the response properly
# 23:23 aaronpk that should just be a matter of changing this to $auth = false
KartikPrabhu joined the channel
# 23:30 aaronpk probably better to be fully qualified, so that your http pages can specify the https token endpoint once you get https set up
# 23:31 aaronpk but technically you'd need to make sure you're setting the cookie https-only so the browser doesn't send cookies in the clear
# 23:31 barnabywalters okay, route matching correctly now but token still broken. probably something on my side
aaronpk_ and j12t joined the channel