diff --git a/scapy/config.py b/scapy/config.py index 3f4fe8e6f0d1d64b92bf44e43f1a684aa121e82f..bd0acda6a77ffb01c8f8562bab0b7ceaa75c26dd 100755 --- a/scapy/config.py +++ b/scapy/config.py @@ -378,7 +378,7 @@ extensions_paths: path or list of paths where extensions are to be looked for temp_files = [] netcache = NetCache() geoip_city = '/usr/share/GeoIP/GeoLiteCity.dat' - load_layers = ["l2", "inet", "dhcp", "dns", "dot11", "gprs", + load_layers = ["l2", "inet", "dhcp", "dns", "dot11", "gprs", "tls", "hsrp", "inet6", "ir", "isakmp", "l2tp", "mgcp", "mobileip", "netbios", "netflow", "ntp", "ppp", "radius", "rip", "rtp", "skinny", "smb", "snmp", diff --git a/scapy/layers/all.py b/scapy/layers/all.py index d707e0dd2ba6962cd2aac25b819eb6e30b6f4bc8..1774049421bfa2731d5a261a06dda00a54e15f9b 100644 --- a/scapy/layers/all.py +++ b/scapy/layers/all.py @@ -12,19 +12,25 @@ from scapy.error import log_loading import logging log = logging.getLogger("scapy.loading") +__all__ = [] + def _import_star(m): mod = __import__(m, globals(), locals()) - for k,v in mod.__dict__.iteritems(): - globals()[k] = v + if '__all__' in mod.__dict__: + # only import the exported symbols in __all__ + for name in mod.__dict__['__all__']: + __all__.append(name) + globals()[name] = mod.__dict__[name] + else: + # import all the non-private symbols + for name, sym in mod.__dict__.iteritems(): + if name[0] != '_': + __all__.append(name) + globals()[name] = sym for _l in conf.load_layers: log_loading.debug("Loading layer %s" % _l) try: _import_star(_l) except Exception,e: - log.warning("can't import layer %s: %s" % (_l,e)) - -from scapy.layers.tls import * - - - + log.warning("can't import layer %s: %s" % (_l,e)) diff --git a/scapy/layers/tls/crypto/__init__.py b/scapy/layers/tls/crypto/__init__.py index b30813d2c512d146ebe4ca60798765fa72ea3625..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/scapy/layers/tls/crypto/__init__.py +++ b/scapy/layers/tls/crypto/__init__.py @@ -1 +0,0 @@ -__all__ = ["curves"] diff --git a/scapy/main.py b/scapy/main.py index 4337cdd5ebf8547b2504bc2df326b4cfc07d3257..f1d642035c4d04d6c9b749a4e9141d8c0fb2fff7 100644 --- a/scapy/main.py +++ b/scapy/main.py @@ -60,7 +60,15 @@ from scapy.themes import DefaultTheme def _load(module): try: mod = __import__(module,globals(),locals(),".") - __builtin__.__dict__.update(mod.__dict__) + if '__all__' in mod.__dict__: + # import listed symbols + for name in mod.__dict__['__all__']: + __builtin__.__dict__[name] = mod.__dict__[name] + else: + # only import non-private symbols + for name, sym in mod.__dict__.iteritems(): + if name[0] != '_': + __builtin__.__dict__[name] = sym except Exception,e: log_interactive.error(e) @@ -281,7 +289,9 @@ def interact(mydict=None,argv=None,mybanner=None,loglevel=20): _read_config_file(PRESTART_FILE) scapy_builtins = __import__("all",globals(),locals(),".").__dict__ - __builtin__.__dict__.update(scapy_builtins) + for name, sym in scapy_builtins.iteritems(): + if name [0] != '_': + __builtin__.__dict__[name] = sym globkeys = scapy_builtins.keys() globkeys.append("scapy_session") scapy_builtins=None # XXX replace with "with" statement