Parcourir la source

Merge pull request #825 from SamWhited/mod_token_improvements

Mod token improvements
j8
Paweł Domas il y a 9 ans
Parent
révision
9ba62c320b
1 fichiers modifiés avec 10 ajouts et 1 suppressions
  1. 10
    1
      prosody-plugins/mod_auth_token.lua

+ 10
- 1
prosody-plugins/mod_auth_token.lua Voir le fichier

9
 local json = require "cjson";
9
 local json = require "cjson";
10
 local new_sasl = require "util.sasl".new;
10
 local new_sasl = require "util.sasl".new;
11
 local sasl = require "util.sasl";
11
 local sasl = require "util.sasl";
12
+local sha256 = require "util.hashes".sha256;
12
 local timer = require "util.timer";
13
 local timer = require "util.timer";
13
 local token_util = module:require "token/util";
14
 local token_util = module:require "token/util";
14
 
15
 
93
 		local wait, done = async.waiter();
94
 		local wait, done = async.waiter();
94
 		local function cb(content_, code_, response_, request_)
95
 		local function cb(content_, code_, response_, request_)
95
 			content, code = content_, code_;
96
 			content, code = content_, code_;
97
+			if code == 200 or code == 204 then
98
+				cache:set(keyId, content);
99
+			end
96
 			done();
100
 			done();
97
 		end
101
 		end
98
 		module:log("debug", "Fetching public key from: "..asapKeyServer..keyId);
102
 		module:log("debug", "Fetching public key from: "..asapKeyServer..keyId);
99
-		local request = http.request(asapKeyServer..keyId, {
103
+
104
+		-- We hash the key ID to work around some legacy behavior and make
105
+		-- deployment easier. It also helps prevent directory
106
+		-- traversal attacks (although path cleaning could have done this too).
107
+		local request = http.request(asapKeyServer..sha256(keyId)..'.pem', {
100
 			headers = http_headers or {},
108
 			headers = http_headers or {},
101
 			method = "GET"
109
 			method = "GET"
102
 		}, cb);
110
 		}, cb);
111
+
103
 		-- TODO: Is the done() call racey? Can we cancel this if the request
112
 		-- TODO: Is the done() call racey? Can we cancel this if the request
104
 		--       succeedes?
113
 		--       succeedes?
105
 		local function cancel()
114
 		local function cancel()

Chargement…
Annuler
Enregistrer