diff --git a/pom.xml b/pom.xml
index e4f8114..785f88e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.wolandsoft.sss
pc-receiver
- 1.4.0.0
+ 1.4.1.1
SssPcReceiver
PC Receiver for Simple Secret Storage
diff --git a/runtime/launch4j_windows.xml b/runtime/launch4j_windows.xml
index 8857265..8f2c05e 100644
--- a/runtime/launch4j_windows.xml
+++ b/runtime/launch4j_windows.xml
@@ -2,7 +2,7 @@
true
gui
- pc-receiver-1.4.0.0.jar
+ pc-receiver-1.4.1.1.jar
..\target\SiestoPcReceiver.exe
@@ -28,12 +28,12 @@
64/32
- 1.4.0.0
- 1.4.0.0
+ 1.4.1.1
+ 1.4.1.1
Siesto PC-Receiver
Wolandsoft (Alexander Shulgin)
- 1.4.0.0
- 1.4.0.0
+ 1.4.1.1
+ 1.4.1.1
Siesto PC-Receiver
Siesto PC-Receiver
diff --git a/src/main/java/com/wolandsoft/sss/pcr/Receiver.java b/src/main/java/com/wolandsoft/sss/pcr/Receiver.java
index 488b859..8594c25 100644
--- a/src/main/java/com/wolandsoft/sss/pcr/Receiver.java
+++ b/src/main/java/com/wolandsoft/sss/pcr/Receiver.java
@@ -21,9 +21,15 @@
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
+import java.net.DatagramSocket;
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.net.SocketException;
import java.nio.charset.StandardCharsets;
import java.security.GeneralSecurityException;
import java.util.Base64;
+import java.util.Collections;
+import java.util.Enumeration;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.zip.CRC32;
@@ -44,6 +50,7 @@
import com.wolandsoft.sss.pcr.ui.TrayIconUI.TrayIconListener;
public class Receiver implements TrayIconListener, ServerDataListener {
+ private static final int PROTOCOL_VER = 1;
private static final Logger logger = Logger.getLogger(Receiver.class.getName());
public static void main(String[] args) throws InterruptedException {
@@ -89,14 +96,18 @@ private void hideQRCode() {
@Override
public void onShowKey() {
hideQRCode();
-
+
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
+ // store IP
+ byte[] host = mServer.getIP();
+ dos.writeInt(host.length);
+ dos.write(host, 0, host.length);
// store port
dos.writeInt(mServer.getPort());
//store host
- byte[] host = mServer.getHost().getBytes(StandardCharsets.UTF_8);
+ host = mServer.getHost().getBytes(StandardCharsets.UTF_8);
dos.writeInt(host.length);
dos.write(host, 0, host.length);
// store key
@@ -109,6 +120,7 @@ public void onShowKey() {
checksum.update(payload, 0, payload.length);
long checksumValue = checksum.getValue();
baos.reset();
+ dos.writeInt(PROTOCOL_VER);
dos.writeLong(checksumValue);
dos.writeInt(payload.length);
dos.write(payload);
diff --git a/src/main/java/com/wolandsoft/sss/pcr/server/TcpServer.java b/src/main/java/com/wolandsoft/sss/pcr/server/TcpServer.java
index c52deeb..e038d4e 100644
--- a/src/main/java/com/wolandsoft/sss/pcr/server/TcpServer.java
+++ b/src/main/java/com/wolandsoft/sss/pcr/server/TcpServer.java
@@ -18,10 +18,12 @@
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;
+import java.net.UnknownHostException;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.prefs.Preferences;
@@ -67,7 +69,7 @@ public void run() {
logger.log(Level.WARNING, e.getMessage(), e);
}
byte[] data = baOutStream.toByteArray();
- if(data.length > 0) {
+ if (data.length > 0) {
mListener.onDataReceived(data);
}
}
@@ -89,6 +91,15 @@ public int getPort() {
return mPort;
}
+ public byte[] getIP() {
+ try (final DatagramSocket socket = new DatagramSocket()) {
+ socket.connect(InetAddress.getByName("8.8.8.8"), 10002);
+ return socket.getLocalAddress().getAddress();
+ } catch (UnknownHostException | SocketException ignore) {
+ return mLocalAddress.getAddress();
+ }
+ }
+
public String getHost() {
return mLocalAddress.getHostName();
}