Properties.ui.h
上传用户:cnryan
上传日期:2008-12-15
资源大小:260k
文件大小:8k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*_############################################################################
  2.   _## 
  3.   _##  Properties.ui.h  
  4.   _##
  5.   _##  SNMP++v3.2.21
  6.   _##  -----------------------------------------------
  7.   _##  Copyright (c) 2001-2006 Jochen Katz, Frank Fock
  8.   _##
  9.   _##  This software is based on SNMP++2.6 from Hewlett Packard:
  10.   _##  
  11.   _##    Copyright (c) 1996
  12.   _##    Hewlett-Packard Company
  13.   _##  
  14.   _##  ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
  15.   _##  Permission to use, copy, modify, distribute and/or sell this software 
  16.   _##  and/or its documentation is hereby granted without fee. User agrees 
  17.   _##  to display the above copyright notice and this license notice in all 
  18.   _##  copies of the software and any documentation of the software. User 
  19.   _##  agrees to assume all liability for the use of the software; 
  20.   _##  Hewlett-Packard and Jochen Katz make no representations about the 
  21.   _##  suitability of this software for any purpose. It is provided 
  22.   _##  "AS-IS" without warranty of any kind, either express or implied. User 
  23.   _##  hereby grants a royalty-free license to any and all derivatives based
  24.   _##  upon this software code base. 
  25.   _##  
  26.   _##  Stuttgart, Germany, Fri Jun 16 17:48:57 CEST 2006 
  27.   _##  
  28.   _##########################################################################*/
  29. /****************************************************************************
  30. ** ui.h extension file, included from the uic-generated form implementation.
  31. **
  32. ** If you wish to add, delete or rename functions or slots use
  33. ** Qt Designer which will update this file, preserving your code. Create an
  34. ** init() function in place of a constructor, and a destroy() function in
  35. ** place of a destructor.
  36. *****************************************************************************/
  37. #include <qstringlist.h>
  38. #include <DialogAddUser.h>
  39. void Properties::combo_box_sec_name_activated(const QString &sec_name)
  40. {
  41.   OctetStr sname(sec_name);
  42.   // Get the properties of the user with the given sec_name from USM
  43.   // dont forget to lock/unlock the user table
  44.   usm->lock_user_table();
  45.   const struct UsmUserNameTableEntry *user = usm->get_user(sname);
  46.   if (!user)
  47.   {
  48.     line_edit_auth_pass->setEnabled(false);
  49.     line_edit_priv_pass->setEnabled(false);
  50.     combo_box_auth_prot->setEnabled(false);
  51.     combo_box_priv_prot->setEnabled(false);
  52.     usm->unlock_user_table();
  53.     return;
  54.   }
  55.   line_edit_auth_pass->setText(QString::fromLatin1(
  56.  (const char*)user->authPassword,
  57.  user->authPasswordLength));
  58.   line_edit_priv_pass->setText(QString::fromLatin1(
  59.  (const char*)user->privPassword,
  60.  user->privPasswordLength));
  61.   line_edit_auth_pass->setEnabled(true);
  62.   line_edit_priv_pass->setEnabled(true);
  63.   combo_box_auth_prot->setEnabled(true);
  64.   combo_box_priv_prot->setEnabled(true);
  65.   switch (user->usmUserAuthProtocol)
  66.   {
  67.     case SNMP_AUTHPROTOCOL_HMACSHA:
  68.       combo_box_auth_prot->setCurrentItem(2); break;
  69.     case SNMP_AUTHPROTOCOL_HMACMD5:
  70.       combo_box_auth_prot->setCurrentItem(1); break;
  71.     case SNMP_AUTHPROTOCOL_NONE:
  72.     default:
  73.       combo_box_auth_prot->setCurrentItem(0);
  74.       line_edit_auth_pass->setEnabled(false);
  75.       break;
  76.   }
  77.   switch (user->usmUserPrivProtocol)
  78.   {
  79.     case SNMP_PRIVPROTOCOL_AES256:
  80.       combo_box_priv_prot->setCurrentItem(5); break;
  81.     case SNMP_PRIVPROTOCOL_AES192:
  82.       combo_box_priv_prot->setCurrentItem(4); break;
  83.     case SNMP_PRIVPROTOCOL_AES128:
  84.       combo_box_priv_prot->setCurrentItem(3); break;
  85.     case SNMP_PRIVPROTOCOL_IDEA:
  86.       combo_box_priv_prot->setCurrentItem(2); break;
  87.     case SNMP_PRIVPROTOCOL_DES:
  88.       combo_box_priv_prot->setCurrentItem(1); break;
  89.     case SNMP_PRIVPROTOCOL_NONE:
  90.     default:
  91.       combo_box_priv_prot->setCurrentItem(0);
  92.       line_edit_priv_pass->setEnabled(false);
  93.       break;
  94.   }
  95.   if (user->usmUserAuthProtocol == SNMP_AUTHPROTOCOL_NONE)
  96.   {
  97.     combo_box_priv_prot->setEnabled(false);
  98.   }
  99.   // unlock user table!
  100.   usm->unlock_user_table();
  101. }
  102. void Properties::set_snmp( Snmp *s )
  103. {
  104.   snmp = s;
  105.   // until now, there can be only one v3MP instance
  106.   v3mp = v3MP::I;
  107.   usm = v3mp->get_usm();
  108.   
  109.   combo_box_sec_name->clear();
  110.   // get all security names
  111.   usm->lock_user_name_table(); // lock table for peek_XXX()
  112.   const struct UsmUserNameTableEntry *user = usm->peek_first_user();
  113.   QStringList names;
  114.   QString initial("initial");
  115.   QString to_add;
  116.   while (user)
  117.   {
  118.     to_add.setAscii((const char*)(user->usmUserSecurityName.data()),
  119.     user->usmUserSecurityName.len());
  120.     if (!names.contains(to_add) && (to_add != initial))
  121.       names += to_add;
  122.     
  123.     user = usm->peek_next_user(user);
  124.   }
  125.   usm->unlock_user_name_table(); // unlock table
  126.   combo_box_sec_name->insertStringList(names);
  127.   if (combo_box_sec_name->count())
  128.   {
  129.     combo_box_sec_name->setCurrentItem(0);
  130.     combo_box_sec_name_activated(combo_box_sec_name->currentText());
  131.   }
  132. }
  133. void Properties::push_button_reset_clicked()
  134. {
  135.   combo_box_sec_name_activated(combo_box_sec_name->currentText());
  136. }
  137. void Properties::push_button_apply_clicked()
  138. {
  139.   int auth_prot = 0;
  140.   int priv_prot = 0;
  141.   
  142.   switch (combo_box_auth_prot->currentItem())
  143.   {
  144.     // here are all supportet authentcation protocols
  145.     case 0: auth_prot = SNMP_AUTHPROTOCOL_NONE;    break;
  146.     case 1: auth_prot = SNMP_AUTHPROTOCOL_HMACMD5; break;
  147.     case 2: auth_prot = SNMP_AUTHPROTOCOL_HMACSHA; break;
  148.   }
  149.   if (line_edit_auth_pass->text().isEmpty())
  150.     auth_prot = SNMP_AUTHPROTOCOL_NONE;
  151.   if (auth_prot == SNMP_AUTHPROTOCOL_NONE)
  152.   {
  153.     priv_prot = SNMP_PRIVPROTOCOL_NONE;
  154.     line_edit_priv_pass->clear();
  155.   }
  156.   else
  157.   {
  158.     switch (combo_box_priv_prot->currentItem())
  159.     {
  160.       // here are all supported priv protocols
  161.       case 0: priv_prot = SNMP_PRIVPROTOCOL_NONE;   break;
  162.       case 1: priv_prot = SNMP_PRIVPROTOCOL_DES;    break;
  163.       case 2: priv_prot = SNMP_PRIVPROTOCOL_IDEA;   break;
  164.       case 3: priv_prot = SNMP_PRIVPROTOCOL_AES128; break;
  165.       case 4: priv_prot = SNMP_PRIVPROTOCOL_AES192; break;
  166.       case 5: priv_prot = SNMP_PRIVPROTOCOL_AES256; break;
  167.     }
  168.   }
  169.   if (line_edit_priv_pass->text().isEmpty())
  170.     priv_prot = SNMP_PRIVPROTOCOL_NONE;
  171.   else if (priv_prot == SNMP_PRIVPROTOCOL_NONE)
  172.     line_edit_priv_pass->clear();
  173.   // first delete all occurences of that user
  174.   usm->delete_usm_user((const char*)combo_box_sec_name->currentText());
  175.   // then add the user with the new properties
  176.   usm->add_usm_user((const char*)combo_box_sec_name->currentText(),
  177.     auth_prot, priv_prot,
  178.     (const char*)line_edit_auth_pass->text(),
  179.     (const char*)line_edit_priv_pass->text());
  180.   combo_box_sec_name_activated(combo_box_sec_name->currentText());
  181. }
  182. void Properties::combo_box_auth_prot_activated( int  auth_prot)
  183. {
  184.   if (auth_prot)
  185.   {
  186.     line_edit_auth_pass->setEnabled(true);
  187.     combo_box_priv_prot->setEnabled(true);
  188.     if (combo_box_priv_prot->currentItem())
  189.       line_edit_priv_pass->setEnabled(true);
  190.     else
  191.       line_edit_priv_pass->setEnabled(false);
  192.   }
  193.   else
  194.   {
  195.     combo_box_priv_prot->setEnabled(false);
  196.     line_edit_priv_pass->setEnabled(false);
  197.   }
  198. }
  199. void Properties::combo_box_priv_prot_activated(int priv_prot)
  200. {
  201.   if (priv_prot)
  202.     line_edit_priv_pass->setEnabled(true);
  203.   else
  204.     line_edit_priv_pass->setEnabled(false);
  205. }
  206. /// Someone clicked th ebutton to add a new user
  207. void Properties::push_button_add_user_clicked()
  208. {
  209.   DialogAddUser dau;
  210.   dau.exec();
  211.   QString name = dau.line_edit_new_name->text();
  212.   if (name.isEmpty())
  213.     return;
  214.   // first delete the user with that name
  215.   usm->delete_usm_user((const char*)name);
  216.   // then add a user wthout auth and priv
  217.   usm->add_usm_user((const char*)name,
  218.     SNMP_AUTHPROTOCOL_NONE,
  219.     SNMP_PRIVPROTOCOL_NONE, "", "");
  220.   for (int i=0; i < combo_box_sec_name->count(); ++i)
  221.   {
  222.     if (combo_box_sec_name->text(i) == name)
  223.     {
  224.       combo_box_sec_name->removeItem(i);
  225.       i--;
  226.     }
  227.   }
  228.   combo_box_sec_name->insertItem(name, 0);
  229.   combo_box_sec_name->setCurrentItem(0);
  230.   combo_box_sec_name_activated(combo_box_sec_name->currentText());
  231. }
  232. /// delete the displayed user
  233. void Properties::push_button_del_user_clicked()
  234. {
  235.   // delete the user from USM
  236.   usm->delete_usm_user((const char*)combo_box_sec_name->currentText());
  237.   combo_box_sec_name->removeItem(combo_box_sec_name->currentItem());
  238.   combo_box_sec_name->setCurrentItem(0);
  239.   combo_box_sec_name_activated(combo_box_sec_name->currentText());
  240. }