[Openvas-commits] r10571 - trunk/gsd/src

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Wed Mar 16 18:48:28 CET 2011


Author: raimund
Date: 2011-03-16 18:48:26 +0100 (Wed, 16 Mar 2011)
New Revision: 10571

Added:
   trunk/gsd/src/dlg_new_slave.ui
   trunk/gsd/src/dock_details_slave.ui
Modified:
   trunk/gsd/src/CMakeLists.txt
   trunk/gsd/src/dock_details.cpp
   trunk/gsd/src/dock_details.h
   trunk/gsd/src/gsd_control.cpp
   trunk/gsd/src/gsd_control.h
   trunk/gsd/src/gsd_dialogs.cpp
   trunk/gsd/src/gsd_dialogs.h
   trunk/gsd/src/gsd_dlg.cpp
   trunk/gsd/src/gsd_dlg.h
   trunk/gsd/src/gsd_mainwindow.ui
   trunk/gsd/src/gsd_mw.cpp
   trunk/gsd/src/gsd_mw.h
   trunk/gsd/src/omp_string_builder.cpp
   trunk/gsd/src/omp_utilities.cpp
   trunk/gsd/src/omp_utilities.h
Log:
Added support for slaves.

* src/gsd_control.cpp (gsd_control): Create and prepare slave model.
(start): Signal/slot configuration for slave handling.
(loadData): Request slaves on startup.
(request_finished_listener): Request slaves if a slave was created or deleted.
(request_slaves, slave_delete, getSlaveModel): New.

* src/gsd_mw.cpp (gsd_mw): Create new dockwidget and table for slaves.
(createToolBars): Add actions to dockwidget.
(createContextMenu): Add actions to contextmenu.
(prepareWidgets): Set configurations for new dockwidget.
(createConnections): Signal/slot configuration for slave dockwidget.
(setLoggedOut): Disable actions on logout.
(authentication_successful): Signal/slot configuration for the dockwidgets
focus.
(delete_slave, new_slave_dlg, details_slave_dlg, slave_dw, focus_slaves)
(slave_selectionchanged): New.

* src/gsd_dlg.cpp (gsd_dlg): Signal/slot configuration for slave creation.
(new_slave_dlg): New.

* src/gsd_dialogs.cpp (dlg_new_slave::create): New.

* src/dock_details.cpp (dock_details_slave::load, dock_details_slave::update):
New.

* src/omp_utilities.cpp (getType): Added slave to types.

* src/omp_string_builder.cpp (requestString): Build request string for slaves.
(createString): Build create string for slaves.
(deleteString): Build delete string for slaves.
(appendCreateParameter): Add parameter to create string for slaves.

* src/gsd_mainwindow.ui: Added actions for slave handling.

* src/dock_details.h: Added class dock_details_slave.

* src/gsd_control.h, src/gsd_mw.h, src/gsd_dialogs.h, src/gsd_dlg.h,
src/omp_utilities.h: Updated prototypes.

* src/dlg_new_slave.ui, src/dock_details_slave.ui: New.

* src/CMakeLists.txt: Added new files.



Modified: trunk/gsd/src/CMakeLists.txt
===================================================================
--- trunk/gsd/src/CMakeLists.txt	2011-03-16 16:24:02 UTC (rev 10570)
+++ trunk/gsd/src/CMakeLists.txt	2011-03-16 17:48:26 UTC (rev 10571)
@@ -118,6 +118,7 @@
   dlg_newTask.ui
   dlg_new_note.ui
   dlg_new_override.ui
+  dlg_new_slave.ui
   dlg_modify_config.ui
   dlg_modify_scan_pref.ui
   dlg_modify_family.ui
@@ -135,6 +136,7 @@
   dock_details_family.ui
   dock_details_note.ui
   dock_details_override.ui
+  dock_details_slave.ui
   dock_logging.ui
   dock_table.ui
   dock_performance.ui

Added: trunk/gsd/src/dlg_new_slave.ui
===================================================================
--- trunk/gsd/src/dlg_new_slave.ui	2011-03-16 16:24:02 UTC (rev 10570)
+++ trunk/gsd/src/dlg_new_slave.ui	2011-03-16 17:48:26 UTC (rev 10571)
@@ -0,0 +1,145 @@
+<ui version="4.0" >
+ <class>dlg_new_slave</class>
+ <widget class="QDialog" name="dlg_new_slave" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>417</width>
+    <height>243</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>New Slave</string>
+  </property>
+  <property name="windowIcon" >
+   <iconset>
+    <normaloff>:/img/favicon.gif</normaloff>:/img/favicon.gif</iconset>
+  </property>
+  <property name="modal" >
+   <bool>true</bool>
+  </property>
+  <layout class="QGridLayout" name="gridLayout" >
+   <item row="0" column="0" >
+    <widget class="QLabel" name="label" >
+     <property name="text" >
+      <string>Name:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="1" colspan="3" >
+    <widget class="QLineEdit" name="le_name" />
+   </item>
+   <item row="1" column="0" >
+    <widget class="QLabel" name="label_2" >
+     <property name="text" >
+      <string>Comment (optional):</string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="1" colspan="3" >
+    <widget class="QLineEdit" name="le_comment" />
+   </item>
+   <item row="2" column="0" >
+    <widget class="QLabel" name="label_3" >
+     <property name="text" >
+      <string>Host:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="1" colspan="3" >
+    <widget class="QLineEdit" name="le_host" />
+   </item>
+   <item row="3" column="0" >
+    <widget class="QLabel" name="label_4" >
+     <property name="text" >
+      <string>Port:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="6" column="2" >
+    <widget class="QPushButton" name="pb_cancel" >
+     <property name="text" >
+      <string>Cancel</string>
+     </property>
+    </widget>
+   </item>
+   <item row="6" column="3" >
+    <widget class="QPushButton" name="pb_create" >
+     <property name="text" >
+      <string>Create</string>
+     </property>
+    </widget>
+   </item>
+   <item row="6" column="1" >
+    <spacer name="horizontalSpacer" >
+     <property name="orientation" >
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="sizeHint" stdset="0" >
+      <size>
+       <width>40</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="4" column="0" >
+    <widget class="QLabel" name="label_5" >
+     <property name="text" >
+      <string>Login:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="5" column="0" >
+    <widget class="QLabel" name="label_6" >
+     <property name="text" >
+      <string>Password:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="1" >
+    <widget class="QLineEdit" name="le_port" />
+   </item>
+   <item row="4" column="1" colspan="3" >
+    <widget class="QLineEdit" name="le_login" />
+   </item>
+   <item row="5" column="1" colspan="3" >
+    <widget class="QLineEdit" name="le_password" >
+     <property name="echoMode" >
+      <enum>QLineEdit::Password</enum>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <tabstops>
+  <tabstop>le_name</tabstop>
+  <tabstop>le_comment</tabstop>
+  <tabstop>le_host</tabstop>
+  <tabstop>le_port</tabstop>
+  <tabstop>le_login</tabstop>
+  <tabstop>le_password</tabstop>
+  <tabstop>pb_cancel</tabstop>
+  <tabstop>pb_create</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>pb_cancel</sender>
+   <signal>released()</signal>
+   <receiver>dlg_new_slave</receiver>
+   <slot>close()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>274</x>
+     <y>173</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>208</x>
+     <y>101</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>

Modified: trunk/gsd/src/dock_details.cpp
===================================================================
--- trunk/gsd/src/dock_details.cpp	2011-03-16 16:24:02 UTC (rev 10570)
+++ trunk/gsd/src/dock_details.cpp	2011-03-16 17:48:26 UTC (rev 10571)
@@ -2004,3 +2004,85 @@
   settings.setValue ("geometrie", saveGeometry ());
   settings.endGroup ();
 }
+
+
+void
+dock_details_slave::load ()
+{
+  delegate_date_time *d_time = new delegate_date_time ();
+  delegate_icon *d_icon = new delegate_icon ();
+  delegate_progress *d_prog = new delegate_progress ();
+  delegate_text *d_text = new delegate_text ();
+  delegate_threat *d_thre = new delegate_threat ();
+  delegate_trend *d_tren = new delegate_trend ();
+
+  tv_table->setItemDelegateForColumn (1, d_icon);
+  tv_table->setItemDelegateForColumn (2, d_prog);
+  tv_table->setItemDelegateForColumn (4, d_time);
+  tv_table->setItemDelegateForColumn (5, d_time);
+  tv_table->setItemDelegateForColumn (6, d_thre);
+  tv_table->setItemDelegateForColumn (7, d_tren);
+  tv_table->verticalHeader ()->setVisible (false);
+  tv_table->horizontalHeader ()->setResizeMode (QHeaderView::Fixed);
+  tv_table->horizontalHeader ()->setResizeMode (0, QHeaderView::Stretch);
+  tv_table->setColumnWidth (0, 120);
+  tv_table->horizontalHeader ()->setHighlightSections (false);
+  tv_table->horizontalHeader ()->setMinimumSectionSize (75);
+  tv_table->setAlternatingRowColors (true);
+  tv_table->setSelectionBehavior (QAbstractItemView::SelectRows);
+  tv_table->hideColumn (1);
+  tv_table->hideColumn (2);
+  tv_table->hideColumn (4);
+  tv_table->hideColumn (5);
+  tv_table->hideColumn (6);
+
+}
+
+
+void
+dock_details_slave::update ()
+{
+  if (id.compare ("") == 0)
+    return;
+
+  model_omp_entity *tasks = this->control->getTaskModel ();
+  tv_table->setModel (tasks);
+  tasks->setFilterType (model_omp_entity::ATTRIBUTE_FILTER);
+  tasks->setFilter ("task slave id " + id);
+
+  QList <int> filterList = tasks->getFilterIndexList ();
+  for (int i = 0; i < tasks->rowCount (); i++)
+    {
+      if (!filterList.contains (i))
+        tv_table->hideRow (i);
+      else if (tv_table->isRowHidden(i))
+        tv_table->showRow (i);
+    }
+
+  tasks->resetFilter ();
+
+  model_omp_entity *slaves = this->control->getSlaveModel ();
+  QStringList list = this->id.split (" ");
+  QDomElement showElement;
+  int i = 0;
+  while (i < slaves->rowCount())
+    {
+      QString attr = slaves->getAttr(slaves->getEntity(i), "slave id");
+
+      if (attr.compare (id) == 0)
+        {
+          showElement = slaves->getEntity (i);
+          break;
+        }
+      i++;
+    }
+
+  this->setWindowTitle ("Slave " + slaves->getValue (showElement, "name"));
+  this->la_name_v->setText (slaves->getValue (showElement, "name"));
+  this->la_comment_v->setText (slaves->getValue (showElement, "comment"));
+  this->la_host_v->setText (slaves->getValue (showElement, "host"));
+  this->la_port_v->setText (slaves->getValue (showElement, "port"));
+  this->la_login_v->setText (slaves->getValue (showElement,
+                                                        "login"));
+  load ();
+}

Modified: trunk/gsd/src/dock_details.h
===================================================================
--- trunk/gsd/src/dock_details.h	2011-03-16 16:24:02 UTC (rev 10570)
+++ trunk/gsd/src/dock_details.h	2011-03-16 17:48:26 UTC (rev 10571)
@@ -41,6 +41,7 @@
 #include "ui_dock_details_nvt.h"
 #include "ui_dock_details_note.h"
 #include "ui_dock_details_override.h"
+#include "ui_dock_details_slave.h"
 #include "delegate_trend.h"
 #include "delegate_text.h"
 #include "delegate_threat.h"
@@ -429,5 +430,25 @@
     ~dock_details_override () {};
     void load ();
 };
+
+
+/**
+ * @brief Protos and data structures for target details widget.
+ */
+class dock_details_slave : public dock_details, private Ui::dock_details_slave
+{
+  Q_OBJECT
+
+  public slots:
+    void update ();
+  public:
+    dock_details_slave (gsd_control *ctl)
+      {
+        setupUi (this);
+        this->control = ctl;
+      };
+    ~dock_details_slave () {};
+    void load ();
+};
 #endif
 

Added: trunk/gsd/src/dock_details_slave.ui
===================================================================
--- trunk/gsd/src/dock_details_slave.ui	2011-03-16 16:24:02 UTC (rev 10570)
+++ trunk/gsd/src/dock_details_slave.ui	2011-03-16 17:48:26 UTC (rev 10571)
@@ -0,0 +1,216 @@
+<ui version="4.0" >
+ <class>dock_details_slave</class>
+ <widget class="QDockWidget" name="dock_details_slave" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>499</width>
+    <height>294</height>
+   </rect>
+  </property>
+  <property name="windowIcon" >
+   <iconset resource="img/images.qrc" >
+    <normaloff>:/img/favicon.gif</normaloff>:/img/favicon.gif</iconset>
+  </property>
+  <property name="windowTitle" >
+   <string>Details Slave</string>
+  </property>
+  <widget class="QWidget" name="dockWidgetContents" >
+   <layout class="QGridLayout" name="gridLayout" >
+    <item row="0" column="0" colspan="2" >
+     <widget class="QTabWidget" name="tabWidget" >
+      <property name="currentIndex" >
+       <number>0</number>
+      </property>
+      <widget class="QWidget" name="tab_5" >
+       <attribute name="title" >
+        <string>Summary</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_3" >
+        <item row="6" column="0" colspan="2" >
+         <widget class="QScrollArea" name="scrollArea" >
+          <property name="widgetResizable" >
+           <bool>true</bool>
+          </property>
+          <widget class="QWidget" name="scrollAreaWidgetContents" >
+           <property name="geometry" >
+            <rect>
+             <x>0</x>
+             <y>0</y>
+             <width>455</width>
+             <height>204</height>
+            </rect>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_4" >
+            <item row="0" column="0" >
+             <widget class="QLabel" name="la_name" >
+              <property name="text" >
+               <string>Name:</string>
+              </property>
+              <property name="margin" >
+               <number>1</number>
+              </property>
+             </widget>
+            </item>
+            <item row="0" column="1" >
+             <widget class="QLabel" name="la_name_v" >
+              <property name="text" >
+               <string/>
+              </property>
+              <property name="margin" >
+               <number>1</number>
+              </property>
+             </widget>
+            </item>
+            <item row="1" column="0" >
+             <widget class="QLabel" name="la_comment" >
+              <property name="text" >
+               <string>Comment:</string>
+              </property>
+              <property name="margin" >
+               <number>1</number>
+              </property>
+             </widget>
+            </item>
+            <item row="1" column="1" >
+             <widget class="QLabel" name="la_comment_v" >
+              <property name="text" >
+               <string/>
+              </property>
+              <property name="margin" >
+               <number>1</number>
+              </property>
+             </widget>
+            </item>
+            <item row="2" column="0" >
+             <widget class="QLabel" name="la_host" >
+              <property name="text" >
+               <string>Host:</string>
+              </property>
+              <property name="margin" >
+               <number>1</number>
+              </property>
+             </widget>
+            </item>
+            <item row="2" column="1" >
+             <widget class="QLabel" name="la_host_v" >
+              <property name="text" >
+               <string/>
+              </property>
+              <property name="margin" >
+               <number>1</number>
+              </property>
+             </widget>
+            </item>
+            <item row="3" column="0" >
+             <widget class="QLabel" name="la_port" >
+              <property name="text" >
+               <string>Port:</string>
+              </property>
+              <property name="margin" >
+               <number>1</number>
+              </property>
+             </widget>
+            </item>
+            <item row="3" column="1" >
+             <widget class="QLabel" name="la_port_v" >
+              <property name="text" >
+               <string/>
+              </property>
+              <property name="margin" >
+               <number>1</number>
+              </property>
+             </widget>
+            </item>
+            <item row="4" column="0" >
+             <widget class="QLabel" name="la_login" >
+              <property name="text" >
+               <string>Login:</string>
+              </property>
+              <property name="margin" >
+               <number>1</number>
+              </property>
+             </widget>
+            </item>
+            <item row="4" column="1" >
+             <widget class="QLabel" name="la_login_v" >
+              <property name="text" >
+               <string/>
+              </property>
+              <property name="margin" >
+               <number>1</number>
+              </property>
+             </widget>
+            </item>
+            <item row="5" column="0" >
+             <spacer name="verticalSpacer" >
+              <property name="orientation" >
+               <enum>Qt::Vertical</enum>
+              </property>
+              <property name="sizeHint" stdset="0" >
+               <size>
+                <width>20</width>
+                <height>40</height>
+               </size>
+              </property>
+             </spacer>
+            </item>
+            <item row="5" column="1" >
+             <spacer name="horizontalSpacer_2" >
+              <property name="orientation" >
+               <enum>Qt::Horizontal</enum>
+              </property>
+              <property name="sizeHint" stdset="0" >
+               <size>
+                <width>40</width>
+                <height>20</height>
+               </size>
+              </property>
+             </spacer>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="tab_6" >
+       <attribute name="title" >
+        <string>Tasks using this Slave</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_2" >
+        <item row="0" column="0" >
+         <widget class="QTableView" name="tv_table" >
+          <property name="alternatingRowColors" >
+           <bool>true</bool>
+          </property>
+          <property name="selectionMode" >
+           <enum>QAbstractItemView::SingleSelection</enum>
+          </property>
+          <property name="selectionBehavior" >
+           <enum>QAbstractItemView::SelectRows</enum>
+          </property>
+          <property name="verticalScrollMode" >
+           <enum>QAbstractItemView::ScrollPerPixel</enum>
+          </property>
+          <property name="horizontalScrollMode" >
+           <enum>QAbstractItemView::ScrollPerPixel</enum>
+          </property>
+          <property name="cornerButtonEnabled" >
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+ </widget>
+ <resources>
+  <include location="img/images.qrc" />
+ </resources>
+ <connections/>
+</ui>

Modified: trunk/gsd/src/gsd_control.cpp
===================================================================
--- trunk/gsd/src/gsd_control.cpp	2011-03-16 16:24:02 UTC (rev 10570)
+++ trunk/gsd/src/gsd_control.cpp	2011-03-16 17:48:26 UTC (rev 10571)
@@ -104,6 +104,12 @@
   overrideModel->addHeader (tr ("To"), "new_threat");
   overrideModel->addHeader (tr ("Text"), "text");
 
+  slaveModel = new model_omp_entity ();
+  slaveModel->addHeader (tr ("Name"), "name");
+  slaveModel->addHeader (tr ("Host"), "host");
+  slaveModel->addHeader (tr ("Port"), "port");
+  slaveModel->addHeader (tr ("Login"), "login");
+
   systemReportModel = new model_omp_entity ();
 
   familyModel =new model_omp_entity ();
@@ -240,6 +246,10 @@
            this,
            SLOT (request_override_details (QString)));
   connect (mainwindow,
+           SIGNAL (sig_req_slaves (int)),
+           this,
+           SLOT (request_slaves (int)));
+  connect (mainwindow,
            SIGNAL (sig_start_task (int)),
            this,
            SLOT (task_start (int)));
@@ -292,6 +302,10 @@
            this,
            SLOT (override_delete (int)));
   connect (mainwindow,
+           SIGNAL (sig_delete_slave (int)),
+           this,
+           SLOT (slave_delete (int)));
+  connect (mainwindow,
            SIGNAL (sig_create_task ()),
            dialogs,
            SLOT (new_task_dlg ()));
@@ -320,6 +334,10 @@
            dialogs,
            SLOT (new_agent_dlg ()));
   connect (mainwindow,
+           SIGNAL (sig_create_slave ()),
+           dialogs,
+           SLOT (new_slave_dlg ()));
+  connect (mainwindow,
            SIGNAL (sig_details_config (int)),
            this,
            SLOT (request_config_details (int)));
@@ -485,6 +503,7 @@
   request_agents (0);
   request_notes (0);
   request_overrides (0);
+  request_slaves (0);
   request_system_reports (0);
   request_system_reports (NULL, 3600);
   request_families ();
@@ -509,6 +528,7 @@
   escalatorModel->removeEntities ();
   noteModel->removeEntities ();
   overrideModel->removeEntities ();
+  slaveModel->removeEntities ();
   systemReportModel->removeEntities ();
   familyModel->removeEntities ();
   performanceModel->removeEntities ();
@@ -797,6 +817,24 @@
 
 
 /**
+ * @brief SLOT that starts an slave update-request.
+ *
+ * An update for the slave widget is requested.
+ *
+ * @param[in]  interval   Time in second between two updates.
+ */
+void
+gsd_control::request_slaves (int interval)
+{
+  QMap<QString, QString> parameter;
+  this->connector->getEntity (omp_utilities::SLAVE,
+                              interval,
+                              slaveModel,
+                              parameter);
+}
+
+
+/**
  * @brief SLOT that stops frequently running updates.
  *
  * The task update for the task widget is stopped.
@@ -1341,6 +1379,51 @@
 
 
 /**
+ * @brief SLOT that deletes a slave.
+ *
+ * Deletes a slave, identified by its id.
+ *
+ * @param[in]  index   Index in slave model/table.
+ */
+void
+gsd_control::slave_delete (int index)
+{
+  QDomElement ent = slaveModel->getEntity (index);
+  QString id = slaveModel->getAttr (ent, "slave id");
+
+  int ret = QMessageBox::warning (NULL,
+              tr ("Delete?"),
+              QString (tr ("Do you really want delete the Slave:<b>%1</b>")
+                        .arg (slaveModel->getValue (ent, "name"))),
+              QMessageBox::Yes,
+              QMessageBox::No);
+  switch (ret)
+    {
+      case QMessageBox::Yes:
+        {
+          if (this->connector->deleteEntity (omp_utilities::SLAVE,
+                                             id) != 0)
+            {
+              dialogs->request_failed (omp_utilities::SLAVE,
+                                       omp_utilities::OMP_DELETE,
+                                       -1);
+              return;
+            }
+          slaveModel->removeEntity (index);
+          return;
+        }
+      case QMessageBox::No:
+        {
+          return;
+        }
+      default:
+        {
+          return;
+        }
+    }
+}
+
+/**
  * @brief SLOT that requests note details.
  *
  * @param[in]  id    Note id.
@@ -2001,6 +2084,18 @@
 /**
  * @brief Getter
  *
+ * @return The model containing the slaves.
+ */
+model_omp_entity*
+gsd_control::getSlaveModel ()
+{
+  return slaveModel;
+}
+
+
+/**
+ * @brief Getter
+ *
  * @return The model containing the report in html format.
  */
 model_omp_entity*
@@ -2335,6 +2430,11 @@
     {
       request_overrides (0);
     }
+  if (type == omp_utilities::SLAVE && (com == omp_utilities::OMP_CREATE ||
+                                       com == omp_utilities::OMP_DELETE))
+    {
+      request_slaves (0);
+    }
   if (type == omp_utilities::NVT_FAMILY && com == omp_utilities::OMP_PREFERENCES )
     {
       notifyFamilyDetails (userData);

Modified: trunk/gsd/src/gsd_control.h
===================================================================
--- trunk/gsd/src/gsd_control.h	2011-03-16 16:24:02 UTC (rev 10570)
+++ trunk/gsd/src/gsd_control.h	2011-03-16 17:48:26 UTC (rev 10571)
@@ -92,6 +92,7 @@
     model_omp_entity *noteDetailsModel;
     model_omp_entity *overrideModel;
     model_omp_entity *overrideDetailsModel;
+    model_omp_entity *slaveModel;
     model_omp_entity *systemReportModel;
     model_omp_entity *nvtModel;
     model_omp_entity *nvtDetailsModel;
@@ -138,6 +139,7 @@
     void request_agents (int);
     void request_notes (int);
     void request_overrides (int);
+    void request_slaves (int);
     void request_system_reports (int);
     void request_system_reports (QString, long);
     void request_families ();
@@ -166,6 +168,7 @@
     void note_modify (int);
     void override_delete (int);
     void override_modify (int);
+    void slave_delete (int);
     void report_delete (QString);
     void config_download (int);
     void system_report_download ();
@@ -200,6 +203,7 @@
     model_omp_entity *getNoteDetailsModel ();
     model_omp_entity *getOverrideModel ();
     model_omp_entity *getOverrideDetailsModel ();
+    model_omp_entity *getSlaveModel ();
     model_omp_entity *getSystemDiagramModel ();
     model_omp_entity *getSystemReportModel ();
     model_omp_entity *getFamilyModel ();

Modified: trunk/gsd/src/gsd_dialogs.cpp
===================================================================
--- trunk/gsd/src/gsd_dialogs.cpp	2011-03-16 16:24:02 UTC (rev 10570)
+++ trunk/gsd/src/gsd_dialogs.cpp	2011-03-16 17:48:26 UTC (rev 10571)
@@ -1003,3 +1003,20 @@
 
   this->close ();
 }
+
+
+void
+dlg_new_slave::create ()
+{
+  QMap<QString,QString> parameter;
+  parameter.insert ("name", le_name->text ());
+  parameter.insert ("comment", le_comment->text ());
+  parameter.insert ("host", le_host->text ());
+  parameter.insert ("port", le_port->text ());
+  parameter.insert ("login", le_login->text ());
+  parameter.insert ("password", le_password->text ());
+
+  emit sig_create (omp_utilities::SLAVE, parameter);
+
+  this->close ();
+}

Modified: trunk/gsd/src/gsd_dialogs.h
===================================================================
--- trunk/gsd/src/gsd_dialogs.h	2011-03-16 16:24:02 UTC (rev 10570)
+++ trunk/gsd/src/gsd_dialogs.h	2011-03-16 17:48:26 UTC (rev 10571)
@@ -44,6 +44,7 @@
 #include "ui_dlg_newConfig.h"
 #include "ui_dlg_new_note.h"
 #include "ui_dlg_new_override.h"
+#include "ui_dlg_new_slave.h"
 #include "model_omp_entity.h"
 
 #include "ui_dlg_modify_config.h"
@@ -1155,5 +1156,27 @@
       };
 };
 
+
+class dlg_new_slave : public create_dialog,
+                      private Ui::dlg_new_slave
+{
+  Q_OBJECT
+
+  private slots:
+    void create ();
+
+  public:
+    dlg_new_slave ()
+      {
+        setupUi (this);
+        connect (pb_create,
+                 SIGNAL (released ()),
+                 this,
+                 SLOT (create ()));
+        QIntValidator *val = new QIntValidator (0, 65535, le_port);
+        le_port->setValidator(val);
+      }
+    ~dlg_new_slave () {};
+};
 #endif
 

Modified: trunk/gsd/src/gsd_dlg.cpp
===================================================================
--- trunk/gsd/src/gsd_dlg.cpp	2011-03-16 16:24:02 UTC (rev 10570)
+++ trunk/gsd/src/gsd_dlg.cpp	2011-03-16 17:48:26 UTC (rev 10571)
@@ -48,6 +48,7 @@
   new_escalator = new dlg_new_escalator ();
   new_credential = new dlg_new_credential ();
   new_agent = new dlg_new_agent ();
+  new_slave = new dlg_new_slave ();
 
   connect (login,
            SIGNAL (sig_save_profile (QString, omp_credentials&)),
@@ -97,6 +98,10 @@
            SIGNAL (sig_create (int, QMap<QString, QString>)),
            this,
            SLOT (create (int, QMap <QString, QString>)));
+  connect (new_slave,
+           SIGNAL (sig_create (int, QMap<QString, QString>)),
+           this,
+           SLOT (create (int, QMap<QString, QString>)));
 }
 
 gsd_dlg::~gsd_dlg ()
@@ -261,6 +266,12 @@
 
 
 void
+gsd_dlg::new_slave_dlg ()
+{
+  new_slave->show ();
+}
+
+void
 gsd_dlg::request_failed (int type, int command, int err)
 {}
 

Modified: trunk/gsd/src/gsd_dlg.h
===================================================================
--- trunk/gsd/src/gsd_dlg.h	2011-03-16 16:24:02 UTC (rev 10570)
+++ trunk/gsd/src/gsd_dlg.h	2011-03-16 17:48:26 UTC (rev 10571)
@@ -67,6 +67,7 @@
     void new_schedule_dlg ();
     void new_target_dlg ();
     void new_task_dlg ();
+    void new_slave_dlg ();
 
     void request_failed (int, int, int);
   private:
@@ -83,6 +84,7 @@
     dlg_new_escalator *new_escalator;
     dlg_new_credential *new_credential;
     dlg_new_agent *new_agent;
+    dlg_new_slave *new_slave;
 
   public:
     gsd_dlg (gsd_control *ctl);

Modified: trunk/gsd/src/gsd_mainwindow.ui
===================================================================
--- trunk/gsd/src/gsd_mainwindow.ui	2011-03-16 16:24:02 UTC (rev 10570)
+++ trunk/gsd/src/gsd_mainwindow.ui	2011-03-16 17:48:26 UTC (rev 10571)
@@ -80,16 +80,6 @@
              </property>
             </widget>
            </item>
-           <item row="0" column="1" >
-            <widget class="QLabel" name="label_3" >
-             <property name="text" >
-              <string>Resources Overview</string>
-             </property>
-             <property name="alignment" >
-              <set>Qt::AlignCenter</set>
-             </property>
-            </widget>
-           </item>
            <item row="1" column="0" >
             <widget class="QFrame" name="frame" >
              <property name="minimumSize" >
@@ -120,6 +110,16 @@
              </layout>
             </widget>
            </item>
+           <item row="0" column="1" >
+            <widget class="QLabel" name="label_3" >
+             <property name="text" >
+              <string>Resources Overview</string>
+             </property>
+             <property name="alignment" >
+              <set>Qt::AlignCenter</set>
+             </property>
+            </widget>
+           </item>
            <item row="1" column="1" >
             <widget class="QFrame" name="frame_4" >
              <property name="minimumSize" >
@@ -231,18 +231,6 @@
             </widget>
            </item>
           </layout>
-          <zorder>label</zorder>
-          <zorder>wv_task_count</zorder>
-          <zorder>label</zorder>
-          <zorder>frame</zorder>
-          <zorder>label_3</zorder>
-          <zorder>frame_4</zorder>
-          <zorder>label_2</zorder>
-          <zorder>label_4</zorder>
-          <zorder>frame_2</zorder>
-          <zorder>frame_3</zorder>
-          <zorder>frame_2</zorder>
-          <zorder>frame_3</zorder>
          </widget>
         </widget>
        </item>
@@ -321,6 +309,7 @@
     <addaction name="actionNotes" />
     <addaction name="actionOverrides" />
     <addaction name="actionPerformance" />
+    <addaction name="actionSlaves" />
    </widget>
    <widget class="QMenu" name="menuExtras" >
     <property name="title" >
@@ -924,6 +913,38 @@
     <string>&amp;Start Greenbone Security Assistant</string>
    </property>
   </action>
+  <action name="actionDetails_Slave" >
+   <property name="icon" >
+    <iconset resource="img/images.qrc" >
+     <normaloff>:/img/details.png</normaloff>:/img/details.png</iconset>
+   </property>
+   <property name="text" >
+    <string>Details</string>
+   </property>
+  </action>
+  <action name="actionDelete_Slave" >
+   <property name="icon" >
+    <iconset resource="img/images.qrc" >
+     <normaloff>:/img/delete.png</normaloff>:/img/delete.png</iconset>
+   </property>
+   <property name="text" >
+    <string>Delete</string>
+   </property>
+  </action>
+  <action name="actionNew_Slave" >
+   <property name="icon" >
+    <iconset resource="img/images.qrc" >
+     <normaloff>:/img/new.png</normaloff>:/img/new.png</iconset>
+   </property>
+   <property name="text" >
+    <string>New</string>
+   </property>
+  </action>
+  <action name="actionSlaves" >
+   <property name="text" >
+    <string>Slaves</string>
+   </property>
+  </action>
  </widget>
  <customwidgets>
   <customwidget>

Modified: trunk/gsd/src/gsd_mw.cpp
===================================================================
--- trunk/gsd/src/gsd_mw.cpp	2011-03-16 16:24:02 UTC (rev 10570)
+++ trunk/gsd/src/gsd_mw.cpp	2011-03-16 17:48:26 UTC (rev 10571)
@@ -72,6 +72,9 @@
   this->addDockWidget (Qt::BottomDockWidgetArea, overrides);
   performance = new dock_performance ();
   this->addDockWidget (Qt::BottomDockWidgetArea, performance);
+  slaves = new dock_table ();
+  slaves->setObjectName ("Slaves");
+  this->addDockWidget (Qt::BottomDockWidgetArea, slaves);
 
   taskProgress = new delegate_progress ();
   trendIcon = new delegate_trend ();
@@ -178,6 +181,11 @@
   overrides->addActionToToolBar (actionDelete_Override);
   overrides->addSeparator ();
   overrides->addActionToToolBar (actionDetails_Override);
+
+  slaves->addActionToToolBar (actionNew_Slave);
+  slaves->addActionToToolBar (actionDelete_Slave);
+  slaves->addSeparator ();
+  slaves->addActionToToolBar (actionDetails_Slave);
 }
 
 /**
@@ -238,6 +246,10 @@
   overrides->addSeparatorToMenu ();
   overrides->addActionToMenu (actionDetails_Override);
 
+  slaves->addActionToMenu (actionNew_Slave);
+  slaves->addActionToMenu (actionDelete_Slave);
+  slaves->addSeparatorToMenu ();
+  slaves->addActionToMenu (actionDetails_Slave);
 }
 
 
@@ -499,6 +511,34 @@
            this, SLOT (override_selectionchanged (const QItemSelection &,
                                                   const QItemSelection &)));
 
+  slaves->setWindowTitle (tr ("Slaves"));
+  QMainWindow::tabifyDockWidget (targets, slaves);
+  slaves->setModel (control->getSlaveModel ());
+  slaves->setFeatures (QDockWidget::DockWidgetClosable |
+                       QDockWidget::DockWidgetMovable |
+                       QDockWidget::DockWidgetFloatable);
+  QTableView *tv_slaves = slaves->getTable ();
+  tv_slaves->setObjectName ("tv_slaves");
+  tv_slaves->horizontalHeader ()->setResizeMode (QHeaderView::Fixed);
+  tv_slaves->horizontalHeader ()->setResizeMode (0, QHeaderView::Stretch);
+  tv_slaves->setColumnWidth (0, 150);
+  tv_slaves->setColumnWidth (1, 130);
+  tv_slaves->setColumnWidth (2, 60);
+  tv_slaves->setColumnWidth (3, 80);
+  tv_slaves->verticalHeader ()->setVisible (false);
+  tv_slaves->horizontalHeader ()->setHighlightSections (false);
+  tv_slaves->horizontalHeader ()->setMinimumSectionSize (60);
+
+  tv_slaves->installEventFilter (this);
+  connect (tv_slaves, SIGNAL (doubleClicked (const QModelIndex&)), this,
+           SLOT (details_slave_dlg ()));
+  connect (tv_slaves->selectionModel (),
+           SIGNAL (selectionChanged (const QItemSelection&,
+                                     const QItemSelection& )),
+           this,
+           SLOT (slave_selectionchanged (const QItemSelection&,
+                                         const QItemSelection&)));
+
   QMainWindow::tabifyDockWidget (targets, performance);
   performance->setReportModel (control->getSystemReportModel ());
   performance->setGraphicsModel (control->getSystemDiagramModel ());
@@ -743,6 +783,10 @@
            SIGNAL (triggered (bool)),
            this,
            SLOT (override_dw ()));
+  connect (actionSlaves,
+           SIGNAL (triggered (bool)),
+           this,
+           SLOT (slave_dw ()));
   connect (actionPerformance,
            SIGNAL (triggered(bool)),
            this,
@@ -811,6 +855,14 @@
            SIGNAL (triggered (bool)),
            this,
            SLOT (delete_override ()));
+  connect (actionNew_Slave,
+           SIGNAL (triggered (bool)),
+           this,
+           SLOT (new_slave_dlg ()));
+  connect (actionDelete_Slave,
+           SIGNAL (triggered (bool)),
+           this,
+           SLOT (delete_slave ()));
   connect (actionDetails_Target,
            SIGNAL (triggered (bool)),
            this,
@@ -843,6 +895,10 @@
            SIGNAL (triggered (bool)),
            this,
            SLOT (modify_override_dlg ()));
+  connect (actionDetails_Slave,
+           SIGNAL (triggered (bool)),
+           this,
+           SLOT (details_slave_dlg ()));
   connect (actionDetails_Task,
            SIGNAL (triggered (bool)),
            this,
@@ -960,6 +1016,9 @@
   actionDelete_Override->setDisabled (true);
   actionDetails_Override->setDisabled (true);
   actionEdit_Override->setDisabled (true);
+  actionNew_Slave->setDisabled (true);
+  actionDelete_Slave->setDisabled (true);
+  actionDetails_Slave->setDisabled (true);
   clearDashboard ();
 }
 
@@ -1011,6 +1070,8 @@
            SLOT (focus_notes (bool)));
   connect (overrides, SIGNAL (visibilityChanged (bool)), this,
            SLOT (focus_overrides (bool)));
+  connect (slaves, SIGNAL (visibilityChanged (bool)), this,
+           SLOT (focus_slaves (bool)));
   connect (performance, SIGNAL (visibilityChanged (bool)), this,
            SLOT (focus_performance (bool)));
 
@@ -1028,6 +1089,7 @@
   actionNew_Credential->setDisabled (false);
   actionNew_Agent->setDisabled (false);
   actionNew_Schedule->setDisabled (false);
+  actionNew_Slave->setDisabled (false);
 }
 
 
@@ -1370,6 +1432,23 @@
 
 
 /**
+ * @brief SLOT to delete currently selected slave.
+ *
+ * Emits sig_delete_slave (...) to delete the slave.
+ */
+void
+gsd_mw::delete_slave ()
+{
+  QModelIndexList selected = slaves->getTable ()->selectionModel ()
+                                                  ->selectedRows (0);
+  if (selected.at (0).isValid ())
+    emit sig_delete_slave (selected.at (0).row ());
+  else
+    QMessageBox::information (NULL,tr ("Status Error"),
+                              tr ("No slave selected!"));
+}
+
+/**
  * @brief Requests the new task dialog.
  */
 void
@@ -1440,6 +1519,16 @@
 
 
 /**
+ * @brief Requests the new slave dialog.
+ */
+void
+gsd_mw::new_slave_dlg ()
+{
+  emit sig_create_slave ();
+}
+
+
+/**
  * @brief Requests config details.
  */
 void
@@ -2433,6 +2522,87 @@
 
 
 /**
+ * @brief Requests slave details.
+ */
+void
+gsd_mw::details_slave_dlg ()
+{
+  QModelIndexList selected = slaves->getTable ()->selectionModel ()
+                                                   ->selectedRows (0);
+  if (selected.at (0).isValid ())
+    {
+      QDomElement slave = control->getSlaveModel ()
+                                  ->getEntity (selected.at (0).row ());
+      QString selected_id = control->getSlaveModel ()
+                                     ->getAttr (slave, "target id");
+      if (details_widgets.contains (selected_id))
+        {
+          QSettings settings ("Greenbone Networks GmbH", "GSD");
+          settings.beginGroup ("DockWidgets");
+          details_widgets[selected_id]->restoreGeometry (settings.value ("geometrie").toByteArray ());
+          settings.endGroup ();
+          details_widgets.value (selected_id)->show ();
+          details_widgets.value (selected_id)->update ();
+          details_widgets.value (selected_id)->raise ();
+        }
+      else
+        {
+          dock_details_slave *details = new dock_details_slave (this->control);
+          details->setId (selected_id);
+          details->load ();
+          QSettings settings ("Greenbone Networks GmbH", "GSD");
+          settings.beginGroup ("DockWidgets");
+          if (!this->restoreDockWidget (details))
+            {
+              int area = this->dockWidgetArea (details_widgets.value (selected_id));
+              QMapIterator <QString, dock_details*> i (details_widgets);
+              while (i.hasNext ())
+                {
+                  i.next ();
+                  int usedArea = this->dockWidgetArea (i.value ());
+                  if (usedArea == Qt::BottomDockWidgetArea &&
+                      i.key ().compare (selected_id) != 0 &&
+                      i.value ()->isVisible ())
+                    {
+                      details->show ();
+                      details->update ();
+                      this->tabifyDockWidget (i.value (), details);
+                      details->raise ();
+                      details_widgets.insert (selected_id, details);
+                      return;
+                    }
+                 }
+               this->addDockWidget (Qt::BottomDockWidgetArea, details);
+            }
+
+          settings.endGroup ();
+          if (this->dockWidgetArea (details) == Qt::BottomDockWidgetArea)
+            {
+              QMapIterator <QString, dock_details*> i (details_widgets);
+              while (i.hasNext ())
+                {
+                  i.next ();
+                  int usedArea = this->dockWidgetArea (i.value ());
+                  if (usedArea == Qt::BottomDockWidgetArea &&
+                      i.key ().compare (selected_id) != 0 &&
+                      i.value ()->isVisible ())
+                    {
+                      this->tabifyDockWidget (i.value (), details);
+                    }
+                }
+            }
+
+          details->show ();
+          details->update ();
+          details->raise ();
+          details_widgets.insert (selected_id, details);
+        }
+    }
+  else
+    QMessageBox::information (NULL,tr ("Status Error"),
+                              tr ("No slave selected!"));
+}
+/**
  * @brief Requests a config download.
  */
 void
@@ -2600,6 +2770,17 @@
 
 
 /**
+ * @brief SLOT to show overrides widget
+ */
+void
+gsd_mw::slave_dw ()
+{
+  slaves->show ();
+  slaves->raise ();
+}
+
+
+/**
  * @brief SLOT to show performance widget
  */
 void
@@ -2881,6 +3062,35 @@
 
 
 /**
+ * @brief SLOT called when the slaves dockwidget becomes visible or
+ * invisble.
+ */
+void
+gsd_mw::focus_slaves (bool focus)
+{
+  if (focus)
+    slaves->getTable ()->setFocus ();
+  slaves->getTable ()->viewport ()->update ();
+  if (!slaves->getTable ()->selectionModel ()->hasSelection ())
+    {
+      QModelIndex start;
+      QModelIndex end;
+      start = control->getSlaveModel ()->index (0, 0, QModelIndex ());
+      end = control->getSlaveModel ()->index (0,
+                                              control->getSlaveModel ()
+                                                       ->columnCount () -1,
+                                               QModelIndex ());
+      QItemSelection sel (start, end);
+      slaves->getTable ()
+              ->selectionModel ()
+                ->select (sel, QItemSelectionModel::Select);
+      return;
+    }
+ slave_selectionchanged (slaves->getTable ()->selectionModel ()->selection (),
+                             QItemSelection ());
+}
+
+/**
  * @brief SLOT called when the overrides dockwidget becomes visible or
  * invisble.
  *
@@ -3372,7 +3582,47 @@
   actionDetails_Override->setEnabled (true);
 }
 
+
 /**
+ * @brief SLOT to enable/disable action buttons in slave widget.
+ *
+ * @param[in]  sel    new selected index
+ * @param[in]  desel  previous selected index
+ */
+void
+gsd_mw::slave_selectionchanged (const QItemSelection &sel,
+                                   const QItemSelection &desel)
+{
+  int row = -1;
+  if (slaves->getTable ()->selectionModel () == NULL)
+    return;
+  if (sel.empty ())
+    {
+      actionDelete_Slave->setEnabled (false);
+      actionDetails_Slave->setEnabled (false);
+      return;
+    }
+  if (sel.at (0).top () >= 0 )
+    {
+      row = sel.at (0).top ();
+    }
+  else
+    {
+      row = 0;
+    }
+  QDomNode ent = control->getSlaveModel ()->getEntity (row);
+  if (ent.isNull ())
+    {
+      actionDelete_Slave->setEnabled (false);
+      actionDetails_Slave->setEnabled (false);
+      return;
+    }
+  actionDelete_Slave->setEnabled (true);
+  actionDetails_Slave->setEnabled (true);
+}
+
+
+/**
  * @brief Eventfiler for task tablewidget. Controls wether action buttons are
  * enabled.
  *
@@ -3929,7 +4179,6 @@
   QFile file4 (QString (OPENVAS_DATA_DIR).append ("/dash_resources.html"));
 #endif
 
-  qDebug () << QString (OPENVAS_DATA_DIR).append ("dash_task.html");
   QString tasks, trends, task_count, resources, color, label;
 
   if (!file1.open (QIODevice::ReadOnly))

Modified: trunk/gsd/src/gsd_mw.h
===================================================================
--- trunk/gsd/src/gsd_mw.h	2011-03-16 16:24:02 UTC (rev 10570)
+++ trunk/gsd/src/gsd_mw.h	2011-03-16 17:48:26 UTC (rev 10571)
@@ -65,6 +65,7 @@
     void sig_req_notes (int);
     void sig_req_overrides (int);
     void sig_req_nvt_families (int);
+    void sig_req_slaves (int);
 
     void sig_req_report (QMap<QString, QString>);
 
@@ -107,6 +108,9 @@
 
     void sig_delete_override (int);
 
+    void sig_delete_slave (int);
+    void sig_create_slave ();
+
     void sig_details_config (int);
     void sig_details_credential (int);
     void sig_details_escalator (int);
@@ -117,6 +121,7 @@
     void sig_details_override (QString);
     void sig_details_family (QString, QString);
     void sig_details_nvt (QString, QString);
+    void sig_details_slave (int);
     void sig_nvts (QString);
     void sig_modify_note (int);
     void sig_modify_override (int);
@@ -142,6 +147,7 @@
     void focus_agents (bool focus);
     void focus_notes (bool focus);
     void focus_overrides (bool focus);
+    void focus_slaves (bool focus);
     void focus_performance (bool focus);
 
     void save_config ();
@@ -160,6 +166,7 @@
     void new_escalator_dlg ();
     void new_credential_dlg ();
     void new_agent_dlg ();
+    void new_slave_dlg ();
     void modify_note_dlg ();
     void modify_override_dlg ();
     void modify_config_dlg ();
@@ -170,6 +177,7 @@
     void details_target_dlg ();
     void details_note_dlg ();
     void details_override_dlg ();
+    void details_slave_dlg ();
     void details_task_dlg ();
     void details_family_dlg (QString config, QString name);
     void details_nvt_dlg (QString config, QString oid);
@@ -181,6 +189,7 @@
     void delete_agent ();
     void delete_note ();
     void delete_override ();
+    void delete_slave ();
 
     void show_report (QString id, QString task);
 
@@ -214,6 +223,7 @@
     void agent_dw ();
     void note_dw ();
     void override_dw ();
+    void slave_dw ();
     void performance_dw ();
     void update_dw ();
 
@@ -235,6 +245,8 @@
                                 const QItemSelection &desel);
     void override_selectionchanged (const QItemSelection &sel,
                                     const QItemSelection &desel);
+    void slave_selectionchanged (const QItemSelection &sel,
+                                 const QItemSelection &desel);
     void write_settings ();
     void read_settings ();
     void clear_dock_widget_settings ();
@@ -284,6 +296,7 @@
     dock_table *agents;
     dock_table *notes;
     dock_table *overrides;
+    dock_table *slaves;
     dock_table *quickInfo;
     delegate_progress *taskProgress;
     delegate_trend *trendIcon;

Modified: trunk/gsd/src/omp_string_builder.cpp
===================================================================
--- trunk/gsd/src/omp_string_builder.cpp	2011-03-16 16:24:02 UTC (rev 10570)
+++ trunk/gsd/src/omp_string_builder.cpp	2011-03-16 17:48:26 UTC (rev 10571)
@@ -77,6 +77,8 @@
                                              break;
       case omp_utilities::OVERRIDE: command.append ("overrides ");
                                     break;
+      case omp_utilities::SLAVE: command.append ("slaves");
+                                 break;
       case omp_utilities::PREFERENCE: command.append ("preferences ");
                                       break;
       case omp_utilities::REPORT: command.append ("reports ");
@@ -157,6 +159,8 @@
                                   break;
       case omp_utilities::TASK: typeStr = "task ";
                                 break;
+      case omp_utilities::SLAVE: typeStr = "slave ";
+                                 break;
       default: return QString ("");
     }
   command.append (typeStr + ">");
@@ -206,6 +210,8 @@
                                   break;
       case omp_utilities::TASK: typeString = "task";
                                 break;
+      case omp_utilities::SLAVE: typeString = "slave";
+                                 break;
       default: return QString ("");
     }
 
@@ -743,7 +749,30 @@
           return com;
         }
     }
-
+  if (type == omp_utilities::SLAVE)
+    {
+      if (parameter["name"].compare ("") == 0 ||
+          parameter["host"].compare ("") == 0 ||
+          parameter["port"].compare ("") == 0 ||
+          parameter["login"].compare ("") == 0 ||
+          parameter["password"].compare ("") == 0)
+        return QString ("");
+      else
+        {
+          com = QString ("<name>%1</name>"
+                         "<comment>%2</comment>"
+                         "<host>%3</host>"
+                         "<port>%4</port>"
+                         "<login>%5</login>"
+                         "<password>%6</password>").arg (parameter["name"])
+                                                   .arg (parameter["comment"])
+                                                   .arg (parameter["host"])
+                                                   .arg (parameter["port"])
+                                                   .arg (parameter["login"])
+                                                   .arg (parameter["password"]);
+          return com;
+        }
+    }
   return QString ("");
 }
 

Modified: trunk/gsd/src/omp_utilities.cpp
===================================================================
--- trunk/gsd/src/omp_utilities.cpp	2011-03-16 16:24:02 UTC (rev 10570)
+++ trunk/gsd/src/omp_utilities.cpp	2011-03-16 17:48:26 UTC (rev 10571)
@@ -105,6 +105,8 @@
     return omp_utilities::TASK;
   else if (type.compare ("version") == 0)
     return omp_utilities::VERSION;
+  else if (type.compare ("slave") == 0)
+    return omp_utilities::SLAVE;
   else
     return omp_utilities::NONE;
 }

Modified: trunk/gsd/src/omp_utilities.h
===================================================================
--- trunk/gsd/src/omp_utilities.h	2011-03-16 16:24:02 UTC (rev 10570)
+++ trunk/gsd/src/omp_utilities.h	2011-03-16 17:48:26 UTC (rev 10571)
@@ -72,6 +72,7 @@
         TASK = 18,
         VERSION = 19,
         REPORT_FORMAT = 20,
+        SLAVE = 21,
       };
     typedef int omp_type;
 



More information about the Openvas-commits mailing list