SSH data collection working
authorVictor Kirhenshtein <victor@netxms.org>
Tue, 2 Aug 2016 08:49:16 +0000 (11:49 +0300)
committerVictor Kirhenshtein <victor@netxms.org>
Tue, 2 Aug 2016 08:49:16 +0000 (11:49 +0300)
100 files changed:
include/netxmsdb.h
include/nms_common.h
include/nms_cscp.h
include/nxcldefs.h
sql/schema.in
src/agent/subagents/ssh/session.cpp
src/java/client/netxms-base/src/main/java/org/netxms/base/NXCPCodes.java
src/java/client/netxms-client/src/main/java/org/netxms/client/NXCObjectModificationData.java
src/java/client/netxms-client/src/main/java/org/netxms/client/NXCSession.java
src/java/client/netxms-client/src/main/java/org/netxms/client/datacollection/DataCollectionObject.java
src/java/client/netxms-client/src/main/java/org/netxms/client/objects/AbstractNode.java
src/java/client/netxms-client/src/main/java/org/netxms/client/objects/Zone.java
src/java/netxms-eclipse/DataCollection/META-INF/MANIFEST.MF
src/java/netxms-eclipse/DataCollection/OSGI-INF/l10n/bundle_de.properties
src/java/netxms-eclipse/DataCollection/OSGI-INF/l10n/bundle_es.properties
src/java/netxms-eclipse/DataCollection/OSGI-INF/l10n/bundle_fr.properties
src/java/netxms-eclipse/DataCollection/OSGI-INF/l10n/bundle_pt.properties
src/java/netxms-eclipse/DataCollection/OSGI-INF/l10n/bundle_zh_CN.properties
src/java/netxms-eclipse/DataCollection/src/org/netxms/ui/eclipse/datacollection/Messages.java
src/java/netxms-eclipse/DataCollection/src/org/netxms/ui/eclipse/datacollection/messages.properties
src/java/netxms-eclipse/DataCollection/src/org/netxms/ui/eclipse/datacollection/messages_cs.properties
src/java/netxms-eclipse/DataCollection/src/org/netxms/ui/eclipse/datacollection/messages_de.properties
src/java/netxms-eclipse/DataCollection/src/org/netxms/ui/eclipse/datacollection/messages_es.properties
src/java/netxms-eclipse/DataCollection/src/org/netxms/ui/eclipse/datacollection/messages_fr.properties
src/java/netxms-eclipse/DataCollection/src/org/netxms/ui/eclipse/datacollection/messages_pt.properties
src/java/netxms-eclipse/DataCollection/src/org/netxms/ui/eclipse/datacollection/messages_ru.properties
src/java/netxms-eclipse/DataCollection/src/org/netxms/ui/eclipse/datacollection/messages_zh_CN.properties
src/java/netxms-eclipse/DataCollection/src/org/netxms/ui/eclipse/datacollection/propertypages/General.java
src/java/netxms-eclipse/DataCollection/src/org/netxms/ui/eclipse/datacollection/views/helpers/DciLabelProvider.java
src/java/netxms-eclipse/ObjectManager/OSGI-INF/l10n/bundle.properties
src/java/netxms-eclipse/ObjectManager/OSGI-INF/l10n/bundle_cs.properties
src/java/netxms-eclipse/ObjectManager/OSGI-INF/l10n/bundle_de.properties
src/java/netxms-eclipse/ObjectManager/OSGI-INF/l10n/bundle_es.properties
src/java/netxms-eclipse/ObjectManager/OSGI-INF/l10n/bundle_fr.properties
src/java/netxms-eclipse/ObjectManager/OSGI-INF/l10n/bundle_pt.properties
src/java/netxms-eclipse/ObjectManager/OSGI-INF/l10n/bundle_ru.properties
src/java/netxms-eclipse/ObjectManager/OSGI-INF/l10n/bundle_zh_CN.properties
src/java/netxms-eclipse/ObjectManager/plugin.xml
src/java/netxms-eclipse/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/Messages.java
src/java/netxms-eclipse/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/messages.properties
src/java/netxms-eclipse/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/messages_cs.properties
src/java/netxms-eclipse/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/messages_de.properties
src/java/netxms-eclipse/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/messages_es.properties
src/java/netxms-eclipse/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/messages_fr.properties
src/java/netxms-eclipse/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/messages_pt.properties
src/java/netxms-eclipse/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/messages_ru.properties
src/java/netxms-eclipse/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/messages_zh_CN.properties
src/java/netxms-eclipse/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/propertypages/Agent.java [new file with mode: 0644]
src/java/netxms-eclipse/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/propertypages/Communication.java
src/java/netxms-eclipse/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/propertypages/ICMP.java [new file with mode: 0644]
src/java/netxms-eclipse/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/propertypages/SNMP.java [new file with mode: 0644]
src/java/netxms-eclipse/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/propertypages/SSH.java [new file with mode: 0644]
src/java/netxms-eclipse/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/propertypages/ZoneCommunications.java
src/server/core/datacoll.cpp
src/server/core/node.cpp
src/server/core/zone.cpp
src/server/include/nms_objects.h
src/server/tools/nxdbmgr/upgrade.cpp
webui/webapp/DataCollection/META-INF/MANIFEST.MF
webui/webapp/DataCollection/OSGI-INF/l10n/bundle_de.properties
webui/webapp/DataCollection/OSGI-INF/l10n/bundle_es.properties
webui/webapp/DataCollection/OSGI-INF/l10n/bundle_fr.properties
webui/webapp/DataCollection/OSGI-INF/l10n/bundle_pt.properties
webui/webapp/DataCollection/OSGI-INF/l10n/bundle_zh_CN.properties
webui/webapp/DataCollection/src/org/netxms/ui/eclipse/datacollection/Messages.java
webui/webapp/DataCollection/src/org/netxms/ui/eclipse/datacollection/messages.properties
webui/webapp/DataCollection/src/org/netxms/ui/eclipse/datacollection/messages_cs.properties
webui/webapp/DataCollection/src/org/netxms/ui/eclipse/datacollection/messages_de.properties
webui/webapp/DataCollection/src/org/netxms/ui/eclipse/datacollection/messages_es.properties
webui/webapp/DataCollection/src/org/netxms/ui/eclipse/datacollection/messages_fr.properties
webui/webapp/DataCollection/src/org/netxms/ui/eclipse/datacollection/messages_pt.properties
webui/webapp/DataCollection/src/org/netxms/ui/eclipse/datacollection/messages_ru.properties
webui/webapp/DataCollection/src/org/netxms/ui/eclipse/datacollection/messages_zh_CN.properties
webui/webapp/DataCollection/src/org/netxms/ui/eclipse/datacollection/propertypages/General.java
webui/webapp/DataCollection/src/org/netxms/ui/eclipse/datacollection/views/helpers/DciLabelProvider.java
webui/webapp/ObjectManager/META-INF/MANIFEST.MF
webui/webapp/ObjectManager/OSGI-INF/l10n/bundle.properties
webui/webapp/ObjectManager/OSGI-INF/l10n/bundle_cs.properties
webui/webapp/ObjectManager/OSGI-INF/l10n/bundle_de.properties
webui/webapp/ObjectManager/OSGI-INF/l10n/bundle_es.properties
webui/webapp/ObjectManager/OSGI-INF/l10n/bundle_fr.properties
webui/webapp/ObjectManager/OSGI-INF/l10n/bundle_pt.properties
webui/webapp/ObjectManager/OSGI-INF/l10n/bundle_ru.properties
webui/webapp/ObjectManager/OSGI-INF/l10n/bundle_zh_CN.properties
webui/webapp/ObjectManager/plugin.xml
webui/webapp/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/Messages.java
webui/webapp/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/messages.properties
webui/webapp/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/messages_cs.properties
webui/webapp/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/messages_de.properties
webui/webapp/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/messages_es.properties
webui/webapp/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/messages_fr.properties
webui/webapp/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/messages_pt.properties
webui/webapp/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/messages_ru.properties
webui/webapp/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/messages_zh_CN.properties
webui/webapp/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/propertypages/Agent.java [new file with mode: 0644]
webui/webapp/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/propertypages/Communication.java
webui/webapp/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/propertypages/ICMP.java [new file with mode: 0644]
webui/webapp/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/propertypages/SNMP.java [new file with mode: 0644]
webui/webapp/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/propertypages/SSH.java [new file with mode: 0644]
webui/webapp/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/propertypages/ZoneCommunications.java

index 5e00b6a..b5907ca 100644 (file)
@@ -23,6 +23,6 @@
 #ifndef _netxmsdb_h
 #define _netxmsdb_h
 
-#define DB_FORMAT_VERSION   409
+#define DB_FORMAT_VERSION   410
 
 #endif
index aea662e..3ec6c51 100644 (file)
 #define MAX_DNS_NAME             256
 #define MAX_HELPDESK_REF_LEN     64
 #define MAX_PASSWORD             256
+#define MAX_SSH_LOGIN_LEN        64
+#define MAX_SSH_PASSWORD_LEN     64
 #define GROUP_FLAG               ((UINT32)0x80000000)
 
 #define NETXMS_MAX_CIPHERS       6
index 7eaccf9..9a4b257 100644 (file)
@@ -1129,6 +1129,9 @@ typedef struct
 #define VID_CONTROLLER_ID           ((UINT32)543)
 #define VID_CHASSIS_ID              ((UINT32)544)
 #define VID_NODE_SUBTYPE            ((UINT32)545)
+#define VID_SSH_LOGIN               ((UINT32)546)
+#define VID_SSH_PASSWORD            ((UINT32)547)
+#define VID_SSH_PROXY               ((UINT32)548)
 
 // Base variabe for single threshold in message
 #define VID_THRESHOLD_BASE          ((UINT32)0x00800000)
index 790b6ca..fa326ed 100644 (file)
@@ -804,6 +804,7 @@ enum SessionState
 #define DS_WINPERF            5
 #define DS_SMCLP              6
 #define DS_SCRIPT             7
+#define DS_SSH                8
 
 /**
  * Item status
index b3a0961..251878f 100644 (file)
@@ -290,6 +290,7 @@ CREATE TABLE zones
   agent_proxy integer not null,
   snmp_proxy integer not null,
   icmp_proxy integer not null,
+  ssh_proxy integer not null,
   PRIMARY KEY(id)
 ) TABLE_TYPE;
 
@@ -443,6 +444,9 @@ CREATE TABLE nodes
   snmp_trap_count SQL_INT64 not null,
   node_type integer not null,
   node_subtype varchar(127) null,
+  ssh_login varchar(63) null,
+  ssh_password varchar(63) null,
+  ssh_proxy integer not null,
   PRIMARY KEY(id)
 ) TABLE_TYPE;
 
index 6509eff..52a5b1f 100644 (file)
@@ -147,6 +147,9 @@ StringList *SSHSession::execute(const TCHAR *command)
             while(eol != NULL)
             {
                *eol = 0;
+               char *cr = strchr(curr, '\r');
+               if (cr != NULL)
+                  *cr = 0;
                output->addMBString(curr);
                curr = eol + 1;
                eol = strchr(curr, '\n');
@@ -161,6 +164,9 @@ StringList *SSHSession::execute(const TCHAR *command)
             if (offset > 0)
             {
                buffer[offset] = 0;
+               char *cr = strchr(buffer, '\r');
+               if (cr != NULL)
+                  *cr = 0;
                output->addMBString(buffer);
             }
             ssh_channel_send_eof(channel);
index c93ab5a..6010811 100644 (file)
@@ -917,6 +917,9 @@ public class NXCPCodes
    public static final long VID_CONTROLLER_ID = 543;
    public static final long VID_CHASSIS_ID = 544;
    public static final long VID_NODE_SUBTYPE = 545;
+   public static final long VID_SSH_LOGIN = 546;
+   public static final long VID_SSH_PASSWORD = 547;
+   public static final long VID_SSH_PROXY = 548;
 
        public static final long VID_ACL_USER_BASE = 0x00001000L;
        public static final long VID_ACL_USER_LAST = 0x00001FFFL;
index 2ac33f3..4d0bed4 100644 (file)
@@ -24,8 +24,10 @@ import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.net.InetAddress;
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.UUID;
 import org.netxms.base.GeoLocation;
 import org.netxms.base.InetAddressEx;
@@ -46,71 +48,74 @@ import org.netxms.client.objects.ClusterResource;
 public class NXCObjectModificationData
 {
        // Modification flags
-       public static final long MODIFY_NAME               = 0x0000000000000001L;
-       public static final long MODIFY_ACL                = 0x0000000000000002L;
-       public static final long MODIFY_CUSTOM_ATTRIBUTES  = 0x0000000000000004L;
-       public static final long MODIFY_AUTOBIND_FILTER    = 0x0000000000000008L;
-       public static final long MODIFY_LINK_COLOR         = 0x0000000000000010L;
-       public static final long MODIFY_POLICY_CONFIG      = 0x0000000000000020L;
-       public static final long MODIFY_VERSION            = 0x0000000000000040L;
-       public static final long MODIFY_DESCRIPTION        = 0x0000000000000080L;
-       public static final long MODIFY_AGENT_PORT         = 0x0000000000000100L;
-       public static final long MODIFY_AGENT_AUTH         = 0x0000000000000200L;
-       public static final long MODIFY_SNMP_VERSION       = 0x0000000000000400L;
-       public static final long MODIFY_SNMP_AUTH          = 0x0000000000000800L;
-       public static final long MODIFY_AGENT_PROXY        = 0x0000000000001000L;
-       public static final long MODIFY_SNMP_PROXY         = 0x0000000000002000L;
-       public static final long MODIFY_TRUSTED_NODES      = 0x0000000000004000L;
-       public static final long MODIFY_GEOLOCATION        = 0x0000000000008000L;
-       public static final long MODIFY_PRIMARY_IP         = 0x0000000000010000L;
-       public static final long MODIFY_SNMP_PORT          = 0x0000000000020000L;
-       public static final long MODIFY_MAP_LAYOUT         = 0x0000000000040000L;
-       public static final long MODIFY_MAP_BACKGROUND     = 0x0000000000080000L;
-       public static final long MODIFY_MAP_CONTENT        = 0x0000000000100000L;
-       public static final long MODIFY_IMAGE              = 0x0000000000200000L;
-       public static final long MODIFY_ICMP_PROXY         = 0x0000000000400000L;
-       public static final long MODIFY_COLUMN_COUNT       = 0x0000000000800000L;
-       public static final long MODIFY_DASHBOARD_ELEMENTS = 0x0000000001000000L;
-       public static final long MODIFY_SCRIPT             = 0x0000000002000000L;
-       public static final long MODIFY_ACTIVATION_EVENT   = 0x0000000004000000L;
-       public static final long MODIFY_DEACTIVATION_EVENT = 0x0000000008000000L;
-       public static final long MODIFY_SOURCE_OBJECT      = 0x0000000010000000L;
-       public static final long MODIFY_ACTIVE_STATUS      = 0x0000000020000000L;
-       public static final long MODIFY_INACTIVE_STATUS    = 0x0000000040000000L;
-       public static final long MODIFY_DCI_LIST           = 0x0000000080000000L;
-       public static final long MODIFY_SUBMAP_ID          = 0x0000000100000000L;
-       public static final long MODIFY_IP_ADDRESS         = 0x0000000200000000L;
-       public static final long MODIFY_IP_PROTOCOL        = 0x0000000400000000L;
-       public static final long MODIFY_IP_PORT            = 0x0000000800000000L;
-       public static final long MODIFY_SERVICE_TYPE       = 0x0000001000000000L;
-       public static final long MODIFY_POLLER_NODE        = 0x0000002000000000L;
-       public static final long MODIFY_REQUIRED_POLLS     = 0x0000004000000000L;
-       public static final long MODIFY_REQUEST            = 0x0000008000000000L;
-       public static final long MODIFY_RESPONSE           = 0x0000010000000000L;
-       public static final long MODIFY_OBJECT_FLAGS       = 0x0000020000000000L;
-       public static final long MODIFY_IFXTABLE_POLICY    = 0x0000040000000000L;
-       public static final long MODIFY_REPORT_DEFINITION  = 0x0000080000000000L;
-       public static final long MODIFY_CLUSTER_RESOURCES  = 0x0000100000000000L;
-       public static final long MODIFY_PRIMARY_NAME       = 0x0000200000000000L;
-       public static final long MODIFY_STATUS_CALCULATION = 0x0000400000000000L;
-       public static final long MODIFY_CLUSTER_NETWORKS   = 0x0000800000000000L;
-       public static final long MODIFY_EXPECTED_STATE     = 0x0001000000000000L;
-       public static final long MODIFY_CONNECTION_ROUTING = 0x0002000000000000L;
-       public static final long MODIFY_DISCOVERY_RADIUS   = 0x0004000000000000L;
-       public static final long MODIFY_HEIGHT             = 0x0008000000000000L;
-       public static final long MODIFY_FILTER             = 0x0010000000000000L;
-   public static final long MODIFY_PEER_GATEWAY       = 0x0020000000000000L;
-   public static final long MODIFY_VPN_NETWORKS       = 0x0040000000000000L;
-   public static final long MODIFY_POSTAL_ADDRESS     = 0x0080000000000000L;
-   public static final long MODIFY_AGENT_CACHE_MODE   = 0x0100000000000000L;
-   public static final long MODIFY_MAPOBJ_DISP_MODE   = 0x0200000000000000L;
-   public static final long MODIFY_RACK_PLACEMENT     = 0x0400000000000000L;
-   public static final long MODIFY_DASHBOARD_LIST     = 0x0800000000000000L;
-   public static final long MODIFY_RACK_NUMB_SCHEME   = 0x1000000000000000L;
-   public static final long MODIFY_CONTROLLER_ID      = 0x2000000000000000L;
-   public static final long MODIFY_CHASSIS_ID         = 0x4000000000000000L;
+       public static final int NAME               = 1;
+       public static final int ACL                = 2;
+       public static final int CUSTOM_ATTRIBUTES  = 3;
+       public static final int AUTOBIND_FILTER    = 4;
+       public static final int LINK_COLOR         = 5;
+       public static final int POLICY_CONFIG      = 6;
+       public static final int VERSION            = 7;
+       public static final int DESCRIPTION        = 8;
+       public static final int AGENT_PORT         = 9;
+       public static final int AGENT_AUTH         = 10;
+       public static final int SNMP_VERSION       = 11;
+       public static final int SNMP_AUTH          = 12;
+       public static final int AGENT_PROXY        = 13;
+       public static final int SNMP_PROXY         = 14;
+       public static final int TRUSTED_NODES      = 15;
+       public static final int GEOLOCATION        = 16;
+       public static final int PRIMARY_IP         = 17;
+       public static final int SNMP_PORT          = 18;
+       public static final int MAP_LAYOUT         = 19;
+       public static final int MAP_BACKGROUND     = 20;
+       public static final int MAP_CONTENT        = 21;
+       public static final int IMAGE              = 22;
+       public static final int ICMP_PROXY         = 23;
+       public static final int COLUMN_COUNT       = 24;
+       public static final int DASHBOARD_ELEMENTS = 25;
+       public static final int SCRIPT             = 26;
+       public static final int ACTIVATION_EVENT   = 27;
+       public static final int DEACTIVATION_EVENT = 28;
+       public static final int SOURCE_OBJECT      = 29;
+       public static final int ACTIVE_STATUS      = 30;
+       public static final int INACTIVE_STATUS    = 31;
+       public static final int DCI_LIST           = 32;
+       public static final int SUBMAP_ID          = 33;
+       public static final int IP_ADDRESS         = 34;
+       public static final int IP_PROTOCOL        = 35;
+       public static final int IP_PORT            = 36;
+       public static final int SERVICE_TYPE       = 37;
+       public static final int POLLER_NODE        = 38;
+       public static final int REQUIRED_POLLS     = 39;
+       public static final int REQUEST            = 40;
+       public static final int RESPONSE           = 41;
+       public static final int OBJECT_FLAGS       = 42;
+       public static final int IFXTABLE_POLICY    = 43;
+       public static final int REPORT_DEFINITION  = 44;
+       public static final int CLUSTER_RESOURCES  = 45;
+       public static final int PRIMARY_NAME       = 46;
+       public static final int STATUS_CALCULATION = 47;
+       public static final int CLUSTER_NETWORKS   = 48;
+       public static final int EXPECTED_STATE     = 49;
+       public static final int CONNECTION_ROUTING = 50;
+       public static final int DISCOVERY_RADIUS   = 51;
+       public static final int HEIGHT             = 52;
+       public static final int FILTER             = 53;
+   public static final int PEER_GATEWAY       = 54;
+   public static final int VPN_NETWORKS       = 55;
+   public static final int POSTAL_ADDRESS     = 56;
+   public static final int AGENT_CACHE_MODE   = 57;
+   public static final int MAPOBJ_DISP_MODE   = 58;
+   public static final int RACK_PLACEMENT     = 59;
+   public static final int DASHBOARD_LIST     = 60;
+   public static final int RACK_NUMB_SCHEME   = 61;
+   public static final int CONTROLLER_ID      = 62;
+   public static final int CHASSIS_ID         = 63;
+   public static final int SSH_PROXY          = 64;
+   public static final int SSH_LOGIN          = 65;
+   public static final int SSH_PASSWORD       = 66;
        
-       private long flags;             // Flags which indicates what object's data should be modified
+       private Set<Integer> fieldSet;
        private long objectId;
        private String name;
        private String primaryName;
@@ -196,6 +201,9 @@ public class NXCObjectModificationData
        private boolean rackNumberingTopBottom;
        private long controllerId;
        private long chassisId;
+       private long sshProxy;
+       private String sshLogin;
+       private String sshPassword;
        
        /**
         * Constructor for creating modification data for given object
@@ -203,7 +211,7 @@ public class NXCObjectModificationData
        public NXCObjectModificationData(long objectId)
        {
                this.objectId = objectId;
-               flags = 0;
+               fieldSet = new HashSet<Integer>(128);
        }
 
        /**
@@ -236,15 +244,18 @@ public class NXCObjectModificationData
        public void setName(final String name)
        {
                this.name = name;
-               flags |= MODIFY_NAME;
+               fieldSet.add(NAME);
        }
 
        /**
-        * @return the flags
+        * Check if given field is set for modification.
+        * 
+        * @param field field code
+        * @return true if given field is set
         */
-       public long getFlags()
+       public boolean isFieldSet(int field)
        {
-               return flags;
+               return fieldSet.contains(field);
        }
 
        /**
@@ -261,7 +272,7 @@ public class NXCObjectModificationData
        public void setACL(AccessListElement[] acl)
        {
                this.acl = acl;
-               flags |= MODIFY_ACL;
+               fieldSet.add(ACL);
        }
 
        /**
@@ -278,7 +289,7 @@ public class NXCObjectModificationData
        public void setInheritAccessRights(boolean inheritAccessRights)
        {
                this.inheritAccessRights = inheritAccessRights;
-               flags |= MODIFY_ACL;
+               fieldSet.add(ACL);
        }
 
        /**
@@ -295,7 +306,7 @@ public class NXCObjectModificationData
        public void setCustomAttributes(Map<String, String> customAttributes)
        {
                this.customAttributes = customAttributes;
-               flags |= MODIFY_CUSTOM_ATTRIBUTES;
+               fieldSet.add(CUSTOM_ATTRIBUTES);
        }
 
        /**
@@ -312,7 +323,7 @@ public class NXCObjectModificationData
        public void setAutoBindFilter(String autoBindFilter)
        {
                this.autoBindFilter = autoBindFilter;
-               flags |= MODIFY_AUTOBIND_FILTER;
+               fieldSet.add(AUTOBIND_FILTER);
        }
 
        /**
@@ -329,7 +340,7 @@ public class NXCObjectModificationData
        public void setConfigFileContent(String configFileContent)
        {
                this.configFileContent = configFileContent;
-               flags |= MODIFY_POLICY_CONFIG;
+               fieldSet.add(POLICY_CONFIG);
        }
 
        /**
@@ -346,7 +357,7 @@ public class NXCObjectModificationData
        public void setVersion(int version)
        {
                this.version = version;
-               flags |= MODIFY_VERSION;
+               fieldSet.add(VERSION);
        }
 
        /**
@@ -363,7 +374,7 @@ public class NXCObjectModificationData
        public void setDescription(String description)
        {
                this.description = description;
-               flags |= MODIFY_DESCRIPTION;
+               fieldSet.add(DESCRIPTION);
        }
 
        public int getAgentPort()
@@ -374,7 +385,7 @@ public class NXCObjectModificationData
        public void setAgentPort(int agentPort)
        {
                this.agentPort = agentPort;
-               flags |= MODIFY_AGENT_PORT;
+               fieldSet.add(AGENT_PORT);
        }
 
        /**
@@ -391,7 +402,7 @@ public class NXCObjectModificationData
        public void setAgentAuthMethod(int agentAuthMethod)
        {
                this.agentAuthMethod = agentAuthMethod;
-               flags |= MODIFY_AGENT_AUTH;
+               fieldSet.add(AGENT_AUTH);
        }
 
        /**
@@ -408,7 +419,7 @@ public class NXCObjectModificationData
        public void setAgentSecret(String agentSecret)
        {
                this.agentSecret = agentSecret;
-               flags |= MODIFY_AGENT_AUTH;
+               fieldSet.add(AGENT_AUTH);
        }
 
        /**
@@ -425,7 +436,7 @@ public class NXCObjectModificationData
        public void setAgentProxy(long agentProxy)
        {
                this.agentProxy = agentProxy;
-               flags |= MODIFY_AGENT_PROXY;
+               fieldSet.add(AGENT_PROXY);
        }
 
        /**
@@ -442,7 +453,7 @@ public class NXCObjectModificationData
        public void setSnmpVersion(int snmpVersion)
        {
                this.snmpVersion = snmpVersion;
-               flags |= MODIFY_SNMP_VERSION;
+               fieldSet.add(SNMP_VERSION);
        }
 
        /**
@@ -459,7 +470,7 @@ public class NXCObjectModificationData
        public void setSnmpAuthMethod(int snmpAuthMethod)
        {
                this.snmpAuthMethod = snmpAuthMethod;
-               flags |= MODIFY_SNMP_AUTH;
+               fieldSet.add(SNMP_AUTH);
        }
 
        /**
@@ -476,7 +487,7 @@ public class NXCObjectModificationData
        public void setSnmpPrivMethod(int snmpPrivMethod)
        {
                this.snmpPrivMethod = snmpPrivMethod;
-               flags |= MODIFY_SNMP_AUTH;
+               fieldSet.add(SNMP_AUTH);
        }
 
        /**
@@ -493,7 +504,7 @@ public class NXCObjectModificationData
        public void setSnmpAuthName(String snmpAuthName)
        {
                this.snmpAuthName = snmpAuthName;
-               flags |= MODIFY_SNMP_AUTH;
+               fieldSet.add(SNMP_AUTH);
        }
 
        /**
@@ -510,7 +521,7 @@ public class NXCObjectModificationData
        public void setSnmpAuthPassword(String snmpAuthPassword)
        {
                this.snmpAuthPassword = snmpAuthPassword;
-               flags |= MODIFY_SNMP_AUTH;
+               fieldSet.add(SNMP_AUTH);
        }
 
        /**
@@ -527,7 +538,7 @@ public class NXCObjectModificationData
        public void setSnmpPrivPassword(String snmpPrivPassword)
        {
                this.snmpPrivPassword = snmpPrivPassword;
-               flags |= MODIFY_SNMP_AUTH;
+               fieldSet.add(SNMP_AUTH);
        }
 
        /**
@@ -544,7 +555,7 @@ public class NXCObjectModificationData
        public void setSnmpProxy(long snmpProxy)
        {
                this.snmpProxy = snmpProxy;
-               flags |= MODIFY_SNMP_PROXY;
+               fieldSet.add(SNMP_PROXY);
        }
 
        /**
@@ -561,7 +572,7 @@ public class NXCObjectModificationData
        public void setIcmpProxy(long icmpProxy)
        {
                this.icmpProxy = icmpProxy;
-               flags |= MODIFY_ICMP_PROXY;
+               fieldSet.add(ICMP_PROXY);
        }
 
        /**
@@ -578,7 +589,7 @@ public class NXCObjectModificationData
        public void setTrustedNodes(long[] trustedNodes)
        {
                this.trustedNodes = trustedNodes;
-               flags |= MODIFY_TRUSTED_NODES;
+               fieldSet.add(TRUSTED_NODES);
        }
 
        /**
@@ -595,7 +606,7 @@ public class NXCObjectModificationData
        public void setGeolocation(GeoLocation geolocation)
        {
                this.geolocation = geolocation;
-               flags |= MODIFY_GEOLOCATION;
+               fieldSet.add(GEOLOCATION);
        }
 
        /**
@@ -612,7 +623,7 @@ public class NXCObjectModificationData
        public void setPrimaryIpAddress(InetAddress primaryIpAddress)
        {
                this.primaryIpAddress = primaryIpAddress;
-               flags |= MODIFY_PRIMARY_IP;
+               fieldSet.add(PRIMARY_IP);
        }
 
        /**
@@ -629,7 +640,7 @@ public class NXCObjectModificationData
        public void setSnmpPort(int snmpPort)
        {
                this.snmpPort = snmpPort;
-               flags |= MODIFY_SNMP_PORT;
+               fieldSet.add(SNMP_PORT);
        }
 
        /**
@@ -646,7 +657,7 @@ public class NXCObjectModificationData
        public void setMapLayout(MapLayoutAlgorithm mapLayout)
        {
                this.mapLayout = mapLayout;
-               flags |= MODIFY_MAP_LAYOUT;
+               fieldSet.add(MAP_LAYOUT);
        }
 
        /**
@@ -666,7 +677,7 @@ public class NXCObjectModificationData
                this.mapBackgroundLocation = mapBackgroundLocation;
                this.mapBackgroundZoom = mapBackgroundZoom;
                this.mapBackgroundColor = mapBackgroundColor;
-               flags |= MODIFY_MAP_BACKGROUND;
+               fieldSet.add(MAP_BACKGROUND);
        }
 
        /**
@@ -695,7 +706,7 @@ public class NXCObjectModificationData
        {
                mapElements = elements;
                mapLinks = links;
-               flags |= MODIFY_MAP_CONTENT;
+               fieldSet.add(MAP_CONTENT);
        }
 
        /**
@@ -712,7 +723,7 @@ public class NXCObjectModificationData
        public void setImage(UUID image)
        {
                this.image = image;
-               flags |= MODIFY_IMAGE;
+               fieldSet.add(IMAGE);
        }
 
        /**
@@ -729,7 +740,7 @@ public class NXCObjectModificationData
        public void setColumnCount(int columnCount)
        {
                this.columnCount = columnCount;
-               flags |= MODIFY_COLUMN_COUNT;
+               fieldSet.add(COLUMN_COUNT);
        }
 
        /**
@@ -746,7 +757,7 @@ public class NXCObjectModificationData
        public void setDashboardElements(Collection<DashboardElement> dashboardElements)
        {
                this.dashboardElements = dashboardElements;
-               flags |= MODIFY_DASHBOARD_ELEMENTS;
+               fieldSet.add(DASHBOARD_ELEMENTS);
        }
 
        /**
@@ -763,7 +774,7 @@ public class NXCObjectModificationData
        public void setScript(String script)
        {
                this.script = script;
-               flags |= MODIFY_SCRIPT;
+               fieldSet.add(SCRIPT);
        }
 
        /**
@@ -780,7 +791,7 @@ public class NXCObjectModificationData
        public void setActivationEvent(int activationEvent)
        {
                this.activationEvent = activationEvent;
-               flags |= MODIFY_ACTIVATION_EVENT;
+               fieldSet.add(ACTIVATION_EVENT);
        }
 
        /**
@@ -797,7 +808,7 @@ public class NXCObjectModificationData
        public void setDeactivationEvent(int deactivationEvent)
        {
                this.deactivationEvent = deactivationEvent;
-               flags |= MODIFY_DEACTIVATION_EVENT;
+               fieldSet.add(DEACTIVATION_EVENT);
        }
 
        /**
@@ -814,7 +825,7 @@ public class NXCObjectModificationData
        public void setSourceObject(long sourceObject)
        {
                this.sourceObject = sourceObject;
-               flags |= MODIFY_SOURCE_OBJECT;
+               fieldSet.add(SOURCE_OBJECT);
        }
 
        /**
@@ -831,7 +842,7 @@ public class NXCObjectModificationData
        public void setActiveStatus(int activeStatus)
        {
                this.activeStatus = activeStatus;
-               flags |= MODIFY_ACTIVE_STATUS;
+               fieldSet.add(ACTIVE_STATUS);
        }
 
        /**
@@ -848,7 +859,7 @@ public class NXCObjectModificationData
        public void setInactiveStatus(int inactiveStatus)
        {
                this.inactiveStatus = inactiveStatus;
-               flags |= MODIFY_INACTIVE_STATUS;
+               fieldSet.add(INACTIVE_STATUS);
        }
 
        /**
@@ -865,7 +876,7 @@ public class NXCObjectModificationData
        public void setDciList(List<ConditionDciInfo> dciList)
        {
                this.dciList = dciList;
-               flags |= MODIFY_DCI_LIST;
+               fieldSet.add(DCI_LIST);
        }
 
        /**
@@ -882,7 +893,7 @@ public class NXCObjectModificationData
        public void setSubmapId(long submapId)
        {
                this.submapId = submapId;
-               flags |= MODIFY_SUBMAP_ID;
+               fieldSet.add(SUBMAP_ID);
        }
 
        /**
@@ -915,7 +926,7 @@ public class NXCObjectModificationData
        public void setPollerNode(long pollerNode)
        {
                this.pollerNode = pollerNode;
-               flags |= MODIFY_POLLER_NODE;
+               fieldSet.add(POLLER_NODE);
        }
 
        /**
@@ -932,7 +943,7 @@ public class NXCObjectModificationData
        public void setRequiredPolls(int requiredPolls)
        {
                this.requiredPolls = requiredPolls;
-               flags |= MODIFY_REQUIRED_POLLS;
+               fieldSet.add(REQUIRED_POLLS);
        }
 
        /**
@@ -949,7 +960,7 @@ public class NXCObjectModificationData
        public void setServiceType(int serviceType)
        {
                this.serviceType = serviceType;
-               flags |= MODIFY_SERVICE_TYPE;
+               fieldSet.add(SERVICE_TYPE);
        }
 
        /**
@@ -966,7 +977,7 @@ public class NXCObjectModificationData
        public void setIpProtocol(int ipProtocol)
        {
                this.ipProtocol = ipProtocol;
-               flags |= MODIFY_IP_PROTOCOL;
+               fieldSet.add(IP_PROTOCOL);
        }
 
        /**
@@ -983,7 +994,7 @@ public class NXCObjectModificationData
        public void setIpPort(int ipPort)
        {
                this.ipPort = ipPort;
-               flags |= MODIFY_IP_PORT;
+               fieldSet.add(IP_PORT);
        }
 
        /**
@@ -1000,7 +1011,7 @@ public class NXCObjectModificationData
        public void setIpAddress(int ipAddress)
        {
                this.ipAddress = ipAddress;
-               flags |= MODIFY_IP_ADDRESS;
+               fieldSet.add(IP_ADDRESS);
        }
 
        /**
@@ -1017,7 +1028,7 @@ public class NXCObjectModificationData
        public void setRequest(String request)
        {
                this.request = request;
-               flags |= MODIFY_REQUEST;
+               fieldSet.add(REQUEST);
        }
 
        /**
@@ -1034,7 +1045,7 @@ public class NXCObjectModificationData
        public void setResponse(String response)
        {
                this.response = response;
-               flags |= MODIFY_RESPONSE;
+               fieldSet.add(RESPONSE);
        }
 
        /**
@@ -1068,7 +1079,7 @@ public class NXCObjectModificationData
    {
       this.objectFlags = objectFlags;
       this.objectFlagsMask = objectFlagsMask;
-      flags |= MODIFY_OBJECT_FLAGS;
+      fieldSet.add(OBJECT_FLAGS);
    }
 
    /**
@@ -1085,7 +1096,7 @@ public class NXCObjectModificationData
        public void setIfXTablePolicy(int ifXTablePolicy)
        {
                this.ifXTablePolicy = ifXTablePolicy;
-               flags |= MODIFY_IFXTABLE_POLICY;
+               fieldSet.add(IFXTABLE_POLICY);
        }
 
        /**
@@ -1102,7 +1113,7 @@ public class NXCObjectModificationData
        public void setReportDefinition(String reportDefinition)
        {
                this.reportDefinition = reportDefinition;
-               flags |= MODIFY_REPORT_DEFINITION;
+               fieldSet.add(REPORT_DEFINITION);
        }
 
        /**
@@ -1142,7 +1153,7 @@ public class NXCObjectModificationData
        public void setResourceList(List<ClusterResource> resourceList)
        {
                this.resourceList = resourceList;
-               flags |= MODIFY_CLUSTER_RESOURCES;
+               fieldSet.add(CLUSTER_RESOURCES);
        }
 
        /**
@@ -1159,7 +1170,7 @@ public class NXCObjectModificationData
        public void setNetworkList(List<InetAddressEx> networkList)
        {
                this.networkList = networkList;
-               flags |= MODIFY_CLUSTER_NETWORKS;
+               fieldSet.add(CLUSTER_NETWORKS);
        }
 
        /**
@@ -1176,7 +1187,7 @@ public class NXCObjectModificationData
        public void setPrimaryName(String primaryName)
        {
                this.primaryName = primaryName;
-               flags |= MODIFY_PRIMARY_NAME;
+               fieldSet.add(PRIMARY_NAME);
        }
 
        /**
@@ -1193,7 +1204,7 @@ public class NXCObjectModificationData
        public void setStatusCalculationMethod(int statusCalculationMethod)
        {
                this.statusCalculationMethod = statusCalculationMethod;
-               flags |= MODIFY_STATUS_CALCULATION;
+               fieldSet.add(STATUS_CALCULATION);
        }
 
        /**
@@ -1210,7 +1221,7 @@ public class NXCObjectModificationData
        public void setStatusPropagationMethod(int statusPropagationMethod)
        {
                this.statusPropagationMethod = statusPropagationMethod;
-               flags |= MODIFY_STATUS_CALCULATION;
+               fieldSet.add(STATUS_CALCULATION);
        }
 
        /**
@@ -1227,7 +1238,7 @@ public class NXCObjectModificationData
        public void setFixedPropagatedStatus(ObjectStatus fixedPropagatedStatus)
        {
                this.fixedPropagatedStatus = fixedPropagatedStatus;
-               flags |= MODIFY_STATUS_CALCULATION;
+               fieldSet.add(STATUS_CALCULATION);
        }
 
        /**
@@ -1244,7 +1255,7 @@ public class NXCObjectModificationData
        public void setStatusShift(int statusShift)
        {
                this.statusShift = statusShift;
-               flags |= MODIFY_STATUS_CALCULATION;
+               fieldSet.add(STATUS_CALCULATION);
        }
 
        /**
@@ -1261,7 +1272,7 @@ public class NXCObjectModificationData
        public void setStatusTransformation(ObjectStatus[] statusTransformation)
        {
                this.statusTransformation = statusTransformation;
-               flags |= MODIFY_STATUS_CALCULATION;
+               fieldSet.add(STATUS_CALCULATION);
        }
 
        /**
@@ -1278,7 +1289,7 @@ public class NXCObjectModificationData
        public void setStatusSingleThreshold(int statusSingleThreshold)
        {
                this.statusSingleThreshold = statusSingleThreshold;
-               flags |= MODIFY_STATUS_CALCULATION;
+               fieldSet.add(STATUS_CALCULATION);
        }
 
        /**
@@ -1295,7 +1306,7 @@ public class NXCObjectModificationData
        public void setStatusThresholds(int[] statusThresholds)
        {
                this.statusThresholds = statusThresholds;
-               flags |= MODIFY_STATUS_CALCULATION;
+               fieldSet.add(STATUS_CALCULATION);
        }
 
        /**
@@ -1312,7 +1323,7 @@ public class NXCObjectModificationData
        public void setExpectedState(int expectedState)
        {
                this.expectedState = expectedState;
-               flags |= MODIFY_EXPECTED_STATE;
+               fieldSet.add(EXPECTED_STATE);
        }
 
        /**
@@ -1329,7 +1340,7 @@ public class NXCObjectModificationData
        public void setLinkColor(int linkColor)
        {
                this.linkColor = linkColor;
-               flags |= MODIFY_LINK_COLOR;
+               fieldSet.add(LINK_COLOR);
        }
 
        /**
@@ -1346,7 +1357,7 @@ public class NXCObjectModificationData
        public void setConnectionRouting(int connectionRouting)
        {
                this.connectionRouting = connectionRouting;
-               flags |= MODIFY_CONNECTION_ROUTING;
+               fieldSet.add(CONNECTION_ROUTING);
        }
 
        /**
@@ -1371,7 +1382,7 @@ public class NXCObjectModificationData
        public final void setDiscoveryRadius(int discoveryRadius)
        {
                this.discoveryRadius = discoveryRadius;
-               flags |= MODIFY_DISCOVERY_RADIUS;
+               fieldSet.add(DISCOVERY_RADIUS);
        }
 
        /**
@@ -1388,7 +1399,7 @@ public class NXCObjectModificationData
        public void setHeight(int height)
        {
                this.height = height;
-               flags |= MODIFY_HEIGHT;
+               fieldSet.add(HEIGHT);
        }
 
        /**
@@ -1405,7 +1416,7 @@ public class NXCObjectModificationData
        public void setFilter(String filter)
        {
                this.filter = filter;
-               flags |= MODIFY_FILTER;
+               fieldSet.add(FILTER);
        }
 
    /**
@@ -1422,7 +1433,7 @@ public class NXCObjectModificationData
    public void setPeerGatewayId(long peerGatewayId)
    {
       this.peerGatewayId = peerGatewayId;
-      flags |= MODIFY_PEER_GATEWAY;
+      fieldSet.add(PEER_GATEWAY);
    }
 
    /**
@@ -1448,7 +1459,7 @@ public class NXCObjectModificationData
    {
       this.localNetworks = localNetworks;
       this.remoteNetworks = remoteNetworks;
-      flags |= MODIFY_VPN_NETWORKS;
+      fieldSet.add(VPN_NETWORKS);
    }
 
    /**
@@ -1465,7 +1476,7 @@ public class NXCObjectModificationData
    public void setPostalAddress(PostalAddress postalAddress)
    {
       this.postalAddress = postalAddress;
-      flags |= MODIFY_POSTAL_ADDRESS;
+      fieldSet.add(POSTAL_ADDRESS);
    }
 
    /**
@@ -1482,7 +1493,7 @@ public class NXCObjectModificationData
    public void setAgentCacheMode(AgentCacheMode agentCacheMode)
    {
       this.agentCacheMode = agentCacheMode;
-      flags |= MODIFY_AGENT_CACHE_MODE;
+      fieldSet.add(AGENT_CACHE_MODE);
    }
 
    /**
@@ -1499,7 +1510,7 @@ public class NXCObjectModificationData
    public void setMapObjectDisplayMode(MapObjectDisplayMode mapObjectDisplayMode)
    {
       this.mapObjectDisplayMode = mapObjectDisplayMode;
-      flags |= MODIFY_MAPOBJ_DISP_MODE;
+      fieldSet.add(MAPOBJ_DISP_MODE);
    }
 
    /**
@@ -1548,7 +1559,7 @@ public class NXCObjectModificationData
       this.rackImage = rackImage;
       this.rackPosition = rackPosition;
       this.rackHeight = rackHeight;
-      flags |= MODIFY_RACK_PLACEMENT;
+      fieldSet.add(RACK_PLACEMENT);
    }
 
    /**
@@ -1565,7 +1576,7 @@ public class NXCObjectModificationData
    public void setDashboards(Long[] dashboards)
    {
       this.dashboards = dashboards;
-      flags |= MODIFY_DASHBOARD_LIST;
+      fieldSet.add(DASHBOARD_LIST);
    }
 
    /**
@@ -1582,7 +1593,7 @@ public class NXCObjectModificationData
    public void setRackNumberingTopBottom(boolean rackNumberingTopBottom)
    {
       this.rackNumberingTopBottom = rackNumberingTopBottom;
-      flags |= MODIFY_RACK_NUMB_SCHEME;
+      fieldSet.add(RACK_NUMB_SCHEME);
    }
 
    /**
@@ -1599,7 +1610,7 @@ public class NXCObjectModificationData
    public void setControllerId(long controllerId)
    {
       this.controllerId = controllerId;
-      flags |= MODIFY_CONTROLLER_ID;
+      fieldSet.add(CONTROLLER_ID);
    }
 
    /**
@@ -1616,6 +1627,57 @@ public class NXCObjectModificationData
    public void setChassisId(long chassisId)
    {
       this.chassisId = chassisId;
-      flags |= MODIFY_CHASSIS_ID;
+      fieldSet.add(CHASSIS_ID);
+   }
+
+   /**
+    * @return the sshProxy
+    */
+   public long getSshProxy()
+   {
+      return sshProxy;
+   }
+
+   /**
+    * @param sshProxy the sshProxy to set
+    */
+   public void setSshProxy(long sshProxy)
+   {
+      this.sshProxy = sshProxy;
+      fieldSet.add(SSH_PROXY);
+   }
+
+   /**
+    * @return the sshLogin
+    */
+   public String getSshLogin()
+   {
+      return sshLogin;
+   }
+
+   /**
+    * @param sshLogin the sshLogin to set
+    */
+   public void setSshLogin(String sshLogin)
+   {
+      this.sshLogin = sshLogin;
+      fieldSet.add(SSH_LOGIN);
+   }
+
+   /**
+    * @return the sshPassword
+    */
+   public String getSshPassword()
+   {
+      return sshPassword;
+   }
+
+   /**
+    * @param sshPassword the sshPassword to set
+    */
+   public void setSshPassword(String sshPassword)
+   {
+      this.sshPassword = sshPassword;
+      fieldSet.add(SSH_PASSWORD);
    }
 }
index ce85f9d..5b1d54d 100644 (file)
@@ -4189,22 +4189,20 @@ public class NXCSession
       NXCPMessage msg = newMessage(NXCPCodes.CMD_MODIFY_OBJECT);
       msg.setFieldInt32(NXCPCodes.VID_OBJECT_ID, (int) data.getObjectId());
 
-      long flags = data.getFlags();
-
       // Object name
-      if ((flags & NXCObjectModificationData.MODIFY_NAME) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.NAME))
       {
          msg.setField(NXCPCodes.VID_OBJECT_NAME, data.getName());
       }
 
       // Primary IP
-      if ((flags & NXCObjectModificationData.MODIFY_PRIMARY_IP) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.PRIMARY_IP))
       {
          msg.setField(NXCPCodes.VID_IP_ADDRESS, data.getPrimaryIpAddress());
       }
 
       // Access control list
-      if ((flags & NXCObjectModificationData.MODIFY_ACL) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.ACL))
       {
          final AccessListElement[] acl = data.getACL();
          msg.setFieldInt32(NXCPCodes.VID_ACL_SIZE, acl.length);
@@ -4219,7 +4217,7 @@ public class NXCSession
          }
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_CUSTOM_ATTRIBUTES) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.CUSTOM_ATTRIBUTES))
       {
          Map<String, String> attrList = data.getCustomAttributes();
          Iterator<String> it = attrList.keySet().iterator();
@@ -4236,61 +4234,61 @@ public class NXCSession
          msg.setFieldInt32(NXCPCodes.VID_NUM_CUSTOM_ATTRIBUTES, count);
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_AUTOBIND_FILTER) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.AUTOBIND_FILTER))
       {
          msg.setField(NXCPCodes.VID_AUTOBIND_FILTER, data.getAutoBindFilter());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_FILTER) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.FILTER))
       {
          msg.setField(NXCPCodes.VID_FILTER, data.getFilter());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_DESCRIPTION) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.DESCRIPTION))
       {
          msg.setField(NXCPCodes.VID_DESCRIPTION, data.getDescription());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_VERSION) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.VERSION))
       {
          msg.setFieldInt32(NXCPCodes.VID_VERSION, data.getVersion());
       }
 
       // Configuration file
-      if ((flags & NXCObjectModificationData.MODIFY_POLICY_CONFIG) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.POLICY_CONFIG))
       {
          msg.setField(NXCPCodes.VID_CONFIG_FILE_DATA, data.getConfigFileContent());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_AGENT_PORT) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.AGENT_PORT))
       {
          msg.setFieldInt16(NXCPCodes.VID_AGENT_PORT, data.getAgentPort());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_AGENT_PROXY) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.AGENT_PROXY))
       {
          msg.setFieldInt32(NXCPCodes.VID_AGENT_PROXY, (int) data.getAgentProxy());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_AGENT_AUTH) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.AGENT_AUTH))
       {
          msg.setFieldInt16(NXCPCodes.VID_AUTH_METHOD, data.getAgentAuthMethod());
          msg.setField(NXCPCodes.VID_SHARED_SECRET, data.getAgentSecret());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_TRUSTED_NODES) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.TRUSTED_NODES))
       {
          final long[] nodes = data.getTrustedNodes();
          msg.setFieldInt32(NXCPCodes.VID_NUM_TRUSTED_NODES, nodes.length);
          msg.setField(NXCPCodes.VID_TRUSTED_NODES, nodes);
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_SNMP_VERSION) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.SNMP_VERSION))
       {
          msg.setFieldInt16(NXCPCodes.VID_SNMP_VERSION, data.getSnmpVersion());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_SNMP_AUTH) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.SNMP_AUTH))
       {
          msg.setField(NXCPCodes.VID_SNMP_AUTH_OBJECT, data.getSnmpAuthName());
          msg.setField(NXCPCodes.VID_SNMP_AUTH_PASSWORD, data.getSnmpAuthPassword());
@@ -4299,22 +4297,22 @@ public class NXCSession
          msg.setFieldInt16(NXCPCodes.VID_SNMP_USM_METHODS, methods);
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_SNMP_PROXY) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.SNMP_PROXY))
       {
          msg.setFieldInt32(NXCPCodes.VID_SNMP_PROXY, (int) data.getSnmpProxy());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_SNMP_PORT) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.SNMP_PORT))
       {
          msg.setFieldInt16(NXCPCodes.VID_SNMP_PORT, data.getSnmpPort());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_ICMP_PROXY) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.ICMP_PROXY))
       {
          msg.setFieldInt32(NXCPCodes.VID_ICMP_PROXY, (int) data.getIcmpProxy());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_GEOLOCATION) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.GEOLOCATION))
       {
          final GeoLocation gl = data.getGeolocation();
          msg.setFieldInt16(NXCPCodes.VID_GEOLOCATION_TYPE, gl.getType());
@@ -4327,12 +4325,12 @@ public class NXCSession
          }
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_MAP_LAYOUT) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.MAP_LAYOUT))
       {
          msg.setFieldInt16(NXCPCodes.VID_LAYOUT, data.getMapLayout().getValue());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_MAP_BACKGROUND) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.MAP_BACKGROUND))
       {
          msg.setField(NXCPCodes.VID_BACKGROUND, data.getMapBackground());
          msg.setField(NXCPCodes.VID_BACKGROUND_LATITUDE, data.getMapBackgroundLocation().getLatitude());
@@ -4341,12 +4339,12 @@ public class NXCSession
          msg.setFieldInt32(NXCPCodes.VID_BACKGROUND_COLOR, data.getMapBackgroundColor());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_IMAGE) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.IMAGE))
       {
          msg.setField(NXCPCodes.VID_IMAGE, data.getImage());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_MAP_CONTENT) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.MAP_CONTENT))
       {
          msg.setFieldInt32(NXCPCodes.VID_NUM_ELEMENTS, data.getMapElements().size());
          long varId = NXCPCodes.VID_ELEMENT_LIST_BASE;
@@ -4365,12 +4363,12 @@ public class NXCSession
          }
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_COLUMN_COUNT) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.COLUMN_COUNT))
       {
          msg.setFieldInt16(NXCPCodes.VID_NUM_COLUMNS, data.getColumnCount());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_DASHBOARD_ELEMENTS) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.DASHBOARD_ELEMENTS))
       {
          msg.setFieldInt32(NXCPCodes.VID_NUM_ELEMENTS, data.getDashboardElements().size());
          long varId = NXCPCodes.VID_ELEMENT_LIST_BASE;
@@ -4381,37 +4379,37 @@ public class NXCSession
          }
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_SCRIPT) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.SCRIPT))
       {
          msg.setField(NXCPCodes.VID_SCRIPT, data.getScript());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_ACTIVATION_EVENT) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.ACTIVATION_EVENT))
       {
          msg.setFieldInt32(NXCPCodes.VID_ACTIVATION_EVENT, data.getActivationEvent());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_DEACTIVATION_EVENT) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.DEACTIVATION_EVENT))
       {
          msg.setFieldInt32(NXCPCodes.VID_DEACTIVATION_EVENT, data.getDeactivationEvent());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_SOURCE_OBJECT) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.SOURCE_OBJECT))
       {
          msg.setFieldInt32(NXCPCodes.VID_SOURCE_OBJECT, (int) data.getSourceObject());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_ACTIVE_STATUS) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.ACTIVE_STATUS))
       {
          msg.setFieldInt16(NXCPCodes.VID_ACTIVE_STATUS, data.getActiveStatus());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_INACTIVE_STATUS) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.INACTIVE_STATUS))
       {
          msg.setFieldInt16(NXCPCodes.VID_INACTIVE_STATUS, data.getInactiveStatus());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_DCI_LIST) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.DCI_LIST))
       {
          List<ConditionDciInfo> dciList = data.getDciList();
          msg.setFieldInt32(NXCPCodes.VID_NUM_ITEMS, dciList.size());
@@ -4426,63 +4424,63 @@ public class NXCSession
          }
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_SUBMAP_ID) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.SUBMAP_ID))
       {
          msg.setFieldInt32(NXCPCodes.VID_SUBMAP_ID, (int) data.getSubmapId());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_SERVICE_TYPE) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.SERVICE_TYPE))
       {
          msg.setFieldInt16(NXCPCodes.VID_SERVICE_TYPE, data.getServiceType());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_IP_PROTOCOL) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.IP_PROTOCOL))
       {
          msg.setFieldInt16(NXCPCodes.VID_IP_PROTO, data.getIpProtocol());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_IP_PORT) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.IP_PORT))
       {
          msg.setFieldInt16(NXCPCodes.VID_IP_PORT, data.getIpPort());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_POLLER_NODE) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.POLLER_NODE))
       {
          msg.setFieldInt32(NXCPCodes.VID_POLLER_NODE_ID, (int) data.getPollerNode());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_REQUIRED_POLLS) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.REQUIRED_POLLS))
       {
          msg.setFieldInt16(NXCPCodes.VID_REQUIRED_POLLS, data.getRequiredPolls());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_REQUEST) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.REQUEST))
       {
          msg.setField(NXCPCodes.VID_SERVICE_REQUEST, data.getRequest());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_RESPONSE) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.RESPONSE))
       {
          msg.setField(NXCPCodes.VID_SERVICE_RESPONSE, data.getResponse());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_OBJECT_FLAGS) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.OBJECT_FLAGS))
       {
          msg.setFieldInt32(NXCPCodes.VID_FLAGS, data.getObjectFlags());
          msg.setFieldInt32(NXCPCodes.VID_FLAGS_MASK, data.getObjectFlagsMask());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_IFXTABLE_POLICY) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.IFXTABLE_POLICY))
       {
          msg.setFieldInt16(NXCPCodes.VID_USE_IFXTABLE, data.getIfXTablePolicy());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_REPORT_DEFINITION) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.REPORT_DEFINITION))
       {
          msg.setField(NXCPCodes.VID_REPORT_DEFINITION, data.getReportDefinition());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_CLUSTER_RESOURCES) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.CLUSTER_RESOURCES))
       {
          msg.setFieldInt32(NXCPCodes.VID_NUM_RESOURCES, data.getResourceList().size());
          long varId = NXCPCodes.VID_RESOURCE_LIST_BASE;
@@ -4495,7 +4493,7 @@ public class NXCSession
          }
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_CLUSTER_NETWORKS) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.CLUSTER_NETWORKS))
       {
          int count = data.getNetworkList().size();
          msg.setFieldInt32(NXCPCodes.VID_NUM_SYNC_SUBNETS, count);
@@ -4506,12 +4504,12 @@ public class NXCSession
          }
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_PRIMARY_NAME) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.PRIMARY_NAME))
       {
          msg.setField(NXCPCodes.VID_PRIMARY_NAME, data.getPrimaryName());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_STATUS_CALCULATION) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.STATUS_CALCULATION))
       {
          msg.setFieldInt16(NXCPCodes.VID_STATUS_CALCULATION_ALG, data.getStatusCalculationMethod());
          msg.setFieldInt16(NXCPCodes.VID_STATUS_PROPAGATION_ALG, data.getStatusPropagationMethod());
@@ -4530,42 +4528,42 @@ public class NXCSession
          msg.setFieldInt16(NXCPCodes.VID_STATUS_THRESHOLD_4, thresholds[3]);
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_EXPECTED_STATE) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.EXPECTED_STATE))
       {
          msg.setFieldInt16(NXCPCodes.VID_EXPECTED_STATE, data.getExpectedState());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_LINK_COLOR) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.LINK_COLOR))
       {
          msg.setFieldInt32(NXCPCodes.VID_LINK_COLOR, data.getLinkColor());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_CONNECTION_ROUTING) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.CONNECTION_ROUTING))
       {
          msg.setFieldInt16(NXCPCodes.VID_LINK_ROUTING, data.getConnectionRouting());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_DISCOVERY_RADIUS) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.DISCOVERY_RADIUS))
       {
          msg.setFieldInt32(NXCPCodes.VID_DISCOVERY_RADIUS, data.getDiscoveryRadius());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_HEIGHT) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.HEIGHT))
       {
          msg.setFieldInt16(NXCPCodes.VID_HEIGHT, data.getHeight());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_RACK_NUMB_SCHEME) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.RACK_NUMB_SCHEME))
       {
          msg.setField(NXCPCodes.VID_TOP_BOTTOM, data.isRackNumberingTopBottom());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_PEER_GATEWAY) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.PEER_GATEWAY))
       {
          msg.setFieldInt32(NXCPCodes.VID_PEER_GATEWAY, (int)data.getPeerGatewayId());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_VPN_NETWORKS) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.VPN_NETWORKS))
       {
          long fieldId = NXCPCodes.VID_VPN_NETWORK_BASE;         
 
@@ -4582,22 +4580,22 @@ public class NXCSession
          }
       }
       
-      if ((flags & NXCObjectModificationData.MODIFY_POSTAL_ADDRESS) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.POSTAL_ADDRESS))
       {
          data.getPostalAddress().fillMessage(msg);
       }
       
-      if ((flags & NXCObjectModificationData.MODIFY_AGENT_CACHE_MODE) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.AGENT_CACHE_MODE))
       {
          msg.setFieldInt16(NXCPCodes.VID_AGENT_CACHE_MODE, data.getAgentCacheMode().getValue());
       }
       
-      if ((flags & NXCObjectModificationData.MODIFY_MAPOBJ_DISP_MODE) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.MAPOBJ_DISP_MODE))
       {
          msg.setFieldInt16(NXCPCodes.VID_DISPLAY_MODE, data.getMapObjectDisplayMode().getValue());
       }
       
-      if ((flags & NXCObjectModificationData.MODIFY_RACK_PLACEMENT) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.RACK_PLACEMENT))
       {
          msg.setFieldInt32(NXCPCodes.VID_RACK_ID, (int)data.getRackId());
          msg.setField(NXCPCodes.VID_RACK_IMAGE, data.getRackImage());
@@ -4605,21 +4603,36 @@ public class NXCSession
          msg.setFieldInt16(NXCPCodes.VID_RACK_HEIGHT, data.getRackHeight());
       }
 
-      if ((flags & NXCObjectModificationData.MODIFY_DASHBOARD_LIST) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.DASHBOARD_LIST))
       {
          msg.setField(NXCPCodes.VID_DASHBOARDS, data.getDashboards());
       }
       
-      if ((flags & NXCObjectModificationData.MODIFY_CHASSIS_ID) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.CHASSIS_ID))
       {
          msg.setFieldInt32(NXCPCodes.VID_CHASSIS_ID, (int)data.getChassisId());
       }
       
-      if ((flags & NXCObjectModificationData.MODIFY_CONTROLLER_ID) != 0)
+      if (data.isFieldSet(NXCObjectModificationData.CONTROLLER_ID))
       {
          msg.setFieldInt32(NXCPCodes.VID_CONTROLLER_ID, (int)data.getControllerId());
       }
       
+      if (data.isFieldSet(NXCObjectModificationData.SSH_PROXY))
+      {
+         msg.setFieldInt32(NXCPCodes.VID_SSH_PROXY, (int)data.getSshProxy());
+      }
+      
+      if (data.isFieldSet(NXCObjectModificationData.SSH_LOGIN))
+      {
+         msg.setField(NXCPCodes.VID_SSH_LOGIN, data.getSshLogin());
+      }
+      
+      if (data.isFieldSet(NXCObjectModificationData.SSH_PASSWORD))
+      {
+         msg.setField(NXCPCodes.VID_SSH_PASSWORD, data.getSshPassword());
+      }
+      
       modifyCustomObject(data, userData, msg);
 
       sendMessage(msg);
index 4383032..3014b0a 100644 (file)
@@ -41,8 +41,9 @@ public abstract class DataCollectionObject
        public static final int CHECKPOINT_SNMP = 3;
        public static final int PUSH = 4;
        public static final int WINPERF = 5;
-       public static final int ILO = 6;
+       public static final int SMCLP = 6;
    public static final int SCRIPT = 7;
+   public static final int SSH = 8;
        
        // data collection object status
        public static final int ACTIVE = 0;
index d8afc94..00e9909 100644 (file)
@@ -132,6 +132,9 @@ public abstract class AbstractNode extends DataCollectionTarget implements RackE
        protected short rackPosition;
        protected short rackHeight;
    protected long chassisId;
+   protected String sshLogin;
+   protected String sshPassword;
+   protected long sshProxyId;
        
        /**
         * Create new node object.
@@ -196,6 +199,9 @@ public abstract class AbstractNode extends DataCollectionTarget implements RackE
                rackPosition = msg.getFieldAsInt16(NXCPCodes.VID_RACK_POSITION);
       rackHeight = msg.getFieldAsInt16(NXCPCodes.VID_RACK_HEIGHT);
       chassisId = msg.getFieldAsInt64(NXCPCodes.VID_CHASSIS_ID);
+      sshLogin = msg.getFieldAsString(NXCPCodes.VID_SSH_LOGIN);
+      sshPassword = msg.getFieldAsString(NXCPCodes.VID_SSH_PASSWORD);
+      sshProxyId = msg.getFieldAsInt64(NXCPCodes.VID_SSH_PROXY);
                
                long bootTimeSeconds = msg.getFieldAsInt64(NXCPCodes.VID_BOOT_TIME);
                bootTime = (bootTimeSeconds > 0) ? new Date(bootTimeSeconds * 1000) : null;
@@ -681,4 +687,28 @@ public abstract class AbstractNode extends DataCollectionTarget implements RackE
    {
       return chassisId;
    }
+
+   /**
+    * @return the sshLogin
+    */
+   public String getSshLogin()
+   {
+      return sshLogin;
+   }
+
+   /**
+    * @return the sshPassword
+    */
+   public String getSshPassword()
+   {
+      return sshPassword;
+   }
+
+   /**
+    * @return the sshProxyId
+    */
+   public long getSshProxyId()
+   {
+      return sshProxyId;
+   }
 }
index cb50455..e43b2d0 100644 (file)
@@ -31,6 +31,7 @@ public class Zone extends GenericObject
        private long agentProxy;
        private long snmpProxy;
        private long icmpProxy;
+   private long sshProxy;
        
        /**
         * Create zone object from NXCP message
@@ -45,6 +46,7 @@ public class Zone extends GenericObject
                agentProxy = msg.getFieldAsInt64(NXCPCodes.VID_AGENT_PROXY);
                snmpProxy = msg.getFieldAsInt64(NXCPCodes.VID_SNMP_PROXY);
                icmpProxy = msg.getFieldAsInt64(NXCPCodes.VID_ICMP_PROXY);
+      sshProxy = msg.getFieldAsInt64(NXCPCodes.VID_SSH_PROXY);
        }
 
        /* (non-Javadoc)
@@ -97,7 +99,15 @@ public class Zone extends GenericObject
                return icmpProxy;
        }
 
-       /* (non-Javadoc)
+       /**
+    * @return the sshProxy
+    */
+   public long getSshProxy()
+   {
+      return sshProxy;
+   }
+
+   /* (non-Javadoc)
         * @see org.netxms.client.objects.GenericObject#getObjectClassName()
         */
        @Override
index ba0afe8..a554421 100644 (file)
@@ -2,22 +2,22 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: Data Collection Management Plug-in
 Bundle-SymbolicName: org.netxms.ui.eclipse.datacollection;singleton:=true
-Bundle-Version: 2.0.7
+Bundle-Version: 2.1.0
 Bundle-Activator: org.netxms.ui.eclipse.datacollection.Activator
 Bundle-Vendor: netxms.org
 Require-Bundle: org.eclipse.ui;bundle-version="3.8.2",
  org.eclipse.core.runtime;bundle-version="3.8.0",
  org.eclipse.core.expressions;bundle-version="3.4.400",
  org.eclipse.ui.forms;bundle-version="3.5.200",
- org.netxms.ui.eclipse.clientlibrary;bundle-version="2.0.5",
- org.netxms.ui.eclipse.console;bundle-version="2.0.5",
- org.netxms.ui.eclipse.objectbrowser;bundle-version="2.0.3",
- org.netxms.ui.eclipse.eventmanager;bundle-version="2.0.0",
- org.netxms.ui.eclipse.objectview;bundle-version="2.0.5",
+ org.netxms.ui.eclipse.clientlibrary;bundle-version="2.1.0",
+ org.netxms.ui.eclipse.console;bundle-version="2.1.0",
+ org.netxms.ui.eclipse.objectbrowser;bundle-version="2.1.0",
+ org.netxms.ui.eclipse.eventmanager;bundle-version="2.0.1",
+ org.netxms.ui.eclipse.objectview;bundle-version="2.0.7",
  org.netxms.ui.eclipse.snmp;bundle-version="2.0.0",
- org.netxms.ui.eclipse.nxsl;bundle-version="1.2.17",
- org.netxms.ui.eclipse.charts;bundle-version="2.0.3",
- org.netxms.ui.eclipse.objecttools;bundle-version="2.0.3"
+ org.netxms.ui.eclipse.nxsl;bundle-version="2.0.7",
+ org.netxms.ui.eclipse.charts;bundle-version="2.0.5",
+ org.netxms.ui.eclipse.objecttools;bundle-version="2.0.8"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
 Export-Package: org.netxms.ui.eclipse.datacollection.actions,
index e360b74..b3dedfb 100644 (file)
@@ -2,8 +2,8 @@ action.label.Apply= &Apply...
 action.label.ClearData= Clear collected data
 action.label.CreateDCI= Create data collection item...
 action.label.CreateDCIs= Create data collection items...
-action.label.CreateTemplateGroup = Template &group...
-action.label.CreateTemplate = &Template...
+action.label.CreateTemplate= &Template...
+action.label.CreateTemplateGroup= Template &group...
 action.label.DataCollection= Data Collection Configuration
 action.label.LastValues= Last values
 action.label.Remove= &Remove...
index 68bd435..9417480 100644 (file)
@@ -2,8 +2,8 @@ action.label.Apply=&Apply...
 action.label.ClearData=Clear collected data
 action.label.CreateDCI=Create data collection item...
 action.label.CreateDCIs=Create data collection items...
-action.label.CreateTemplateGroup = Template &group...
-action.label.CreateTemplate = &Template...
+action.label.CreateTemplate= &Template...
+action.label.CreateTemplateGroup= Template &group...
 action.label.DataCollection=Data Collection Configuration
 action.label.LastValues=Last values
 action.label.Remove=&Remove...
index e360b74..b3dedfb 100644 (file)
@@ -2,8 +2,8 @@ action.label.Apply= &Apply...
 action.label.ClearData= Clear collected data
 action.label.CreateDCI= Create data collection item...
 action.label.CreateDCIs= Create data collection items...
-action.label.CreateTemplateGroup = Template &group...
-action.label.CreateTemplate = &Template...
+action.label.CreateTemplate= &Template...
+action.label.CreateTemplateGroup= Template &group...
 action.label.DataCollection= Data Collection Configuration
 action.label.LastValues= Last values
 action.label.Remove= &Remove...
index a76adfa..307de6b 100644 (file)
@@ -2,9 +2,8 @@ action.label.Apply= &Apply...
 action.label.ClearData= Clear collected data
 action.label.CreateDCI= Create data collection item...
 action.label.CreateDCIs= Create data collection items...
-action.label.CreateTemplateGroup = Template &group...
-action.label.CreateTemplate = &Template...
-
+action.label.CreateTemplate= &Template...
+action.label.CreateTemplateGroup= Template &group...
 action.label.DataCollection= Data Collection Configuration
 action.label.LastValues= Last values
 action.label.Remove= &Remove...
index b0103a1..9417480 100644 (file)
@@ -2,9 +2,8 @@ action.label.Apply=&Apply...
 action.label.ClearData=Clear collected data
 action.label.CreateDCI=Create data collection item...
 action.label.CreateDCIs=Create data collection items...
-action.label.CreateTemplateGroup = Template &group...
-action.label.CreateTemplate = &Template...
-
+action.label.CreateTemplate= &Template...
+action.label.CreateTemplateGroup= Template &group...
 action.label.DataCollection=Data Collection Configuration
 action.label.LastValues=Last values
 action.label.Remove=&Remove...
index 9d2d7b5..c675943 100644 (file)
@@ -157,6 +157,7 @@ public class Messages extends NLS
        public static String DciLabelProvider_SourcePush;
    public static String DciLabelProvider_SourceScript;
        public static String DciLabelProvider_SourceSNMP;
+   public static String DciLabelProvider_SourceSSH;
        public static String DciLabelProvider_SourceILO;
        public static String DciLabelProvider_SourceWinPerf;
        public static String DciLabelProvider_Table;
@@ -273,6 +274,7 @@ public class Messages extends NLS
        public static String General_SourceInternal;
        public static String General_SourcePush;
        public static String General_SourceSNMP;
+   public static String General_SourceSSH;
        public static String General_Status;
        public static String General_Storage;
        public static String General_UseCustomPort;
@@ -309,6 +311,7 @@ public class Messages extends NLS
        public static String GeneralTable_SourceInternal;
        public static String GeneralTable_SourcePush;
        public static String GeneralTable_SourceSNMP;
+   public static String GeneralTable_SourceSSH;
        public static String GeneralTable_Status;
        public static String GeneralTable_Storage;
        public static String GeneralTable_UseCustomRetention;
index 5a14f63..d1ad93c 100644 (file)
@@ -146,11 +146,12 @@ DciLabelProvider_None=none
 DciLabelProvider_NotSupported=Not supported
 DciLabelProvider_SourceAgent=NetXMS Agent
 DciLabelProvider_SourceCPSNMP=Check Point SNMP
-DciLabelProvider_SourceILO=iLO
+DciLabelProvider_SourceILO=SM-CLP
 DciLabelProvider_SourceInternal=Internal
 DciLabelProvider_SourcePush=Push
 DciLabelProvider_SourceScript=Script
 DciLabelProvider_SourceSNMP=SNMP
+DciLabelProvider_SourceSSH=SSH
 DciLabelProvider_SourceWinPerf=Windows Performance Counters
 DciLabelProvider_Table=<< TABLE >>
 DciLabelProvider_Unknown=<unknown>
@@ -248,6 +249,7 @@ GeneralTable_SourceCPSNMP=Check Point SNMP
 GeneralTable_SourceInternal=Internal
 GeneralTable_SourcePush=Push
 GeneralTable_SourceSNMP=SNMP
+GeneralTable_SourceSSH=SSH
 GeneralTable_Status=Status
 GeneralTable_Storage=Storage
 GeneralTable_UseCustomRetention=Use custom retention time
@@ -301,6 +303,7 @@ General_SourceCPSNMP=Check Point SNMP
 General_SourceInternal=Internal
 General_SourcePush=Push
 General_SourceSNMP=SNMP
+General_SourceSSH=SSH
 General_Status=Status
 General_Storage=Storage
 General_UseCustomPort=Use custom SNMP port:
index 79b503e..b66cdd0 100644 (file)
@@ -146,10 +146,11 @@ DciLabelProvider_None=none
 DciLabelProvider_NotSupported=Nepodporovan\u00fd
 DciLabelProvider_SourceAgent=NetXMS agent
 DciLabelProvider_SourceCPSNMP=SNMP kontroln\u00ed bod
-DciLabelProvider_SourceILO=iLO
+DciLabelProvider_SourceILO=SM-CLP
 DciLabelProvider_SourceInternal=Intern\u00ed
 DciLabelProvider_SourcePush=Push
 DciLabelProvider_SourceSNMP=SNMP
+DciLabelProvider_SourceSSH=SSH
 DciLabelProvider_SourceScript=Skript
 DciLabelProvider_SourceWinPerf=Windows Performance Counter
 DciLabelProvider_Table=<<TABULKA>>
@@ -244,6 +245,7 @@ GeneralTable_SourceCPSNMP=SNMP kontroln\u00ed bod
 GeneralTable_SourceInternal=Intern\u00ed
 GeneralTable_SourcePush=Push
 GeneralTable_SourceSNMP=SNMP
+GeneralTable_SourceSSH=SSH
 GeneralTable_Status=Stav
 GeneralTable_Storage=\u00dalo\u017ei\u0161t\u011b
 GeneralTable_UseCustomRetention=Use custom retention time
@@ -297,6 +299,7 @@ General_SourceCPSNMP=SNMP kontroln\u00ed bod
 General_SourceInternal=Intern\u00ed
 General_SourcePush=Push
 General_SourceSNMP=SNMP
+General_SourceSSH=SSH
 General_Status=Stav
 General_Storage=\u00dalo\u017ei\u0161t\u011b
 General_UseCustomPort=Pou\u017e\u00edt vlastn\u00ed SNMP port
index 58d735e..74b4996 100644 (file)
@@ -146,10 +146,11 @@ DciLabelProvider_None=none
 DciLabelProvider_NotSupported=Not supported
 DciLabelProvider_SourceAgent=NetXMS Agent
 DciLabelProvider_SourceCPSNMP=Check Point SNMP
-DciLabelProvider_SourceILO=iLO
+DciLabelProvider_SourceILO=SM-CLP
 DciLabelProvider_SourceInternal=Internal
 DciLabelProvider_SourcePush=Push
 DciLabelProvider_SourceSNMP=SNMP
+DciLabelProvider_SourceSSH=SSH
 DciLabelProvider_SourceScript=Script
 DciLabelProvider_SourceWinPerf=Windows Performance Counters
 DciLabelProvider_Table=<< TABLE >>
@@ -244,6 +245,7 @@ GeneralTable_SourceCPSNMP=Check Point SNMP
 GeneralTable_SourceInternal=Internal
 GeneralTable_SourcePush=Push
 GeneralTable_SourceSNMP=SNMP
+GeneralTable_SourceSSH=SSH
 GeneralTable_Status=Status
 GeneralTable_Storage=Storage
 GeneralTable_UseCustomRetention=Use custom retention time
@@ -297,6 +299,7 @@ General_SourceCPSNMP=Check Point SNMP
 General_SourceInternal=Internal
 General_SourcePush=Push
 General_SourceSNMP=SNMP
+General_SourceSSH=SSH
 General_Status=Status
 General_Storage=Storage
 General_UseCustomPort=Use custom SNMP port:
index 9463a91..debb6a0 100644 (file)
@@ -146,10 +146,11 @@ DciLabelProvider_None=none
 DciLabelProvider_NotSupported=No soportado
 DciLabelProvider_SourceAgent=Agente NetXMS
 DciLabelProvider_SourceCPSNMP=Comprobaci\u00f3n SNMP
-DciLabelProvider_SourceILO=iLO
+DciLabelProvider_SourceILO=SM-CLP
 DciLabelProvider_SourceInternal=Interno
 DciLabelProvider_SourcePush=Enviar
 DciLabelProvider_SourceSNMP=SNMP
+DciLabelProvider_SourceSSH=SSH
 DciLabelProvider_SourceScript=Script
 DciLabelProvider_SourceWinPerf=Windows Performance Counters
 DciLabelProvider_Table=<< TABLA >>
@@ -244,6 +245,7 @@ GeneralTable_SourceCPSNMP=Comprobaci\u00f3n SNMP
 GeneralTable_SourceInternal=Interno
 GeneralTable_SourcePush=Enviar
 GeneralTable_SourceSNMP=SNMP
+GeneralTable_SourceSSH=SSH
 GeneralTable_Status=Estado
 GeneralTable_Storage=Almacenamiento
 GeneralTable_UseCustomRetention=Use custom retention time
@@ -297,6 +299,7 @@ General_SourceCPSNMP=Comprobaci\u00f3n SNMP
 General_SourceInternal=Interno
 General_SourcePush=Enviar
 General_SourceSNMP=SNMP
+General_SourceSSH=SSH
 General_Status=Estado
 General_Storage=Almacenamiento
 General_UseCustomPort=Puerto SNMP personalizado:
index ab7eee2..2181303 100644 (file)
@@ -146,10 +146,11 @@ DciLabelProvider_None=none
 DciLabelProvider_NotSupported=Not supported
 DciLabelProvider_SourceAgent=NetXMS Agent
 DciLabelProvider_SourceCPSNMP=Check Point SNMP
-DciLabelProvider_SourceILO=iLO
+DciLabelProvider_SourceILO=SM-CLP
 DciLabelProvider_SourceInternal=Internal
 DciLabelProvider_SourcePush=Push
 DciLabelProvider_SourceSNMP=SNMP
+DciLabelProvider_SourceSSH=SSH
 DciLabelProvider_SourceScript=Script
 DciLabelProvider_SourceWinPerf=Windows Performance Counters
 DciLabelProvider_Table=<< TABLE >>
@@ -244,6 +245,7 @@ GeneralTable_SourceCPSNMP=Check Point SNMP
 GeneralTable_SourceInternal=Internal
 GeneralTable_SourcePush=Push
 GeneralTable_SourceSNMP=SNMP
+GeneralTable_SourceSSH=SSH
 GeneralTable_Status=Status
 GeneralTable_Storage=Storage
 GeneralTable_UseCustomRetention=Use custom retention time
@@ -297,6 +299,7 @@ General_SourceCPSNMP=Check Point SNMP
 General_SourceInternal=Internal
 General_SourcePush=Push
 General_SourceSNMP=SNMP
+General_SourceSSH=SSH
 General_Status=Status
 General_Storage=Storage
 General_UseCustomPort=Use custom SNMP port:
index ab7eee2..2181303 100644 (file)
@@ -146,10 +146,11 @@ DciLabelProvider_None=none
 DciLabelProvider_NotSupported=Not supported
 DciLabelProvider_SourceAgent=NetXMS Agent
 DciLabelProvider_SourceCPSNMP=Check Point SNMP
-DciLabelProvider_SourceILO=iLO
+DciLabelProvider_SourceILO=SM-CLP
 DciLabelProvider_SourceInternal=Internal
 DciLabelProvider_SourcePush=Push
 DciLabelProvider_SourceSNMP=SNMP
+DciLabelProvider_SourceSSH=SSH
 DciLabelProvider_SourceScript=Script
 DciLabelProvider_SourceWinPerf=Windows Performance Counters
 DciLabelProvider_Table=<< TABLE >>
@@ -244,6 +245,7 @@ GeneralTable_SourceCPSNMP=Check Point SNMP
 GeneralTable_SourceInternal=Internal
 GeneralTable_SourcePush=Push
 GeneralTable_SourceSNMP=SNMP
+GeneralTable_SourceSSH=SSH
 GeneralTable_Status=Status
 GeneralTable_Storage=Storage
 GeneralTable_UseCustomRetention=Use custom retention time
@@ -297,6 +299,7 @@ General_SourceCPSNMP=Check Point SNMP
 General_SourceInternal=Internal
 General_SourcePush=Push
 General_SourceSNMP=SNMP
+General_SourceSSH=SSH
 General_Status=Status
 General_Storage=Storage
 General_UseCustomPort=Use custom SNMP port:
index 829e5e3..48bc52f 100644 (file)
@@ -146,10 +146,11 @@ DciLabelProvider_None=none
 DciLabelProvider_NotSupported=\u041d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f
 DciLabelProvider_SourceAgent=\u0410\u0433\u0435\u043d\u0442 NetXMS
 DciLabelProvider_SourceCPSNMP=Check Point SNMP
-DciLabelProvider_SourceILO=iLO
+DciLabelProvider_SourceILO=SM-CLP
 DciLabelProvider_SourceInternal=\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439
 DciLabelProvider_SourcePush=Push \u0430\u0433\u0435\u043d\u0442
 DciLabelProvider_SourceSNMP=SNMP
+DciLabelProvider_SourceSSH=SSH
 DciLabelProvider_SourceScript=\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439
 DciLabelProvider_SourceWinPerf=\u0421\u0447\u0435\u0442\u0447\u0438\u043a\u0438 Windows
 DciLabelProvider_Table=<< \u0422\u0410\u0411\u041b\u0418\u0426\u0410 >>
@@ -244,6 +245,7 @@ GeneralTable_SourceCPSNMP=Check Point SNMP
 GeneralTable_SourceInternal=\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439
 GeneralTable_SourcePush=Push \u0430\u0433\u0435\u043d\u0442
 GeneralTable_SourceSNMP=SNMP
+GeneralTable_SourceSSH=SSH
 GeneralTable_Status=\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435
 GeneralTable_Storage=\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435
 GeneralTable_UseCustomRetention=\u0421\u0432\u043e\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f
@@ -297,6 +299,7 @@ General_SourceCPSNMP=Check Point SNMP
 General_SourceInternal=\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439
 General_SourcePush=Push \u0430\u0433\u0435\u043d\u0442
 General_SourceSNMP=SNMP
+General_SourceSSH=SSH
 General_Status=C\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435
 General_Storage=\u0425\u0440\u0430\u043d\u0435\u043d\u0438\u0435
 General_UseCustomPort=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0440\u0442 \u0434\u043b\u044f SNMP:
index d32c9d1..44543ff 100644 (file)
@@ -146,10 +146,11 @@ DciLabelProvider_None=none
 DciLabelProvider_NotSupported=Not supported
 DciLabelProvider_SourceAgent=NetXMS Agent
 DciLabelProvider_SourceCPSNMP=Check Point SNMP
-DciLabelProvider_SourceILO=iLO
+DciLabelProvider_SourceILO=SM-CLP
 DciLabelProvider_SourceInternal=Internal
 DciLabelProvider_SourcePush=Push
 DciLabelProvider_SourceSNMP=SNMP
+DciLabelProvider_SourceSSH=SSH
 DciLabelProvider_SourceScript=Script
 DciLabelProvider_SourceWinPerf=Windows Performance Counters
 DciLabelProvider_Table=<< TABLE >>
@@ -244,6 +245,7 @@ GeneralTable_SourceCPSNMP=Check Point SNMP
 GeneralTable_SourceInternal=Internal
 GeneralTable_SourcePush=Push
 GeneralTable_SourceSNMP=SNMP
+GeneralTable_SourceSSH=SSH
 GeneralTable_Status=Status
 GeneralTable_Storage=Storage
 GeneralTable_UseCustomRetention=Use custom retention time
@@ -297,6 +299,7 @@ General_SourceCPSNMP=Check Point SNMP
 General_SourceInternal=Internal
 General_SourcePush=Push
 General_SourceSNMP=SNMP
+General_SourceSSH=SSH
 General_Status=Status
 General_Storage=Storage
 General_UseCustomPort=Use custom SNMP port:
index 2a84867..4515413 100644 (file)
@@ -191,6 +191,7 @@ public class General extends PropertyPage
       origin.add(Messages.get().General_WinPerf);
       origin.add(Messages.get().General_SMCLP);
       origin.add(Messages.get().General_Script);
+      origin.add(Messages.get().General_SourceSSH);
       origin.select(dci.getOrigin());
       origin.addSelectionListener(new SelectionListener() {
                        @Override
@@ -450,7 +451,8 @@ public class General extends PropertyPage
          mode = 1;
       retentionMode.select(mode);
       retentionTime.setEnabled(mode == 1);
-            
+      
+      onOriginChange();
       return dialogArea;
        }
 
@@ -469,6 +471,13 @@ public class General extends PropertyPage
                customSnmpPort.setEnabled((index == DataCollectionItem.SNMP) && checkUseCustomSnmpPort.getSelection());
                sampleCount.setEnabled(index == DataCollectionItem.WINPERF);
                agentCacheMode.setEnabled((index == DataCollectionItem.AGENT) || (index == DataCollectionItem.SNMP));
+               selectButton.setEnabled(
+                     (index == DataCollectionItem.AGENT) || 
+                     (index == DataCollectionItem.SNMP) || 
+                     (index == DataCollectionItem.INTERNAL) || 
+                     (index == DataCollectionItem.WINPERF) || 
+                     (index == DataCollectionItem.CHECKPOINT_SNMP) || 
+                     (index == DataCollectionItem.SCRIPT));
        }
        
        /**
index d8613d5..504ac44 100644 (file)
@@ -68,8 +68,9 @@ public class DciLabelProvider implements ITableLabelProvider
                originTexts.put(DataCollectionItem.INTERNAL, Messages.get().DciLabelProvider_SourceInternal);
                originTexts.put(DataCollectionItem.PUSH, Messages.get().DciLabelProvider_SourcePush);
                originTexts.put(DataCollectionItem.WINPERF, Messages.get().DciLabelProvider_SourceWinPerf);
-               originTexts.put(DataCollectionItem.ILO, Messages.get().DciLabelProvider_SourceILO);
+               originTexts.put(DataCollectionItem.SMCLP, Messages.get().DciLabelProvider_SourceILO);
       originTexts.put(DataCollectionItem.SCRIPT, Messages.get().DciLabelProvider_SourceScript);
+      originTexts.put(DataCollectionItem.SSH, Messages.get().DciLabelProvider_SourceSSH);
                
                statusTexts.put(DataCollectionItem.ACTIVE, Messages.get().DciLabelProvider_Active);
                statusTexts.put(DataCollectionItem.DISABLED, Messages.get().DciLabelProvider_Disabled);
index 4a7af79..35b7a7b 100644 (file)
@@ -32,25 +32,29 @@ action.label.Unmanage = Unmanage
 menu.label.Create=&Create
 menu.label.Maintenance=&Maintenance
 menu.label.Poll=&Poll
-page.name.AccessControl = Access Control
-page.name.AutoApply = Automatic Apply Rules
-page.name.AutoBind = Automatic Bind Rules
-page.name.ClusterNet = Cluster Networks
-page.name.ClusterRes = Cluster Resources
-page.name.Comments = Comments
-page.name.Communications = Communications
-page.name.CustomAttrs = Custom Attributes
-page.name.Data = Data
-page.name.Dashboards = Dashboards
-page.name.EventsStatus = Events and Status
-page.name.General = General
-page.name.Location = Location
-page.name.MapAppearance = Map Appearance
-page.name.NetSrv = Network Service
+page.name.AccessControl=Access Control
+page.name.Agent=Agent
+page.name.AutoApply=Automatic Apply Rules
+page.name.AutoBind=Automatic Bind Rules
+page.name.ClusterNet=Cluster Networks
+page.name.ClusterRes=Cluster Resources
+page.name.Comments=Comments
+page.name.Communications=Communications
+page.name.CustomAttrs=Custom Attributes
+page.name.Data=Data
+page.name.Dashboards=Dashboards
+page.name.EventsStatus=Events and Status
+page.name.General=General
+page.name.ICMP=ICMP
+page.name.Location=Location
+page.name.MapAppearance=Map Appearance
+page.name.NetSrv=Network Service
 page.name.Polling=Polling
 page.name.Rack=Rack
 page.name.Script=Script
-page.name.StatusCalc = Status Calculation
+page.name.SNMP=SNMP
+page.name.SSH=SSH
+page.name.StatusCalc=Status Calculation
 page.name.Subnets=Subnets
-page.name.TrustedNodes = Trusted Nodes
-view.name.NodePoll = Node Poll
+page.name.TrustedNodes=Trusted Nodes
+view.name.NodePoll=Node Poll
index 273bcdf..8a96104 100644 (file)
@@ -32,6 +32,7 @@ menu.label.Create=&Vytvo\u0159it
 menu.label.Maintenance=&Maintenance
 menu.label.Poll=&Vy\u010d\u00edst
 page.name.AccessControl=\u0158\u00edzen\u00ed p\u0159\u00edstupu
+page.name.Agent=Agent
 page.name.AutoApply=Automaticky pou\u017e\u00edt pravidla
 page.name.AutoBind=Automaticky sv\u00e1zat pravidla
 page.name.ClusterNet=Cluster s\u00edt\u011b
@@ -43,11 +44,14 @@ page.name.Dashboards=Dashboards
 page.name.Data=Data
 page.name.EventsStatus=Ud\u00e1losti a stav
 page.name.General=Obecn\u00fd
+page.name.ICMP=ICMP
 page.name.Location=Lokace
 page.name.MapAppearance=Vzhled mapy
 page.name.NetSrv=S\u00ed\u0165ov\u00e1 slu\u017eba
 page.name.Polling=Vy\u010d\u00edt\u00e1n\u00ed
 page.name.Rack=Rack
+page.name.SNMP=SNMP
+page.name.SSH=SSH
 page.name.Script=Skript
 page.name.StatusCalc=V\u00fdpo\u010det stavu
 page.name.Subnets=Subnets
index 158693e..1baa635 100644 (file)
@@ -8,13 +8,13 @@ action.label.ConfPollFull=&Configuration (full)
 action.label.CreateChassis=C&hassis...
 action.label.CreateCluster=Cl&uster...
 action.label.CreateCond=Con&dition...
-action.label.CreateContainer = &Container...
-action.label.CreateIface = &Interface...
-action.label.CreateMobile = &Mobile device...
-action.label.CreateNetSrv = Network &service...
-action.label.CreateNode = &Node...
-action.label.CreateRack = &Rack...
-action.label.CreateVPNConnector = &VPN connector...
+action.label.CreateContainer= &Container...
+action.label.CreateIface= &Interface...
+action.label.CreateMobile= &Mobile device...
+action.label.CreateNetSrv= Network &service...
+action.label.CreateNode= &Node...
+action.label.CreateRack= &Rack...
+action.label.CreateVPNConnector= &VPN connector...
 action.label.CreateZone=Create &zone...
 action.label.Delete= Delete
 action.label.EnterMaintMode=&Enter maintenance mode
@@ -32,6 +32,7 @@ menu.label.Create=&Create
 menu.label.Maintenance=&Maintenance
 menu.label.Poll= &Poll
 page.name.AccessControl=Access Control
+page.name.Agent=Agent
 page.name.AutoApply=Automatic Apply Rules
 page.name.AutoBind=Automatic Bind Rules
 page.name.ClusterNet=Cluster Networks
@@ -43,11 +44,14 @@ page.name.Dashboards=Dashboards
 page.name.Data=Data
 page.name.EventsStatus=Events and Status
 page.name.General=General
+page.name.ICMP=ICMP
 page.name.Location=Location
 page.name.MapAppearance= Map Appearance
 page.name.NetSrv= Network Service
 page.name.Polling= Polling
 page.name.Rack=Rack
+page.name.SNMP=SNMP
+page.name.SSH=SSH
 page.name.Script= Script
 page.name.StatusCalc= Status Calculation
 page.name.Subnets=Subnets
index cbdf9b4..3e4921d 100644 (file)
@@ -8,13 +8,13 @@ action.label.ConfPollFull=&Configuration (full)
 action.label.CreateChassis=C&hassis...
 action.label.CreateCluster=Cl&uster...
 action.label.CreateCond=Con&dition...
-action.label.CreateContainer = &Container...
-action.label.CreateIface = &Interface...
-action.label.CreateMobile = &Mobile device...
-action.label.CreateNetSrv = Network &service...
-action.label.CreateNode = &Node...
-action.label.CreateRack = &Rack...
-action.label.CreateVPNConnector = &VPN connector...
+action.label.CreateContainer= &Container...
+action.label.CreateIface= &Interface...
+action.label.CreateMobile= &Mobile device...
+action.label.CreateNetSrv= Network &service...
+action.label.CreateNode= &Node...
+action.label.CreateRack= &Rack...
+action.label.CreateVPNConnector= &VPN connector...
 action.label.CreateZone=Create &zone...
 action.label.Delete=Delete
 action.label.EnterMaintMode=&Enter maintenance mode
@@ -32,6 +32,7 @@ menu.label.Create=&Create
 menu.label.Maintenance=&Maintenance
 menu.label.Poll=&Poll
 page.name.AccessControl=Access Control
+page.name.Agent=Agent
 page.name.AutoApply=Automatic Apply Rules
 page.name.AutoBind=Automatic Bind Rules
 page.name.ClusterNet=Cluster Networks
@@ -43,11 +44,14 @@ page.name.Dashboards=Dashboards
 page.name.Data=Data
 page.name.EventsStatus=Events and Status
 page.name.General=General
+page.name.ICMP=ICMP
 page.name.Location=Location
 page.name.MapAppearance=Map Appearance
 page.name.NetSrv=Network Service
 page.name.Polling=Polling
 page.name.Rack=Rack
+page.name.SNMP=SNMP
+page.name.SSH=SSH
 page.name.Script=Script
 page.name.StatusCalc=Status Calculation
 page.name.Subnets=Subnets
index ad222e3..17a9f10 100644 (file)
@@ -8,13 +8,13 @@ action.label.ConfPollFull=&Configuration (full)
 action.label.CreateChassis=C&hassis...
 action.label.CreateCluster=Cl&uster...
 action.label.CreateCond=Con&dition...
-action.label.CreateContainer = &Container...
-action.label.CreateIface = &Interface...
-action.label.CreateMobile = &Mobile device...
-action.label.CreateNetSrv = Network &service...
-action.label.CreateNode = &Node...
-action.label.CreateRack = &Rack...
-action.label.CreateVPNConnector = &VPN connector...
+action.label.CreateContainer= &Container...
+action.label.CreateIface= &Interface...
+action.label.CreateMobile= &Mobile device...
+action.label.CreateNetSrv= Network &service...
+action.label.CreateNode= &Node...
+action.label.CreateRack= &Rack...
+action.label.CreateVPNConnector= &VPN connector...
 action.label.CreateZone=Create &zone...
 action.label.Delete=Delete
 action.label.EnterMaintMode=&Enter maintenance mode
@@ -32,6 +32,7 @@ menu.label.Create=&Create
 menu.label.Maintenance=&Maintenance
 menu.label.Poll= &Poll
 page.name.AccessControl= Access Control
+page.name.Agent=Agent
 page.name.AutoApply= Automatic Apply Rules
 page.name.AutoBind= Automatic Bind Rules
 page.name.ClusterNet= Cluster Networks
@@ -43,11 +44,14 @@ page.name.Dashboards= Dashboards
 page.name.Data= Data
 page.name.EventsStatus= Events and Status
 page.name.General= General
+page.name.ICMP=ICMP
 page.name.Location= Location
 page.name.MapAppearance= Map Appearance
 page.name.NetSrv= Network Service
 page.name.Polling= Polling
 page.name.Rack=Rack
+page.name.SNMP=SNMP
+page.name.SSH=SSH
 page.name.Script= Script
 page.name.StatusCalc= Status Calculation
 page.name.Subnets=Subnets
index a6116e3..40f6cbf 100644 (file)
@@ -5,13 +5,13 @@ action.label.ChangeExpState= Change interface e&xpected state...
 action.label.ChangeZone= Change zone...
 action.label.ConfPoll= &Configuration
 action.label.ConfPollFull= &Configuration (full)
-action.label.CreateChassis = C&hassis...
-action.label.CreateCluster = Cl&uster...
-action.label.CreateCond = Con&dition...
-action.label.CreateContainer = &Container...
-action.label.CreateIface = &Interface...
-action.label.CreateMobile = &Mobile device...
-action.label.CreateNetSrv = Network &service...
+action.label.CreateChassis= C&hassis...
+action.label.CreateCluster= Cl&uster...
+action.label.CreateCond= Con&dition...
+action.label.CreateContainer= &Container...
+action.label.CreateIface= &Interface...
+action.label.CreateMobile= &Mobile device...
+action.label.CreateNetSrv= Network &service...
 action.label.CreateNode=&Node...
 action.label.CreateRack=&Rack...
 action.label.CreateVPNConnector=&VPN connector...
@@ -32,6 +32,7 @@ menu.label.Create=&Create
 menu.label.Maintenance=&Maintenance
 menu.label.Poll=&Poll
 page.name.AccessControl= Access Control
+page.name.Agent=Agent
 page.name.AutoApply= Automatic Apply Rules
 page.name.AutoBind= Automatic Bind Rules
 page.name.ClusterNet= Cluster Networks
@@ -43,11 +44,14 @@ page.name.Dashboards= Dashboards
 page.name.Data= Data
 page.name.EventsStatus= Events and Status
 page.name.General= General
+page.name.ICMP=ICMP
 page.name.Location= Location
 page.name.MapAppearance= Map Appearance
 page.name.NetSrv= Network Service
 page.name.Polling=Polling
 page.name.Rack=Rack
+page.name.SNMP=SNMP
+page.name.SSH=SSH
 page.name.Script=Script
 page.name.StatusCalc= Status Calculation
 page.name.Subnets=Subnets
index 5fea232..045c527 100644 (file)
@@ -16,6 +16,12 @@ action.label.CreateNode=&\u0423\u0437\u0435\u043b...
 action.label.CreateRack=\u0421&\u0442\u043e\u0439\u043a\u0443...
 action.label.CreateVPNConnector=&VPN \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435...
 action.label.CreateZone=\u0421\u043e\u0437\u0434\u0430\u0442\u044c &\u0437\u043e\u043d\u0443
+action.label.Delete= Delete
+action.label.EnterMaintMode=&Enter maintenance mode
+action.label.IfNamesPoll= &Interface names
+action.label.InstanceDiscoveryPoll= I&nstance discovery
+action.label.LeaveMaintMode=&Leave maintenance mode
+action.label.Manage= Manage
 action.label.RemoveNode=&\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0443\u0437\u0435\u043b...
 action.label.ScheduleMaintenance=\u0417\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435
 action.label.StatusPoll=&\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435
@@ -26,6 +32,7 @@ menu.label.Create=&\u0421\u043e\u0437\u0434\u0430\u0442\u044c
 menu.label.Maintenance=&\u041e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435
 menu.label.Poll=&\u041e\u043f\u0440\u043e\u0441
 page.name.AccessControl=\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430
+page.name.Agent=\u0410\u0433\u0435\u043d\u0442
 page.name.AutoApply=\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430
 page.name.AutoBind=\u041f\u0440\u0430\u0432\u0438\u043b\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438
 page.name.ClusterNet=\u0421\u0435\u0442\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430
@@ -37,11 +44,14 @@ page.name.Dashboards=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043
 page.name.Data=\u0414\u0430\u043d\u043d\u044b\u0435
 page.name.EventsStatus=\u0421\u043e\u0431\u044b\u0442\u0438\u044f \u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435
 page.name.General=\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435
+page.name.ICMP=ICMP
 page.name.Location=\u0413\u0435\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435
 page.name.MapAppearance=\u0412\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u043a\u0430\u0440\u0442\u044b
 page.name.NetSrv=\u0421\u0435\u0442\u0435\u0432\u043e\u0439 \u0440\u0435\u0441\u0443\u0440\u0441
 page.name.Polling=\u041e\u043f\u0440\u043e\u0441
 page.name.Rack=\u0421\u0442\u043e\u0439\u043a\u0430
+page.name.SNMP=SNMP
+page.name.SSH=SSH
 page.name.Script=\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439
 page.name.StatusCalc=\u0412\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f
 page.name.Subnets=\u041f\u043e\u0434\u0441\u0435\u0442\u0438
index 90c5f2b..311d893 100644 (file)
@@ -5,16 +5,16 @@ action.label.ChangeExpState=Change interface e&xpected state...
 action.label.ChangeZone=Change zone...
 action.label.ConfPoll=&Configuration
 action.label.ConfPollFull=&Configuration (full)
-action.label.CreateChassis = C&hassis...
-action.label.CreateCluster = Cl&uster...
-action.label.CreateCond = Con&dition...
-action.label.CreateContainer = &Container...
-action.label.CreateIface = &Interface...
-action.label.CreateMobile = &Mobile device...
-action.label.CreateNetSrv = Network &service...
-action.label.CreateNode = &Node...
-action.label.CreateRack = &Rack...
-action.label.CreateVPNConnector = &VPN connector...
+action.label.CreateChassis= C&hassis...
+action.label.CreateCluster= Cl&uster...
+action.label.CreateCond= Con&dition...
+action.label.CreateContainer= &Container...
+action.label.CreateIface= &Interface...
+action.label.CreateMobile= &Mobile device...
+action.label.CreateNetSrv= Network &service...
+action.label.CreateNode= &Node...
+action.label.CreateRack= &Rack...
+action.label.CreateVPNConnector= &VPN connector...
 action.label.CreateZone=Create &zone...
 action.label.Delete=Delete
 action.label.EnterMaintMode=&Enter maintenance mode
@@ -32,6 +32,7 @@ menu.label.Create=&Create
 menu.label.Maintenance=&Maintenance
 menu.label.Poll=&Poll
 page.name.AccessControl=Access Control
+page.name.Agent=Agent
 page.name.AutoApply=Automatic Apply Rules
 page.name.AutoBind=Automatic Bind Rules
 page.name.ClusterNet=Cluster Networks
@@ -43,11 +44,14 @@ page.name.Dashboards=Dashboards
 page.name.Data=Data
 page.name.EventsStatus=Events and Status
 page.name.General=General
+page.name.ICMP=ICMP
 page.name.Location=Location
 page.name.MapAppearance=Map Appearance
 page.name.NetSrv=Network Service
 page.name.Polling=Polling
 page.name.Rack=Rack
+page.name.SNMP=SNMP
+page.name.SSH=SSH
 page.name.Script=Script
 page.name.StatusCalc=Status Calculation
 page.name.Subnets=Subnets
index 4d50bcf..c4af134 100644 (file)
               </instanceof>
            </enabledWhen>
         </page>
+        <page
+              category="org.netxms.ui.eclipse.objectmanager.propertypages.Communication#10"
+              class="org.netxms.ui.eclipse.objectmanager.propertypages.SNMP"
+              id="org.netxms.ui.eclipse.objectmanager.propertypages.SNMP"
+              name="%page.name.SNMP">
+           <enabledWhen>
+              <instanceof
+                    value="org.netxms.client.objects.Node">
+              </instanceof>
+           </enabledWhen>
+        </page>
+        <page
+              category="org.netxms.ui.eclipse.objectmanager.propertypages.Communication#10"
+              class="org.netxms.ui.eclipse.objectmanager.propertypages.Agent"
+              id="org.netxms.ui.eclipse.objectmanager.propertypages.Agent"
+              name="%page.name.Agent">
+           <enabledWhen>
+              <instanceof
+                    value="org.netxms.client.objects.Node">
+              </instanceof>
+           </enabledWhen>
+        </page>
+        <page
+              category="org.netxms.ui.eclipse.objectmanager.propertypages.Communication#10"
+              class="org.netxms.ui.eclipse.objectmanager.propertypages.ICMP"
+              id="org.netxms.ui.eclipse.objectmanager.propertypages.ICMP"
+              name="%page.name.ICMP">
+           <enabledWhen>
+              <instanceof
+                    value="org.netxms.client.objects.Node">
+              </instanceof>
+           </enabledWhen>
+        </page>
+        <page
+              category="org.netxms.ui.eclipse.objectmanager.propertypages.Communication#10"
+              class="org.netxms.ui.eclipse.objectmanager.propertypages.SSH"
+              id="org.netxms.ui.eclipse.objectmanager.propertypages.SSH"
+              name="%page.name.SSH">
+           <enabledWhen>
+              <instanceof
+                    value="org.netxms.client.objects.Node">
+              </instanceof>
+           </enabledWhen>
+        </page>
   </extension>
 
    <extension
index f4c4178..8fba08c 100644 (file)
@@ -399,6 +399,7 @@ public class Messages extends NLS
    public static String ZoneCommunications_DefaultAgentProxy;
    public static String ZoneCommunications_DefaultICMPProxy;
    public static String ZoneCommunications_DefaultSNMPProxy;
+   public static String ZoneCommunications_DefaultSSHProxy;
    public static String ZoneCommunications_JobError;
    public static String ZoneCommunications_JobName;
    public static String ZoneSelectionDialog_EmptySelectionWarning;
index d2b69fb..13ca491 100644 (file)
@@ -392,6 +392,7 @@ VPNSubnets_RemoteNetworks=Remote networks
 ZoneCommunications_DefaultAgentProxy=Default agent proxy
 ZoneCommunications_DefaultICMPProxy=Default ICMP proxy
 ZoneCommunications_DefaultSNMPProxy=Default SNMP proxy
+ZoneCommunications_DefaultSSHProxy=Default SSH proxy
 ZoneCommunications_JobError=Cannot update communication settings
 ZoneCommunications_JobName=Update communication settings for zone %s
 ZoneSelectionDialog_EmptySelectionWarning=Please select zone object\!
index 69563a0..a1662a4 100644 (file)
@@ -392,6 +392,7 @@ VPNSubnets_RemoteNetworks=Remote networks
 ZoneCommunications_DefaultAgentProxy=V\u00fdchoz\u00ed proxy agenta
 ZoneCommunications_DefaultICMPProxy=V\u00fdchoz\u00ed ICMP proxy
 ZoneCommunications_DefaultSNMPProxy=V\u00fdchoz\u00ed SNMP proxy
+ZoneCommunications_DefaultSSHProxy=V\u00fdchoz\u00ed SSH proxy
 ZoneCommunications_JobError=Nelze aktualizovat komunika\u010dni nastaven\u00ed
 ZoneCommunications_JobName=Aktualizovat komunika\u010dn\u00ed nastaven\u00ed pro z\u00f3nu %s
 ZoneSelectionDialog_EmptySelectionWarning=Pros\u00edm vyberte objekt z\u00f3na\!
index 6c6c906..69665e7 100644 (file)
@@ -392,6 +392,7 @@ VPNSubnets_RemoteNetworks=Remote networks
 ZoneCommunications_DefaultAgentProxy=Default agent proxy
 ZoneCommunications_DefaultICMPProxy=Default ICMP proxy
 ZoneCommunications_DefaultSNMPProxy=Default SNMP proxy
+ZoneCommunications_DefaultSSHProxy=Default SSH proxy
 ZoneCommunications_JobError=Cannot update communication settings
 ZoneCommunications_JobName=Update communication settings for zone %s
 ZoneSelectionDialog_EmptySelectionWarning=Please select zone object\!
index b80428f..fe614d0 100644 (file)
@@ -392,6 +392,7 @@ VPNSubnets_RemoteNetworks=Remote networks
 ZoneCommunications_DefaultAgentProxy=Default agent proxy
 ZoneCommunications_DefaultICMPProxy=Default ICMP proxy
 ZoneCommunications_DefaultSNMPProxy=Default SNMP proxy
+ZoneCommunications_DefaultSSHProxy=Default SSH proxy
 ZoneCommunications_JobError=Cannot update communication settings
 ZoneCommunications_JobName=Update communication settings for zone %s
 ZoneSelectionDialog_EmptySelectionWarning=Please select zone object\!
index 6c6c906..69665e7 100644 (file)
@@ -392,6 +392,7 @@ VPNSubnets_RemoteNetworks=Remote networks
 ZoneCommunications_DefaultAgentProxy=Default agent proxy
 ZoneCommunications_DefaultICMPProxy=Default ICMP proxy
 ZoneCommunications_DefaultSNMPProxy=Default SNMP proxy
+ZoneCommunications_DefaultSSHProxy=Default SSH proxy
 ZoneCommunications_JobError=Cannot update communication settings
 ZoneCommunications_JobName=Update communication settings for zone %s
 ZoneSelectionDialog_EmptySelectionWarning=Please select zone object\!
index 15b5db4..5e5e92c 100644 (file)
@@ -392,6 +392,7 @@ VPNSubnets_RemoteNetworks=Remote networks
 ZoneCommunications_DefaultAgentProxy=Default agent proxy
 ZoneCommunications_DefaultICMPProxy=Default ICMP proxy
 ZoneCommunications_DefaultSNMPProxy=Default SNMP proxy
+ZoneCommunications_DefaultSSHProxy=Default SSH proxy
 ZoneCommunications_JobError=Cannot update communication settings
 ZoneCommunications_JobName=Update communication settings for zone %s
 ZoneSelectionDialog_EmptySelectionWarning=Please select zone object\!
index e7c1749..2a3c551 100644 (file)
@@ -392,6 +392,7 @@ VPNSubnets_RemoteNetworks=\u0423\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0435
 ZoneCommunications_DefaultAgentProxy=\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u043a\u0441\u0438 \u0434\u043b\u044f NetXMS \u0430\u0433\u0435\u043d\u0442\u0430
 ZoneCommunications_DefaultICMPProxy=\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u043a\u0441\u0438 \u0434\u043b\u044f ICMP
 ZoneCommunications_DefaultSNMPProxy=\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u043a\u0441\u0438 \u0434\u043b\u044f SNMP
+ZoneCommunications_DefaultSSHProxy=\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u043a\u0441\u0438 \u0434\u043b\u044f SSH
 ZoneCommunications_JobError=\u041e\u0448\u0438\u0431\u043a\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f
 ZoneCommunications_JobName=\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0437\u043e\u043d\u044b %s
 ZoneSelectionDialog_EmptySelectionWarning=\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430 \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0437\u043e\u043d\u0443\!
index b80428f..fe614d0 100644 (file)
@@ -392,6 +392,7 @@ VPNSubnets_RemoteNetworks=Remote networks
 ZoneCommunications_DefaultAgentProxy=Default agent proxy
 ZoneCommunications_DefaultICMPProxy=Default ICMP proxy
 ZoneCommunications_DefaultSNMPProxy=Default SNMP proxy
+ZoneCommunications_DefaultSSHProxy=Default SSH proxy
 ZoneCommunications_JobError=Cannot update communication settings
 ZoneCommunications_JobName=Update communication settings for zone %s
 ZoneSelectionDialog_EmptySelectionWarning=Please select zone object\!
diff --git a/src/java/netxms-eclipse/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/propertypages/Agent.java b/src/java/netxms-eclipse/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/propertypages/Agent.java
new file mode 100644 (file)
index 0000000..0e0049b
--- /dev/null
@@ -0,0 +1,233 @@
+/**
+ * NetXMS - open source network management system
+ * Copyright (C) 2003-2016 Victor Kirhenshtein
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+package org.netxms.ui.eclipse.objectmanager.propertypages;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.ui.dialogs.PropertyPage;
+import org.netxms.client.NXCObjectModificationData;
+import org.netxms.client.NXCSession;
+import org.netxms.client.objects.AbstractNode;
+import org.netxms.ui.eclipse.jobs.ConsoleJob;
+import org.netxms.ui.eclipse.objectbrowser.widgets.ObjectSelector;
+import org.netxms.ui.eclipse.objectmanager.Activator;
+import org.netxms.ui.eclipse.objectmanager.Messages;
+import org.netxms.ui.eclipse.shared.ConsoleSharedData;
+import org.netxms.ui.eclipse.tools.WidgetHelper;
+import org.netxms.ui.eclipse.widgets.LabeledText;
+
+/**
+ * "Agent" property page for node
+ */
+public class Agent extends PropertyPage
+{
+   private AbstractNode node;
+   private LabeledText agentPort;
+   private LabeledText agentSharedSecret;
+   private Combo agentAuthMethod;
+   private Button agentForceEncryption;
+   private ObjectSelector agentProxy;
+
+   /* (non-Javadoc)
+    * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
+    */
+   @Override
+   protected Control createContents(Composite parent)
+   {
+      node = (AbstractNode)getElement().getAdapter(AbstractNode.class);
+
+      Composite dialogArea = new Composite(parent, SWT.NONE);
+      FormLayout dialogLayout = new FormLayout();
+      dialogLayout.marginWidth = 0;
+      dialogLayout.marginHeight = 0;
+      dialogLayout.spacing = WidgetHelper.DIALOG_SPACING;
+      dialogArea.setLayout(dialogLayout);
+
+      agentPort = new LabeledText(dialogArea, SWT.NONE);
+      agentPort.setLabel(Messages.get().Communication_TCPPort);
+      agentPort.setText(Integer.toString(node.getAgentPort()));
+      FormData fd = new FormData();
+      fd.left = new FormAttachment(0, 0);
+      fd.top = new FormAttachment(0, 0);
+      agentPort.setLayoutData(fd);
+      
+      agentProxy = new ObjectSelector(dialogArea, SWT.NONE, true);
+      agentProxy.setLabel(Messages.get().Communication_Proxy);
+      agentProxy.setObjectId(node.getAgentProxyId());
+      fd = new FormData();
+      fd.left = new FormAttachment(agentPort, 0, SWT.RIGHT);
+      fd.right = new FormAttachment(100, 0);
+      fd.top = new FormAttachment(0, 0);
+      agentProxy.setLayoutData(fd);
+
+      agentForceEncryption = new Button(dialogArea, SWT.CHECK);
+      agentForceEncryption.setText(Messages.get().Communication_ForceEncryption);
+      agentForceEncryption.setSelection((node.getFlags() & AbstractNode.NF_FORCE_ENCRYPTION) != 0);
+      fd = new FormData();
+      fd.left = new FormAttachment(0, 0);
+      fd.top = new FormAttachment(agentPort, 0, SWT.BOTTOM);
+      agentForceEncryption.setLayoutData(fd);
+      
+      fd = new FormData();
+      fd.left = new FormAttachment(0, 0);
+      fd.top = new FormAttachment(agentForceEncryption, 0, SWT.BOTTOM);
+      agentAuthMethod = WidgetHelper.createLabeledCombo(dialogArea, SWT.BORDER | SWT.READ_ONLY, Messages.get().Communication_AuthMethod, fd);
+      agentAuthMethod.add(Messages.get().Communication_AuthNone);
+      agentAuthMethod.add(Messages.get().Communication_AuthPlain);
+      agentAuthMethod.add(Messages.get().Communication_AuthMD5);
+      agentAuthMethod.add(Messages.get().Communication_AuthSHA1);
+      agentAuthMethod.select(node.getAgentAuthMethod());
+      agentAuthMethod.addSelectionListener(new SelectionListener() {
+         @Override
+         public void widgetDefaultSelected(SelectionEvent e)
+         {
+            widgetSelected(e);
+         }
+
+         @Override
+         public void widgetSelected(SelectionEvent e)
+         {
+            agentSharedSecret.getTextControl().setEnabled(agentAuthMethod.getSelectionIndex() != AbstractNode.AGENT_AUTH_NONE);
+         }
+      });
+      
+      agentSharedSecret = new LabeledText(dialogArea, SWT.NONE);
+      agentSharedSecret.setLabel(Messages.get().Communication_SharedSecret);
+      agentSharedSecret.setText(node.getAgentSharedSecret());
+      fd = new FormData();
+      fd.left = new FormAttachment(agentAuthMethod.getParent(), 0, SWT.RIGHT);
+      fd.right = new FormAttachment(100, 0);
+      fd.top = new FormAttachment(agentForceEncryption, 0, SWT.BOTTOM);
+      agentSharedSecret.setLayoutData(fd);
+      agentSharedSecret.getTextControl().setEnabled(node.getAgentAuthMethod() != AbstractNode.AGENT_AUTH_NONE);
+      
+      return dialogArea;
+   }
+
+   /**
+    * Apply changes
+    * 
+    * @param isApply true if update operation caused by "Apply" button
+    */
+   protected boolean applyChanges(final boolean isApply)
+   {
+      final NXCObjectModificationData md = new NXCObjectModificationData(node.getObjectId());
+      
+      if (isApply)
+         setValid(false);
+      
+      try
+      {
+         md.setAgentPort(Integer.parseInt(agentPort.getText(), 10));
+      }
+      catch(NumberFormatException e)
+      {
+         MessageDialog.openWarning(getShell(), Messages.get().Communication_Warning, Messages.get().Communication_WarningInvalidAgentPort);
+         if (isApply)
+            setValid(true);
+         return false;
+      }
+      md.setAgentProxy(agentProxy.getObjectId());
+      md.setAgentAuthMethod(agentAuthMethod.getSelectionIndex());
+      md.setAgentSecret(agentSharedSecret.getText());
+      
+      /* TODO: sync in some way with "Polling" page */
+      int flags = node.getFlags();
+      if (agentForceEncryption.getSelection())
+         flags |= AbstractNode.NF_FORCE_ENCRYPTION;
+      else
+         flags &= ~AbstractNode.NF_FORCE_ENCRYPTION;
+      md.setObjectFlags(flags);
+
+      final NXCSession session = (NXCSession)ConsoleSharedData.getSession();
+      new ConsoleJob(String.format("Updating agent communication settings for node %s", node.getObjectName()), null, Activator.PLUGIN_ID, null) {
+         @Override
+         protected void runInternal(IProgressMonitor monitor) throws Exception
+         {
+            session.modifyObject(md);
+         }
+
+         @Override
+         protected String getErrorMessage()
+         {
+            return String.format("Cannot update communication settings for node %s", node.getObjectName());
+         }
+
+         @Override
+         protected void jobFinalize()
+         {
+            if (isApply)
+            {
+               runInUIThread(new Runnable() {
+                  @Override
+                  public void run()
+                  {
+                     Agent.this.setValid(true);
+                  }
+               });
+            }
+         }
+      }.start();
+      return true;
+   }
+
+   /* (non-Javadoc)
+    * @see org.eclipse.jface.preference.PreferencePage#performOk()
+    */
+   @Override
+   public boolean performOk()
+   {
+      return applyChanges(false);
+   }
+
+   /* (non-Javadoc)
+    * @see org.eclipse.jface.preference.PreferencePage#performApply()
+    */
+   @Override
+   protected void performApply()
+   {
+      applyChanges(true);
+   }
+
+   /* (non-Javadoc)
+    * @see org.eclipse.jface.preference.PreferencePage#performDefaults()
+    */
+   @Override
+   protected void performDefaults()
+   {
+      super.performDefaults();
+      
+      agentPort.setText("4700"); //$NON-NLS-1$
+      agentForceEncryption.setSelection(false);
+      agentAuthMethod.select(0);
+      agentProxy.setObjectId(0);
+      agentSharedSecret.setText(""); //$NON-NLS-1$
+      agentSharedSecret.getTextControl().setEnabled(false);
+   }
+}
index d0faea5..ce059e7 100644 (file)
 package org.netxms.ui.eclipse.objectmanager.propertypages;
 
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.ModifyEvent;
 import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.layout.FormLayout;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Combo;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Group;
 import org.eclipse.ui.dialogs.PropertyPage;
 import org.netxms.client.NXCObjectModificationData;
 import org.netxms.client.NXCSession;
 import org.netxms.client.objects.AbstractNode;
 import org.netxms.ui.eclipse.jobs.ConsoleJob;
-import org.netxms.ui.eclipse.objectbrowser.widgets.ObjectSelector;
 import org.netxms.ui.eclipse.objectmanager.Activator;
 import org.netxms.ui.eclipse.objectmanager.Messages;
 import org.netxms.ui.eclipse.shared.ConsoleSharedData;
 import org.netxms.ui.eclipse.tools.MessageDialogHelper;
-import org.netxms.ui.eclipse.tools.WidgetHelper;
 import org.netxms.ui.eclipse.widgets.LabeledText;
 
 /**
@@ -55,21 +45,7 @@ public class Communication extends PropertyPage
 {
        private AbstractNode node;
        private LabeledText primaryName;
-       private LabeledText agentPort;
-       private LabeledText agentSharedSecret;
-       private Combo agentAuthMethod;
-       private Button agentForceEncryption;
    private Button agentIsRemote;
-       private ObjectSelector agentProxy;
-       private Combo snmpVersion;
-       private LabeledText snmpPort;
-       private Combo snmpAuth;
-       private Combo snmpPriv;
-       private ObjectSelector snmpProxy;
-       private LabeledText snmpAuthName;
-       private LabeledText snmpAuthPassword;
-       private LabeledText snmpPrivPassword;
-       private ObjectSelector icmpProxy;
        private boolean primaryNameChanged = false;
        
        /* (non-Javadoc)
@@ -86,20 +62,10 @@ public class Communication extends PropertyPage
                dialogLayout.marginHeight = 0;
                dialogArea.setLayout(dialogLayout);
                
-               // General
-               Group generalGroup = new Group(dialogArea, SWT.NONE);
-               generalGroup.setText(Messages.get().Communication_GroupGeneral);
-               GridData gd = new GridData();
-               gd.horizontalAlignment = SWT.FILL;
-               gd.grabExcessHorizontalSpace = true;
-               generalGroup.setLayoutData(gd);
-               GridLayout generalGroupLayout = new GridLayout();
-               generalGroup.setLayout(generalGroupLayout);
-               
-               primaryName = new LabeledText(generalGroup, SWT.NONE);
+               primaryName = new LabeledText(dialogArea, SWT.NONE);
                primaryName.setLabel(Messages.get().Communication_PrimaryHostName);
                primaryName.setText(node.getPrimaryName());
-               gd = new GridData();
+               GridData gd = new GridData();
                gd.horizontalAlignment = SWT.FILL;
                gd.grabExcessHorizontalSpace = true;
                primaryName.setLayoutData(gd);
@@ -111,7 +77,7 @@ public class Communication extends PropertyPage
                        }
                });
 
-      agentIsRemote = new Button(generalGroup, SWT.CHECK);
+      agentIsRemote = new Button(dialogArea, SWT.CHECK);
       agentIsRemote.setText(Messages.get().Communication_RemoteAgent);
       agentIsRemote.setSelection((node.getFlags() & AbstractNode.NF_REMOTE_AGENT) != 0);
       gd = new GridData();
@@ -119,243 +85,9 @@ public class Communication extends PropertyPage
       gd.grabExcessHorizontalSpace = true;
       agentIsRemote.setLayoutData(gd);
                
-               // Agent
-               Group agentGroup = new Group(dialogArea, SWT.NONE);
-               agentGroup.setText(Messages.get().Communication_GroupAgent);
-               gd = new GridData();
-               gd.horizontalAlignment = SWT.FILL;
-               gd.grabExcessHorizontalSpace = true;
-               agentGroup.setLayoutData(gd);
-               
-               FormLayout agentGroupLayout = new FormLayout();
-               agentGroupLayout.marginWidth = WidgetHelper.OUTER_SPACING;
-               agentGroupLayout.marginHeight = WidgetHelper.OUTER_SPACING;
-               agentGroupLayout.spacing = WidgetHelper.OUTER_SPACING * 2;
-               agentGroup.setLayout(agentGroupLayout);
-               
-               agentPort = new LabeledText(agentGroup, SWT.NONE);
-               agentPort.setLabel(Messages.get().Communication_TCPPort);
-               agentPort.setText(Integer.toString(node.getAgentPort()));
-               FormData fd = new FormData();
-               fd.left = new FormAttachment(0, 0);
-               fd.top = new FormAttachment(0, 0);
-               agentPort.setLayoutData(fd);
-               
-               agentProxy = new ObjectSelector(agentGroup, SWT.NONE, true);
-               agentProxy.setLabel(Messages.get().Communication_Proxy);
-               agentProxy.setObjectId(node.getAgentProxyId());
-               fd = new FormData();
-               fd.left = new FormAttachment(agentPort, 0, SWT.RIGHT);
-               fd.right = new FormAttachment(100, 0);
-               fd.top = new FormAttachment(0, 0);
-               agentProxy.setLayoutData(fd);
-
-               agentForceEncryption = new Button(agentGroup, SWT.CHECK);
-               agentForceEncryption.setText(Messages.get().Communication_ForceEncryption);
-               agentForceEncryption.setSelection((node.getFlags() & AbstractNode.NF_FORCE_ENCRYPTION) != 0);
-               fd = new FormData();
-               fd.left = new FormAttachment(0, 0);
-               fd.top = new FormAttachment(agentPort, 0, SWT.BOTTOM);
-               agentForceEncryption.setLayoutData(fd);
-               
-               fd = new FormData();
-               fd.left = new FormAttachment(0, 0);
-               fd.top = new FormAttachment(agentForceEncryption, 0, SWT.BOTTOM);
-               agentAuthMethod = WidgetHelper.createLabeledCombo(agentGroup, SWT.BORDER | SWT.READ_ONLY, Messages.get().Communication_AuthMethod, fd);
-               agentAuthMethod.add(Messages.get().Communication_AuthNone);
-               agentAuthMethod.add(Messages.get().Communication_AuthPlain);
-               agentAuthMethod.add(Messages.get().Communication_AuthMD5);
-               agentAuthMethod.add(Messages.get().Communication_AuthSHA1);
-               agentAuthMethod.select(node.getAgentAuthMethod());
-               agentAuthMethod.addSelectionListener(new SelectionListener() {
-                       @Override
-                       public void widgetDefaultSelected(SelectionEvent e)
-                       {
-                               widgetSelected(e);
-                       }
-
-                       @Override
-                       public void widgetSelected(SelectionEvent e)
-                       {
-                               agentSharedSecret.getTextControl().setEnabled(agentAuthMethod.getSelectionIndex() != AbstractNode.AGENT_AUTH_NONE);
-                       }
-               });
-               
-               agentSharedSecret = new LabeledText(agentGroup, SWT.NONE);
-               agentSharedSecret.setLabel(Messages.get().Communication_SharedSecret);
-               agentSharedSecret.setText(node.getAgentSharedSecret());
-               fd = new FormData();
-               fd.left = new FormAttachment(agentAuthMethod.getParent(), 0, SWT.RIGHT);
-               fd.right = new FormAttachment(100, 0);
-               fd.top = new FormAttachment(agentForceEncryption, 0, SWT.BOTTOM);
-               agentSharedSecret.setLayoutData(fd);
-               agentSharedSecret.getTextControl().setEnabled(node.getAgentAuthMethod() != AbstractNode.AGENT_AUTH_NONE);
-       
-               // SNMP
-               Group snmpGroup = new Group(dialogArea, SWT.NONE);
-               snmpGroup.setText(Messages.get().Communication_GroupSNMP);
-               gd = new GridData();
-               gd.horizontalAlignment = SWT.FILL;
-               gd.grabExcessHorizontalSpace = true;
-               snmpGroup.setLayoutData(gd);
-               
-               FormLayout snmpGroupLayout = new FormLayout();
-               snmpGroupLayout.marginWidth = WidgetHelper.OUTER_SPACING;
-               snmpGroupLayout.marginHeight = WidgetHelper.OUTER_SPACING;
-               snmpGroupLayout.spacing = WidgetHelper.OUTER_SPACING * 2;
-               snmpGroup.setLayout(snmpGroupLayout);
-               
-               fd = new FormData();
-               fd.left = new FormAttachment(0, 0);
-               fd.top = new FormAttachment(0, 0);
-               snmpVersion = WidgetHelper.createLabeledCombo(snmpGroup, SWT.BORDER | SWT.READ_ONLY, Messages.get().Communication_Version, fd);
-               snmpVersion.add("1"); //$NON-NLS-1$
-               snmpVersion.add("2c"); //$NON-NLS-1$
-               snmpVersion.add("3"); //$NON-NLS-1$
-               snmpVersion.select(snmpVersionToIndex(node.getSnmpVersion()));
-               snmpVersion.addSelectionListener(new SelectionListener() {
-                       @Override
-                       public void widgetDefaultSelected(SelectionEvent e)
-                       {
-                               widgetSelected(e);
-                       }
-
-                       @Override
-                       public void widgetSelected(SelectionEvent e)
-                       {
-                               onSnmpVersionChange();
-                       }
-               });
-               
-               snmpPort = new LabeledText(snmpGroup, SWT.NONE);
-               snmpPort.setLabel(Messages.get().Communication_UDPPort);
-               snmpPort.setText(Integer.toString(node.getSnmpPort()));
-               
-               fd = new FormData();
-               fd.left = new FormAttachment(0, 0);
-               fd.top = new FormAttachment(snmpVersion.getParent(), 0, SWT.BOTTOM);
-               snmpAuth = WidgetHelper.createLabeledCombo(snmpGroup, SWT.BORDER | SWT.READ_ONLY, Messages.get().Communication_Authentication, fd);
-               snmpAuth.add(Messages.get().Communication_AuthNone);
-               snmpAuth.add(Messages.get().Communication_AuthMD5);
-               snmpAuth.add(Messages.get().Communication_AuthSHA1);
-               snmpAuth.select(node.getSnmpAuthMethod());
-               snmpAuth.setEnabled(node.getSnmpVersion() == AbstractNode.SNMP_VERSION_3);
-               
-               fd = new FormData();
-               fd.left = new FormAttachment(snmpAuth.getParent(), 0, SWT.RIGHT);
-               fd.top = new FormAttachment(snmpVersion.getParent(), 0, SWT.BOTTOM);
-               snmpPriv = WidgetHelper.createLabeledCombo(snmpGroup, SWT.BORDER | SWT.READ_ONLY, Messages.get().Communication_Encryption, fd);
-               snmpPriv.add(Messages.get().Communication_EncNone);
-               snmpPriv.add(Messages.get().Communication_EncDES);
-               snmpPriv.add(Messages.get().Communication_EncAES);
-               snmpPriv.select(node.getSnmpPrivMethod());
-               snmpPriv.setEnabled(node.getSnmpVersion() == AbstractNode.SNMP_VERSION_3);
-               
-               snmpProxy = new ObjectSelector(snmpGroup, SWT.NONE, true);
-               snmpProxy.setLabel(Messages.get().Communication_Proxy);
-               snmpProxy.setObjectId(node.getSnmpProxyId());
-               fd = new FormData();
-               fd.left = new FormAttachment(0, 0);
-               fd.top = new FormAttachment(snmpAuth.getParent(), 0, SWT.BOTTOM);
-               fd.right = new FormAttachment(snmpPriv.getParent(), 0, SWT.RIGHT);
-               snmpProxy.setLayoutData(fd);
-               
-               snmpAuthName = new LabeledText(snmpGroup, SWT.NONE);
-               snmpAuthName.setLabel(node.getSnmpVersion() == AbstractNode.SNMP_VERSION_3 ? Messages.get().Communication_UserName : Messages.get().Communication_Community);
-               snmpAuthName.setText(node.getSnmpAuthName());
-               fd = new FormData();
-               fd.left = new FormAttachment(snmpProxy, 0, SWT.RIGHT);
-               fd.top = new FormAttachment(0, 0);
-               fd.right = new FormAttachment(100, 0);
-               snmpAuthName.setLayoutData(fd);
-               
-               snmpAuthPassword = new LabeledText(snmpGroup, SWT.NONE);
-               snmpAuthPassword.setLabel(Messages.get().Communication_AuthPassword);
-               snmpAuthPassword.setText(node.getSnmpAuthPassword());
-               fd = new FormData();
-               fd.left = new FormAttachment(snmpAuthName, 0, SWT.LEFT);
-               fd.top = new FormAttachment(snmpAuth.getParent(), 0, SWT.TOP);
-               fd.right = new FormAttachment(100, 0);
-               snmpAuthPassword.setLayoutData(fd);
-               snmpAuthPassword.getTextControl().setEnabled(node.getSnmpVersion() == AbstractNode.SNMP_VERSION_3);
-               
-               snmpPrivPassword = new LabeledText(snmpGroup, SWT.NONE);
-               snmpPrivPassword.setLabel(Messages.get().Communication_EncPassword);
-               snmpPrivPassword.setText(node.getSnmpPrivPassword());
-               fd = new FormData();
-               fd.left = new FormAttachment(snmpAuthName, 0, SWT.LEFT);
-               fd.top = new FormAttachment(snmpProxy, 0, SWT.TOP);
-               fd.right = new FormAttachment(100, 0);
-               snmpPrivPassword.setLayoutData(fd);
-               snmpPrivPassword.getTextControl().setEnabled(node.getSnmpVersion() == AbstractNode.SNMP_VERSION_3);
-
-               fd = new FormData();
-               fd.left = new FormAttachment(snmpVersion.getParent(), 0, SWT.RIGHT);
-               fd.right = new FormAttachment(snmpAuthName, 0, SWT.LEFT);
-               fd.top = new FormAttachment(0, 0);
-               snmpPort.setLayoutData(fd);
-
-      // SNMP
-      Group icmpGroup = new Group(dialogArea, SWT.NONE);
-      icmpGroup.setText(Messages.get().Communication_ICMP);
-      gd = new GridData();
-      gd.horizontalAlignment = SWT.FILL;
-      gd.grabExcessHorizontalSpace = true;
-      icmpGroup.setLayoutData(gd);
-      
-      GridLayout icmpGroupLayout = new GridLayout();
-      icmpGroup.setLayout(icmpGroupLayout);
-      
-      icmpProxy = new ObjectSelector(icmpGroup, SWT.NONE, true);
-      icmpProxy.setLabel(Messages.get().Communication_Proxy);
-      icmpProxy.setObjectId(node.getIcmpProxyId());
-      icmpProxy.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
-               
                return dialogArea;
        }
 
-       /**
-        * Convert SNMP version to index in combo box
-        * 
-        * @param version SNMP version
-        * @return index in combo box
-        */
-       private int snmpVersionToIndex(int version)
-       {
-               switch(version)
-               {
-                       case AbstractNode.SNMP_VERSION_1:
-                               return 0;
-                       case AbstractNode.SNMP_VERSION_2C:
-                               return 1;
-                       case AbstractNode.SNMP_VERSION_3:
-                               return 2;
-               }
-               return 0;
-       }
-       
-       /**
-        * Convert selection index in SNMP version combo box to SNMP version
-        */
-       private int snmpIndexToVersion(int index)
-       {
-               final int[] versions = { AbstractNode.SNMP_VERSION_1, AbstractNode.SNMP_VERSION_2C, AbstractNode.SNMP_VERSION_3 };
-               return versions[index];
-       }
-       
-       /**
-        * Handler for SNMP version change
-        */
-       private void onSnmpVersionChange()
-       {
-               boolean isV3 = (snmpVersion.getSelectionIndex() == 2);
-               snmpAuthName.setLabel(isV3 ? Messages.get().Communication_UserName : Messages.get().Communication_Community);
-               snmpAuth.setEnabled(isV3);
-               snmpPriv.setEnabled(isV3);
-               snmpAuthPassword.getTextControl().setEnabled(isV3);
-               snmpPrivPassword.getTextControl().setEnabled(isV3);
-       }
-
        /**
         * Apply changes
         * 
@@ -381,48 +113,8 @@ public class Communication extends PropertyPage
                if (isApply)
                        setValid(false);
                
-               try
-               {
-                       md.setAgentPort(Integer.parseInt(agentPort.getText(), 10));
-               }
-               catch(NumberFormatException e)
-               {
-                       MessageDialog.openWarning(getShell(), Messages.get().Communication_Warning, Messages.get().Communication_WarningInvalidAgentPort);
-                       if (isApply)
-                               setValid(true);
-                       return false;
-               }
-               md.setAgentProxy(agentProxy.getObjectId());
-               md.setAgentAuthMethod(agentAuthMethod.getSelectionIndex());
-               md.setAgentSecret(agentSharedSecret.getText());
-               
-               md.setSnmpVersion(snmpIndexToVersion(snmpVersion.getSelectionIndex()));
-               try
-               {
-                       md.setSnmpPort(Integer.parseInt(snmpPort.getText(), 10));
-               }
-               catch(NumberFormatException e)
-               {
-                       MessageDialog.openWarning(getShell(), Messages.get().Communication_Warning, Messages.get().Communication_WarningInvalidSNMPPort);
-                       if (isApply)
-                               setValid(true);
-                       return false;
-               }
-               md.setSnmpProxy(snmpProxy.getObjectId());
-               md.setSnmpAuthMethod(snmpAuth.getSelectionIndex());
-               md.setSnmpPrivMethod(snmpPriv.getSelectionIndex());
-               md.setSnmpAuthName(snmpAuthName.getText());
-               md.setSnmpAuthPassword(snmpAuthPassword.getText());
-               md.setSnmpPrivPassword(snmpPrivPassword.getText());
-               
-               md.setIcmpProxy(icmpProxy.getObjectId());
-               
                /* TODO: sync in some way with "Polling" page */
                int flags = node.getFlags();
-               if (agentForceEncryption.getSelection())
-                       flags |= AbstractNode.NF_FORCE_ENCRYPTION;
-               else
-                       flags &= ~AbstractNode.NF_FORCE_ENCRYPTION;
       if (agentIsRemote.getSelection())
          flags |= AbstractNode.NF_REMOTE_AGENT;
       else
@@ -486,21 +178,6 @@ public class Communication extends PropertyPage
        protected void performDefaults()
        {
                super.performDefaults();
-               
-               agentPort.setText("4700"); //$NON-NLS-1$
-               agentForceEncryption.setSelection(false);
-               agentAuthMethod.select(0);
-               agentProxy.setObjectId(0);
-               agentSharedSecret.setText(""); //$NON-NLS-1$
-               agentSharedSecret.getTextControl().setEnabled(false);
-               
-               snmpVersion.select(0);
-               snmpAuth.select(0);
-               snmpPriv.select(0);
-               snmpAuthName.setText("public"); //$NON-NLS-1$
-               snmpAuthPassword.setText(""); //$NON-NLS-1$
-               snmpPrivPassword.setText(""); //$NON-NLS-1$
-               snmpProxy.setObjectId(0);
-               onSnmpVersionChange();
+               agentIsRemote.setSelection(false);
        }
 }
diff --git a/src/java/netxms-eclipse/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/propertypages/ICMP.java b/src/java/netxms-eclipse/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/propertypages/ICMP.java
new file mode 100644 (file)
index 0000000..7e09bfb
--- /dev/null
@@ -0,0 +1,140 @@
+/**
+ * NetXMS - open source network management system
+ * Copyright (C) 2003-2016 Victor Kirhenshtein
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+package org.netxms.ui.eclipse.objectmanager.propertypages;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.ui.dialogs.PropertyPage;
+import org.netxms.client.NXCObjectModificationData;
+import org.netxms.client.NXCSession;
+import org.netxms.client.objects.AbstractNode;
+import org.netxms.ui.eclipse.jobs.ConsoleJob;
+import org.netxms.ui.eclipse.objectbrowser.widgets.ObjectSelector;
+import org.netxms.ui.eclipse.objectmanager.Activator;
+import org.netxms.ui.eclipse.objectmanager.Messages;
+import org.netxms.ui.eclipse.shared.ConsoleSharedData;
+
+/**
+ * "ICMP" property page for node
+ */
+public class ICMP extends PropertyPage
+{
+   private AbstractNode node;
+   private ObjectSelector icmpProxy;
+
+   /* (non-Javadoc)
+    * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
+    */
+   @Override
+   protected Control createContents(Composite parent)
+   {
+      node = (AbstractNode)getElement().getAdapter(AbstractNode.class);
+
+      Composite dialogArea = new Composite(parent, SWT.NONE);
+      GridLayout dialogLayout = new GridLayout();
+      dialogLayout.marginWidth = 0;
+      dialogLayout.marginHeight = 0;
+      dialogArea.setLayout(dialogLayout);
+      
+      icmpProxy = new ObjectSelector(dialogArea, SWT.NONE, true);
+      icmpProxy.setLabel(Messages.get().Communication_Proxy);
+      icmpProxy.setObjectId(node.getIcmpProxyId());
+      icmpProxy.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+      
+      return dialogArea;
+   }
+
+   /**
+    * Apply changes
+    * 
+    * @param isApply true if update operation caused by "Apply" button
+    */
+   protected boolean applyChanges(final boolean isApply)
+   {
+      final NXCObjectModificationData md = new NXCObjectModificationData(node.getObjectId());
+      
+      if (isApply)
+         setValid(false);
+      
+      md.setIcmpProxy(icmpProxy.getObjectId());
+
+      final NXCSession session = (NXCSession)ConsoleSharedData.getSession();
+      new ConsoleJob(String.format("Updating ICMP settings for node %s", node.getObjectName()), null, Activator.PLUGIN_ID, null) {
+         @Override
+         protected void runInternal(IProgressMonitor monitor) throws Exception
+         {
+            session.modifyObject(md);
+         }
+
+         @Override
+         protected String getErrorMessage()
+         {
+            return String.format("Cannot update ICMP settings for node %s", node.getObjectName());
+         }
+
+         @Override
+         protected void jobFinalize()
+         {
+            if (isApply)
+            {
+               runInUIThread(new Runnable() {
+                  @Override
+                  public void run()
+                  {
+                     ICMP.this.setValid(true);
+                  }
+               });
+            }
+         }
+      }.start();
+      return true;
+   }
+
+   /* (non-Javadoc)
+    * @see org.eclipse.jface.preference.PreferencePage#performOk()
+    */
+   @Override
+   public boolean performOk()
+   {
+      return applyChanges(false);
+   }
+
+   /* (non-Javadoc)
+    * @see org.eclipse.jface.preference.PreferencePage#performApply()
+    */
+   @Override
+   protected void performApply()
+   {
+      applyChanges(true);
+   }
+
+   /* (non-Javadoc)
+    * @see org.eclipse.jface.preference.PreferencePage#performDefaults()
+    */
+   @Override
+   protected void performDefaults()
+   {
+      super.performDefaults();
+      icmpProxy.setObjectId(0);
+   }
+}
diff --git a/src/java/netxms-eclipse/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/propertypages/SNMP.java b/src/java/netxms-eclipse/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/propertypages/SNMP.java
new file mode 100644 (file)
index 0000000..bdddbdc
--- /dev/null
@@ -0,0 +1,307 @@
+/**
+ * NetXMS - open source network management system
+ * Copyright (C) 2003-2016 Victor Kirhenshtein
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+package org.netxms.ui.eclipse.objectmanager.propertypages;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.ui.dialogs.PropertyPage;
+import org.netxms.client.NXCObjectModificationData;
+import org.netxms.client.NXCSession;
+import org.netxms.client.objects.AbstractNode;
+import org.netxms.ui.eclipse.jobs.ConsoleJob;
+import org.netxms.ui.eclipse.objectbrowser.widgets.ObjectSelector;
+import org.netxms.ui.eclipse.objectmanager.Activator;
+import org.netxms.ui.eclipse.objectmanager.Messages;
+import org.netxms.ui.eclipse.shared.ConsoleSharedData;
+import org.netxms.ui.eclipse.tools.WidgetHelper;
+import org.netxms.ui.eclipse.widgets.LabeledText;
+
+/**
+ * "SNMP" property page for node
+ */
+public class SNMP extends PropertyPage
+{
+   private AbstractNode node;
+   private Combo snmpVersion;
+   private LabeledText snmpPort;
+   private Combo snmpAuth;
+   private Combo snmpPriv;
+   private ObjectSelector snmpProxy;
+   private LabeledText snmpAuthName;
+   private LabeledText snmpAuthPassword;
+   private LabeledText snmpPrivPassword;
+
+   /* (non-Javadoc)
+    * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
+    */
+   @Override
+   protected Control createContents(Composite parent)
+   {
+      node = (AbstractNode)getElement().getAdapter(AbstractNode.class);
+
+      Composite dialogArea = new Composite(parent, SWT.NONE);
+      FormLayout dialogLayout = new FormLayout();
+      dialogLayout.marginWidth = 0;
+      dialogLayout.marginHeight = 0;
+      dialogLayout.spacing = WidgetHelper.DIALOG_SPACING;
+      dialogArea.setLayout(dialogLayout);
+
+      FormData fd = new FormData();
+      fd.left = new FormAttachment(0, 0);
+      fd.top = new FormAttachment(0, 0);
+      snmpVersion = WidgetHelper.createLabeledCombo(dialogArea, SWT.BORDER | SWT.READ_ONLY, Messages.get().Communication_Version, fd);
+      snmpVersion.add("1"); //$NON-NLS-1$
+      snmpVersion.add("2c"); //$NON-NLS-1$
+      snmpVersion.add("3"); //$NON-NLS-1$
+      snmpVersion.select(snmpVersionToIndex(node.getSnmpVersion()));
+      snmpVersion.addSelectionListener(new SelectionListener() {
+         @Override
+         public void widgetDefaultSelected(SelectionEvent e)
+         {
+            widgetSelected(e);
+         }
+
+         @Override
+         public void widgetSelected(SelectionEvent e)
+         {
+            onSnmpVersionChange();
+         }
+      });
+      
+      snmpPort = new LabeledText(dialogArea, SWT.NONE);
+      snmpPort.setLabel(Messages.get().Communication_UDPPort);
+      snmpPort.setText(Integer.toString(node.getSnmpPort()));
+      
+      fd = new FormData();
+      fd.left = new FormAttachment(0, 0);
+      fd.top = new FormAttachment(snmpVersion.getParent(), 0, SWT.BOTTOM);
+      snmpAuth = WidgetHelper.createLabeledCombo(dialogArea, SWT.BORDER | SWT.READ_ONLY, Messages.get().Communication_Authentication, fd);
+      snmpAuth.add(Messages.get().Communication_AuthNone);
+      snmpAuth.add(Messages.get().Communication_AuthMD5);
+      snmpAuth.add(Messages.get().Communication_AuthSHA1);
+      snmpAuth.select(node.getSnmpAuthMethod());
+      snmpAuth.setEnabled(node.getSnmpVersion() == AbstractNode.SNMP_VERSION_3);
+      
+      fd = new FormData();
+      fd.left = new FormAttachment(snmpAuth.getParent(), 0, SWT.RIGHT);
+      fd.top = new FormAttachment(snmpVersion.getParent(), 0, SWT.BOTTOM);
+      snmpPriv = WidgetHelper.createLabeledCombo(dialogArea, SWT.BORDER | SWT.READ_ONLY, Messages.get().Communication_Encryption, fd);
+      snmpPriv.add(Messages.get().Communication_EncNone);
+      snmpPriv.add(Messages.get().Communication_EncDES);
+      snmpPriv.add(Messages.get().Communication_EncAES);
+      snmpPriv.select(node.getSnmpPrivMethod());
+      snmpPriv.setEnabled(node.getSnmpVersion() == AbstractNode.SNMP_VERSION_3);
+      
+      snmpProxy = new ObjectSelector(dialogArea, SWT.NONE, true);
+      snmpProxy.setLabel(Messages.get().Communication_Proxy);
+      snmpProxy.setObjectId(node.getSnmpProxyId());
+      fd = new FormData();
+      fd.left = new FormAttachment(0, 0);
+      fd.top = new FormAttachment(snmpAuth.getParent(), 0, SWT.BOTTOM);
+      fd.right = new FormAttachment(snmpPriv.getParent(), 0, SWT.RIGHT);
+      snmpProxy.setLayoutData(fd);
+      
+      snmpAuthName = new LabeledText(dialogArea, SWT.NONE);
+      snmpAuthName.setLabel(node.getSnmpVersion() == AbstractNode.SNMP_VERSION_3 ? Messages.get().Communication_UserName : Messages.get().Communication_Community);
+      snmpAuthName.setText(node.getSnmpAuthName());
+      fd = new FormData();
+      fd.left = new FormAttachment(snmpProxy, 0, SWT.RIGHT);
+      fd.top = new FormAttachment(0, 0);
+      fd.right = new FormAttachment(100, 0);
+      snmpAuthName.setLayoutData(fd);
+      
+      snmpAuthPassword = new LabeledText(dialogArea, SWT.NONE);
+      snmpAuthPassword.setLabel(Messages.get().Communication_AuthPassword);
+      snmpAuthPassword.setText(node.getSnmpAuthPassword());
+      fd = new FormData();
+      fd.left = new FormAttachment(snmpAuthName, 0, SWT.LEFT);
+      fd.top = new FormAttachment(snmpAuth.getParent(), 0, SWT.TOP);
+      fd.right = new FormAttachment(100, 0);
+      snmpAuthPassword.setLayoutData(fd);
+      snmpAuthPassword.getTextControl().setEnabled(node.getSnmpVersion() == AbstractNode.SNMP_VERSION_3);
+      
+      snmpPrivPassword = new LabeledText(dialogArea, SWT.NONE);
+      snmpPrivPassword.setLabel(Messages.get().Communication_EncPassword);
+      snmpPrivPassword.setText(node.getSnmpPrivPassword());
+      fd = new FormData();
+      fd.left = new FormAttachment(snmpAuthName, 0, SWT.LEFT);
+      fd.top = new FormAttachment(snmpProxy, 0, SWT.TOP);
+      fd.right = new FormAttachment(100, 0);
+      snmpPrivPassword.setLayoutData(fd);
+      snmpPrivPassword.getTextControl().setEnabled(node.getSnmpVersion() == AbstractNode.SNMP_VERSION_3);
+
+      fd = new FormData();
+      fd.left = new FormAttachment(snmpVersion.getParent(), 0, SWT.RIGHT);
+      fd.right = new FormAttachment(snmpAuthName, 0, SWT.LEFT);
+      fd.top = new FormAttachment(0, 0);
+      snmpPort.setLayoutData(fd);
+      
+      return dialogArea;
+   }
+
+   /**
+    * Convert SNMP version to index in combo box
+    * 
+    * @param version SNMP version
+    * @return index in combo box
+    */
+   private int snmpVersionToIndex(int version)
+   {
+      switch(version)
+      {
+         case AbstractNode.SNMP_VERSION_1:
+            return 0;
+         case AbstractNode.SNMP_VERSION_2C:
+            return 1;
+         case AbstractNode.SNMP_VERSION_3:
+            return 2;
+      }
+      return 0;
+   }
+   
+   /**
+    * Convert selection index in SNMP version combo box to SNMP version
+    */
+   private int snmpIndexToVersion(int index)
+   {
+      final int[] versions = { AbstractNode.SNMP_VERSION_1, AbstractNode.SNMP_VERSION_2C, AbstractNode.SNMP_VERSION_3 };
+      return versions[index];
+   }
+   
+   /**
+    * Handler for SNMP version change
+    */
+   private void onSnmpVersionChange()
+   {
+      boolean isV3 = (snmpVersion.getSelectionIndex() == 2);
+      snmpAuthName.setLabel(isV3 ? Messages.get().Communication_UserName : Messages.get().Communication_Community);
+      snmpAuth.setEnabled(isV3);
+      snmpPriv.setEnabled(isV3);
+      snmpAuthPassword.getTextControl().setEnabled(isV3);
+      snmpPrivPassword.getTextControl().setEnabled(isV3);
+   }
+
+   /**
+    * Apply changes
+    * 
+    * @param isApply true if update operation caused by "Apply" button
+    */
+   protected boolean applyChanges(final boolean isApply)
+   {
+      final NXCObjectModificationData md = new NXCObjectModificationData(node.getObjectId());
+      
+      if (isApply)
+         setValid(false);
+      
+      md.setSnmpVersion(snmpIndexToVersion(snmpVersion.getSelectionIndex()));
+      try
+      {
+         md.setSnmpPort(Integer.parseInt(snmpPort.getText(), 10));
+      }
+      catch(NumberFormatException e)
+      {
+         MessageDialog.openWarning(getShell(), Messages.get().Communication_Warning, Messages.get().Communication_WarningInvalidSNMPPort);
+         if (isApply)
+            setValid(true);
+         return false;
+      }
+      md.setSnmpProxy(snmpProxy.getObjectId());
+      md.setSnmpAuthMethod(snmpAuth.getSelectionIndex());
+      md.setSnmpPrivMethod(snmpPriv.getSelectionIndex());
+      md.setSnmpAuthName(snmpAuthName.getText());
+      md.setSnmpAuthPassword(snmpAuthPassword.getText());
+      md.setSnmpPrivPassword(snmpPrivPassword.getText());
+      
+      final NXCSession session = (NXCSession)ConsoleSharedData.getSession();
+      new ConsoleJob(String.format("Updating SNMP settings for node %s", node.getObjectName()), null, Activator.PLUGIN_ID, null) {
+         @Override
+         protected void runInternal(IProgressMonitor monitor) throws Exception
+         {
+            session.modifyObject(md);
+         }
+
+         @Override
+         protected String getErrorMessage()
+         {
+            return String.format("Cannot update SNMP settings for node %s", node.getObjectName());
+         }
+
+         @Override
+         protected void jobFinalize()
+         {
+            if (isApply)
+            {
+               runInUIThread(new Runnable() {
+                  @Override
+                  public void run()
+                  {
+                     SNMP.this.setValid(true);
+                  }
+               });
+            }
+         }
+      }.start();
+      return true;
+   }
+
+   /* (non-Javadoc)
+    * @see org.eclipse.jface.preference.PreferencePage#performOk()
+    */
+   @Override
+   public boolean performOk()
+   {
+      return applyChanges(false);
+   }
+
+   /* (non-Javadoc)
+    * @see org.eclipse.jface.preference.PreferencePage#performApply()
+    */
+   @Override
+   protected void performApply()
+   {
+      applyChanges(true);
+   }
+
+   /* (non-Javadoc)
+    * @see org.eclipse.jface.preference.PreferencePage#performDefaults()
+    */
+   @Override
+   protected void performDefaults()
+   {
+      super.performDefaults();
+      
+      snmpVersion.select(0);
+      snmpAuth.select(0);
+      snmpPriv.select(0);
+      snmpAuthName.setText("public"); //$NON-NLS-1$
+      snmpAuthPassword.setText(""); //$NON-NLS-1$
+      snmpPrivPassword.setText(""); //$NON-NLS-1$
+      snmpProxy.setObjectId(0);
+      onSnmpVersionChange();
+   }
+}
diff --git a/src/java/netxms-eclipse/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/propertypages/SSH.java b/src/java/netxms-eclipse/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/propertypages/SSH.java
new file mode 100644 (file)
index 0000000..390eb58
--- /dev/null
@@ -0,0 +1,160 @@
+/**
+ * NetXMS - open source network management system
+ * Copyright (C) 2003-2016 Victor Kirhenshtein
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+package org.netxms.ui.eclipse.objectmanager.propertypages;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.ui.dialogs.PropertyPage;
+import org.netxms.client.NXCObjectModificationData;
+import org.netxms.client.NXCSession;
+import org.netxms.client.objects.AbstractNode;
+import org.netxms.ui.eclipse.jobs.ConsoleJob;
+import org.netxms.ui.eclipse.objectbrowser.widgets.ObjectSelector;
+import org.netxms.ui.eclipse.objectmanager.Activator;
+import org.netxms.ui.eclipse.objectmanager.Messages;
+import org.netxms.ui.eclipse.shared.ConsoleSharedData;
+import org.netxms.ui.eclipse.widgets.LabeledText;
+
+/**
+ * "SSH" property page for node
+ */
+public class SSH extends PropertyPage
+{
+   private AbstractNode node;
+   private ObjectSelector sshProxy;
+   private LabeledText sshLogin;
+   private LabeledText sshPassword;
+
+   /* (non-Javadoc)
+    * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
+    */
+   @Override
+   protected Control createContents(Composite parent)
+   {
+      node = (AbstractNode)getElement().getAdapter(AbstractNode.class);
+
+      Composite dialogArea = new Composite(parent, SWT.NONE);
+      GridLayout dialogLayout = new GridLayout();
+      dialogLayout.marginWidth = 0;
+      dialogLayout.marginHeight = 0;
+      dialogLayout.numColumns = 2;
+      dialogLayout.makeColumnsEqualWidth = true;
+      dialogArea.setLayout(dialogLayout);
+      
+      sshLogin = new LabeledText(dialogArea, SWT.NONE);
+      sshLogin.setLabel("Login");
+      sshLogin.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+      sshLogin.setText(node.getSshLogin());
+      
+      sshPassword = new LabeledText(dialogArea, SWT.NONE);
+      sshPassword.setLabel("Password");
+      sshPassword.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+      sshPassword.setText(node.getSshPassword());
+      
+      sshProxy = new ObjectSelector(dialogArea, SWT.NONE, true);
+      sshProxy.setLabel(Messages.get().Communication_Proxy);
+      sshProxy.setEmptySelectionName("<default>");
+      sshProxy.setObjectId(node.getSshProxyId());
+      sshProxy.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
+      
+      return dialogArea;
+   }
+
+   /**
+    * Apply changes
+    * 
+    * @param isApply true if update operation caused by "Apply" button
+    */
+   protected boolean applyChanges(final boolean isApply)
+   {
+      final NXCObjectModificationData md = new NXCObjectModificationData(node.getObjectId());
+      
+      if (isApply)
+         setValid(false);
+      
+      md.setSshProxy(sshProxy.getObjectId());
+      md.setSshLogin(sshLogin.getText().trim());
+      md.setSshPassword(sshPassword.getText());
+
+      final NXCSession session = (NXCSession)ConsoleSharedData.getSession();
+      new ConsoleJob(String.format("Updating SSH settings for node %s", node.getObjectName()), null, Activator.PLUGIN_ID, null) {
+         @Override
+         protected void runInternal(IProgressMonitor monitor) throws Exception
+         {
+            session.modifyObject(md);
+         }
+
+         @Override
+         protected String getErrorMessage()
+         {
+            return String.format("Cannot update SSH settings for node %s", node.getObjectName());
+         }
+
+         @Override
+         protected void jobFinalize()
+         {
+            if (isApply)
+            {
+               runInUIThread(new Runnable() {
+                  @Override
+                  public void run()
+                  {
+                     SSH.this.setValid(true);
+                  }
+               });
+            }
+         }
+      }.start();
+      return true;
+   }
+
+   /* (non-Javadoc)
+    * @see org.eclipse.jface.preference.PreferencePage#performOk()
+    */
+   @Override
+   public boolean performOk()
+   {
+      return applyChanges(false);
+   }
+
+   /* (non-Javadoc)
+    * @see org.eclipse.jface.preference.PreferencePage#performApply()
+    */
+   @Override
+   protected void performApply()
+   {
+      applyChanges(true);
+   }
+
+   /* (non-Javadoc)
+    * @see org.eclipse.jface.preference.PreferencePage#performDefaults()
+    */
+   @Override
+   protected void performDefaults()
+   {
+      super.performDefaults();
+      sshProxy.setObjectId(0);
+      sshLogin.setText("netxms");
+      sshPassword.setText("");
+   }
+}
index 0dd0a5f..a99d508 100644 (file)
@@ -43,6 +43,7 @@ public class ZoneCommunications extends PropertyPage
        private ObjectSelector agentProxy;
        private ObjectSelector snmpProxy;
        private ObjectSelector icmpProxy;
+   private ObjectSelector sshProxy;
        
        /* (non-Javadoc)
         * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
@@ -82,6 +83,14 @@ public class ZoneCommunications extends PropertyPage
                gd.grabExcessHorizontalSpace = true;
                icmpProxy.setLayoutData(gd);
                
+      sshProxy = new ObjectSelector(dialogArea, SWT.NONE, true);
+      sshProxy.setLabel(Messages.get().ZoneCommunications_DefaultSSHProxy);
+      sshProxy.setObjectId(zone.getSshProxy());
+      gd = new GridData();
+      gd.horizontalAlignment = SWT.FILL;
+      gd.grabExcessHorizontalSpace = true;
+      sshProxy.setLayoutData(gd);
+      
                return dialogArea;
        }
 
@@ -99,6 +108,7 @@ public class ZoneCommunications extends PropertyPage
                md.setAgentProxy(agentProxy.getObjectId());
                md.setSnmpProxy(snmpProxy.getObjectId());
                md.setIcmpProxy(icmpProxy.getObjectId());
+      md.setSshProxy(sshProxy.getObjectId());
                
                final NXCSession session = (NXCSession)ConsoleSharedData.getSession();
                new ConsoleJob(String.format(Messages.get().ZoneCommunications_JobName, zone.getObjectName()), null, Activator.PLUGIN_ID, null) {
index 8043e1d..ed1bbf1 100644 (file)
@@ -101,6 +101,46 @@ static void *GetItemData(DataCollectionTarget *dcTarget, DCItem *pItem, TCHAR *p
                                   *error = DCE_NOT_SUPPORTED;
                           }
             break;
+         case DS_SSH:
+            if (dcTarget->getObjectClass() == OBJECT_NODE)
+            {
+               UINT32 proxyId = ((Node *)dcTarget)->getSshProxy();
+               if (proxyId == 0)
+               {
+                  if (IsZoningEnabled())
+                  {
+                     Zone *zone = (Zone *)FindZoneByGUID(((Node *)dcTarget)->getZoneId());
+                     if ((zone != NULL) && (zone->getSshProxy() != 0))
+                        proxyId = zone->getSshProxy();
+                     else
+                        proxyId = g_dwMgmtNode;
+                  }
+                  else
+                  {
+                     proxyId = g_dwMgmtNode;
+                  }
+               }
+               Node *proxy = (Node *)FindObjectById(proxyId, OBJECT_NODE);
+               if (proxy != NULL)
+               {
+                  TCHAR name[MAX_PARAM_NAME], ipAddr[64];
+                  _sntprintf(name, MAX_PARAM_NAME, _T("SSH.Command(%s,\"%s\",\"%s\",\"%s\")"),
+                             ((Node *)dcTarget)->getIpAddress().toString(ipAddr),
+                             (const TCHAR *)EscapeStringForAgent(((Node *)dcTarget)->getSshLogin()),
+                             (const TCHAR *)EscapeStringForAgent(((Node *)dcTarget)->getSshPassword()),
+                             (const TCHAR *)EscapeStringForAgent(pItem->getName()));
+                  *error = proxy->getItemFromAgent(name, MAX_LINE_SIZE, pBuffer);
+               }
+               else
+               {
+                  *error = DCE_COMM_ERROR;
+               }
+            }
+            else
+            {
+               *error = DCE_NOT_SUPPORTED;
+            }
+            break;
          case DS_SMCLP:
             if (dcTarget->getObjectClass() == OBJECT_NODE)
             {
index 93dbc13..71d1af3 100644 (file)
@@ -116,6 +116,9 @@ Node::Node() : DataCollectionTarget()
        m_chassisId = 0;
        m_syslogMessageCount = 0;
        m_snmpTrapCount = 0;
+       m_sshLogin[0] = 0;
+       m_sshPassword[0] = 0;
+       m_sshProxy = 0;
 }
 
 /**
@@ -210,6 +213,9 @@ Node::Node(const InetAddress& addr, UINT32 dwFlags, UINT32 agentProxy, UINT32 sn
    m_chassisId = 0;
    m_syslogMessageCount = 0;
    m_snmpTrapCount = 0;
+   m_sshLogin[0] = 0;
+   m_sshPassword[0] = 0;
+   m_sshProxy = 0;
 }
 
 /**
@@ -284,7 +290,7 @@ bool Node::loadFromDatabase(DB_HANDLE hdb, UINT32 dwId)
       _T("agent_cache_mode,snmp_sys_contact,snmp_sys_location,")
       _T("rack_id,rack_image,rack_position,rack_height,")
       _T("last_agent_comm_time,syslog_msg_count,snmp_trap_count,")
-      _T("node_type,node_subtype FROM nodes WHERE id=?"));
+      _T("node_type,node_subtype,ssh_login,ssh_password,ssh_proxy FROM nodes WHERE id=?"));
        if (hStmt == NULL)
                return false;
 
@@ -371,6 +377,9 @@ bool Node::loadFromDatabase(DB_HANDLE hdb, UINT32 dwId)
    m_snmpTrapCount = DBGetFieldInt64(hResult, 0, 39);
    m_type = (NodeType)DBGetFieldLong(hResult, 0, 40);
    DBGetField(hResult, 0, 41, m_subType, MAX_NODE_SUBTYPE_LENGTH);
+   DBGetField(hResult, 0, 42, m_sshLogin, MAX_OBJECT_NAME);
+   DBGetField(hResult, 0, 43, m_sshPassword, MAX_PASSWORD);
+   m_sshProxy = DBGetFieldULong(hResult, 0, 44);
 
    DBFreeResult(hResult);
        DBFreeStatement(hStmt);
@@ -467,7 +476,7 @@ BOOL Node::saveToDatabase(DB_HANDLE hdb)
                        _T("use_ifxtable=?,usm_auth_password=?,usm_priv_password=?,usm_methods=?,snmp_sys_name=?,bridge_base_addr=?,")
                        _T("runtime_flags=?,down_since=?,driver_name=?,rack_image=?,rack_position=?,rack_height=?,rack_id=?,boot_time=?,")
          _T("agent_cache_mode=?,snmp_sys_contact=?,snmp_sys_location=?,last_agent_comm_time=?,")
-         _T("syslog_msg_count=?,snmp_trap_count=?,node_type=?,node_subtype=? WHERE id=?"));
+         _T("syslog_msg_count=?,snmp_trap_count=?,node_type=?,node_subtype=?,ssh_login=?,ssh_password=?,ssh_proxy=? WHERE id=?"));
        }
    else
        {
@@ -477,8 +486,8 @@ BOOL Node::saveToDatabase(DB_HANDLE hdb)
                  _T("proxy_node,snmp_proxy,icmp_proxy,required_polls,use_ifxtable,usm_auth_password,usm_priv_password,usm_methods,")
                  _T("snmp_sys_name,bridge_base_addr,runtime_flags,down_since,driver_name,rack_image,rack_position,rack_height,rack_id,boot_time,")
         _T("agent_cache_mode,snmp_sys_contact,snmp_sys_location,last_agent_comm_time,syslog_msg_count,snmp_trap_count,")
-        _T("node_type,node_subtype,id) ")
-                 _T("VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"));
+        _T("node_type,node_subtype,,ssh_login,ssh_password,ssh_proxy,id) ")
+                 _T("VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"));
        }
        if (hStmt == NULL)
        {
@@ -539,7 +548,10 @@ BOOL Node::saveToDatabase(DB_HANDLE hdb)
    DBBind(hStmt, 40, DB_SQLTYPE_BIGINT, m_snmpTrapCount);
    DBBind(hStmt, 41, DB_SQLTYPE_INTEGER, (INT32)m_type);
    DBBind(hStmt, 42, DB_SQLTYPE_VARCHAR, m_subType, DB_BIND_STATIC);
-       DBBind(hStmt, 43, DB_SQLTYPE_INTEGER, m_id);
+   DBBind(hStmt, 43, DB_SQLTYPE_VARCHAR, m_sshLogin, DB_BIND_STATIC);
+   DBBind(hStmt, 44, DB_SQLTYPE_VARCHAR, m_sshPassword, DB_BIND_STATIC);
+   DBBind(hStmt, 45, DB_SQLTYPE_INTEGER, m_sshProxy);
+       DBBind(hStmt, 46, DB_SQLTYPE_INTEGER, m_id);
 
        BOOL bResult = DBExecute(hStmt);
        DBFreeStatement(hStmt);
@@ -4732,6 +4744,9 @@ void Node::fillMessageInternal(NXCPMessage *pMsg)
    pMsg->setField(VID_RACK_IMAGE, m_rackImage);
    pMsg->setField(VID_RACK_POSITION, m_rackPosition);
    pMsg->setField(VID_RACK_HEIGHT, m_rackHeight);
+   pMsg->setField(VID_SSH_PROXY, m_sshProxy);
+   pMsg->setField(VID_SSH_LOGIN, m_sshLogin);
+   pMsg->setField(VID_SSH_PASSWORD, m_sshPassword);
 }
 
 /**
@@ -4980,6 +4995,15 @@ UINT32 Node::modifyFromMessageInternal(NXCPMessage *pRequest)
       updatePhysicalContainerBinding(OBJECT_CHASSIS, m_chassisId);
    }
 
+   if (pRequest->isFieldExist(VID_SSH_PROXY))
+      m_sshProxy = pRequest->getFieldAsUInt32(VID_SSH_PROXY);
+
+   if (pRequest->isFieldExist(VID_SSH_LOGIN))
+      pRequest->getFieldAsString(VID_SSH_LOGIN, m_sshLogin, MAX_SSH_LOGIN_LEN);
+
+   if (pRequest->isFieldExist(VID_SSH_PASSWORD))
+      pRequest->getFieldAsString(VID_SSH_PASSWORD, m_sshPassword, MAX_SSH_PASSWORD_LEN);
+
    return DataCollectionTarget::modifyFromMessageInternal(pRequest);
 }
 
index f5c709e..47c927d 100644 (file)
@@ -33,6 +33,7 @@ Zone::Zone() : NetObj()
    m_agentProxy = 0;
    m_snmpProxy = 0;
        m_icmpProxy = 0;
+   m_sshProxy = 0;
        m_idxNodeByAddr = new InetAddressIndex;
        m_idxInterfaceByAddr = new InetAddressIndex;
        m_idxSubnetByAddr = new InetAddressIndex;
@@ -49,6 +50,7 @@ Zone::Zone(UINT32 zoneId, const TCHAR *name) : NetObj()
    m_agentProxy = 0;
    m_snmpProxy = 0;
        m_icmpProxy = 0;
+   m_sshProxy = 0;
        m_idxNodeByAddr = new InetAddressIndex;
        m_idxInterfaceByAddr = new InetAddressIndex;
        m_idxSubnetByAddr = new InetAddressIndex;
@@ -75,7 +77,7 @@ bool Zone::loadFromDatabase(DB_HANDLE hdb, UINT32 dwId)
       return false;
 
    TCHAR szQuery[256];
-   _sntprintf(szQuery, 256, _T("SELECT zone_guid,agent_proxy,snmp_proxy,icmp_proxy FROM zones WHERE id=%d"), dwId);
+   _sntprintf(szQuery, 256, _T("SELECT zone_guid,agent_proxy,snmp_proxy,icmp_proxy,ssh_proxy FROM zones WHERE id=%d"), dwId);
    DB_RESULT hResult = DBSelect(hdb, szQuery);
    if (hResult == NULL)
       return false;     // Query failed
@@ -99,6 +101,7 @@ bool Zone::loadFromDatabase(DB_HANDLE hdb, UINT32 dwId)
    m_agentProxy = DBGetFieldULong(hResult, 0, 1);
    m_snmpProxy = DBGetFieldULong(hResult, 0, 2);
    m_icmpProxy = DBGetFieldULong(hResult, 0, 3);
+   m_sshProxy = DBGetFieldULong(hResult, 0, 4);
 
    DBFreeResult(hResult);
 
@@ -113,41 +116,43 @@ bool Zone::loadFromDatabase(DB_HANDLE hdb, UINT32 dwId)
  */
 BOOL Zone::saveToDatabase(DB_HANDLE hdb)
 {
-   BOOL bNewObject = TRUE;
-   TCHAR szQuery[8192];
-   DB_RESULT hResult;
-
    lockProperties();
 
-   saveCommonProperties(hdb);
-
-   // Check for object's existence in database
-   _sntprintf(szQuery, 8192, _T("SELECT id FROM zones WHERE id=%d"), m_id);
-   hResult = DBSelect(hdb, szQuery);
-   if (hResult != 0)
+   bool success = saveCommonProperties(hdb);
+   if (success)
    {
-      if (DBGetNumRows(hResult) > 0)
-         bNewObject = FALSE;
-      DBFreeResult(hResult);
-   }
-
-   // Form and execute INSERT or UPDATE query
-   if (bNewObject)
-      _sntprintf(szQuery, 8192, _T("INSERT INTO zones (id,zone_guid,agent_proxy,snmp_proxy,icmp_proxy)")
-                          _T(" VALUES (%d,%d,%d,%d,%d)"),
-                 m_id, m_zoneId, m_agentProxy, m_snmpProxy, m_icmpProxy);
-   else
-      _sntprintf(szQuery, 8192, _T("UPDATE zones SET zone_guid=%d,agent_proxy=%d,")
-                                _T("snmp_proxy=%d,icmp_proxy=%d WHERE id=%d"),
-                 m_zoneId, m_agentProxy, m_snmpProxy, m_icmpProxy, m_id);
-   DBQuery(hdb, szQuery);
-
-   saveACLToDB(hdb);
+      DB_STATEMENT hStmt;
+      if (IsDatabaseRecordExist(hdb, _T("zones"), _T("id"), m_id))
+      {
+         hStmt = DBPrepare(hdb, _T("UPDATE zones SET zone_guid=?,agent_proxy=?,snmp_proxy=?,icmp_proxy=?,ssh_proxy=? WHERE id=?"));
+      }
+      else
+      {
+         hStmt = DBPrepare(hdb, _T("INSERT INTO zones (zone_guid,agent_proxy,snmp_proxy,icmp_proxy,ssh_proxy,id) VALUES (?,?,?,?,?,?)"));
+      }
+      if (hStmt != NULL)
+      {
+         DBBind(hStmt, 1, DB_SQLTYPE_INTEGER, m_zoneId);
+         DBBind(hStmt, 2, DB_SQLTYPE_INTEGER, m_agentProxy);
+         DBBind(hStmt, 3, DB_SQLTYPE_INTEGER, m_snmpProxy);
+         DBBind(hStmt, 4, DB_SQLTYPE_INTEGER, m_icmpProxy);
+         DBBind(hStmt, 5, DB_SQLTYPE_INTEGER, m_sshProxy);
+         DBBind(hStmt, 6, DB_SQLTYPE_INTEGER, m_id);
+         success = DBExecute(hStmt);
+         DBFreeStatement(hStmt);
+      }
+      else
+      {
+         success = false;
+      }
 
+      if (success)
+         success = saveACLToDB(hdb);
+   }
    // Unlock object and clear modification flag
    m_isModified = false;
    unlockProperties();
-   return TRUE;
+   return success;
 }
 
 /**
@@ -164,30 +169,34 @@ bool Zone::deleteFromDatabase(DB_HANDLE hdb)
 /**
  * Create NXCP message with object's data
  */
-void Zone::fillMessageInternal(NXCPMessage *pMsg)
+void Zone::fillMessageInternal(NXCPMessage *msg)
 {
-   NetObj::fillMessageInternal(pMsg);
-   pMsg->setField(VID_ZONE_ID, m_zoneId);
-   pMsg->setField(VID_AGENT_PROXY, m_agentProxy);
-   pMsg->setField(VID_SNMP_PROXY, m_snmpProxy);
-   pMsg->setField(VID_ICMP_PROXY, m_icmpProxy);
+   NetObj::fillMessageInternal(msg);
+   msg->setField(VID_ZONE_ID, m_zoneId);
+   msg->setField(VID_AGENT_PROXY, m_agentProxy);
+   msg->setField(VID_SNMP_PROXY, m_snmpProxy);
+   msg->setField(VID_ICMP_PROXY, m_icmpProxy);
+   msg->setField(VID_SSH_PROXY, m_sshProxy);
 }
 
 /**
  * Modify object from message
  */
-UINT32 Zone::modifyFromMessageInternal(NXCPMessage *pRequest)
+UINT32 Zone::modifyFromMessageInternal(NXCPMessage *request)
 {
-       if (pRequest->isFieldExist(VID_AGENT_PROXY))
-               m_agentProxy = pRequest->getFieldAsUInt32(VID_AGENT_PROXY);
+       if (request->isFieldExist(VID_AGENT_PROXY))
+               m_agentProxy = request->getFieldAsUInt32(VID_AGENT_PROXY);
+
+       if (request->isFieldExist(VID_SNMP_PROXY))
+               m_snmpProxy = request->getFieldAsUInt32(VID_SNMP_PROXY);
 
-       if (pRequest->isFieldExist(VID_SNMP_PROXY))
-               m_snmpProxy = pRequest->getFieldAsUInt32(VID_SNMP_PROXY);
+       if (request->isFieldExist(VID_ICMP_PROXY))
+               m_icmpProxy = request->getFieldAsUInt32(VID_ICMP_PROXY);
 
-       if (pRequest->isFieldExist(VID_ICMP_PROXY))
-               m_icmpProxy = pRequest->getFieldAsUInt32(VID_ICMP_PROXY);
+   if (request->isFieldExist(VID_SSH_PROXY))
+      m_sshProxy = request->getFieldAsUInt32(VID_SSH_PROXY);
 
-   return NetObj::modifyFromMessageInternal(pRequest);
+   return NetObj::modifyFromMessageInternal(request);
 }
 
 /**
index 56e082c..584df2a 100644 (file)
@@ -1373,6 +1373,9 @@ protected:
        UINT32 m_chassisId;
        INT64 m_syslogMessageCount;
        INT64 m_snmpTrapCount;
+       TCHAR m_sshLogin[MAX_SSH_LOGIN_LEN];
+       TCHAR m_sshPassword[MAX_SSH_PASSWORD_LEN];
+       UINT32 m_sshProxy;
 
    void pollerLock() { MutexLock(m_hPollerMutex); }
    void pollerUnlock() { MutexUnlock(m_hPollerMutex); }
@@ -1500,6 +1503,9 @@ public:
    INT16 getRackPosition() const { return m_rackPosition; }
        bool hasFileUpdateConnection() const { lockProperties(); bool result = (m_fileUpdateConn != NULL); unlockProperties(); return result; }
    UINT32 getIcmpProxy() const { return m_icmpProxy; }
+   const TCHAR *getSshLogin() const { return m_sshLogin; }
+   const TCHAR *getSshPassword() const { return m_sshPassword; }
+   UINT32 getSshProxy() const { return m_sshProxy; }
 
    bool isDown() { return (m_dwDynamicFlags & NDF_UNREACHABLE) ? true : false; }
        time_t getDownTime() const { return m_downSince; }
@@ -1965,12 +1971,13 @@ protected:
    UINT32 m_agentProxy;
    UINT32 m_snmpProxy;
        UINT32 m_icmpProxy;
+       UINT32 m_sshProxy;
        InetAddressIndex *m_idxNodeByAddr;
        InetAddressIndex *m_idxInterfaceByAddr;
        InetAddressIndex *m_idxSubnetByAddr;
 
-   virtual void fillMessageInternal(NXCPMessage *pMsg);
-   virtual UINT32 modifyFromMessageInternal(NXCPMessage *pRequest);
+   virtual void fillMessageInternal(NXCPMessage *msg);
+   virtual UINT32 modifyFromMessageInternal(NXCPMessage *request);
 
 public:
    Zone();
@@ -1987,10 +1994,11 @@ public:
 
    virtual NXSL_Value *createNXSLObject();
 
-   UINT32 getZoneId() { return m_zoneId; }
-       UINT32 getAgentProxy() { return m_agentProxy; }
-       UINT32 getSnmpProxy() { return m_snmpProxy; }
-       UINT32 getIcmpProxy() { return m_icmpProxy; }
+   UINT32 getZoneId() const { return m_zoneId; }
+       UINT32 getAgentProxy() const { return m_agentProxy; }
+       UINT32 getSnmpProxy() const { return m_snmpProxy; }
+       UINT32 getIcmpProxy() const { return m_icmpProxy; }
+   UINT32 getSshProxy() const { return m_sshProxy; }
 
    void addSubnet(Subnet *pSubnet) { addChild(pSubnet); pSubnet->addParent(this); }
 
index fd5e0d1..bb96f10 100644 (file)
@@ -329,9 +329,9 @@ static BOOL ConvertStrings(const TCHAR *table, const TCHAR *idColumn, const TCHA
 }
 
 /**
- * Set column nullable (currently only Oracle and PostgreSQL)
+ * Remove NOT NULL constraint from column
  */
-static BOOL SetColumnNullable(const TCHAR *table, const TCHAR *column)
+static bool RemoveNotNullConstraint(const TCHAR *table, const TCHAR *column)
 {
        TCHAR query[1024] = _T("");
 
@@ -350,7 +350,32 @@ static BOOL SetColumnNullable(const TCHAR *table, const TCHAR *column)
                        break;
        }
 
-       return (query[0] != 0) ? SQLQuery(query) : TRUE;
+       return (query[0] != 0) ? SQLQuery(query) : true;
+}
+
+/**
+ * Set NOT NULL constraint on column
+ */
+static bool SetNotNullConstraint(const TCHAR *table, const TCHAR *column)
+{
+   TCHAR query[1024] = _T("");
+
+   switch(g_dbSyntax)
+   {
+      case DB_SYNTAX_ORACLE:
+         _sntprintf(query, 1024, _T("DECLARE already_not_null EXCEPTION; ")
+                                 _T("PRAGMA EXCEPTION_INIT(already_not_null, -1442); ")
+                                 _T("BEGIN EXECUTE IMMEDIATE 'ALTER TABLE %s MODIFY %s NOT NULL'; ")
+                                 _T("EXCEPTION WHEN already_not_null THEN null; END;"), table, column);
+         break;
+      case DB_SYNTAX_PGSQL:
+         _sntprintf(query, 1024, _T("ALTER TABLE %s ALTER COLUMN %s SET NOT NULL"), table, column);
+         break;
+      default:
+         break;
+   }
+
+   return (query[0] != 0) ? SQLQuery(query) : true;
 }
 
 /**
@@ -683,6 +708,28 @@ static bool SetSchemaVersion(int version)
    return SQLQuery(query);
 }
 
+/**
+ * Upgrade from V409 to V410
+ */
+static BOOL H_UpgradeFromV409(int currVersion, int newVersion)
+{
+   static const TCHAR *batch =
+      _T("ALTER TABLE zones ADD ssh_proxy integer\n")
+      _T("UPDATE zones SET ssh_proxy=0\n")
+      _T("ALTER TABLE nodes ADD ssh_login varchar(63)\n")
+      _T("ALTER TABLE nodes ADD ssh_password varchar(63)\n")
+      _T("ALTER TABLE nodes ADD ssh_proxy integer\n")
+      _T("UPDATE nodes SET ssh_proxy=0\n")
+      _T("<END>");
+   CHK_EXEC(SQLBatch(batch));
+
+   CHK_EXEC(SetNotNullConstraint(_T("nodes"), _T("ssh_proxy")));
+   CHK_EXEC(SetNotNullConstraint(_T("zones"), _T("ssh_proxy")));
+
+   CHK_EXEC(SetSchemaVersion(410));
+   return TRUE;
+}
+
 /**
  * Upgrade from V408 to V409
  */
@@ -695,6 +742,8 @@ static BOOL H_UpgradeFromV408(int currVersion, int newVersion)
       _T("<END>");
    CHK_EXEC(SQLBatch(batch));
 
+   CHK_EXEC(SetNotNullConstraint(_T("nodes"), _T("node_type")));
+
    CHK_EXEC(SetSchemaVersion(409));
    return TRUE;
 }
@@ -722,6 +771,8 @@ static BOOL H_UpgradeFromV407(int currVersion, int newVersion)
       _T("<END>");
    CHK_EXEC(SQLBatch(batch));
 
+   CHK_EXEC(SetNotNullConstraint(_T("nodes"), _T("chassis_id")));
+
    CHK_EXEC(SetSchemaVersion(408));
    return TRUE;
 }
@@ -2644,7 +2695,7 @@ static BOOL H_UpgradeFromV334(int currVersion, int newVersion)
  */
 static BOOL H_UpgradeFromV333(int currVersion, int newVersion)
 {
-   CHK_EXEC(SetColumnNullable(_T("user_groups"), _T("description")));
+   CHK_EXEC(RemoveNotNullConstraint(_T("user_groups"), _T("description")));
    CHK_EXEC(SetSchemaVersion(334));
    return TRUE;
 }
@@ -3111,12 +3162,12 @@ static BOOL H_UpgradeFromV313(int currVersion, int newVersion)
  */
 static BOOL H_UpgradeFromV312(int currVersion, int newVersion)
 {
-   CHK_EXEC(SetColumnNullable(_T("object_tools"), _T("tool_name")));
-   CHK_EXEC(SetColumnNullable(_T("object_tools"), _T("tool_data")));
-   CHK_EXEC(SetColumnNullable(_T("object_tools"), _T("description")));
-   CHK_EXEC(SetColumnNullable(_T("object_tools"), _T("confirmation_text")));
-   CHK_EXEC(SetColumnNullable(_T("object_tools"), _T("matching_oid")));
-   CHK_EXEC(SetColumnNullable(_T("object_tools_table_columns"), _T("col_name")));
+   CHK_EXEC(RemoveNotNullConstraint(_T("object_tools"), _T("tool_name")));
+   CHK_EXEC(RemoveNotNullConstraint(_T("object_tools"), _T("tool_data")));
+   CHK_EXEC(RemoveNotNullConstraint(_T("object_tools"), _T("description")));
+   CHK_EXEC(RemoveNotNullConstraint(_T("object_tools"), _T("confirmation_text")));
+   CHK_EXEC(RemoveNotNullConstraint(_T("object_tools"), _T("matching_oid")));
+   CHK_EXEC(RemoveNotNullConstraint(_T("object_tools_table_columns"), _T("col_name")));
    CHK_EXEC(ConvertStrings(_T("object_tools"), _T("tool_id"), _T("tool_name")));
    CHK_EXEC(ConvertStrings(_T("object_tools"), _T("tool_id"), _T("tool_data")));
    CHK_EXEC(ConvertStrings(_T("object_tools"), _T("tool_id"), _T("description")));
@@ -3262,7 +3313,7 @@ static BOOL H_UpgradeFromV307(int currVersion, int newVersion)
  */
 static BOOL H_UpgradeFromV306(int currVersion, int newVersion)
 {
-       CHK_EXEC(SetColumnNullable(_T("config_clob"), _T("var_value")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("config_clob"), _T("var_value")));
        CHK_EXEC(ConvertStrings(_T("config_clob"), _T("var_name"), NULL, _T("var_value"), true));
    CHK_EXEC(SetSchemaVersion(307));
    return TRUE;
@@ -3373,11 +3424,11 @@ static BOOL H_UpgradeFromV299(int currVersion, int newVersion)
        CHK_EXEC(CreateConfigParam(_T("XMPPServer"), _T("localhost"), 1, 1));
        CHK_EXEC(CreateConfigParam(_T("XMPPPort"), _T("5222"), 1, 1));
 
-   SetColumnNullable(_T("users"), _T("full_name"));
-   SetColumnNullable(_T("users"), _T("description"));
-   SetColumnNullable(_T("users"), _T("cert_mapping_data"));
-   SetColumnNullable(_T("user_groups"), _T("description"));
-   SetColumnNullable(_T("userdb_custom_attributes"), _T("attr_value"));
+   RemoveNotNullConstraint(_T("users"), _T("full_name"));
+   RemoveNotNullConstraint(_T("users"), _T("description"));
+   RemoveNotNullConstraint(_T("users"), _T("cert_mapping_data"));
+   RemoveNotNullConstraint(_T("user_groups"), _T("description"));
+   RemoveNotNullConstraint(_T("userdb_custom_attributes"), _T("attr_value"));
 
    ConvertStrings(_T("users"), _T("id"), _T("full_name"));
    ConvertStrings(_T("users"), _T("id"), _T("description"));
@@ -3936,18 +3987,18 @@ static BOOL H_UpgradeFromV268(int currVersion, int newVersion)
        CHK_EXEC(ResizeColumn(_T("items"), _T("name"), 1024, true));
        CHK_EXEC(ResizeColumn(_T("dc_tables"), _T("name"), 1024, true));
 
-       CHK_EXEC(SetColumnNullable(_T("event_policy"), _T("alarm_key")));
-       CHK_EXEC(SetColumnNullable(_T("event_policy"), _T("alarm_message")));
-       CHK_EXEC(SetColumnNullable(_T("event_policy"), _T("comments")));
-       CHK_EXEC(SetColumnNullable(_T("event_policy"), _T("situation_instance")));
-       CHK_EXEC(SetColumnNullable(_T("event_policy"), _T("script")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("event_policy"), _T("alarm_key")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("event_policy"), _T("alarm_message")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("event_policy"), _T("comments")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("event_policy"), _T("situation_instance")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("event_policy"), _T("script")));
        CHK_EXEC(ConvertStrings(_T("event_policy"), _T("rule_id"), _T("alarm_key")));
        CHK_EXEC(ConvertStrings(_T("event_policy"), _T("rule_id"), _T("alarm_message")));
        CHK_EXEC(ConvertStrings(_T("event_policy"), _T("rule_id"), _T("comments")));
        CHK_EXEC(ConvertStrings(_T("event_policy"), _T("rule_id"), _T("situation_instance")));
        CHK_EXEC(ConvertStrings(_T("event_policy"), _T("rule_id"), _T("script")));
 
-       CHK_EXEC(SetColumnNullable(_T("policy_situation_attr_list"), _T("attr_value")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("policy_situation_attr_list"), _T("attr_value")));
        // convert strings in policy_situation_attr_list
        DB_RESULT hResult = SQLSelect(_T("SELECT rule_id,situation_id,attr_name,attr_value FROM policy_situation_attr_list"));
        if (hResult != NULL)
@@ -3997,8 +4048,8 @@ static BOOL H_UpgradeFromV268(int currVersion, int newVersion)
                        return FALSE;
        }
 
-       CHK_EXEC(SetColumnNullable(_T("event_cfg"), _T("description")));
-       CHK_EXEC(SetColumnNullable(_T("event_cfg"), _T("message")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("event_cfg"), _T("description")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("event_cfg"), _T("message")));
        CHK_EXEC(ConvertStrings(_T("event_cfg"), _T("event_code"), _T("description")));
        CHK_EXEC(ConvertStrings(_T("event_cfg"), _T("event_code"), _T("message")));
 
@@ -4011,15 +4062,15 @@ static BOOL H_UpgradeFromV268(int currVersion, int newVersion)
  */
 static BOOL H_UpgradeFromV267(int currVersion, int newVersion)
 {
-       CHK_EXEC(SetColumnNullable(_T("network_services"), _T("check_request")));
-       CHK_EXEC(SetColumnNullable(_T("network_services"), _T("check_responce")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("network_services"), _T("check_request")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("network_services"), _T("check_responce")));
        CHK_EXEC(ConvertStrings(_T("network_services"), _T("id"), _T("check_request")));
        CHK_EXEC(ConvertStrings(_T("network_services"), _T("id"), _T("check_responce")));
 
-       CHK_EXEC(SetColumnNullable(_T("config"), _T("var_value")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("config"), _T("var_value")));
        CHK_EXEC(ConvertStrings(_T("config"), _T("var_name"), NULL, _T("var_value"), true));
 
-       CHK_EXEC(SetColumnNullable(_T("dci_schedules"), _T("schedule")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("dci_schedules"), _T("schedule")));
        CHK_EXEC(ConvertStrings(_T("dci_schedules"), _T("schedule_id"), _T("item_id"), _T("schedule"), false));
 
        CHK_EXEC(SetSchemaVersion(268));
@@ -4181,8 +4232,8 @@ static BOOL H_UpgradeFromV258(int currVersion, int newVersion)
        // have to made these columns nullable again because
        // because they was forgotten as NOT NULL in schema.in
        // and so some databases can still have them as NOT NULL
-       CHK_EXEC(SetColumnNullable(_T("templates"), _T("apply_filter")));
-       CHK_EXEC(SetColumnNullable(_T("containers"), _T("auto_bind_filter")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("templates"), _T("apply_filter")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("containers"), _T("auto_bind_filter")));
 
        CHK_EXEC(SetSchemaVersion(259));
        return TRUE;
@@ -4280,10 +4331,10 @@ static BOOL H_UpgradeFromV253(int currVersion, int newVersion)
  */
 static BOOL H_UpgradeFromV252(int currVersion, int newVersion)
 {
-       CHK_EXEC(SetColumnNullable(_T("templates"), _T("apply_filter")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("templates"), _T("apply_filter")));
        CHK_EXEC(ConvertStrings(_T("templates"), _T("id"), _T("apply_filter")));
 
-       CHK_EXEC(SetColumnNullable(_T("containers"), _T("auto_bind_filter")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("containers"), _T("auto_bind_filter")));
        CHK_EXEC(ConvertStrings(_T("containers"), _T("id"), _T("auto_bind_filter")));
 
        static TCHAR batch[] =
@@ -4429,8 +4480,8 @@ static BOOL H_UpgradeFromV250(int currVersion, int newVersion)
 
        CHK_EXEC(SQLBatch(batch));
 
-       CHK_EXEC(SetColumnNullable(_T("thresholds"), _T("fire_value")));
-       CHK_EXEC(SetColumnNullable(_T("thresholds"), _T("rearm_value")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("thresholds"), _T("fire_value")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("thresholds"), _T("rearm_value")));
        CHK_EXEC(ConvertStrings(_T("thresholds"), _T("threshold_id"), _T("fire_value")));
        CHK_EXEC(ConvertStrings(_T("thresholds"), _T("threshold_id"), _T("rearm_value")));
 
@@ -4581,7 +4632,7 @@ static BOOL H_UpgradeFromV246(int currVersion, int newVersion)
 {
        static TCHAR insertQuery[] = _T("INSERT INTO object_custom_attributes (object_id,attr_name,attr_value) VALUES (?,?,?)");
 
-       CHK_EXEC(SetColumnNullable(_T("object_custom_attributes"), _T("attr_value")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("object_custom_attributes"), _T("attr_value")));
 
        // Convert strings in object_custom_attributes table
        DB_RESULT hResult = SQLSelect(_T("SELECT object_id,attr_name,attr_value FROM object_custom_attributes"));
@@ -4667,10 +4718,10 @@ static BOOL H_UpgradeFromV245(int currVersion, int newVersion)
 
        CHK_EXEC(SQLBatch(batch));
 
-       CHK_EXEC(SetColumnNullable(_T("snmp_trap_pmap"), _T("description")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("snmp_trap_pmap"), _T("description")));
        CHK_EXEC(ConvertStrings(_T("snmp_trap_pmap"), _T("trap_id"), _T("parameter"), _T("description"), false));
 
-       CHK_EXEC(SetColumnNullable(_T("cluster_resources"), _T("resource_name")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("cluster_resources"), _T("resource_name")));
        CHK_EXEC(ConvertStrings(_T("cluster_resources"), _T("cluster_id"), _T("resource_id"), _T("resource_name"), false));
 
        CHK_EXEC(SetSchemaVersion(246));
@@ -4689,9 +4740,9 @@ static BOOL H_UpgradeFromV244(int currVersion, int newVersion)
 
        CHK_EXEC(SQLBatch(batch));
 
-       CHK_EXEC(SetColumnNullable(_T("actions"), _T("rcpt_addr")));
-       CHK_EXEC(SetColumnNullable(_T("actions"), _T("email_subject")));
-       CHK_EXEC(SetColumnNullable(_T("actions"), _T("action_data")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("actions"), _T("rcpt_addr")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("actions"), _T("email_subject")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("actions"), _T("action_data")));
 
        CHK_EXEC(ConvertStrings(_T("actions"), _T("action_id"), _T("rcpt_addr")));
        CHK_EXEC(ConvertStrings(_T("actions"), _T("action_id"), _T("email_subject")));
@@ -5425,7 +5476,7 @@ static BOOL H_UpgradeFromV218(int currVersion, int newVersion)
  */
 static BOOL H_UpgradeFromV217(int currVersion, int newVersion)
 {
-       CHK_EXEC(SetColumnNullable(_T("snmp_communities"), _T("community")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("snmp_communities"), _T("community")));
        CHK_EXEC(ConvertStrings(_T("snmp_communities"), _T("id"), _T("community")));
 
        CHK_EXEC(SetSchemaVersion(218));
@@ -5446,40 +5497,40 @@ static BOOL H_UpgradeFromV216(int currVersion, int newVersion)
 
        CHK_EXEC(SQLBatch(batch));
 
-       CHK_EXEC(SetColumnNullable(_T("nodes"), _T("community")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("nodes"), _T("community")));
        CHK_EXEC(ConvertStrings(_T("nodes"), _T("id"), _T("community")));
 
-       CHK_EXEC(SetColumnNullable(_T("nodes"), _T("usm_auth_password")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("nodes"), _T("usm_auth_password")));
        CHK_EXEC(ConvertStrings(_T("nodes"), _T("id"), _T("usm_auth_password")));
 
-       CHK_EXEC(SetColumnNullable(_T("nodes"), _T("usm_priv_password")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("nodes"), _T("usm_priv_password")));
        CHK_EXEC(ConvertStrings(_T("nodes"), _T("id"), _T("usm_priv_password")));
 
-       CHK_EXEC(SetColumnNullable(_T("nodes"), _T("snmp_oid")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("nodes"), _T("snmp_oid")));
        CHK_EXEC(ConvertStrings(_T("nodes"), _T("id"), _T("snmp_oid")));
 
-       CHK_EXEC(SetColumnNullable(_T("nodes"), _T("secret")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("nodes"), _T("secret")));
        CHK_EXEC(ConvertStrings(_T("nodes"), _T("id"), _T("secret")));
 
-       CHK_EXEC(SetColumnNullable(_T("nodes"), _T("agent_version")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("nodes"), _T("agent_version")));
        CHK_EXEC(ConvertStrings(_T("nodes"), _T("id"), _T("agent_version")));
 
-       CHK_EXEC(SetColumnNullable(_T("nodes"), _T("platform_name")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("nodes"), _T("platform_name")));
        CHK_EXEC(ConvertStrings(_T("nodes"), _T("id"), _T("platform_name")));
 
-       CHK_EXEC(SetColumnNullable(_T("nodes"), _T("uname")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("nodes"), _T("uname")));
        CHK_EXEC(ConvertStrings(_T("nodes"), _T("id"), _T("uname")));
 
-       CHK_EXEC(SetColumnNullable(_T("items"), _T("name")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("items"), _T("name")));
        CHK_EXEC(ConvertStrings(_T("items"), _T("item_id"), _T("name")));
 
-       CHK_EXEC(SetColumnNullable(_T("items"), _T("description")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("items"), _T("description")));
        CHK_EXEC(ConvertStrings(_T("items"), _T("item_id"), _T("description")));
 
-       CHK_EXEC(SetColumnNullable(_T("items"), _T("transformation")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("items"), _T("transformation")));
        CHK_EXEC(ConvertStrings(_T("items"), _T("item_id"), _T("transformation")));
 
-       CHK_EXEC(SetColumnNullable(_T("items"), _T("instance")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("items"), _T("instance")));
        CHK_EXEC(ConvertStrings(_T("items"), _T("item_id"), _T("instance")));
 
        CHK_EXEC(SetSchemaVersion(217));
@@ -5491,13 +5542,13 @@ static BOOL H_UpgradeFromV216(int currVersion, int newVersion)
  */
 static BOOL H_UpgradeFromV215(int currVersion, int newVersion)
 {
-       CHK_EXEC(SetColumnNullable(_T("ap_common"), _T("description")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("ap_common"), _T("description")));
        CHK_EXEC(ConvertStrings(_T("ap_common"), _T("id"), _T("description")));
 
        if (g_dbSyntax != DB_SYNTAX_SQLITE)
                CHK_EXEC(SQLQuery(_T("ALTER TABLE ap_config_files DROP COLUMN file_name")));
 
-       CHK_EXEC(SetColumnNullable(_T("ap_config_files"), _T("file_content")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("ap_config_files"), _T("file_content")));
        CHK_EXEC(ConvertStrings(_T("ap_config_files"), _T("policy_id"), _T("file_content")));
 
        CHK_EXEC(SQLQuery(_T("ALTER TABLE object_properties ADD guid varchar(36)")));
@@ -5565,10 +5616,10 @@ static BOOL H_UpgradeFromV214(int currVersion, int newVersion)
  */
 static BOOL H_UpgradeFromV213(int currVersion, int newVersion)
 {
-       CHK_EXEC(SetColumnNullable(_T("script_library"), _T("script_code")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("script_library"), _T("script_code")));
        CHK_EXEC(ConvertStrings(_T("script_library"), _T("script_id"), _T("script_code")));
 
-       CHK_EXEC(SetColumnNullable(_T("raw_dci_values"), _T("raw_value")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("raw_dci_values"), _T("raw_value")));
        CHK_EXEC(ConvertStrings(_T("raw_dci_values"), _T("item_id"), _T("raw_value")));
 
        CHK_EXEC(SQLQuery(_T("UPDATE metadata SET var_value='CREATE TABLE idata_%d (item_id integer not null,idata_timestamp integer not null,idata_value varchar(255) null)' WHERE var_name='IDataTableCreationCommand'")));
@@ -5583,7 +5634,7 @@ static BOOL H_UpgradeFromV213(int currVersion, int newVersion)
 
                        DWORD nodeId = DBGetFieldULong(hResult, i, 0);
                        _sntprintf(table, 32, _T("idata_%d"), nodeId);
-                       CHK_EXEC(SetColumnNullable(table, _T("idata_value")));
+                       CHK_EXEC(RemoveNotNullConstraint(table, _T("idata_value")));
                }
                DBFreeResult(hResult);
        }
@@ -5635,8 +5686,8 @@ static BOOL H_UpgradeFromV213(int currVersion, int newVersion)
  */
 static BOOL H_UpgradeFromV212(int currVersion, int newVersion)
 {
-       CHK_EXEC(SetColumnNullable(_T("items"), _T("custom_units_name")));
-       CHK_EXEC(SetColumnNullable(_T("items"), _T("perftab_settings")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("items"), _T("custom_units_name")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("items"), _T("perftab_settings")));
 
        CHK_EXEC(ConvertStrings(_T("items"), _T("item_id"), _T("custom_units_name")));
        CHK_EXEC(ConvertStrings(_T("items"), _T("item_id"), _T("perftab_settings")));
@@ -5651,9 +5702,9 @@ static BOOL H_UpgradeFromV212(int currVersion, int newVersion)
  */
 static BOOL H_UpgradeFromV211(int currVersion, int newVersion)
 {
-       CHK_EXEC(SetColumnNullable(_T("snmp_trap_cfg"), _T("snmp_oid")));
-       CHK_EXEC(SetColumnNullable(_T("snmp_trap_cfg"), _T("user_tag")));
-       CHK_EXEC(SetColumnNullable(_T("snmp_trap_cfg"), _T("description")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("snmp_trap_cfg"), _T("snmp_oid")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("snmp_trap_cfg"), _T("user_tag")));
+       CHK_EXEC(RemoveNotNullConstraint(_T("snmp_trap_cfg"), _T("description")));
 
        CHK_EXEC(ConvertStrings(_T("snmp_trap_cfg"), _T("trap_id"), _T("user_tag")));
        CHK_EXEC(ConvertStrings(_T("snmp_trap_cfg"), _T("trap_id"), _T("description")));
@@ -10303,6 +10354,7 @@ static struct
    { 406, 407, H_UpgradeFromV406 },
    { 407, 408, H_UpgradeFromV407 },
    { 408, 409, H_UpgradeFromV408 },
+   { 409, 410, H_UpgradeFromV409 },
    { 0, 0, NULL }
 };
 
index 07bba86..9aa5566 100644 (file)
@@ -2,20 +2,20 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: Data Collection Management Plug-in
 Bundle-SymbolicName: org.netxms.ui.eclipse.datacollection;singleton:=true
-Bundle-Version: 2.0.5
+Bundle-Version: 2.1.0
 Bundle-Activator: org.netxms.ui.eclipse.datacollection.Activator
 Bundle-Vendor: netxms.org
 Require-Bundle: org.eclipse.rap.ui;bundle-version="2.3.1",
  org.eclipse.rap.ui.forms;bundle-version="2.3.1",
  org.eclipse.core.expressions;bundle-version="3.4.600",
- org.netxms.ui.eclipse.clientlibrary;bundle-version="2.0.5",
- org.netxms.webui.core;bundle-version="2.0.5",
- org.netxms.ui.eclipse.objectbrowser;bundle-version="2.0.3",
- org.netxms.ui.eclipse.eventmanager;bundle-version="2.0.0",
+ org.netxms.ui.eclipse.clientlibrary;bundle-version="2.1.0",
+ org.netxms.webui.core;bundle-version="2.1.0",
+ org.netxms.ui.eclipse.objectbrowser;bundle-version="2.1.0",
+ org.netxms.ui.eclipse.eventmanager;bundle-version="2.0.1",
  org.netxms.ui.eclipse.snmp;bundle-version="2.0.0",
- org.netxms.ui.eclipse.nxsl;bundle-version="2.0.0",
- org.netxms.ui.eclipse.charts;bundle-version="2.0.0",
- org.netxms.ui.eclipse.objectview;bundle-version="2.0.5"
+ org.netxms.ui.eclipse.nxsl;bundle-version="2.0.7",
+ org.netxms.ui.eclipse.charts;bundle-version="2.0.5",
+ org.netxms.ui.eclipse.objectview;bundle-version="2.0.7"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
 Export-Package: org.netxms.ui.eclipse.datacollection.actions,
index e360b74..b3dedfb 100644 (file)
@@ -2,8 +2,8 @@ action.label.Apply= &Apply...
 action.label.ClearData= Clear collected data
 action.label.CreateDCI= Create data collection item...
 action.label.CreateDCIs= Create data collection items...
-action.label.CreateTemplateGroup = Template &group...
-action.label.CreateTemplate = &Template...
+action.label.CreateTemplate= &Template...
+action.label.CreateTemplateGroup= Template &group...
 action.label.DataCollection= Data Collection Configuration
 action.label.LastValues= Last values
 action.label.Remove= &Remove...
index 68bd435..9417480 100644 (file)
@@ -2,8 +2,8 @@ action.label.Apply=&Apply...
 action.label.ClearData=Clear collected data
 action.label.CreateDCI=Create data collection item...
 action.label.CreateDCIs=Create data collection items...
-action.label.CreateTemplateGroup = Template &group...
-action.label.CreateTemplate = &Template...
+action.label.CreateTemplate= &Template...
+action.label.CreateTemplateGroup= Template &group...
 action.label.DataCollection=Data Collection Configuration
 action.label.LastValues=Last values
 action.label.Remove=&Remove...
index e360b74..b3dedfb 100644 (file)
@@ -2,8 +2,8 @@ action.label.Apply= &Apply...
 action.label.ClearData= Clear collected data
 action.label.CreateDCI= Create data collection item...
 action.label.CreateDCIs= Create data collection items...
-action.label.CreateTemplateGroup = Template &group...
-action.label.CreateTemplate = &Template...
+action.label.CreateTemplate= &Template...
+action.label.CreateTemplateGroup= Template &group...
 action.label.DataCollection= Data Collection Configuration
 action.label.LastValues= Last values
 action.label.Remove= &Remove...
index a76adfa..307de6b 100644 (file)
@@ -2,9 +2,8 @@ action.label.Apply= &Apply...
 action.label.ClearData= Clear collected data
 action.label.CreateDCI= Create data collection item...
 action.label.CreateDCIs= Create data collection items...
-action.label.CreateTemplateGroup = Template &group...
-action.label.CreateTemplate = &Template...
-
+action.label.CreateTemplate= &Template...
+action.label.CreateTemplateGroup= Template &group...
 action.label.DataCollection= Data Collection Configuration
 action.label.LastValues= Last values
 action.label.Remove= &Remove...
index b0103a1..9417480 100644 (file)
@@ -2,9 +2,8 @@ action.label.Apply=&Apply...
 action.label.ClearData=Clear collected data
 action.label.CreateDCI=Create data collection item...
 action.label.CreateDCIs=Create data collection items...
-action.label.CreateTemplateGroup = Template &group...
-action.label.CreateTemplate = &Template...
-
+action.label.CreateTemplate= &Template...
+action.label.CreateTemplateGroup= Template &group...
 action.label.DataCollection=Data Collection Configuration
 action.label.LastValues=Last values
 action.label.Remove=&Remove...
index 01dc5b1..899ad17 100644 (file)
@@ -160,6 +160,7 @@ public class Messages extends NLS
        public String DciLabelProvider_SourcePush;
    public String DciLabelProvider_SourceScript;
        public String DciLabelProvider_SourceSNMP;
+   public String DciLabelProvider_SourceSSH;
        public String DciLabelProvider_SourceILO;
        public String DciLabelProvider_SourceWinPerf;
        public String DciLabelProvider_Table;
@@ -276,6 +277,7 @@ public class Messages extends NLS
        public String General_SourceInternal;
        public String General_SourcePush;
        public String General_SourceSNMP;
+   public String General_SourceSSH;
        public String General_Status;
        public String General_Storage;
        public String General_UseCustomPort;
@@ -312,6 +314,7 @@ public class Messages extends NLS
        public String GeneralTable_SourceInternal;
        public String GeneralTable_SourcePush;
        public String GeneralTable_SourceSNMP;
+   public String GeneralTable_SourceSSH;
        public String GeneralTable_Status;
        public String GeneralTable_Storage;
        public String GeneralTable_UseCustomRetention;
index 5a14f63..d1ad93c 100644 (file)
@@ -146,11 +146,12 @@ DciLabelProvider_None=none
 DciLabelProvider_NotSupported=Not supported
 DciLabelProvider_SourceAgent=NetXMS Agent
 DciLabelProvider_SourceCPSNMP=Check Point SNMP
-DciLabelProvider_SourceILO=iLO
+DciLabelProvider_SourceILO=SM-CLP
 DciLabelProvider_SourceInternal=Internal
 DciLabelProvider_SourcePush=Push
 DciLabelProvider_SourceScript=Script
 DciLabelProvider_SourceSNMP=SNMP
+DciLabelProvider_SourceSSH=SSH
 DciLabelProvider_SourceWinPerf=Windows Performance Counters
 DciLabelProvider_Table=<< TABLE >>
 DciLabelProvider_Unknown=<unknown>
@@ -248,6 +249,7 @@ GeneralTable_SourceCPSNMP=Check Point SNMP
 GeneralTable_SourceInternal=Internal
 GeneralTable_SourcePush=Push
 GeneralTable_SourceSNMP=SNMP
+GeneralTable_SourceSSH=SSH
 GeneralTable_Status=Status
 GeneralTable_Storage=Storage
 GeneralTable_UseCustomRetention=Use custom retention time
@@ -301,6 +303,7 @@ General_SourceCPSNMP=Check Point SNMP
 General_SourceInternal=Internal
 General_SourcePush=Push
 General_SourceSNMP=SNMP
+General_SourceSSH=SSH
 General_Status=Status
 General_Storage=Storage
 General_UseCustomPort=Use custom SNMP port:
index 79b503e..b66cdd0 100644 (file)
@@ -146,10 +146,11 @@ DciLabelProvider_None=none
 DciLabelProvider_NotSupported=Nepodporovan\u00fd
 DciLabelProvider_SourceAgent=NetXMS agent
 DciLabelProvider_SourceCPSNMP=SNMP kontroln\u00ed bod
-DciLabelProvider_SourceILO=iLO
+DciLabelProvider_SourceILO=SM-CLP
 DciLabelProvider_SourceInternal=Intern\u00ed
 DciLabelProvider_SourcePush=Push
 DciLabelProvider_SourceSNMP=SNMP
+DciLabelProvider_SourceSSH=SSH
 DciLabelProvider_SourceScript=Skript
 DciLabelProvider_SourceWinPerf=Windows Performance Counter
 DciLabelProvider_Table=<<TABULKA>>
@@ -244,6 +245,7 @@ GeneralTable_SourceCPSNMP=SNMP kontroln\u00ed bod
 GeneralTable_SourceInternal=Intern\u00ed
 GeneralTable_SourcePush=Push
 GeneralTable_SourceSNMP=SNMP
+GeneralTable_SourceSSH=SSH
 GeneralTable_Status=Stav
 GeneralTable_Storage=\u00dalo\u017ei\u0161t\u011b
 GeneralTable_UseCustomRetention=Use custom retention time
@@ -297,6 +299,7 @@ General_SourceCPSNMP=SNMP kontroln\u00ed bod
 General_SourceInternal=Intern\u00ed
 General_SourcePush=Push
 General_SourceSNMP=SNMP
+General_SourceSSH=SSH
 General_Status=Stav
 General_Storage=\u00dalo\u017ei\u0161t\u011b
 General_UseCustomPort=Pou\u017e\u00edt vlastn\u00ed SNMP port
index 58d735e..74b4996 100644 (file)
@@ -146,10 +146,11 @@ DciLabelProvider_None=none
 DciLabelProvider_NotSupported=Not supported
 DciLabelProvider_SourceAgent=NetXMS Agent
 DciLabelProvider_SourceCPSNMP=Check Point SNMP
-DciLabelProvider_SourceILO=iLO
+DciLabelProvider_SourceILO=SM-CLP
 DciLabelProvider_SourceInternal=Internal
 DciLabelProvider_SourcePush=Push
 DciLabelProvider_SourceSNMP=SNMP
+DciLabelProvider_SourceSSH=SSH
 DciLabelProvider_SourceScript=Script
 DciLabelProvider_SourceWinPerf=Windows Performance Counters
 DciLabelProvider_Table=<< TABLE >>
@@ -244,6 +245,7 @@ GeneralTable_SourceCPSNMP=Check Point SNMP
 GeneralTable_SourceInternal=Internal
 GeneralTable_SourcePush=Push
 GeneralTable_SourceSNMP=SNMP
+GeneralTable_SourceSSH=SSH
 GeneralTable_Status=Status
 GeneralTable_Storage=Storage
 GeneralTable_UseCustomRetention=Use custom retention time
@@ -297,6 +299,7 @@ General_SourceCPSNMP=Check Point SNMP
 General_SourceInternal=Internal
 General_SourcePush=Push
 General_SourceSNMP=SNMP
+General_SourceSSH=SSH
 General_Status=Status
 General_Storage=Storage
 General_UseCustomPort=Use custom SNMP port:
index 9463a91..debb6a0 100644 (file)
@@ -146,10 +146,11 @@ DciLabelProvider_None=none
 DciLabelProvider_NotSupported=No soportado
 DciLabelProvider_SourceAgent=Agente NetXMS
 DciLabelProvider_SourceCPSNMP=Comprobaci\u00f3n SNMP
-DciLabelProvider_SourceILO=iLO
+DciLabelProvider_SourceILO=SM-CLP
 DciLabelProvider_SourceInternal=Interno
 DciLabelProvider_SourcePush=Enviar
 DciLabelProvider_SourceSNMP=SNMP
+DciLabelProvider_SourceSSH=SSH
 DciLabelProvider_SourceScript=Script
 DciLabelProvider_SourceWinPerf=Windows Performance Counters
 DciLabelProvider_Table=<< TABLA >>
@@ -244,6 +245,7 @@ GeneralTable_SourceCPSNMP=Comprobaci\u00f3n SNMP
 GeneralTable_SourceInternal=Interno
 GeneralTable_SourcePush=Enviar
 GeneralTable_SourceSNMP=SNMP
+GeneralTable_SourceSSH=SSH
 GeneralTable_Status=Estado
 GeneralTable_Storage=Almacenamiento
 GeneralTable_UseCustomRetention=Use custom retention time
@@ -297,6 +299,7 @@ General_SourceCPSNMP=Comprobaci\u00f3n SNMP
 General_SourceInternal=Interno
 General_SourcePush=Enviar
 General_SourceSNMP=SNMP
+General_SourceSSH=SSH
 General_Status=Estado
 General_Storage=Almacenamiento
 General_UseCustomPort=Puerto SNMP personalizado:
index ab7eee2..2181303 100644 (file)
@@ -146,10 +146,11 @@ DciLabelProvider_None=none
 DciLabelProvider_NotSupported=Not supported
 DciLabelProvider_SourceAgent=NetXMS Agent
 DciLabelProvider_SourceCPSNMP=Check Point SNMP
-DciLabelProvider_SourceILO=iLO
+DciLabelProvider_SourceILO=SM-CLP
 DciLabelProvider_SourceInternal=Internal
 DciLabelProvider_SourcePush=Push
 DciLabelProvider_SourceSNMP=SNMP
+DciLabelProvider_SourceSSH=SSH
 DciLabelProvider_SourceScript=Script
 DciLabelProvider_SourceWinPerf=Windows Performance Counters
 DciLabelProvider_Table=<< TABLE >>
@@ -244,6 +245,7 @@ GeneralTable_SourceCPSNMP=Check Point SNMP
 GeneralTable_SourceInternal=Internal
 GeneralTable_SourcePush=Push
 GeneralTable_SourceSNMP=SNMP
+GeneralTable_SourceSSH=SSH
 GeneralTable_Status=Status
 GeneralTable_Storage=Storage
 GeneralTable_UseCustomRetention=Use custom retention time
@@ -297,6 +299,7 @@ General_SourceCPSNMP=Check Point SNMP
 General_SourceInternal=Internal
 General_SourcePush=Push
 General_SourceSNMP=SNMP
+General_SourceSSH=SSH
 General_Status=Status
 General_Storage=Storage
 General_UseCustomPort=Use custom SNMP port:
index ab7eee2..2181303 100644 (file)
@@ -146,10 +146,11 @@ DciLabelProvider_None=none
 DciLabelProvider_NotSupported=Not supported
 DciLabelProvider_SourceAgent=NetXMS Agent
 DciLabelProvider_SourceCPSNMP=Check Point SNMP
-DciLabelProvider_SourceILO=iLO
+DciLabelProvider_SourceILO=SM-CLP
 DciLabelProvider_SourceInternal=Internal
 DciLabelProvider_SourcePush=Push
 DciLabelProvider_SourceSNMP=SNMP
+DciLabelProvider_SourceSSH=SSH
 DciLabelProvider_SourceScript=Script
 DciLabelProvider_SourceWinPerf=Windows Performance Counters
 DciLabelProvider_Table=<< TABLE >>
@@ -244,6 +245,7 @@ GeneralTable_SourceCPSNMP=Check Point SNMP
 GeneralTable_SourceInternal=Internal
 GeneralTable_SourcePush=Push
 GeneralTable_SourceSNMP=SNMP
+GeneralTable_SourceSSH=SSH
 GeneralTable_Status=Status
 GeneralTable_Storage=Storage
 GeneralTable_UseCustomRetention=Use custom retention time
@@ -297,6 +299,7 @@ General_SourceCPSNMP=Check Point SNMP
 General_SourceInternal=Internal
 General_SourcePush=Push
 General_SourceSNMP=SNMP
+General_SourceSSH=SSH
 General_Status=Status
 General_Storage=Storage
 General_UseCustomPort=Use custom SNMP port:
index 153bd3c..48bc52f 100644 (file)
@@ -80,7 +80,7 @@ DataCollectionEditor_ColPollingInterval=\u0418\u043d\u0442\u0435\u0440\u0432\u04
 DataCollectionEditor_ColRetentionTime=\u0412\u0440\u0435\u043c\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f
 DataCollectionEditor_ColStatus=\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435
 DataCollectionEditor_ColTemplate=\u0428\u0430\u0431\u043b\u043e\u043d
-DataCollectionEditor_ColThresholds=Thresholds
+DataCollectionEditor_ColThresholds=\u041f\u043e\u0440\u043e\u0433\u043e\u0432\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f
 DataCollectionEditor_Convert=\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0432 &\u0448\u0430\u0431\u043b\u043e\u043d...
 DataCollectionEditor_ConvertJob_ErrorPrefix=\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u0440\u0438\u043a\u0443 \u0434\u043b\u044f
 DataCollectionEditor_ConvertJob_ErrorSuffix=\ \u0432 \u0448\u0430\u0431\u043b\u043e\u043d
@@ -123,9 +123,9 @@ DataSourceEditDlg_CustomColor=&\u041e\u0441\u043e\u0431\u044b\u0439:
 DataSourceEditDlg_DCI=\u041c\u0435\u0442\u0440\u0438\u043a\u0430
 DataSourceEditDlg_DataColumn=\u0421\u0442\u043e\u043b\u0431\u0435\u0446 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438
 DataSourceEditDlg_DispName=\u041d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435
-DataSourceEditDlg_DisplayFormat=Display format
+DataSourceEditDlg_DisplayFormat=\u0424\u043e\u0440\u043c\u0430\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f
 DataSourceEditDlg_Instance=\u042d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440
-DataSourceEditDlg_InvertValues=Invert values
+DataSourceEditDlg_InvertValues=\u0418\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f
 DataSourceEditDlg_Options=\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b
 DataSourceEditDlg_ShellTitle=\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445
 DataSourceEditDlg_ShowThresholds=\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c &\u043f\u043e\u0440\u043e\u0433\u043e\u0432\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f
@@ -140,16 +140,17 @@ DciLabelProvider_DT_uint32=\u0411\u0435\u0437\u0437\u043d\u0430\u043a\u043e\u043
 DciLabelProvider_DT_uint64=\u0411\u0435\u0437\u0437\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u0446\u0435\u043b\u043e\u0435 64-\u0431\u0438\u0442
 DciLabelProvider_Day=\ \u0434\u0435\u043d\u044c
 DciLabelProvider_Days=\ \u0434\u043d\u0435\u0439
-DciLabelProvider_Default=default
+DciLabelProvider_Default=\u043f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e
 DciLabelProvider_Disabled=\u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043e
 DciLabelProvider_None=none
 DciLabelProvider_NotSupported=\u041d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f
 DciLabelProvider_SourceAgent=\u0410\u0433\u0435\u043d\u0442 NetXMS
 DciLabelProvider_SourceCPSNMP=Check Point SNMP
-DciLabelProvider_SourceILO=iLO
+DciLabelProvider_SourceILO=SM-CLP
 DciLabelProvider_SourceInternal=\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439
 DciLabelProvider_SourcePush=Push \u0430\u0433\u0435\u043d\u0442
 DciLabelProvider_SourceSNMP=SNMP
+DciLabelProvider_SourceSSH=SSH
 DciLabelProvider_SourceScript=\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439
 DciLabelProvider_SourceWinPerf=\u0421\u0447\u0435\u0442\u0447\u0438\u043a\u0438 Windows
 DciLabelProvider_Table=<< \u0422\u0410\u0411\u041b\u0418\u0426\u0410 >>
@@ -213,14 +214,14 @@ EditThresholdDialog_Sum=\u0421\u0443\u043c\u043c\u0430 \u0437\u043d\u0430\u0447\
 EditThresholdDialog_Title=\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0440\u043e\u0433\u043e\u0432\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439
 EditThresholdDialog_UseDefault=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e &\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e
 EditThresholdDialog_Value=\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435
-ForceDciPoll_TaskName=Force DCI Poll
+ForceDciPoll_TaskName=\u0424\u043e\u0440\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0440\u043e\u0441 \u043c\u0435\u0442\u0440\u0438\u043a
 GeneralTable_Active=&\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u043e
-GeneralTable_AgentCacheMode=Agent cache mode
+GeneralTable_AgentCacheMode=\u041a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0430\u0433\u0435\u043d\u0442\u043e\u043c
 GeneralTable_ClRes=\u0421\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430
 GeneralTable_CustomPort=\u041f\u043e\u0440\u0442 SNMP
 GeneralTable_CustomSchedule=\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0435 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435
 GeneralTable_Data=\u0414\u0430\u043d\u043d\u044b\u0435
-GeneralTable_Default=Default
+GeneralTable_Default=\u041f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e
 GeneralTable_Description=\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435
 GeneralTable_Disabled=&\u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043e
 GeneralTable_FixedIntervalsCustom=\u0424\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u044b (\u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0435)
@@ -228,15 +229,15 @@ GeneralTable_FixedIntervalsDefault=\u0424\u0438\u043a\u0441\u0438\u0440\u043e\u0
 GeneralTable_NoStorage=\u041d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445
 GeneralTable_None=<\u043d\u0435\u0442>
 GeneralTable_NotSupported=&\u041d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f
-GeneralTable_Off=Off
-GeneralTable_On=On
+GeneralTable_Off=\u0412\u044b\u043a\u043b.
+GeneralTable_On=\u0412\u043a\u043b.
 GeneralTable_Origin=\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a
 GeneralTable_Parameter=\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440
 GeneralTable_Polling=\u041e\u043f\u0440\u043e\u0441
 GeneralTable_PollingInterval=\u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043e\u043f\u0440\u043e\u0441\u0430 (\u0441\u0435\u043a\u0443\u043d\u0434\u044b)
 GeneralTable_PollingMode=\u0420\u0435\u0436\u0438\u043c \u043e\u043f\u0440\u043e\u0441\u0430
 GeneralTable_ProxyNode=\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0443\u0437\u0435\u043b
-GeneralTable_RetentionMode=Retention mode
+GeneralTable_RetentionMode=\u0420\u0435\u0436\u0438\u043c \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445
 GeneralTable_RetentionTime=\u0412\u0440\u0435\u043c\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f (\u0434\u043d\u0438)
 GeneralTable_Select=&\u0412\u044b\u0431\u0440\u0430\u0442\u044c...
 GeneralTable_SourceAgent=\u0410\u0433\u0435\u043d\u0442 NetXMS
@@ -244,13 +245,14 @@ GeneralTable_SourceCPSNMP=Check Point SNMP
 GeneralTable_SourceInternal=\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439
 GeneralTable_SourcePush=Push \u0430\u0433\u0435\u043d\u0442
 GeneralTable_SourceSNMP=SNMP
+GeneralTable_SourceSSH=SSH
 GeneralTable_Status=\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435
 GeneralTable_Storage=\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435
-GeneralTable_UseCustomRetention=Use custom retention time
+GeneralTable_UseCustomRetention=\u0421\u0432\u043e\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f
 GeneralTable_UseCustomSNMPPort=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0440\u0442 \u0434\u043b\u044f SNMP:
-GeneralTable_UseDefaultRetention=Use default retention time
+GeneralTable_UseDefaultRetention=\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e
 General_Active=&\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u043e
-General_AgentCacheMode=Agent cache mode
+General_AgentCacheMode=\u041a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0430\u0433\u0435\u043d\u0442\u043e\u043c
 General_ClRes=\u0421\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430
 General_CustomSchedule=\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0435 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435
 General_DT_float=\u0414\u0440\u043e\u0431\u043d\u043e\u0435
@@ -261,7 +263,7 @@ General_DT_uint32=\u0411\u0435\u0437\u0437\u043d\u0430\u043a\u043e\u0432\u043e\u
 General_DT_uint64=\u0411\u0435\u0437\u0437\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u0446\u0435\u043b\u043e\u0435 64-\u0431\u0438\u0442
 General_Data=\u0414\u0430\u043d\u043d\u044b\u0435
 General_DataType=\u0422\u0438\u043f \u0434\u0430\u043d\u043d\u044b\u0445
-General_Default=Default
+General_Default=\u041f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e
 General_Description=\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435
 General_Disabled=&\u0412\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u043e
 General_FixedIntervalsCustom=\u0424\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u044b (\u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0435)
@@ -270,15 +272,15 @@ General_InterpretRawValue=\u0418\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442
 General_NoStorage=\u041d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f
 General_None=<\u043d\u0435\u0442>
 General_NotSupported=&\u041d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f
-General_Off=Off
-General_On=On
+General_Off=\u0412\u044b\u043a\u043b.
+General_On=\u0412\u043a\u043b.
 General_Origin=\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a
 General_Parameter=\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440
 General_Polling=\u041e\u043f\u0440\u043e\u0441
 General_PollingInterval=\u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043e\u043f\u0440\u043e\u0441\u0430 (\u0441\u0435\u043a\u0443\u043d\u0434\u044b)
 General_PollingMode=\u0420\u0435\u0436\u0438\u043c \u043e\u043f\u0440\u043e\u0441\u0430
 General_ProxyNode=\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0443\u0437\u0435\u043b
-General_RetentionMode=Retention mode
+General_RetentionMode=\u0420\u0435\u0436\u0438\u043c \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445
 General_RetentionTime=\u0412\u0440\u0435\u043c\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f (\u0434\u043d\u0438)
 General_SMCLP=SM-CLP
 General_SNMP_DT_None=\u041d\u0435\u0442
@@ -297,11 +299,12 @@ General_SourceCPSNMP=Check Point SNMP
 General_SourceInternal=\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439
 General_SourcePush=Push \u0430\u0433\u0435\u043d\u0442
 General_SourceSNMP=SNMP
+General_SourceSSH=SSH
 General_Status=C\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435
 General_Storage=\u0425\u0440\u0430\u043d\u0435\u043d\u0438\u0435
 General_UseCustomPort=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0440\u0442 \u0434\u043b\u044f SNMP:
-General_UseCustomRetention=Use custom retention time
-General_UseDefaultRetention=Use default retention time
+General_UseCustomRetention=\u0421\u0432\u043e\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f
+General_UseDefaultRetention=\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e
 General_WinPerf=\u0421\u0447\u0435\u0442\u0447\u0438\u043a\u0438 Windows
 InstanceDiscovery_AgentList=\u0421\u043f\u0438\u0441\u043e\u043a \u0430\u0433\u0435\u043d\u0442\u0430
 InstanceDiscovery_AgentTable=\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0430\u0433\u0435\u043d\u0442\u0430
@@ -326,9 +329,9 @@ LastValuesWidget_ColID=\u041a\u043e\u0434
 LastValuesWidget_ColThreshold=\u041f\u043e\u0440\u043e\u0433
 LastValuesWidget_ColTime=\u0412\u0440\u0435\u043c\u044f
 LastValuesWidget_ColValue=\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435
-LastValuesWidget_CopyToClipboard=&Copy to clipboard
+LastValuesWidget_CopyToClipboard=&\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u0431\u0443\u0444\u0435\u0440
 LastValuesWidget_JobError=\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0434\u043b\u044f \u0443\u0437\u043b\u0430
-LastValuesWidget_JobTitle=\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0434\u043b\u044f \u0443\u0437\u043b\u0430
+LastValuesWidget_JobTitle=\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0434\u043b\u044f \u0443\u0437\u043b\u0430
 LastValuesWidget_ShowDisabled=\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438
 LastValuesWidget_ShowErrors=\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0441 &\u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438
 LastValuesWidget_ShowUnsupported=\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c &\u043d\u0435\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438
@@ -343,7 +346,7 @@ OpenEditor_Error=\u041e\u0448\u0438\u0431\u043a\u0430
 OpenEditor_ErrorText=\u041e\u0448\u0438\u0431\u043a\u0430 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f:
 OpenSummaryTablesManager_CannotOpenView=\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c: %s
 OpenSummaryTablesManager_Error=\u041e\u0448\u0438\u0431\u043a\u0430
-OtherOptions_ShowlastValueInObjectOverview=Show last value in object overview
+OtherOptions_ShowlastValueInObjectOverview=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u043e\u0431\u0437\u043e\u0440\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430
 OtherOptions_UseForStatusCalculation=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u0440\u0438\u043a\u0443 \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u0443\u0437\u043b\u0430
 RemoveTemplate_JobError=\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d
 RemoveTemplate_JobTitle=\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u0430
@@ -382,18 +385,18 @@ SelectInternalParamDlg_DCI_Status=\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u04
 SelectInternalParamDlg_DCI_TotalEventsProcessed=\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439
 SelectInternalParamDlg_DCI_UserID=\u041a\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f
 SelectInternalParamDlg_DCI_Vendor=\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c
-SelectInternalParamDlg_PingTime_Instance=Ping time of {instance}
-SelectInternalParamDlg_PingTime_PrimaryIP=Ping time of primary IP
-SelectInternalParamDlg_SyslogProcessingQueue=Syslog processing queue for last minute
-SelectInternalParamDlg_SyslogWriterQueue=Syslog writer queue for last minute
+SelectInternalParamDlg_PingTime_Instance=\u0412\u0440\u0435\u043c\u044f \u043e\u0442\u043a\u043b\u0438\u043a\u0430 \u043e\u0442 {instance}
+SelectInternalParamDlg_PingTime_PrimaryIP=\u0412\u0440\u0435\u043c\u044f \u043e\u0442\u043a\u043b\u0438\u043a\u0430 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e IP
+SelectInternalParamDlg_SyslogProcessingQueue=\u0414\u043b\u0438\u043d\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u0436\u0443\u0440\u043d\u0430\u043b\u0430 \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u043c\u0438\u043d\u0443\u0442\u0443
+SelectInternalParamDlg_SyslogWriterQueue=\u041e\u0447\u0435\u0440\u0435\u0434\u044c \u0437\u0430\u043f\u0438\u0441\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u0436\u0443\u0440\u043d\u0430\u043b\u0430 \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u043c\u0438\u043d\u0443\u0442\u0443
 SelectInternalParamDlg_TotalAPs=\u0412\u0441\u0435\u0433\u043e \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430
 SelectInternalParamDlg_UnadoptedAPs=\u041d\u0435\u043f\u0440\u0438\u043d\u044f\u0442\u044b\u0435 \u0442\u043e\u0447\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430
 SelectNodeDciDialog_Title=\u0412\u044b\u0431\u043e\u0440 \u043c\u0435\u0442\u0440\u0438\u043a\u0438
 SelectNodeDciDialog_Warning=\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435
 SelectNodeDciDialog_WarningText=\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0443 \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 OK
-SelectSummaryTableDialog_EmptySelectionWarning=You must select summary table from list and then press OK.
-SelectSummaryTableDialog_Label=Available DCI summary tables
-SelectSummaryTableDialog_Title=Select DCI Summary Table
+SelectSummaryTableDialog_EmptySelectionWarning=\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u0432\u043e\u0434\u043d\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u041e\u041a.
+SelectSummaryTableDialog_Label=\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0441\u0432\u043e\u0434\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043c\u0435\u0442\u0440\u0438\u043a
+SelectSummaryTableDialog_Title=\u0412\u044b\u0431\u043e\u0440 \u0441\u0432\u043e\u0434\u043d\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 \u043c\u0435\u0442\u0440\u0438\u043a
 SelectSummaryTableDialog_Warning=\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435
 ShowLastValues_Error=\u041e\u0448\u0438\u0431\u043a\u0430
 ShowLastValues_ErrorText=\u041e\u0448\u0438\u0431\u043a\u0430 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f:
@@ -426,15 +429,15 @@ SummaryTableManager_Title=\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a
 SummaryTableManager_TitleCreate=\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0432\u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043c\u0435\u0442\u0440\u0438\u043a
 SummaryTableManager_TitleEdit=\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0432\u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043c\u0435\u0442\u0440\u0438\u043a
 SummaryTableSelector_None=<none>
-SummaryTableWidget_13=Forced DCI poll failed
-SummaryTableWidget_CannotOpenObjectDetails=Cannot open object details view: %s
-SummaryTableWidget_DciPoll=DCI poll
-SummaryTableWidget_Error=Error
-SummaryTableWidget_ForceDciPoll=Force DCI poll
-SummaryTableWidget_ForcePollForAllColumns=Force poll for all columns
-SummaryTableWidget_ForcePollForNode=Force poll for "%s"
-SummaryTableWidget_Node=&Node
-SummaryTableWidget_ShowObjectDetails=Show &object details
+SummaryTableWidget_13=\u041e\u0448\u0438\u0431\u043a\u0430 \u0444\u043e\u0440\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u043f\u0440\u043e\u0441\u0430 \u043c\u0435\u0442\u0440\u0438\u043a
+SummaryTableWidget_CannotOpenObjectDetails=\u041e\u0448\u0438\u0431\u043a\u0430 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u0437\u043e\u0440\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430: %s
+SummaryTableWidget_DciPoll=\u041e\u043f\u0440\u043e\u0441 \u043c\u0435\u0442\u0440\u0438\u043a
+SummaryTableWidget_Error=\u041e\u0448\u0438\u0431\u043a\u0430
+SummaryTableWidget_ForceDciPoll=\u0424\u043e\u0440\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0440\u043e\u0441 \u043c\u0435\u0442\u0440\u0438\u043a
+SummaryTableWidget_ForcePollForAllColumns=\u0424\u043e\u0440\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0440\u043e\u0441 \u043c\u0435\u0442\u0440\u0438\u043a \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432
+SummaryTableWidget_ForcePollForNode=\u0424\u043e\u0440\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0440\u043e\u0441 \u0434\u043b\u044f "%s"
+SummaryTableWidget_Node=&\u0423\u0437\u0435\u043b
+SummaryTableWidget_ShowObjectDetails=\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0434\u0435\u0442\u0430\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430
 SummaryTable_JobError=\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0435\u0441\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0441\u0432\u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043c\u0435\u0442\u0440\u0438\u043a
 SummaryTable_JobName=\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0441\u0432\u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043c\u0435\u0442\u0440\u0438\u043a
 SummaryTablesDynamicMenu_CannotOpenView=\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0432\u0438\u0434: %s
index d32c9d1..44543ff 100644 (file)
@@ -146,10 +146,11 @@ DciLabelProvider_None=none
 DciLabelProvider_NotSupported=Not supported
 DciLabelProvider_SourceAgent=NetXMS Agent
 DciLabelProvider_SourceCPSNMP=Check Point SNMP
-DciLabelProvider_SourceILO=iLO
+DciLabelProvider_SourceILO=SM-CLP
 DciLabelProvider_SourceInternal=Internal
 DciLabelProvider_SourcePush=Push
 DciLabelProvider_SourceSNMP=SNMP
+DciLabelProvider_SourceSSH=SSH
 DciLabelProvider_SourceScript=Script
 DciLabelProvider_SourceWinPerf=Windows Performance Counters
 DciLabelProvider_Table=<< TABLE >>
@@ -244,6 +245,7 @@ GeneralTable_SourceCPSNMP=Check Point SNMP
 GeneralTable_SourceInternal=Internal
 GeneralTable_SourcePush=Push
 GeneralTable_SourceSNMP=SNMP
+GeneralTable_SourceSSH=SSH
 GeneralTable_Status=Status
 GeneralTable_Storage=Storage
 GeneralTable_UseCustomRetention=Use custom retention time
@@ -297,6 +299,7 @@ General_SourceCPSNMP=Check Point SNMP
 General_SourceInternal=Internal
 General_SourcePush=Push
 General_SourceSNMP=SNMP
+General_SourceSSH=SSH
 General_Status=Status
 General_Storage=Storage
 General_UseCustomPort=Use custom SNMP port:
index 2a84867..4515413 100644 (file)
@@ -191,6 +191,7 @@ public class General extends PropertyPage
       origin.add(Messages.get().General_WinPerf);
       origin.add(Messages.get().General_SMCLP);
       origin.add(Messages.get().General_Script);
+      origin.add(Messages.get().General_SourceSSH);
       origin.select(dci.getOrigin());
       origin.addSelectionListener(new SelectionListener() {
                        @Override
@@ -450,7 +451,8 @@ public class General extends PropertyPage
          mode = 1;
       retentionMode.select(mode);
       retentionTime.setEnabled(mode == 1);
-            
+      
+      onOriginChange();
       return dialogArea;
        }
 
@@ -469,6 +471,13 @@ public class General extends PropertyPage
                customSnmpPort.setEnabled((index == DataCollectionItem.SNMP) && checkUseCustomSnmpPort.getSelection());
                sampleCount.setEnabled(index == DataCollectionItem.WINPERF);
                agentCacheMode.setEnabled((index == DataCollectionItem.AGENT) || (index == DataCollectionItem.SNMP));
+               selectButton.setEnabled(
+                     (index == DataCollectionItem.AGENT) || 
+                     (index == DataCollectionItem.SNMP) || 
+                     (index == DataCollectionItem.INTERNAL) || 
+                     (index == DataCollectionItem.WINPERF) || 
+                     (index == DataCollectionItem.CHECKPOINT_SNMP) || 
+                     (index == DataCollectionItem.SCRIPT));
        }
        
        /**
index d8613d5..504ac44 100644 (file)
@@ -68,8 +68,9 @@ public class DciLabelProvider implements ITableLabelProvider
                originTexts.put(DataCollectionItem.INTERNAL, Messages.get().DciLabelProvider_SourceInternal);
                originTexts.put(DataCollectionItem.PUSH, Messages.get().DciLabelProvider_SourcePush);
                originTexts.put(DataCollectionItem.WINPERF, Messages.get().DciLabelProvider_SourceWinPerf);
-               originTexts.put(DataCollectionItem.ILO, Messages.get().DciLabelProvider_SourceILO);
+               originTexts.put(DataCollectionItem.SMCLP, Messages.get().DciLabelProvider_SourceILO);
       originTexts.put(DataCollectionItem.SCRIPT, Messages.get().DciLabelProvider_SourceScript);
+      originTexts.put(DataCollectionItem.SSH, Messages.get().DciLabelProvider_SourceSSH);
                
                statusTexts.put(DataCollectionItem.ACTIVE, Messages.get().DciLabelProvider_Active);
                statusTexts.put(DataCollectionItem.DISABLED, Messages.get().DciLabelProvider_Disabled);
index 2597a71..e9638d6 100644 (file)
@@ -2,19 +2,19 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: NXMC Basic Object Management Plug-in
 Bundle-SymbolicName: org.netxms.ui.eclipse.objectmanager;singleton:=true
-Bundle-Version: 2.0.7
+Bundle-Version: 2.1.0
 Bundle-Activator: org.netxms.ui.eclipse.objectmanager.Activator
 Bundle-Vendor: netxms.org
 Require-Bundle: org.eclipse.rap.ui;bundle-version="2.3.0",
  org.eclipse.rap.ui.forms;bundle-version="2.3.1",
- org.netxms.ui.eclipse.clientlibrary;bundle-version="2.0.5",
- org.netxms.webui.core;bundle-version="2.0.4",
- org.netxms.ui.eclipse.objectbrowser;bundle-version="2.0.3",
- org.netxms.ui.eclipse.usermanager;bundle-version="2.0.4",
- org.netxms.ui.eclipse.nxsl;bundle-version="2.0.4",
+ org.netxms.ui.eclipse.clientlibrary;bundle-version="2.1.0",
+ org.netxms.webui.core;bundle-version="2.1.0",
+ org.netxms.ui.eclipse.objectbrowser;bundle-version="2.1.0",
+ org.netxms.ui.eclipse.usermanager;bundle-version="2.0.8",
+ org.netxms.ui.eclipse.nxsl;bundle-version="2.0.7",
  org.netxms.ui.eclipse.imagelibrary;bundle-version="2.0.0",
- org.netxms.ui.eclipse.datacollection;bundle-version="2.0.5",
- org.netxms.ui.eclipse.eventmanager;bundle-version="2.0.0"
+ org.netxms.ui.eclipse.datacollection;bundle-version="2.1.0",
+ org.netxms.ui.eclipse.eventmanager;bundle-version="2.0.1"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
 Export-Package: org.netxms.ui.eclipse.objectmanager.actions,
index 4a7af79..35b7a7b 100644 (file)
@@ -32,25 +32,29 @@ action.label.Unmanage = Unmanage
 menu.label.Create=&Create
 menu.label.Maintenance=&Maintenance
 menu.label.Poll=&Poll
-page.name.AccessControl = Access Control
-page.name.AutoApply = Automatic Apply Rules
-page.name.AutoBind = Automatic Bind Rules
-page.name.ClusterNet = Cluster Networks
-page.name.ClusterRes = Cluster Resources
-page.name.Comments = Comments
-page.name.Communications = Communications
-page.name.CustomAttrs = Custom Attributes
-page.name.Data = Data
-page.name.Dashboards = Dashboards
-page.name.EventsStatus = Events and Status
-page.name.General = General
-page.name.Location = Location
-page.name.MapAppearance = Map Appearance
-page.name.NetSrv = Network Service
+page.name.AccessControl=Access Control
+page.name.Agent=Agent
+page.name.AutoApply=Automatic Apply Rules
+page.name.AutoBind=Automatic Bind Rules
+page.name.ClusterNet=Cluster Networks
+page.name.ClusterRes=Cluster Resources
+page.name.Comments=Comments
+page.name.Communications=Communications
+page.name.CustomAttrs=Custom Attributes
+page.name.Data=Data
+page.name.Dashboards=Dashboards
+page.name.EventsStatus=Events and Status
+page.name.General=General
+page.name.ICMP=ICMP
+page.name.Location=Location
+page.name.MapAppearance=Map Appearance
+page.name.NetSrv=Network Service
 page.name.Polling=Polling
 page.name.Rack=Rack
 page.name.Script=Script
-page.name.StatusCalc = Status Calculation
+page.name.SNMP=SNMP
+page.name.SSH=SSH
+page.name.StatusCalc=Status Calculation
 page.name.Subnets=Subnets
-page.name.TrustedNodes = Trusted Nodes
-view.name.NodePoll = Node Poll
+page.name.TrustedNodes=Trusted Nodes
+view.name.NodePoll=Node Poll
index 273bcdf..8a96104 100644 (file)
@@ -32,6 +32,7 @@ menu.label.Create=&Vytvo\u0159it
 menu.label.Maintenance=&Maintenance
 menu.label.Poll=&Vy\u010d\u00edst
 page.name.AccessControl=\u0158\u00edzen\u00ed p\u0159\u00edstupu
+page.name.Agent=Agent
 page.name.AutoApply=Automaticky pou\u017e\u00edt pravidla
 page.name.AutoBind=Automaticky sv\u00e1zat pravidla
 page.name.ClusterNet=Cluster s\u00edt\u011b
@@ -43,11 +44,14 @@ page.name.Dashboards=Dashboards
 page.name.Data=Data
 page.name.EventsStatus=Ud\u00e1losti a stav
 page.name.General=Obecn\u00fd
+page.name.ICMP=ICMP
 page.name.Location=Lokace
 page.name.MapAppearance=Vzhled mapy
 page.name.NetSrv=S\u00ed\u0165ov\u00e1 slu\u017eba
 page.name.Polling=Vy\u010d\u00edt\u00e1n\u00ed
 page.name.Rack=Rack
+page.name.SNMP=SNMP
+page.name.SSH=SSH
 page.name.Script=Skript
 page.name.StatusCalc=V\u00fdpo\u010det stavu
 page.name.Subnets=Subnets
index 158693e..1baa635 100644 (file)
@@ -8,13 +8,13 @@ action.label.ConfPollFull=&Configuration (full)
 action.label.CreateChassis=C&hassis...
 action.label.CreateCluster=Cl&uster...
 action.label.CreateCond=Con&dition...
-action.label.CreateContainer = &Container...
-action.label.CreateIface = &Interface...
-action.label.CreateMobile = &Mobile device...
-action.label.CreateNetSrv = Network &service...
-action.label.CreateNode = &Node...
-action.label.CreateRack = &Rack...
-action.label.CreateVPNConnector = &VPN connector...
+action.label.CreateContainer= &Container...
+action.label.CreateIface= &Interface...
+action.label.CreateMobile= &Mobile device...
+action.label.CreateNetSrv= Network &service...
+action.label.CreateNode= &Node...
+action.label.CreateRack= &Rack...
+action.label.CreateVPNConnector= &VPN connector...
 action.label.CreateZone=Create &zone...
 action.label.Delete= Delete
 action.label.EnterMaintMode=&Enter maintenance mode
@@ -32,6 +32,7 @@ menu.label.Create=&Create
 menu.label.Maintenance=&Maintenance
 menu.label.Poll= &Poll
 page.name.AccessControl=Access Control
+page.name.Agent=Agent
 page.name.AutoApply=Automatic Apply Rules
 page.name.AutoBind=Automatic Bind Rules
 page.name.ClusterNet=Cluster Networks
@@ -43,11 +44,14 @@ page.name.Dashboards=Dashboards
 page.name.Data=Data
 page.name.EventsStatus=Events and Status
 page.name.General=General
+page.name.ICMP=ICMP
 page.name.Location=Location
 page.name.MapAppearance= Map Appearance
 page.name.NetSrv= Network Service
 page.name.Polling= Polling
 page.name.Rack=Rack
+page.name.SNMP=SNMP
+page.name.SSH=SSH
 page.name.Script= Script
 page.name.StatusCalc= Status Calculation
 page.name.Subnets=Subnets
index cbdf9b4..3e4921d 100644 (file)
@@ -8,13 +8,13 @@ action.label.ConfPollFull=&Configuration (full)
 action.label.CreateChassis=C&hassis...
 action.label.CreateCluster=Cl&uster...
 action.label.CreateCond=Con&dition...
-action.label.CreateContainer = &Container...
-action.label.CreateIface = &Interface...
-action.label.CreateMobile = &Mobile device...
-action.label.CreateNetSrv = Network &service...
-action.label.CreateNode = &Node...
-action.label.CreateRack = &Rack...
-action.label.CreateVPNConnector = &VPN connector...
+action.label.CreateContainer= &Container...
+action.label.CreateIface= &Interface...
+action.label.CreateMobile= &Mobile device...
+action.label.CreateNetSrv= Network &service...
+action.label.CreateNode= &Node...
+action.label.CreateRack= &Rack...
+action.label.CreateVPNConnector= &VPN connector...
 action.label.CreateZone=Create &zone...
 action.label.Delete=Delete
 action.label.EnterMaintMode=&Enter maintenance mode
@@ -32,6 +32,7 @@ menu.label.Create=&Create
 menu.label.Maintenance=&Maintenance
 menu.label.Poll=&Poll
 page.name.AccessControl=Access Control
+page.name.Agent=Agent
 page.name.AutoApply=Automatic Apply Rules
 page.name.AutoBind=Automatic Bind Rules
 page.name.ClusterNet=Cluster Networks
@@ -43,11 +44,14 @@ page.name.Dashboards=Dashboards
 page.name.Data=Data
 page.name.EventsStatus=Events and Status
 page.name.General=General
+page.name.ICMP=ICMP
 page.name.Location=Location
 page.name.MapAppearance=Map Appearance
 page.name.NetSrv=Network Service
 page.name.Polling=Polling
 page.name.Rack=Rack
+page.name.SNMP=SNMP
+page.name.SSH=SSH
 page.name.Script=Script
 page.name.StatusCalc=Status Calculation
 page.name.Subnets=Subnets
index ad222e3..17a9f10 100644 (file)
@@ -8,13 +8,13 @@ action.label.ConfPollFull=&Configuration (full)
 action.label.CreateChassis=C&hassis...
 action.label.CreateCluster=Cl&uster...
 action.label.CreateCond=Con&dition...
-action.label.CreateContainer = &Container...
-action.label.CreateIface = &Interface...
-action.label.CreateMobile = &Mobile device...
-action.label.CreateNetSrv = Network &service...
-action.label.CreateNode = &Node...
-action.label.CreateRack = &Rack...
-action.label.CreateVPNConnector = &VPN connector...
+action.label.CreateContainer= &Container...
+action.label.CreateIface= &Interface...
+action.label.CreateMobile= &Mobile device...
+action.label.CreateNetSrv= Network &service...
+action.label.CreateNode= &Node...
+action.label.CreateRack= &Rack...
+action.label.CreateVPNConnector= &VPN connector...
 action.label.CreateZone=Create &zone...
 action.label.Delete=Delete
 action.label.EnterMaintMode=&Enter maintenance mode
@@ -32,6 +32,7 @@ menu.label.Create=&Create
 menu.label.Maintenance=&Maintenance
 menu.label.Poll= &Poll
 page.name.AccessControl= Access Control
+page.name.Agent=Agent
 page.name.AutoApply= Automatic Apply Rules
 page.name.AutoBind= Automatic Bind Rules
 page.name.ClusterNet= Cluster Networks
@@ -43,11 +44,14 @@ page.name.Dashboards= Dashboards
 page.name.Data= Data
 page.name.EventsStatus= Events and Status
 page.name.General= General
+page.name.ICMP=ICMP
 page.name.Location= Location
 page.name.MapAppearance= Map Appearance
 page.name.NetSrv= Network Service
 page.name.Polling= Polling
 page.name.Rack=Rack
+page.name.SNMP=SNMP
+page.name.SSH=SSH
 page.name.Script= Script
 page.name.StatusCalc= Status Calculation
 page.name.Subnets=Subnets
index a6116e3..40f6cbf 100644 (file)
@@ -5,13 +5,13 @@ action.label.ChangeExpState= Change interface e&xpected state...
 action.label.ChangeZone= Change zone...
 action.label.ConfPoll= &Configuration
 action.label.ConfPollFull= &Configuration (full)
-action.label.CreateChassis = C&hassis...
-action.label.CreateCluster = Cl&uster...
-action.label.CreateCond = Con&dition...
-action.label.CreateContainer = &Container...
-action.label.CreateIface = &Interface...
-action.label.CreateMobile = &Mobile device...
-action.label.CreateNetSrv = Network &service...
+action.label.CreateChassis= C&hassis...
+action.label.CreateCluster= Cl&uster...
+action.label.CreateCond= Con&dition...
+action.label.CreateContainer= &Container...
+action.label.CreateIface= &Interface...
+action.label.CreateMobile= &Mobile device...
+action.label.CreateNetSrv= Network &service...
 action.label.CreateNode=&Node...
 action.label.CreateRack=&Rack...
 action.label.CreateVPNConnector=&VPN connector...
@@ -32,6 +32,7 @@ menu.label.Create=&Create
 menu.label.Maintenance=&Maintenance
 menu.label.Poll=&Poll
 page.name.AccessControl= Access Control
+page.name.Agent=Agent
 page.name.AutoApply= Automatic Apply Rules
 page.name.AutoBind= Automatic Bind Rules
 page.name.ClusterNet= Cluster Networks
@@ -43,11 +44,14 @@ page.name.Dashboards= Dashboards
 page.name.Data= Data
 page.name.EventsStatus= Events and Status
 page.name.General= General
+page.name.ICMP=ICMP
 page.name.Location= Location
 page.name.MapAppearance= Map Appearance
 page.name.NetSrv= Network Service
 page.name.Polling=Polling
 page.name.Rack=Rack
+page.name.SNMP=SNMP
+page.name.SSH=SSH
 page.name.Script=Script
 page.name.StatusCalc= Status Calculation
 page.name.Subnets=Subnets
index 5fea232..045c527 100644 (file)
@@ -16,6 +16,12 @@ action.label.CreateNode=&\u0423\u0437\u0435\u043b...
 action.label.CreateRack=\u0421&\u0442\u043e\u0439\u043a\u0443...
 action.label.CreateVPNConnector=&VPN \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435...
 action.label.CreateZone=\u0421\u043e\u0437\u0434\u0430\u0442\u044c &\u0437\u043e\u043d\u0443
+action.label.Delete= Delete
+action.label.EnterMaintMode=&Enter maintenance mode
+action.label.IfNamesPoll= &Interface names
+action.label.InstanceDiscoveryPoll= I&nstance discovery
+action.label.LeaveMaintMode=&Leave maintenance mode
+action.label.Manage= Manage
 action.label.RemoveNode=&\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0443\u0437\u0435\u043b...
 action.label.ScheduleMaintenance=\u0417\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435
 action.label.StatusPoll=&\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435
@@ -26,6 +32,7 @@ menu.label.Create=&\u0421\u043e\u0437\u0434\u0430\u0442\u044c
 menu.label.Maintenance=&\u041e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435
 menu.label.Poll=&\u041e\u043f\u0440\u043e\u0441
 page.name.AccessControl=\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430
+page.name.Agent=\u0410\u0433\u0435\u043d\u0442
 page.name.AutoApply=\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430
 page.name.AutoBind=\u041f\u0440\u0430\u0432\u0438\u043b\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438
 page.name.ClusterNet=\u0421\u0435\u0442\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430
@@ -37,11 +44,14 @@ page.name.Dashboards=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043
 page.name.Data=\u0414\u0430\u043d\u043d\u044b\u0435
 page.name.EventsStatus=\u0421\u043e\u0431\u044b\u0442\u0438\u044f \u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435
 page.name.General=\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435
+page.name.ICMP=ICMP
 page.name.Location=\u0413\u0435\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435
 page.name.MapAppearance=\u0412\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u043a\u0430\u0440\u0442\u044b
 page.name.NetSrv=\u0421\u0435\u0442\u0435\u0432\u043e\u0439 \u0440\u0435\u0441\u0443\u0440\u0441
 page.name.Polling=\u041e\u043f\u0440\u043e\u0441
 page.name.Rack=\u0421\u0442\u043e\u0439\u043a\u0430
+page.name.SNMP=SNMP
+page.name.SSH=SSH
 page.name.Script=\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439
 page.name.StatusCalc=\u0412\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f
 page.name.Subnets=\u041f\u043e\u0434\u0441\u0435\u0442\u0438
index 90c5f2b..311d893 100644 (file)
@@ -5,16 +5,16 @@ action.label.ChangeExpState=Change interface e&xpected state...
 action.label.ChangeZone=Change zone...
 action.label.ConfPoll=&Configuration
 action.label.ConfPollFull=&Configuration (full)
-action.label.CreateChassis = C&hassis...
-action.label.CreateCluster = Cl&uster...
-action.label.CreateCond = Con&dition...
-action.label.CreateContainer = &Container...
-action.label.CreateIface = &Interface...
-action.label.CreateMobile = &Mobile device...
-action.label.CreateNetSrv = Network &service...
-action.label.CreateNode = &Node...
-action.label.CreateRack = &Rack...
-action.label.CreateVPNConnector = &VPN connector...
+action.label.CreateChassis= C&hassis...
+action.label.CreateCluster= Cl&uster...
+action.label.CreateCond= Con&dition...
+action.label.CreateContainer= &Container...
+action.label.CreateIface= &Interface...
+action.label.CreateMobile= &Mobile device...
+action.label.CreateNetSrv= Network &service...
+action.label.CreateNode= &Node...
+action.label.CreateRack= &Rack...
+action.label.CreateVPNConnector= &VPN connector...
 action.label.CreateZone=Create &zone...
 action.label.Delete=Delete
 action.label.EnterMaintMode=&Enter maintenance mode
@@ -32,6 +32,7 @@ menu.label.Create=&Create
 menu.label.Maintenance=&Maintenance
 menu.label.Poll=&Poll
 page.name.AccessControl=Access Control
+page.name.Agent=Agent
 page.name.AutoApply=Automatic Apply Rules
 page.name.AutoBind=Automatic Bind Rules
 page.name.ClusterNet=Cluster Networks
@@ -43,11 +44,14 @@ page.name.Dashboards=Dashboards
 page.name.Data=Data
 page.name.EventsStatus=Events and Status
 page.name.General=General
+page.name.ICMP=ICMP
 page.name.Location=Location
 page.name.MapAppearance=Map Appearance
 page.name.NetSrv=Network Service
 page.name.Polling=Polling
 page.name.Rack=Rack
+page.name.SNMP=SNMP
+page.name.SSH=SSH
 page.name.Script=Script
 page.name.StatusCalc=Status Calculation
 page.name.Subnets=Subnets
index 4d50bcf..c4af134 100644 (file)
               </instanceof>
            </enabledWhen>
         </page>
+        <page
+              category="org.netxms.ui.eclipse.objectmanager.propertypages.Communication#10"
+              class="org.netxms.ui.eclipse.objectmanager.propertypages.SNMP"
+              id="org.netxms.ui.eclipse.objectmanager.propertypages.SNMP"
+              name="%page.name.SNMP">
+           <enabledWhen>
+              <instanceof
+                    value="org.netxms.client.objects.Node">
+              </instanceof>
+           </enabledWhen>
+        </page>
+        <page
+              category="org.netxms.ui.eclipse.objectmanager.propertypages.Communication#10"
+              class="org.netxms.ui.eclipse.objectmanager.propertypages.Agent"
+              id="org.netxms.ui.eclipse.objectmanager.propertypages.Agent"
+              name="%page.name.Agent">
+           <enabledWhen>
+              <instanceof
+                    value="org.netxms.client.objects.Node">
+              </instanceof>
+           </enabledWhen>
+        </page>
+        <page
+              category="org.netxms.ui.eclipse.objectmanager.propertypages.Communication#10"
+              class="org.netxms.ui.eclipse.objectmanager.propertypages.ICMP"
+              id="org.netxms.ui.eclipse.objectmanager.propertypages.ICMP"
+              name="%page.name.ICMP">
+           <enabledWhen>
+              <instanceof
+                    value="org.netxms.client.objects.Node">
+              </instanceof>
+           </enabledWhen>
+        </page>
+        <page
+              category="org.netxms.ui.eclipse.objectmanager.propertypages.Communication#10"
+              class="org.netxms.ui.eclipse.objectmanager.propertypages.SSH"
+              id="org.netxms.ui.eclipse.objectmanager.propertypages.SSH"
+              name="%page.name.SSH">
+           <enabledWhen>
+              <instanceof
+                    value="org.netxms.client.objects.Node">
+              </instanceof>
+           </enabledWhen>
+        </page>
   </extension>
 
    <extension
index d09a29e..10a910d 100644 (file)
@@ -402,6 +402,7 @@ public class Messages extends NLS
    public String ZoneCommunications_DefaultAgentProxy;
    public String ZoneCommunications_DefaultICMPProxy;
    public String ZoneCommunications_DefaultSNMPProxy;
+   public String ZoneCommunications_DefaultSSHProxy;
    public String ZoneCommunications_JobError;
    public String ZoneCommunications_JobName;
    public String ZoneSelectionDialog_EmptySelectionWarning;
index d2b69fb..13ca491 100644 (file)
@@ -392,6 +392,7 @@ VPNSubnets_RemoteNetworks=Remote networks
 ZoneCommunications_DefaultAgentProxy=Default agent proxy
 ZoneCommunications_DefaultICMPProxy=Default ICMP proxy
 ZoneCommunications_DefaultSNMPProxy=Default SNMP proxy
+ZoneCommunications_DefaultSSHProxy=Default SSH proxy
 ZoneCommunications_JobError=Cannot update communication settings
 ZoneCommunications_JobName=Update communication settings for zone %s
 ZoneSelectionDialog_EmptySelectionWarning=Please select zone object\!
index 69563a0..a1662a4 100644 (file)
@@ -392,6 +392,7 @@ VPNSubnets_RemoteNetworks=Remote networks
 ZoneCommunications_DefaultAgentProxy=V\u00fdchoz\u00ed proxy agenta
 ZoneCommunications_DefaultICMPProxy=V\u00fdchoz\u00ed ICMP proxy
 ZoneCommunications_DefaultSNMPProxy=V\u00fdchoz\u00ed SNMP proxy
+ZoneCommunications_DefaultSSHProxy=V\u00fdchoz\u00ed SSH proxy
 ZoneCommunications_JobError=Nelze aktualizovat komunika\u010dni nastaven\u00ed
 ZoneCommunications_JobName=Aktualizovat komunika\u010dn\u00ed nastaven\u00ed pro z\u00f3nu %s
 ZoneSelectionDialog_EmptySelectionWarning=Pros\u00edm vyberte objekt z\u00f3na\!
index 6c6c906..69665e7 100644 (file)
@@ -392,6 +392,7 @@ VPNSubnets_RemoteNetworks=Remote networks
 ZoneCommunications_DefaultAgentProxy=Default agent proxy
 ZoneCommunications_DefaultICMPProxy=Default ICMP proxy
 ZoneCommunications_DefaultSNMPProxy=Default SNMP proxy
+ZoneCommunications_DefaultSSHProxy=Default SSH proxy
 ZoneCommunications_JobError=Cannot update communication settings
 ZoneCommunications_JobName=Update communication settings for zone %s
 ZoneSelectionDialog_EmptySelectionWarning=Please select zone object\!
index b80428f..fe614d0 100644 (file)
@@ -392,6 +392,7 @@ VPNSubnets_RemoteNetworks=Remote networks
 ZoneCommunications_DefaultAgentProxy=Default agent proxy
 ZoneCommunications_DefaultICMPProxy=Default ICMP proxy
 ZoneCommunications_DefaultSNMPProxy=Default SNMP proxy
+ZoneCommunications_DefaultSSHProxy=Default SSH proxy
 ZoneCommunications_JobError=Cannot update communication settings
 ZoneCommunications_JobName=Update communication settings for zone %s
 ZoneSelectionDialog_EmptySelectionWarning=Please select zone object\!
index 6c6c906..69665e7 100644 (file)
@@ -392,6 +392,7 @@ VPNSubnets_RemoteNetworks=Remote networks
 ZoneCommunications_DefaultAgentProxy=Default agent proxy
 ZoneCommunications_DefaultICMPProxy=Default ICMP proxy
 ZoneCommunications_DefaultSNMPProxy=Default SNMP proxy
+ZoneCommunications_DefaultSSHProxy=Default SSH proxy
 ZoneCommunications_JobError=Cannot update communication settings
 ZoneCommunications_JobName=Update communication settings for zone %s
 ZoneSelectionDialog_EmptySelectionWarning=Please select zone object\!
index 15b5db4..5e5e92c 100644 (file)
@@ -392,6 +392,7 @@ VPNSubnets_RemoteNetworks=Remote networks
 ZoneCommunications_DefaultAgentProxy=Default agent proxy
 ZoneCommunications_DefaultICMPProxy=Default ICMP proxy
 ZoneCommunications_DefaultSNMPProxy=Default SNMP proxy
+ZoneCommunications_DefaultSSHProxy=Default SSH proxy
 ZoneCommunications_JobError=Cannot update communication settings
 ZoneCommunications_JobName=Update communication settings for zone %s
 ZoneSelectionDialog_EmptySelectionWarning=Please select zone object\!
index 5ef233e..2a3c551 100644 (file)
@@ -1,6 +1,6 @@
 AbstractNodePoll_Error=\u041e\u0448\u0438\u0431\u043a\u0430
 AbstractNodePoll_ErrorText=\u041e\u0448\u0438\u0431\u043a\u0430 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f: %s
-AbstractNodePoll_Warning=Warning
+AbstractNodePoll_Warning=\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435
 AccessControl_AccessAccessControl=&\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c
 AccessControl_AccessControl=\u0423&\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435
 AccessControl_AccessCreate=&\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432
@@ -32,7 +32,7 @@ AddAddressListElementDialog_Title=\u041d\u043e\u0432\u044b\u0439 \u0441\u043f\u0
 AddAddressListElementDialog_Warning=\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435
 AddClusterNode_JobError=\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0443\u0437\u0435\u043b \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440
 AddClusterNode_JobTitle=\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0443\u0437\u043b\u0430 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440
-AddSubnetDialog_Title=Add Subnet
+AddSubnetDialog_Title=\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0441\u0435\u0442\u0438 
 AttributeEditDialog_AddAttr=\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0430\u0442\u0442\u0440\u0438\u0431\u0443\u0442\u0430
 AttributeEditDialog_ModifyAttr=\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0430\u0442\u0442\u0440\u0438\u0431\u0443\u0442\u0430
 AttributeEditDialog_Name=\u0418\u043c\u044f
@@ -117,7 +117,7 @@ ConditionData_Down=&\u041d\u0438\u0436\u0435
 ConditionData_JobError=\u041e\u0448\u0438\u0431\u043a\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u0440\u0438\u043a \u0443\u0441\u043b\u043e\u0432\u0438\u044f
 ConditionData_JobName=\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u0440\u0438\u043a \u0443\u0441\u043b\u043e\u0432\u0438\u044f
 ConditionData_Modify=&\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c...
-ConditionData_Up=&\u0412\u0432\u0448\u0435
+ConditionData_Up=&\u0412\u044b\u0448\u0435
 ConditionDciEditDialog_FuncAvg=\u0421\u0440\u0435\u0434\u043d\u0435\u0435
 ConditionDciEditDialog_FuncDeviation=\u0421\u0440\u0435\u0434\u043d\u0435\u0435 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0435
 ConditionDciEditDialog_FuncDiff=\u041e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f
@@ -203,7 +203,7 @@ CreateNodeDialog_ResolveJobError=\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u04
 CreateNodeDialog_ResolveJobName=\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u0438 \u0443\u0437\u043b\u0430
 CreateNodeDialog_SNMPPort=\u041f\u043e\u0440\u0442 SNMP \u0430\u0433\u0435\u043d\u0442\u0430
 CreateNodeDialog_SNMPProxy=\u041f\u0440\u043e\u043a\u0441\u0438 \u0434\u043b\u044f SNMP
-CreateNodeDialog_ShowAgain=Show this dialog again to &create another node
+CreateNodeDialog_ShowAgain=\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u044d\u0442\u043e \u043e\u043a\u043d\u043e \u0441\u043d\u043e\u0432\u0430, \u0434\u043b\u044f &\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0443\u0437\u043b\u0430
 CreateNodeDialog_Title=\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0443\u0437\u043b\u0430
 CreateNodeDialog_Warning=\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435
 CreateNodeDialog_WarningInvalidHostname=\u0421\u0442\u0440\u043e\u043a\u0430 "%s" \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u0438, \u043b\u0438\u0431\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u0443\u0437\u043b\u0430. \u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.
@@ -233,7 +233,7 @@ CustomAttributes_Name=\u0418\u043c\u044f
 CustomAttributes_Value=\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435
 CustomAttributes_Warning=\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435
 CustomAttributes_WarningAlreadyExist=\u0418\u043c\u044f \u0430\u0442\u0442\u0440\u0438\u0431\u0443\u0442\u0430 %s \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442
-Dashboards_Dashboard=Dashboard
+Dashboards_Dashboard=\u041f\u0430\u043d\u0435\u043b\u044c
 DciListLabelProvider_JobError=\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u043c\u0435\u043d\u0438 \u043c\u0435\u0442\u0440\u0438\u043a\u0438
 DciListLabelProvider_JobName=\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u0438 \u043c\u0435\u0442\u0440\u0438\u043a\u0438
 DciListLabelProvider_Unresolved=<\u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e>
@@ -249,7 +249,7 @@ EditClusterResourceDialog_VIP=\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u
 EditClusterResourceDialog_Warning=\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435
 EditClusterResourceDialog_WarningEmptyName=\u0417\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0438\u043c\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430
 EditClusterResourceDialog_WarningInvalidIP=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 IP \u0430\u0434\u0440\u0435\u0441
-FullConfigurationPoll_FullConfigPollConfirmation=Full configuration poll will reset node capabilities and can possibly change container and template binding. Continue?
+FullConfigurationPoll_FullConfigPollConfirmation=\u041f\u043e\u043b\u043d\u044b\u0439 \u043e\u043f\u0440\u043e\u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u0431\u0440\u043e\u0441\u0438\u0442 \u0432\u0441\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0443\u0437\u043b\u0430 \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0435 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c \u0432 \u0441\u0432\u044f\u0437\u043a\u0430\u0445 \u0441 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c\u0438 \u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044e \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445. \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c?
 General_JobError=\u041e\u0448\u0438\u0431\u043a\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430
 General_JobName=\u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430
 General_ObjectClass=\u041a\u043b\u0430\u0441\u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u0430
@@ -277,11 +277,11 @@ Location_Manual=&\u0412\u0440\u0443\u0447\u043d\u0443\u044e
 Location_Postcode=\u041f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441
 Location_StreetAddress=\u0410\u0434\u0440\u0435\u0441
 Location_Undefined=&\u041d\u0435 \u0437\u0430\u0434\u0430\u043d
-MaintanenceScheduleDialog_EndDate=End date
-MaintanenceScheduleDialog_StartDate=Start date
-MaintanenceScheduleDialog_Title=Schedule Maintenance
-MaintanenceScheduleDialog_Warning=Warning
-MaintanenceScheduleDialog_WarningText=Start time must be gather end time\!
+MaintanenceScheduleDialog_EndDate=\u041e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0435
+MaintanenceScheduleDialog_StartDate=\u041d\u0430\u0447\u0430\u043b\u043e
+MaintanenceScheduleDialog_Title=\u0420\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u044f
+MaintanenceScheduleDialog_Warning=\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435
+MaintanenceScheduleDialog_WarningText=\u0414\u0430\u0442\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043c\u0435\u043d\u044c\u0448\u0435 \u0434\u0430\u0442\u044b \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u044f\!
 Manage_JobDescription=\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 %s [%d]
 Manage_JobError=\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 %s [%d]
 MapAppearance_Image=\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435
@@ -310,14 +310,14 @@ NetworkServicePolling_WarningInvalidPort=\u0412\u0432\u0435\u0434\u0438\u0442\u0
 NodePollerView_ActionClear=&\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0432\u044b\u0432\u043e\u0434
 NodePollerView_ActionRestart=&\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043e\u043f\u0440\u043e\u0441
 NodePollerView_ConfigPoll=\u041e\u043f\u0440\u043e\u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438
-NodePollerView_FullConfigPoll=Configuration Poll (Full)
-NodePollerView_InstanceDiscovery=Instance Discovery
+NodePollerView_FullConfigPoll=\u041e\u043f\u0440\u043e\u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 (\u041f\u043e\u043b\u043d\u044b\u0439)
+NodePollerView_InstanceDiscovery=\u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432
 NodePollerView_InterfacePoll=\u041e\u043f\u0440\u043e\u0441 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432
-NodePollerView_InvalidObjectID=\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 ID \u043b\u043e\u0431\u044a\u0435\u043a\u0442\u0430
+NodePollerView_InvalidObjectID=\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 ID \u043e\u0431\u044a\u0435\u043a\u0442\u0430
 NodePollerView_JobName=\u041e\u043f\u0440\u043e\u0441 \u0443\u0437\u043b\u0430: %s [%d]
 NodePollerView_StatusPoll=\u041e\u0441\u043f\u0440\u043e\u0441 \u0441\u0442\u0441\u0430\u0442\u0443\u0441\u0430
 NodePollerView_TopologyPoll=\u041e\u043f\u0440\u043e\u0441 \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u0438
-NodePolling_AgentCacheMode=Agent cache mode
+NodePolling_AgentCacheMode=\u0420\u0435\u0436\u0438\u043c \u043a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f
 NodePolling_Default=\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e
 NodePolling_Disable=&\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c
 NodePolling_EmptySelectionServer=<server>
@@ -327,8 +327,8 @@ NodePolling_GroupNetSrv=\u041e\u043f\u0440\u043e\u0441 \u0441\u0435\u0442\u0435\
 NodePolling_GroupOptions=\u041e\u043f\u0446\u0438\u0438
 NodePolling_JobError=\u041e\u0448\u0438\u0431\u043a\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043e\u043f\u0440\u043e\u0441\u0430 \u0443\u0437\u043b\u0430
 NodePolling_JobName=\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043e\u043f\u0440\u043e\u0441\u0430 \u0443\u0437\u043b\u0430
-NodePolling_Off=Off
-NodePolling_On=On
+NodePolling_Off=\u0412\u044b\u043a\u043b.
+NodePolling_On=\u0412\u043a\u043b.
 NodePolling_OptDisableAgent=\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 &NetXMS \u0430\u0433\u0435\u043d\u0442\u0430 \u043f\u0440\u0438 \u043e\u043f\u0440\u043e\u0441\u0435
 NodePolling_OptDisableConfigPoll=\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u043f\u0440\u043e\u0441 &\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438
 NodePolling_OptDisableDataCollection=\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u0431\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445
@@ -340,16 +340,16 @@ NodePolling_OptDisableStatusPoll=\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u044
 NodePolling_OptDisableTopoPoll=\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u043f\u0440\u043e\u0441 \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u0438
 NodePolling_PollerNode=\u041e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u0443\u0437\u0435\u043b
 NodePolling_PollerNodeDescription=\u0412\u0441\u0435 \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u0441\u043b\u0443\u0436\u0431\u044b \u044d\u0442\u043e\u0433\u043e \u0443\u0437\u043b\u0430 \u0431\u0443\u0434\u0443\u0442 \u043e\u043f\u0440\u043e\u0448\u0435\u043d\u044b \u043e\u0442 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0443\u0437\u043b\u0430, \u0435\u0441\u043b\u0438 \u043d\u0435 \u044d\u0442\u043e \u043d\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0441\u043b\u0443\u0436\u0431.
-RackPlacement_Height=Height
-RackPlacement_Position=Position
-RackPlacement_Rack=Rack
-RackPlacement_RackImage=Rack image
-RackPlacement_UpdatingRackPlacement=Updating rack placement for node %s
-RackProperties_BottomTop=Bottom to top
-RackProperties_Height=Height
-RackProperties_Numbering=Numbering
-RackProperties_TopBottom=Top to bottom
-RackProperties_UpdatingRackProperties=Updating rack %s properties
+RackPlacement_Height=\u0412\u044b\u0441\u043e\u0442\u0430
+RackPlacement_Position=\u041f\u043e\u0437\u0438\u0446\u0438\u044f
+RackPlacement_Rack=\u0421\u0442\u043e\u0439\u043a\u0430
+RackPlacement_RackImage=\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u0442\u043e\u0439\u043a\u0438
+RackPlacement_UpdatingRackPlacement=\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0443\u0437\u043b\u0430 %s \u0432 \u0441\u0442\u043e\u0439\u043a\u0435
+RackProperties_BottomTop=\u0421\u043d\u0438\u0437\u0443 \u0432\u0432\u0435\u0440\u0445
+RackProperties_Height=\u0412\u044b\u0441\u043e\u0442\u0430
+RackProperties_Numbering=\u041d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u044f
+RackProperties_TopBottom=\u0421\u0432\u0435\u0440\u0445\u0443 \u0432\u043d\u0438\u0437
+RackProperties_UpdatingRackProperties=\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u0438\u043d\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0441\u0442\u043e\u0439\u043a\u0438 %s
 RemoveClusterNode_JobError=\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0443\u0437\u0435\u043b \u0438\u0437 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430
 RemoveClusterNode_JobTitle=\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0443\u0437\u043b\u0430 \u0438\u0437 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430
 SetInterfaceExpStateDlg_Label=\u041d\u043e\u0432\u043e\u0435 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 (\u043e\u0432):
@@ -392,6 +392,7 @@ VPNSubnets_RemoteNetworks=\u0423\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0435
 ZoneCommunications_DefaultAgentProxy=\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u043a\u0441\u0438 \u0434\u043b\u044f NetXMS \u0430\u0433\u0435\u043d\u0442\u0430
 ZoneCommunications_DefaultICMPProxy=\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u043a\u0441\u0438 \u0434\u043b\u044f ICMP
 ZoneCommunications_DefaultSNMPProxy=\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u043a\u0441\u0438 \u0434\u043b\u044f SNMP
+ZoneCommunications_DefaultSSHProxy=\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u043a\u0441\u0438 \u0434\u043b\u044f SSH
 ZoneCommunications_JobError=\u041e\u0448\u0438\u0431\u043a\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f
 ZoneCommunications_JobName=\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0437\u043e\u043d\u044b %s
 ZoneSelectionDialog_EmptySelectionWarning=\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430 \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0437\u043e\u043d\u0443\!
index b80428f..fe614d0 100644 (file)
@@ -392,6 +392,7 @@ VPNSubnets_RemoteNetworks=Remote networks
 ZoneCommunications_DefaultAgentProxy=Default agent proxy
 ZoneCommunications_DefaultICMPProxy=Default ICMP proxy
 ZoneCommunications_DefaultSNMPProxy=Default SNMP proxy
+ZoneCommunications_DefaultSSHProxy=Default SSH proxy
 ZoneCommunications_JobError=Cannot update communication settings
 ZoneCommunications_JobName=Update communication settings for zone %s
 ZoneSelectionDialog_EmptySelectionWarning=Please select zone object\!
diff --git a/webui/webapp/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/propertypages/Agent.java b/webui/webapp/ObjectManager/src/org/netxms/ui/eclipse/objectmanager/propertypages/Agent.java
new file mode 100644 (file)
index 0000000..0e0049b
--- /dev/null
@@ -0,0 +1,233 @@
+/**
+ * NetXMS - open source network management system
+ * Copyright (C) 2003-2016 Victor Kirhenshtein
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+package org.netxms.ui.eclipse.objectmanager.propertypages;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.ui.dialogs.PropertyPage;
+import org.netxms.client.NXCObjectModificationData;
+import org.netxms.client.NXCSession;
+import org.netxms.client.objects.AbstractNode;
+import org.netxms.ui.eclipse.jobs.ConsoleJob;
+import org.netxms.ui.eclipse.objectbrowser.widgets.ObjectSelector;
+import org.netxms.ui.eclipse.objectmanager.Activator;
+import org.netxms.ui.eclipse.objectmanager.Messages;
+import org.netxms.ui.eclipse.shared.ConsoleSharedData;
+import org.netxms.ui.eclipse.tools.WidgetHelper;
+import org.netxms.ui.eclipse.widgets.LabeledText;
+
+/**
+ * "Agent" property page for node
+ */
+public class Agent extends PropertyPage
+{
+   private AbstractNode node;
+   private LabeledText agentPort;
+   private LabeledText agentSharedSecret;
+   private Combo agentAuthMethod;
+   private Button agentForceEncryption;
+   private ObjectSelector agentProxy;
+
+   /* (non-Javadoc)
+    * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
+    */
+   @Override
+   protected Control createContents(Composite parent)
+   {
+      node = (AbstractNode)getElement().getAdapter(AbstractNode.class);
+
+      Composite dialogArea = new Composite(parent, SWT.NONE);
+      FormLayout dialogLayout = new FormLayout();
+      dialogLayout.marginWidth = 0;
+      dialogLayout.marginHeight = 0;
+      dialogLayout.spacing = WidgetHelper.DIALOG_SPACING;
+      dialogArea.setLayout(dialogLayout);
+
+      agentPort = new LabeledText(dialogArea, SWT.NONE);
+      agentPort.setLabel(Messages.get().Communication_TCPPort);
+      agentPort.setText(Integer.toString(node.getAgentPort()));
+      FormData fd = new FormData();
+      fd.left = new FormAttachment(0, 0);
+      fd.top = new FormAttachment(0, 0);
+      agentPort.setLayoutData(fd);
+      
+      agentProxy = new ObjectSelector(dialogArea, SWT.NONE, true);
+      agentProxy.setLabel(Messages.get().Communication_Proxy);
+      agentProxy.setObjectId(node.getAgentProxyId());
+      fd = new FormData();
+      fd.left = new FormAttachment(agentPort, 0, SWT.RIGHT);
+      fd.right = new FormAttachment(100, 0);
+      fd.top = new FormAttachment(0, 0);
+      agentProxy.setLayoutData(fd);
+
+      agentForceEncryption = new Button(dialogArea, SWT.CHECK);
+      agentForceEncryption.setText(Messages.get().Communication_ForceEncryption);
+      agentForceEncryption.setSelection((node.getFlags() & AbstractNode.NF_FORCE_ENCRYPTION) != 0);
+      fd = new FormData();
+      fd.left = new FormAttachment(0, 0);
+      fd.top = new FormAttachment(agentPort, 0, SWT.BOTTOM);
+      agentForceEncryption.setLayoutData(fd);
+      
+      fd = new FormData();
+      fd.left = new FormAttachment(0, 0);
+      fd.top = new FormAttachment(agentForceEncryption, 0, SWT.BOTTOM);
+      agentAuthMethod = WidgetHelper.createLabeledCombo(dialogArea, SWT.BORDER | SWT.READ_ONLY, Messages.get().Communication_AuthMethod, fd);
+      agentAuthMethod.add(Messages.get().Communication_AuthNone);
+      agentAuthMethod.add(Messages.get().Communication_AuthPlain);
+      agentAuthMethod.add(Messages.get().Communication_AuthMD5);
+      agentAuthMethod.add(Messages.get().Communication_AuthSHA1);
+      agentAuthMethod.select(node.getAgentAuthMethod());
+      agentAuthMethod.addSelectionListener(new SelectionListener() {
+         @Override
+         public void widgetDefaultSelected(SelectionEvent e)
+         {
+            widgetSelected(e);
+         }
+
+         @Override
+         public void widgetSelected(SelectionEvent e)
+         {
+            agentSharedSecret.getTextControl().setEnabled(agentAuthMethod.getSelectionIndex() != AbstractNode.AGENT_AUTH_NONE);
+         }
+      });
+      
+      agentSharedSecret = new LabeledText(dialogArea, SWT.NONE);
+      agentSharedSecret.setLabel(Messages.get().Communication_SharedSecret);
+      agentSharedSecret.setText(node.getAgentSharedSecret());
+      fd = new FormData();
+      fd.left = new FormAttachment(agentAuthMethod.getParent(), 0, SWT.RIGHT);
+      fd.right = new FormAttachment(100, 0);
+      fd.top = new FormAttachment(agentForceEncryption, 0, SWT.BOTTOM);
+      agentSharedSecret.setLayoutData(fd);
+      agentSharedSecret.getTextControl().setEnabled(node.getAgentAuthMethod() != AbstractNode.AGENT_AUTH_NONE);
+      
+      return dialogArea;
+   }
+
+   /**
+    * Apply changes
+    * 
+    * @param isApply true if update operation caused by "Apply" button
+    */
+   protected boolean applyChanges(final boolean isApply)
+   {
+      final NXCObjectModificationData md = new NXCObjectModificationData(node.getObjectId());
+      
+      if (isApply)
+         setValid(false);
+      
+      try
+      {
+         md.setAgentPort(Integer.parseInt(agentPort.getText(), 10));
+      }
+      catch(NumberFormatException e)
+      {
+         MessageDialog.openWarning(getShell(), Messages.get().Communication_Warning, Messages.get().Communication_WarningInvalidAgentPort);
+         if (isApply)
+            setValid(true);
+         return false;
+      }
+      md.setAgentProxy(agentProxy.getObjectId());
+      md.setAgentAuthMethod(agentAuthMethod.getSelectionIndex());
+      md.setAgentSecret(agentSharedSecret.getText());
+      
+      /* TODO: sync in some way with "Polling" page */
+      int flags = node.getFlags();
+      if (agentForceEncryption.getSelection())
+         flags |= AbstractNode.NF_FORCE_ENCRYPTION;
+      else
+         flags &= ~AbstractNode.NF_FORCE_ENCRYPTION;
+      md.setObjectFlags(flags);
+
+      final NXCSession session = (NXCSession)ConsoleSharedData.getSession();
+      new ConsoleJob(String.format("Updating agent communication settings for node %s", node.getObjectName()), null, Activator.PLUGIN_ID, null) {
+         @Override
+         protected void runInternal(IProgressMonitor monitor) throws Exception
+         {
+            session.modifyObject(md);
+         }
+
+         @Override
+         protected String getErrorMessage()
+         {
+            return String.format("Cannot update communication settings for node %s", node.getObjectName());
+         }
+
+         @Override
+         protected void jobFinalize()
+         {
+            if (isApply)
+            {
+               runInUIThread(new Runnable() {
+                  @Override
+                  public void run()
+                  {
+                     Agent.this.setValid(true);
+                  }
+               });
+            }
+         }
+      }.start();
+      return true;
+   }
+
+   /* (non-Javadoc)
+    * @see org.eclipse.jface.preference.PreferencePage#performOk()
+    */
+   @Override
+   public boolean performOk()
+   {
+      return applyChanges(false);
+   }
+
+   /* (non-Javadoc)
+    * @see org.eclipse.jface.preference.PreferencePage#performApply()
+    */
+   @Override
+   protected void performApply()
+   {
+      applyChanges(true);
+   }
+
+   /* (non-Javadoc)
+    * @see org.eclipse.jface.preference.PreferencePage#performDefaults()
+    */
+   @Override
+   protected void performDefaults()
+   {
+      super.performDefaults();
+      
+      agentPort.setText("4700"); //$NON-NLS-1$
+      agentForceEncryption.setSelection(false);
+      agentAuthMethod.select(0);
+      agentProxy.setObjectId(0);
+      agentSharedSecret.setText(""); //$NON-NLS-1$
+      agentSharedSecret.getTextControl().setEnabled(false);
+   }
+}
index d0faea5..ce059e7 100644 (file)
 package org.netxms.ui.eclipse.objectmanager.propertypages;
 
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.ModifyEvent;
 import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.layout.FormLayout;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Combo;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Group;
 import org.eclipse.ui.dialogs.PropertyPage;
 import org.netxms.client.NXCObjectModificationData;
 import org.netxms.client.NXCSession;
 import org.netxms.client.objects.AbstractNode;
 import org.netxms.ui.eclipse.jobs.ConsoleJob;
-import org.netxms.ui.eclipse.objectbrowser.widgets.ObjectSelector;
 import org.netxms.ui.eclipse.objectmanager.Activator;
 import org.netxms.ui.eclipse.objectmanager.Messages;
 import org.netxms.ui.eclipse.shared.ConsoleSharedData;
 import org.netxms.ui.eclipse.tools.MessageDialogHelper;
-import org.netxms.ui.eclipse.tools.WidgetHelper;
 import org.netxms.ui.eclipse.widgets.LabeledText;
 
 /**
@@ -55,21 +45,7 @@ public class Communication extends PropertyPage
 {
        private AbstractNode node;
        private LabeledText primaryName;
-       private LabeledText agentPort;
-       private LabeledText agentSharedSecret;
-       private Combo agentAuthMethod;
-       private Button agentForceEncryption;
    private Button agentIsRemote;
-       private ObjectSelector agentProxy;
-       private Combo snmpVersion;
-       private LabeledText snmpPort;
-       private Combo snmpAuth;
-       private Combo snmpPriv;
-       private ObjectSelector snmpProxy;
-       private LabeledText snmpAuthName;