From e99b1d1949c6a140895f8f10c4863ec41528cccf Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Wed, 9 Mar 2011 20:05:30 +1300 Subject: Stub out refresh for server-side replay. --- libmproxy/proxy.py | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'libmproxy/proxy.py') diff --git a/libmproxy/proxy.py b/libmproxy/proxy.py index 48884c09..3a3db2e7 100644 --- a/libmproxy/proxy.py +++ b/libmproxy/proxy.py @@ -5,7 +5,8 @@ Development started from Neil Schemenauer's munchy.py """ -import sys, os, string, socket, urlparse, re, select, copy, base64 +import sys, os, string, socket, urlparse, re, select, copy, base64, time +from email.utils import parsedate_tz, formatdate, mktime_tz import shutil, tempfile import optparse, SocketServer, ssl import utils, controller @@ -280,6 +281,30 @@ class Response(controller.Msg): controller.Msg.__init__(self) self.replay = False + def refresh(self, now=None): + """ + This fairly complex and heuristic function refreshes a server + response for replay. + + - It adjusts date, expires and last-modified headers. + - It adjusts cookie expiration. + """ + if not now: + now = time.time() + delta = now - self.timestamp + refresh_headers = [ + "date", + "expires", + "last-modified", + ] + for i in refresh_headers: + if i in self.headers: + d = parsedate_tz(self.headers[i][0]) + new = mktime_tz(d) + delta + self.headers[i] = [formatdate(new)] + for i in self.headers.get("set-cookie", []): + pass + def set_replay(self): self.replay = True -- cgit v1.2.3