#*************************************************************
# Define the views that the demogroup will be
# restricted to.
#
# Format:
#    view NAME TYPE SUBTREE [MASK]
#
view demoWrite included .1.3.6.1.4.1.2021.14.1.1
view demoRead  included .1.3.6.1.4.1.2021.14.1.1
view demoRead  included .1.3.6.1.2.1.1
#    ---+---- 
#       +---------------------------------------------------------+
#                                                                 |
#*************************************************************    |
# Map any v1 style communities to a securityName                  |
#                                                                 |
# Format:                                                         |
#    com2sec NAME SOURCE COMMUNITY                                |
#                                                                 |
com2sec v1User  default v1demopublic                              |
com2sec v2cUser default demopublic                                |
#       ---+---                                                   |
#          +----------------------------------------------------+ |
#                                                               | |
#                                                               | |
#************************************************************** | |
# Define the demogroup users and their access models            | |
#                                                               | |
# Format:                                                       | |
#    group NAME MODEL SECURITY                                  | |
#                                                               | |
#                      +----------------------------------------+ |
#                     \|/                                         |
#                   _______                                       |
group demogroup v1  v1User                                        |
group demogroup v2c v2cUser                                       |
#     ----+----                                                   |
#         +---------------------------------------------------+   |
#                                                             |   |
#                                                             |   |
#***********************************************************  |   |
# Define views for the group                                  |   |
#                                                             |   |
# Format:                                                     |   |
#    access NAME CONTEXT MODEL LEVEL PREFX READ WRITE NOTIFY  |   |
#                                                             |   |
#          +--------------------------------------------------+   | 
#          |                             +--------+---------------+
#         \|/                           \|/      \|/ 
#      _________                      ________ _________
access demogroup "" any noauth prefix demoRead demoWrite none

#
# the demoUser token is supported by the examples/ucdDempPublic module
#
demoUser noAuthUser
demoUser MD5User
demoUser MD5DESUser
demoUser SHAUser
demoUser SHADESUser
demoPass The Net-SNMP Demo Password

#
# more security names for demogroup
#
group demogroup usm noAuthUser
group demogroup usm MD5User
group demogroup usm SHAUser
group demogroup usm MD5DESUser
group demogroup usm SHADESUser
#
# more views for demowrite
#
view demowrite included .1.3.6.1.6.3.12.1.2.2.1.10.9.128.0.7.229.1.208.214.166.35.7.77.68.53.85.115.101.114
view demowrite included .1.3.6.1.6.3.12.1.2.2.1.10.9.128.0.7.229.1.208.214.166.35.7.83.72.65.85.115.101.114
view demowrite included .1.3.6.1.6.3.12.1.2.2.1.10.9.128.0.7.229.1.208.214.166.35.10.77.68.53.68.69.83.85.115.101.114
view demowrite included .1.3.6.1.6.3.12.1.2.2.1.10.9.128.0.7.229.1.208.214.166.35.10.83.72.65.68.69.83.85.115.101.114
view demowrite included .1.3.6.1.6.3.12.1.2.2.1.10.9.128.0.7.229.1.208.214.166.35.10.110.111.65.117.116.104.85.115.101.114
#
#
# normally these would be added in /var/net-snmp/snmpd.conf (while
# snmpd was not running), where they will be replaced by a local
# key when the agent started up, thus providing a bit more security.
#
createUser noAuthUser
createUser MD5User MD5 "The Net-SNMP Demo Password"
createUser SHAUser SHA "The Net-SNMP Demo Password"
createUser MD5DESUser MD5 "The Net-SNMP Demo Password" DES "The Net-SNMP Demo Password"
createUser SHADESUser SHA "The Net-SNMP Demo Password" DES "The Net-SNMP Demo Password"
