summaryrefslogtreecommitdiff
path: root/pysnmp/entity/rfc3413/oneliner/auth.py
diff options
context:
space:
mode:
authorelie <elie>2013-05-18 13:26:49 +0000
committerelie <elie>2013-05-18 13:26:49 +0000
commitdafca9628cd4db7fb34baacc2022106b2b55f711 (patch)
tree4a7b838c39176c75c34ddc4a412c87df9c442043 /pysnmp/entity/rfc3413/oneliner/auth.py
parente389f5d736b4cd6f56d2bc5d80244c6819472ff1 (diff)
downloadpysnmp-dafca9628cd4db7fb34baacc2022106b2b55f711.tar.gz
SNMP credentials management reworked to allow multiple securityNames's in
snmpCommunityEntry and usmUserEntry tables. Changes made to addV1System(), addV3User() functions as well as to their oneliner's wrappers.
Diffstat (limited to 'pysnmp/entity/rfc3413/oneliner/auth.py')
-rw-r--r--pysnmp/entity/rfc3413/oneliner/auth.py32
1 files changed, 21 insertions, 11 deletions
diff --git a/pysnmp/entity/rfc3413/oneliner/auth.py b/pysnmp/entity/rfc3413/oneliner/auth.py
index e266417..575f0cb 100644
--- a/pysnmp/entity/rfc3413/oneliner/auth.py
+++ b/pysnmp/entity/rfc3413/oneliner/auth.py
@@ -8,10 +8,9 @@ class CommunityData:
securityLevel = 'noAuthNoPriv'
contextName = null
tag = null
- def __init__(self, securityName, communityName=None, mpModel=None,
- contextEngineId=None, contextName=None, tag=None):
- self.securityName = securityName
- self.communityName = communityName
+ def __init__(self, communityIndex, communityName=None, mpModel=None,
+ contextEngineId=None, contextName=None, tag=None,
+ securityName=None):
if mpModel is not None:
self.mpModel = mpModel
self.securityModel = mpModel + 1
@@ -22,20 +21,28 @@ class CommunityData:
self.tag = tag
# Autogenerate securityName if not specified
if communityName is None:
- self.communityName = securityName
- self.securityName = 's%s' % hash(
- ( securityName, self.mpModel,
+ self.communityName = communityIndex
+ self.communityIndex = self.securityName = 's%s' % hash(
+ ( communityIndex, self.mpModel,
self.contextEngineId, self.contextName, self.tag )
)
-
+ else:
+ self.communityIndex = communityIndex
+ self.communityName = communityName
+ self.securityName = securityName is not None and securityName or communityIndex
+
+ def __hash__(self):
+ raise TypeError('%s is not hashable' % self.__class__.__name__)
+
def __repr__(self):
- return '%s("%s", <COMMUNITY>, %r, %r, %r, %r)' % (
+ return '%s("%s", <COMMUNITY>, %r, %r, %r, %r, %r)' % (
self.__class__.__name__,
- self.securityName,
+ self.communityIndex,
self.mpModel,
self.contextEngineId,
self.contextName,
- self.tag
+ self.tag,
+ self.securityName
)
class UsmUserData:
@@ -77,6 +84,9 @@ class UsmUserData:
if contextName is not None:
self.contextName = contextName
+ def __hash__(self):
+ raise TypeError('%s is not hashable' % self.__class__.__name__)
+
def __repr__(self):
return '%s("%s", <AUTHKEY>, <PRIVKEY>, %r, %r, %r, %r)' % (
self.__class__.__name__,