Mercurial > prosody-modules
comparison mod_pubsub_feed/mod_pubsub_feed.lua @ 324:100b3ad2e10c
mod_pubsub_feed: Fix verify_token checking.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Mon, 31 Jan 2011 23:32:25 +0100 |
| parents | 433bf7dc3e7a |
| children | 4e50e591a7fc |
comparison
equal
deleted
inserted
replaced
| 323:433bf7dc3e7a | 324:100b3ad2e10c |
|---|---|
| 60 | 60 |
| 61 local response_codes = { | 61 local response_codes = { |
| 62 ["200"] = "OK"; | 62 ["200"] = "OK"; |
| 63 ["202"] = "Accepted"; | 63 ["202"] = "Accepted"; |
| 64 ["400"] = "Bad Request"; | 64 ["400"] = "Bad Request"; |
| 65 ["403"] = "Forbidden"; | |
| 65 ["404"] = "Not Found"; | 66 ["404"] = "Not Found"; |
| 66 ["501"] = "Not Implemented"; | 67 ["501"] = "Not Implemented"; |
| 67 }; | 68 }; |
| 68 | 69 |
| 69 local function http_response(code, headers, body) | 70 local function http_response(code, headers, body) |
| 161 end | 162 end |
| 162 return refresh_interval; | 163 return refresh_interval; |
| 163 end | 164 end |
| 164 | 165 |
| 165 function subscribe(feed) | 166 function subscribe(feed) |
| 166 local token = uuid(); | 167 feed.token = uuid(); |
| 167 local _body, body = { | 168 local _body, body = { |
| 168 ["hub.callback"] = "http://"..module.host..":5280/callback?node=" .. urlencode(feed.node); --FIXME figure out your own hostname reliably? | 169 ["hub.callback"] = "http://"..module.host..":5280/callback?node=" .. urlencode(feed.node); --FIXME figure out your own hostname reliably? |
| 169 ["hub.mode"] = "subscribe"; --TODO unsubscribe | 170 ["hub.mode"] = "subscribe"; --TODO unsubscribe |
| 170 ["hub.topic"] = feed.url; | 171 ["hub.topic"] = feed.url; |
| 171 ["hub.verify"] = "async"; | 172 ["hub.verify"] = "async"; |
| 172 ["hub.verify_token"] = token; | 173 ["hub.verify_token"] = feed.token; |
| 173 --["hub.secret"] = ""; -- TODO http://pubsubhubbub.googlecode.com/svn/trunk/pubsubhubbub-core-0.3.html#authednotify | 174 --["hub.secret"] = ""; -- TODO http://pubsubhubbub.googlecode.com/svn/trunk/pubsubhubbub-core-0.3.html#authednotify |
| 174 --["hub.lease_seconds"] = ""; | 175 --["hub.lease_seconds"] = ""; |
| 175 }, { }; | 176 }, { }; |
| 176 for name, value in pairs(_body) do | 177 for name, value in pairs(_body) do |
| 177 t_insert(body, { name = name, value = value }); | 178 t_insert(body, { name = name, value = value }); |
| 209 -- Would this work for unsubscribe? | 210 -- Would this work for unsubscribe? |
| 210 -- Also, if feed.subscription is changed here, | 211 -- Also, if feed.subscription is changed here, |
| 211 -- it would probably invalidate the subscription | 212 -- it would probably invalidate the subscription |
| 212 -- when/if the hub asks if it should be renewed | 213 -- when/if the hub asks if it should be renewed |
| 213 end | 214 end |
| 214 if query["hub.verify"] ~= feed.token then | 215 if query["hub.verify_token"] ~= feed.token then |
| 215 module:log("debug", "Invalid verify_token: %s", tostring(query["hub.verify"])) | 216 module:log("debug", "Invalid verify_token: %s", tostring(query["hub.verify_token"])) |
| 216 return http_response(401) | 217 return http_response(403) |
| 217 end | 218 end |
| 218 module:log("debug", "Confirming %s request to %s", feed.subscription, feed.url) | 219 module:log("debug", "Confirming %s request to %s", feed.subscription, feed.url) |
| 219 return http_response(200, nil, query["hub.challenge"]) | 220 return http_response(200, nil, query["hub.challenge"]) |
| 220 end | 221 end |
| 221 return http_response(400); | 222 return http_response(400); |
