Revision 497f5cbf
b/htest/Test/Ganeti/Confd/Utils.hs | ||
---|---|---|
59 | 59 |
good_timestamp = timestamp + if pm then good_delta else (-good_delta) |
60 | 60 |
bad_delta' = fromIntegral C.confdMaxClockSkew + bad_delta |
61 | 61 |
bad_timestamp = timestamp + if pm then bad_delta' else (-bad_delta') |
62 |
ts_ok = Confd.Utils.parseMessage key signed good_timestamp
|
|
63 |
ts_bad = Confd.Utils.parseMessage key signed bad_timestamp
|
|
62 |
ts_ok = Confd.Utils.parseRequest key signed good_timestamp
|
|
63 |
ts_bad = Confd.Utils.parseRequest key signed bad_timestamp
|
|
64 | 64 |
in printTestCase "Failed to parse good message" |
65 | 65 |
(ts_ok ==? BasicTypes.Ok (encoded, crq)) .&&. |
66 | 66 |
printTestCase ("Managed to deserialise message with bad\ |
b/htools/Ganeti/Confd/Server.hs | ||
---|---|---|
459 | 459 |
responder :: CRef -> S.Socket -> HashKey -> String -> S.SockAddr -> IO () |
460 | 460 |
responder cfgref socket hmac msg peer = do |
461 | 461 |
ctime <- getCurrentTime |
462 |
case parseMessage hmac msg ctime of
|
|
462 |
case parseRequest hmac msg ctime of
|
|
463 | 463 |
Ok (origmsg, rq) -> do |
464 | 464 |
logDebug $ "Processing request: " ++ rStripSpace origmsg |
465 | 465 |
mcfg <- readIORef cfgref |
b/htools/Ganeti/Confd/Utils.hs | ||
---|---|---|
29 | 29 |
module Ganeti.Confd.Utils |
30 | 30 |
( getClusterHmac |
31 | 31 |
, parseSignedMessage |
32 |
, parseMessage
|
|
32 |
, parseRequest
|
|
33 | 33 |
, signMessage |
34 | 34 |
, getCurrentTime |
35 | 35 |
) where |
... | ... | |
67 | 67 |
|
68 | 68 |
-- | Message parsing. This can either result in a good, valid message, |
69 | 69 |
-- or fail in the Result monad. |
70 |
parseMessage :: HashKey -> String -> Integer
|
|
70 |
parseRequest :: HashKey -> String -> Integer
|
|
71 | 71 |
-> Result (String, ConfdRequest) |
72 |
parseMessage hmac msg curtime = do
|
|
72 |
parseRequest hmac msg curtime = do
|
|
73 | 73 |
(salt, origmsg, request) <- parseSignedMessage hmac msg |
74 | 74 |
ts <- tryRead "Parsing timestamp" salt::Result Integer |
75 | 75 |
if abs (ts - curtime) > maxClockSkew |
Also available in: Unified diff