From e178d18fb33701e78ed7ebb232b1e6bc45f6d5fc Mon Sep 17 00:00:00 2001 From: Phil <phil@secdev.org> Date: Sun, 31 Aug 2008 00:33:01 +0200 Subject: [PATCH] Moved session manipulation functions to main.py --- scapy/main.py | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++ scapy/utils.py | 45 +++-------------------------------------- 2 files changed, 57 insertions(+), 42 deletions(-) diff --git a/scapy/main.py b/scapy/main.py index 56dd92b6..616a9a8f 100644 --- a/scapy/main.py +++ b/scapy/main.py @@ -63,6 +63,60 @@ def load_layer(name): +############################## +## Session saving/restoring ## +############################## + + +def save_session(fname=None, session=None, pickleProto=-1): + if fname is None: + fname = conf.session + if not fname: + conf.session = fname = os.tempnam("","scapy") + log_interactive.info("Use [%s] as session file" % fname) + if session is None: + session = __builtin__.__dict__["scapy_session"] + + to_be_saved = session.copy() + + if to_be_saved.has_key("__builtins__"): + del(to_be_saved["__builtins__"]) + + for k in to_be_saved.keys(): + if type(to_be_saved[k]) in [types.TypeType, types.ClassType, types.ModuleType]: + log_interactive.error("[%s] (%s) can't be saved." % (k, type(to_be_saved[k]))) + del(to_be_saved[k]) + + try: + os.rename(fname, fname+".bak") + except OSError: + pass + f=gzip.open(fname,"wb") + cPickle.dump(to_be_saved, f, pickleProto) + f.close() + +def load_session(fname=None): + if fname is None: + fname = conf.session + try: + s = cPickle.load(gzip.open(fname,"rb")) + except IOError: + s = cPickle.load(open(fname,"rb")) + scapy_session = __builtin__.__dict__["scapy_session"] + scapy_session.clear() + scapy_session.update(s) + +def update_session(fname=None): + if fname is None: + fname = conf.session + try: + s = cPickle.load(gzip.open(fname,"rb")) + except IOError: + s = cPickle.load(open(fname,"rb")) + scapy_session = __builtin__.__dict__["scapy_session"] + scapy_session.update(s) + + ################ ##### Main ##### ################ diff --git a/scapy/utils.py b/scapy/utils.py index c19bf724..99473bf6 100644 --- a/scapy/utils.py +++ b/scapy/utils.py @@ -372,48 +372,9 @@ class Enum_metaclass(type): - -############################## -## Session saving/restoring ## -############################## - - -def save_session(fname, session=None, pickleProto=-1): - if session is None: - session = scapy_session - - to_be_saved = session.copy() - - if to_be_saved.has_key("__builtins__"): - del(to_be_saved["__builtins__"]) - - for k in to_be_saved.keys(): - if type(to_be_saved[k]) in [types.TypeType, types.ClassType, types.ModuleType]: - log_interactive.error("[%s] (%s) can't be saved." % (k, type(to_be_saved[k]))) - del(to_be_saved[k]) - - try: - os.rename(fname, fname+".bak") - except OSError: - pass - f=gzip.open(fname,"wb") - cPickle.dump(to_be_saved, f, pickleProto) - f.close() - -def load_session(fname): - try: - s = cPickle.load(gzip.open(fname,"rb")) - except IOError: - s = cPickle.load(open(fname,"rb")) - scapy_session.clear() - scapy_session.update(s) - -def update_session(fname): - try: - s = cPickle.load(gzip.open(fname,"rb")) - except IOError: - s = cPickle.load(open(fname,"rb")) - scapy_session.update(s) +################### +## Object saving ## +################### def export_object(obj): -- GitLab