diff --git a/resources/languages/resources.properties b/resources/languages/resources.properties
index 712a1708e..4a9db76ca 100644
--- a/resources/languages/resources.properties
+++ b/resources/languages/resources.properties
@@ -1117,6 +1117,7 @@ plugin.notificationconfig.event.OutgoingCall=Outgoing Call
plugin.notificationconfig.event.BusyCall=Busy Call
plugin.notificationconfig.event.CallSaved=Call Saved
plugin.notificationconfig.event.HangUp=Hang Up
+plugin.notificationconfig.event.DNSSEC_NOTIFICATION=DNSSEC warnings
# ZRTP Securing
impl.media.security.WARNING_NO_RS_MATCH=No retained shared secret available.
SAS verification is recommended
@@ -1362,15 +1363,17 @@ plugin.dnsconfig.dnssec.lblNameservers=Custom name servers
plugin.dnsconfig.dnssec.lblNameserversHint=Multiple servers can be delimited with a comma, e.g. 149.20.64.20, 149.20.64.21 (OARC's Open DNSSEC Validating Resolver)
plugin.dnsconfig.dnssec.DOMAIN_NAME=Domain
plugin.dnsconfig.dnssec.MODE=Behavior
-plugin.dnsconfig.dnssec.ENABLE_FAILED=State changed failed
+plugin.dnsconfig.dnssec.ENABLE_FAILED=State change failed
plugin.dnsconfig.dnssec.ENABLE_FAILED_MSG=Change of the DNSSEC enabled state has failed.
+plugin.dnsconfig.dnssec.RESTART_WARNING=Note that enabling or disabling DNSSEC disables the parallel resolver and will only take effect the next time you start {0}.
net.java.sip.communicator.util.dns.SecureResolveMode.IgnoreDnssec=Ignore
net.java.sip.communicator.util.dns.SecureResolveMode.SecureOnly=Required
net.java.sip.communicator.util.dns.SecureResolveMode.SecureOrUnsigned=Required for signed zones
net.java.sip.communicator.util.dns.SecureResolveMode.WarnIfBogus=Ask on bogus reply
net.java.sip.communicator.util.dns.SecureResolveMode.WarnIfBogusOrUnsigned=Ask on unsigned or bogus reply
util.dns.INSECURE_ANSWER_TITLE=DNSSEC failure
-util.dns.INSECURE_ANSWER_MESSAGE=DNS answer for {0} is insecure.
+util.dns.INSECURE_ANSWER_MESSAGE_NO_REASON=DNS answer for {0} is insecure.
+util.dns.INSECURE_ANSWER_MESSAGE_REASON=DNS answer for {0} is insecure.\nReason: {1}
util.dns.DNSSEC_ADVANCED_OPTIONS=Show advanced options
util.dns.DNSSEC_ADVANCED_REASON_BOGUS=DNSSEC signed zone {0} returned invalid data.
{1}
util.dns.DNSSEC_ADVANCED_REASON_UNSIGNED={0} query for {1} is unsigned.
diff --git a/src/net/java/sip/communicator/plugin/dnsconfig/DnssecPanel.java b/src/net/java/sip/communicator/plugin/dnsconfig/DnssecPanel.java
index 09f2c965c..582a9eb1f 100644
--- a/src/net/java/sip/communicator/plugin/dnsconfig/DnssecPanel.java
+++ b/src/net/java/sip/communicator/plugin/dnsconfig/DnssecPanel.java
@@ -88,6 +88,7 @@ private void initComponents()
cl.gridy = cr.gridy = 0;
cl.anchor = cr.anchor = GridBagConstraints.LINE_START;
cl.gridx = 0;
+ cl.fill = GridBagConstraints.HORIZONTAL;
cl.weightx = 0;
cl.insets = new Insets(0, 0, 0, 10);
cr.gridx = 1;
@@ -112,23 +113,37 @@ private void initComponents()
pnlCommon.add(chkEnabled, cl);
cl.gridwidth = 1;
+ cl.gridy = ++cr.gridy;
+ JLabel lblRestart = new JLabel(
+ R.getI18NString("plugin.dnsconfig.dnssec.RESTART_WARNING",
+ new String[]{
+ R.getSettingsString("service.gui.APPLICATION_NAME")
+ }));
+ lblRestart.setBorder(BorderFactory.createEmptyBorder(0, 22, 10, 0));
+ cl.gridwidth = GridBagConstraints.REMAINDER;
+ pnlCommon.add(lblRestart, cl);
+ cl.gridwidth = 1;
+
//custom nameservers
cl.gridy = ++cr.gridy;
JLabel lblNameserver = new JLabel(
R.getI18NString("plugin.dnsconfig.dnssec.lblNameservers"));
+ lblNameserver.setBorder(BorderFactory.createEmptyBorder(0, 22, 0, 0));
pnlCommon.add(lblNameserver, cl);
txtNameservers = new JTextField();
pnlCommon.add(txtNameservers, cr);
cl.gridy = ++cr.gridy;
- JLabel lblNameserversHint = new JLabel(
+ JLabel lblNsHint = new JLabel(
R.getI18NString("plugin.dnsconfig.dnssec.lblNameserversHint"));
- pnlCommon.add(lblNameserversHint, cr);
+ lblNsHint.setBorder(BorderFactory.createEmptyBorder(0, 0, 10, 0));
+ pnlCommon.add(lblNsHint, cr);
//default dnssec handling
cl.gridy = ++cr.gridy;
JLabel lblDefault = new JLabel(
R.getI18NString("plugin.dnsconfig.dnssec.lblDefault"));
+ lblDefault.setBorder(BorderFactory.createEmptyBorder(0, 22, 0, 0));
pnlCommon.add(lblDefault, cl);
cboDefault = new JComboBox(SecureResolveMode.values());
cboDefault.setRenderer(getResolveModeRenderer());
@@ -158,7 +173,10 @@ protected void setValue(Object value)
cboTblModeEditor.setRenderer(getResolveModeRenderer());
tblDomains.getColumnModel().getColumn(1).setCellEditor(
new DefaultCellEditor(cboTblModeEditor));
- add(new JScrollPane(tblDomains), BorderLayout.CENTER);
+ JScrollPane pnlScroller = new JScrollPane(tblDomains);
+ pnlScroller.setBorder(BorderFactory.createEmptyBorder(0, 22, 0, 0));
+ pnlScroller.setOpaque(false);
+ add(pnlScroller, BorderLayout.CENTER);
}
/**
@@ -304,6 +322,7 @@ public void focusLost(FocusEvent e)
config.setProperty(
DnsUtilActivator.PNAME_DNSSEC_NAMESERVERS,
txtNameservers.getText());
+ NetworkUtils.reloadDnsResolverConfig();
}
}
diff --git a/src/net/java/sip/communicator/util/dns/ConfigurableDnssecResolver.java b/src/net/java/sip/communicator/util/dns/ConfigurableDnssecResolver.java
index 1d0d5f10f..4f0adeec3 100644
--- a/src/net/java/sip/communicator/util/dns/ConfigurableDnssecResolver.java
+++ b/src/net/java/sip/communicator/util/dns/ConfigurableDnssecResolver.java
@@ -329,13 +329,17 @@ public DnssecDialogResult getResult()
private String getExceptionMessage(SecureMessage msg)
{
- //TODO parse bogus reason text and translate
return msg.getBogusReason() == null
? R.getI18NString(
- "util.dns.INSECURE_ANSWER_MESSAGE",
+ "util.dns.INSECURE_ANSWER_MESSAGE_NO_REASON",
new String[]{msg.getQuestion().getName().toString()}
)
- : msg.getBogusReason();
+ : R.getI18NString(
+ "util.dns.INSECURE_ANSWER_MESSAGE_REASON",
+ new String[]{msg.getQuestion().getName().toString(),
+ //TODO parse bogus reason text and translate
+ msg.getBogusReason()}
+ );
}
private String createPropNameUnsigned(String fqdn, String type)