diff --git a/scapy/config.py b/scapy/config.py index fc39b826eeb042f389c97b48020e6ce1db9e214a..260019bd3991d1b02bdbb8147f5bc39059a7e667 100644 --- a/scapy/config.py +++ b/scapy/config.py @@ -7,12 +7,13 @@ import os,time from data import * import base_classes import arch,themes +from error import log_scapy ############ ## Config ## ############ -class ConfClass: +class ConfClass(object): def configure(self, cnf): self.__dict__ = cnf.__dict__.copy() def __repr__(self): @@ -170,6 +171,13 @@ class NetCache: return "\n".join(repr(c) for c in self._caches_list) +class LogLevel(object): + def __get__(self, obj, otype): + return obj._logLevel + def __set__(self,obj,val): + log_scapy.setLevel(val) + obj._logLevel = val + class Conf(ConfClass): """This object contains the configuration of scapy. @@ -203,6 +211,7 @@ extensions_paths: path or list of paths where extensions are to be looked for stealth = "not implemented" iface = arch.get_working_if() layers = LayersList() + logLevel = LogLevel() checkIPID = 0 checkIPsrc = 1 checkIPaddr = 1 @@ -244,5 +253,6 @@ extensions_paths: path or list of paths where extensions are to be looked for conf=Conf() +conf.logLevel=30 # 30=Warning diff --git a/scapy/main.py b/scapy/main.py index cd83cf31ed40af61eb2a28377afc77b297b8f9b5..335423ed60ba1f521d7ce074a8d432569efa2b72 100644 --- a/scapy/main.py +++ b/scapy/main.py @@ -81,11 +81,13 @@ def scapy_write_history_file(readline): warning("Cound not write history to [%s]. Discarded" % tmp) -def interact(mydict=None,argv=None,mybanner=None,loglevel=1): +def interact(mydict=None,argv=None,mybanner=None,loglevel=20): global session import code,sys,cPickle,os,imp,getopt,logging,re + from config import conf - logging.getLogger("scapy").setLevel(loglevel) + if loglevel is not None: + conf.logLevel=loglevel the_banner = "Welcome to Scapy (%s)" if mybanner is not None: @@ -147,9 +149,10 @@ def interact(mydict=None,argv=None,mybanner=None,loglevel=1): STARTUP_FILE = DEFAULT_STARTUP_FILE PRESTART_FILE = DEFAULT_PRESTART_FILE + iface = None try: - opts=getopt.getopt(argv[1:], "hs:Cc:Pp:") + opts=getopt.getopt(argv[1:], "hs:Cc:Pp:d") for opt, parm in opts[0]: if opt == "-h": _usage() @@ -163,6 +166,8 @@ def interact(mydict=None,argv=None,mybanner=None,loglevel=1): PRESTART_FILE = parm elif opt == "-P": PRESTART_FILE = None + elif opt == "-d": + conf.logLevel = max(1,conf.logLevel-10) if len(opts[1]) > 0: raise getopt.GetoptError("Too many parameters : [%s]" % " ".join(opts[1])) @@ -172,8 +177,6 @@ def interact(mydict=None,argv=None,mybanner=None,loglevel=1): log_loading.error(msg) sys.exit(1) - - from config import conf if PRESTART_FILE: _read_config_file(PRESTART_FILE)