Skip to content

Commit 880a776

Browse files
committed
who said app integration est facilè. I did not.
1 parent 7c85fae commit 880a776

10 files changed

Lines changed: 111 additions & 38 deletions

File tree

libs/ASAPJava.jar

1.26 KB
Binary file not shown.

libs/SharkPKI.jar

76 Bytes
Binary file not shown.

libs/SharkPeer.jar

228 Bytes
Binary file not shown.

src/net/sharksystem/cmdline/sharkmessengerUI/ProductionUI.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,14 @@
3333
* Only commands a user should be able to execute are used below.
3434
*/
3535
public class ProductionUI {
36-
public static final String SETTINGSFILENAME = ".sharkMessengerSettings";
36+
public static final String SETTINGSFILENAME = ".sharkMessengerSessionSettings";
3737
public static final String PEERNAME_KEY = "peername";
3838
public static final String SYNC_WITH_OTHERS_IN_SECONDS_KEY = "syncWithOthersInSeconds";
3939

4040
public static void main(String[] args) throws SharkException, IOException {
4141
String peerName = null;
4242
int syncWithOthersInSeconds = ASAPHubManager.DEFAULT_WAIT_INTERVAL_IN_SECONDS;
43-
ExtraData settings = new ExtraDataFS("./" + SETTINGSFILENAME);
43+
ExtraData sessionSettings = new ExtraDataFS("./" + SETTINGSFILENAME);
4444
boolean isBack = false;
4545

4646
/**
@@ -74,7 +74,7 @@ public static void main(String[] args) throws SharkException, IOException {
7474

7575
System.out.println("Welcome to SharkMessenger version 0.1");
7676
if(peerName == null) {
77-
byte[] storedPeerNameBytes = settings.getExtra(PEERNAME_KEY);
77+
byte[] storedPeerNameBytes = sessionSettings.getExtra(PEERNAME_KEY);
7878
if(storedPeerNameBytes != null) {
7979
// we have a peer name
8080
peerName = new String(storedPeerNameBytes);
@@ -96,10 +96,10 @@ public static void main(String[] args) throws SharkException, IOException {
9696
}
9797
} while (peerName.equals(""));
9898
// store it
99-
settings.putExtra(PEERNAME_KEY, peerName.getBytes());
99+
sessionSettings.putExtra(PEERNAME_KEY, peerName.getBytes());
100100
}
101101

102-
settings.putExtra(SYNC_WITH_OTHERS_IN_SECONDS_KEY, syncWithOthersInSeconds);
102+
sessionSettings.putExtra(SYNC_WITH_OTHERS_IN_SECONDS_KEY, syncWithOthersInSeconds);
103103

104104
// Re-direct asap/shark log messages.
105105
PrintStream asapLogMessages = new PrintStream("asapLogs" + peerName + ".txt");
@@ -109,8 +109,9 @@ public static void main(String[] args) throws SharkException, IOException {
109109
if(isBack) System.out.println("Welcome back " + peerName);
110110
else System.out.println("Welcome " + peerName);
111111

112-
SharkMessengerApp sharkMessengerApp = new SharkMessengerApp(peerName, settings);
113-
SharkMessengerUI smUI = new SharkMessengerUI("", System.in, System.out, System.err, sharkMessengerApp);
112+
SharkMessengerUI smUI = new SharkMessengerUI("", System.in, System.out, System.err);
113+
SharkMessengerApp sharkMessengerApp =
114+
new SharkMessengerApp(peerName, syncWithOthersInSeconds, System.out, System.err);
114115

115116
// basics
116117
smUI.addCommand(new UICommandExit(sharkMessengerApp, smUI, "exit", false));

src/net/sharksystem/cmdline/sharkmessengerUI/SharkMessengerApp.java

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,11 @@
77
import net.sharksystem.asap.*;
88
import net.sharksystem.asap.apps.TCPServerSocketAcceptor;
99
import net.sharksystem.asap.crypto.InMemoASAPKeyStore;
10-
import net.sharksystem.asap.persons.PersonValues;
1110
import net.sharksystem.asap.pki.ASAPCertificate;
12-
import net.sharksystem.asap.pki.ASAPKeyStorage;
13-
import net.sharksystem.asap.utils.ASAPSerialization;
1411
import net.sharksystem.asap.utils.DateTimeHelper;
1512
import net.sharksystem.asap.utils.PeerIDHelper;
1613
import net.sharksystem.fs.ExtraData;
14+
import net.sharksystem.fs.ExtraDataFS;
1715
import net.sharksystem.fs.FSUtils;
1816
import net.sharksystem.hub.HubConnectionManager;
1917
import net.sharksystem.hub.HubConnectionManagerImpl;
@@ -39,40 +37,61 @@ public class SharkMessengerApp implements SharkPeerEncounterChangedListener {
3937
private static final CharSequence PEER_ID_KEY = "peerIDKey";
4038
private final SharkPeerFS sharkPeerFS;
4139

40+
// keystore
41+
private static final CharSequence KEYSTORE_MEMENTO_KEY = "keyStoreMemento";
42+
4243
//private static final CharSequence ROOTFOLDER = "sharkMessengerDataStorage";
4344
private final SharkMessengerComponent messengerComponent;
4445
private final SharkPKIComponent pkiComponent;
4546
private final HubConnectionManager hubConnectionManager;
4647
private final ASAPEncounterManager encounterManager;
4748
private final ASAPEncounterManagerAdmin encounterManagerAdmin;
4849
private final String peerDataFolderName;
49-
private final ExtraData settings;
50+
private final ExtraData appSettings;
5051
private final String peerName;
5152
private PrintStream outStream;
5253
private PrintStream errStream;
5354
private CharSequence peerID;
5455

55-
public SharkMessengerApp(String peerName, ExtraData settings) throws SharkException, IOException {
56+
public SharkMessengerApp(String peerName, PrintStream out, PrintStream err)
57+
throws SharkException, IOException {
58+
this(peerName, 60*10, out, err);
59+
}
60+
61+
public SharkMessengerApp(String peerName, int syncWithOthersInSeconds, PrintStream out, PrintStream err)
62+
throws SharkException, IOException {
63+
5664
this.peerDataFolderName = "./" + peerName;
57-
this.settings = settings;
65+
this.appSettings = new ExtraDataFS(".", "SharkMessengerSetting" + peerName);
66+
this.outStream = out;
67+
this.errStream = err;
5868
this.sharkPeerFS = new SharkPeerFS(peerName, this.peerDataFolderName);
5969
this.peerName = peerName;
60-
int syncWithOthersInSeconds = settings.getExtraInteger(SYNC_WITH_OTHERS_IN_SECONDS_KEY);
6170

62-
boolean saveNewPeerID = false;
6371
try {
64-
byte[] peerIDBytes = this.sharkPeerFS.getExtra(PEER_ID_KEY);
65-
this.peerID = ASAPSerialization.byteArray2String(peerIDBytes);
72+
this.peerID = this.sharkPeerFS.getSharkPeerExtraData().getExtraString(PEER_ID_KEY);
73+
this.tellUI("asap peer id for " + peerName + " is " + this.peerID);
6674
}
6775
catch (SharkException se) {
6876
this.peerID = peerName + "_" + PeerIDHelper.createUniqueID();
69-
saveNewPeerID = true;
77+
this.tellUI("created a new asap peer id for " + peerName + ": " + this.peerID);
78+
this.sharkPeerFS.getSharkPeerExtraData().putExtra(PEER_ID_KEY, this.peerID);
7079
}
7180

7281
// set up shark components
7382

7483
// produce KeyStore
7584
InMemoASAPKeyStore keyStore = new InMemoASAPKeyStore(this.peerID);
85+
keyStore.setMementoTarget(this.appSettings, KEYSTORE_MEMENTO_KEY);
86+
try {
87+
keyStore.restoreFromMemento(this.appSettings.getExtra(KEYSTORE_MEMENTO_KEY));
88+
this.tellUI("restored keystore from memento");
89+
}
90+
catch(SharkException se) {
91+
// no memento for key store - must be new
92+
this.tellUI("no keystore memento - must be new");
93+
}
94+
7695
// get PKI factory
7796
SharkPKIComponentFactory pkiComponentFactory = new SharkPKIComponentFactory(keyStore);
7897

@@ -88,7 +107,6 @@ public SharkMessengerApp(String peerName, ExtraData settings) throws SharkExcept
88107

89108
// all component in place - start peer
90109
this.sharkPeerFS.start(this.peerID);
91-
if(saveNewPeerID) this.sharkPeerFS.putExtra(PEER_ID_KEY, ASAPSerialization.string2byteArray(peerID));
92110

93111
// get component to add listener
94112
this.messengerComponent = (SharkMessengerComponent) this.sharkPeerFS.
@@ -147,7 +165,7 @@ public SharkPKIComponent getSharkPKIComponent() {
147165

148166
public void destroyAllData() throws SharkException, IOException {
149167
FSUtils.removeFolder(this.peerDataFolderName);
150-
this.settings.removeAll();
168+
this.appSettings.removeAll();
151169
}
152170

153171
public String getPeerName() {

src/net/sharksystem/cmdline/sharkmessengerUI/SharkMessengerUI.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,24 +25,22 @@ public class SharkMessengerUI {
2525
/**
2626
* Use for string input in unittests or no input
2727
*/
28-
public SharkMessengerUI(String batchCommands, InputStream is, PrintStream out, PrintStream err,
29-
SharkMessengerApp sharkMessengerApp) {
28+
public SharkMessengerUI(
29+
String batchCommands, InputStream is, PrintStream out, PrintStream err) {
3030
this.parsedCommands.addAll(Arrays.asList(batchCommands.trim().split(System.lineSeparator())));
3131
this.outStream = out;
3232
this.errStream = err;
3333
this.bufferedReader = new BufferedReader(new InputStreamReader(is));
34-
sharkMessengerApp.setUIStreams(this.outStream, this.errStream);
3534
}
3635

3736
/**
3837
* Use for text file as batch input
3938
*
4039
* @throws FileNotFoundException
4140
*/
42-
public SharkMessengerUI(File file, InputStream is, PrintStream out, PrintStream err,
43-
SharkMessengerApp sharkMessengerApp) throws FileNotFoundException {
41+
public SharkMessengerUI(File file, InputStream is, PrintStream out, PrintStream err) throws FileNotFoundException {
4442
this(new BufferedReader(new InputStreamReader(new FileInputStream(file)))
45-
.lines().reduce("", (a, b) -> a + System.lineSeparator() + b), is, out, err, sharkMessengerApp
43+
.lines().reduce("", (a, b) -> a + System.lineSeparator() + b), is, out, err
4644
);
4745
}
4846

src/net/sharksystem/cmdline/sharkmessengerUI/commands/extendedMessenger/ChannelPrinter.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
import net.sharksystem.asap.ASAPHop;
55
import net.sharksystem.asap.utils.DateTimeHelper;
66
import net.sharksystem.cmdline.sharkmessengerUI.SharkMessengerApp;
7+
import net.sharksystem.cmdline.sharkmessengerUI.commands.pki.PKIPrinter;
78
import net.sharksystem.messenger.*;
9+
import net.sharksystem.pki.SharkPKIComponent;
810
import net.sharksystem.utils.SerializationHelper;
911

1012
import java.io.IOException;
@@ -68,7 +70,7 @@ private String returnYesNo(boolean value) {
6870
}
6971

7072
private static final String CHANNEL_PRINTER_LINE_SEPARATOR = "\n--------------------------------------------------------------------------------\n";
71-
public String getMessagesASString(String channelUri, SharkMessageList messages)
73+
public String getMessagesASString(SharkPKIComponent pki, String channelUri, SharkMessageList messages)
7274
throws IOException, SharkMessengerException, ASAPException {
7375

7476
StringBuilder sb = new StringBuilder();
@@ -84,14 +86,14 @@ public String getMessagesASString(String channelUri, SharkMessageList messages)
8486
sb.append("#" + i);
8587
sb.append(CHANNEL_PRINTER_LINE_SEPARATOR);
8688
SharkMessage message = messages.getSharkMessage(i, true);
87-
sb.append(this.getMessageDetails(message));
89+
sb.append(this.getMessageDetails(pki, message));
8890
sb.append(CHANNEL_PRINTER_LINE_SEPARATOR);
8991
}
9092
}
9193
return sb.toString();
9294
}
9395

94-
public String getMessageDetails(SharkMessage message)
96+
public String getMessageDetails(SharkPKIComponent pki, SharkMessage message)
9597
throws IOException, ASAPException {
9698

9799
StringBuilder sb = new StringBuilder();
@@ -139,6 +141,10 @@ public String getMessageDetails(SharkMessage message)
139141
if (message.signed()) {
140142
sb.append(" | verified: ");
141143
sb.append(this.returnYesNo(message.verified()));
144+
if(message.verified()) {
145+
sb.append(" | ");
146+
sb.append(new PKIPrinter(pki).getIAString(message.getSender()));
147+
}
142148
}
143149

144150
// hoping list
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package net.sharksystem.cmdline.sharkmessengerUI.commands.pki;
2+
3+
import net.sharksystem.asap.ASAPSecurityException;
4+
import net.sharksystem.pki.SharkPKIComponent;
5+
6+
public class PKIPrinter {
7+
private final SharkPKIComponent pki;
8+
9+
public PKIPrinter(SharkPKIComponent pki) {
10+
this.pki = pki;
11+
}
12+
13+
public String getIAString(CharSequence peerID) {
14+
StringBuilder sb = new StringBuilder();
15+
sb.append("ia (");
16+
sb.append(peerID);
17+
sb.append("): ");
18+
19+
int ia = 0;
20+
try {
21+
ia = pki.getPersonValuesByID(peerID).getIdentityAssurance();
22+
} catch (ASAPSecurityException e) {
23+
// nothing found
24+
// is it you
25+
if(pki.getOwnerID().equals(peerID)) {
26+
ia = 10;
27+
}
28+
}
29+
sb.append(ia);
30+
sb.append(" (");
31+
if(ia == 0) sb.append("bad");
32+
else if(ia == 10) sb.append("perfect");
33+
else if(ia == 9) sb.append("good");
34+
else if(ia > 6) sb.append("nice");
35+
else if(ia < 4) sb.append("bad");
36+
else sb.append("enough?");
37+
sb.append(") ");
38+
39+
return sb.toString();
40+
}
41+
}

src/net/sharksystem/cmdline/sharkmessengerUI/commands/simpleMessenger/UICommandListMessages.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,14 @@ public void execute() throws Exception {
3030
try {
3131
int channelIndex = this.getIntegerArgument() - 1; // we start with 1 in UI and 0 inside
3232
SharkMessengerComponent messenger = this.getSharkMessengerApp().getSharkMessengerComponent();
33-
SharkMessengerChannel channel = messenger.getChannel(channelIndex);
33+
SharkMessengerChannel channel = null;
34+
try {
35+
channel = messenger.getChannel(channelIndex);
36+
}
37+
catch (SharkException se) {
38+
this.getSharkMessengerApp().tellUI("there is no channel at all (yet)");
39+
}
40+
3441
SharkMessageList messages = channel.getMessages();
3542
if(messages == null || messages.size() <1) {
3643
this.getSharkMessengerApp().tellUI("no messages in channel " + channelIndex);
@@ -40,7 +47,9 @@ public void execute() throws Exception {
4047
this.getSharkMessengerApp().tellUI(channelPrinter.getChannelDescription(channel));
4148

4249
this.getSharkMessengerApp().tellUI(
43-
channelPrinter.getMessagesASString(channel.getURI().toString(), messages));
50+
channelPrinter.getMessagesASString(
51+
this.getSharkMessengerApp().getSharkPKIComponent(),
52+
channel.getURI().toString(), messages));
4453
} catch (SharkException | IOException e) {
4554
this.printErrorMessage(e.getLocalizedMessage());
4655
}

tests/net/sharksystem/messenger/ReproduceAndDebug.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ private ExtraData getBobSettings() throws SharkException, IOException {
7979
private SharkMessengerUI initializeSharkMessengerUI(SharkMessengerApp sharkMessengerApp, String batchCommands)
8080
throws SharkException, IOException {
8181

82-
SharkMessengerUI smUI = new SharkMessengerUI(batchCommands, System.in, System.out, System.err, sharkMessengerApp);
82+
SharkMessengerUI smUI = new SharkMessengerUI(batchCommands, System.in, System.out, System.err);
8383

8484
// Add test received listener.
8585
sharkMessengerApp.getSharkMessengerComponent().addSharkMessagesReceivedListener(
@@ -156,8 +156,8 @@ public void reconstructIncomingChunkStorageBugLinux() throws Exception {
156156
System.lineSeparator() +
157157
"mkChannel test://t1 channel1 false";
158158

159-
SharkMessengerApp smaAlice = new SharkMessengerApp(ALICE, getAliceSettings());
160-
SharkMessengerApp smaBob = new SharkMessengerApp(BOB, getBobSettings());
159+
SharkMessengerApp smaAlice = new SharkMessengerApp(ALICE, System.out, System.err);
160+
SharkMessengerApp smaBob = new SharkMessengerApp(BOB, System.out, System.err);
161161
SharkMessengerUI smUIAlice = this.initializeSharkMessengerUI(smaAlice, cmdLogAlice);
162162
SharkMessengerUI smUIBob = this.initializeSharkMessengerUI(smaBob, cmdLogBob);
163163

@@ -188,8 +188,8 @@ public void reconstructIncomingChunkStorageBugLinuxAlternatingExecution() throws
188188
String cmdBob4th = "mkChannel test://t1 channel1 false";
189189
String cmdAlice5th = "sendMessage 0 false false hi_bob bob";
190190

191-
SharkMessengerApp smaAlice = new SharkMessengerApp(ALICE, getAliceSettings());
192-
SharkMessengerApp smaBob = new SharkMessengerApp(BOB, getBobSettings());
191+
SharkMessengerApp smaAlice = new SharkMessengerApp(ALICE, System.out, System.err);
192+
SharkMessengerApp smaBob = new SharkMessengerApp(BOB, System.out, System.err);
193193
SharkMessengerUI smUIAlice = this.initializeSharkMessengerUI(smaAlice, "");
194194
SharkMessengerUI smUIBob = this.initializeSharkMessengerUI(smaBob, "");
195195

@@ -238,8 +238,8 @@ public void reconstructThreadBugFromTests060324() throws Exception {
238238
String cmdBob4th = "mkChannel test://t1 channel1 false";
239239
String cmdAlice5th = "sendMessageTest 25 30 0 false false hi_bob bob";
240240

241-
SharkMessengerApp smaAlice = new SharkMessengerApp(ALICE, getAliceSettings());
242-
SharkMessengerApp smaBob = new SharkMessengerApp(BOB, getBobSettings());
241+
SharkMessengerApp smaAlice = new SharkMessengerApp(ALICE, System.out, System.err);
242+
SharkMessengerApp smaBob = new SharkMessengerApp(BOB, System.out, System.err);
243243
SharkMessengerUI smUIAlice = this.initializeSharkMessengerUI(smaAlice, "");
244244
SharkMessengerUI smUIBob = this.initializeSharkMessengerUI(smaBob, "");
245245

0 commit comments

Comments
 (0)