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