From 060f4e6632875b6b9cbe4aa367fea5a6bfd1be02 Mon Sep 17 00:00:00 2001 From: dev <dev@welterde.de> Date: Mon, 16 Nov 2009 19:44:54 +0000 Subject: [PATCH] disapproval of revision 'd07b92fb678f4dc87b62eaaeab002820b25583b6' --- apps/i2pbote/WebContent/META-INF/MANIFEST.MF | 3 - .../classes/commons-logging.properties | 1 - apps/i2pbote/WebContent/WEB-INF/lib/mail.jar | Bin 434812 -> 0 bytes .../WebContent/WEB-INF/tags/emailIdentity.tag | 2 - .../WebContent/WEB-INF/tlds/i2pbote.tld | 82 ---- apps/i2pbote/WebContent/WEB-INF/web.xml | 16 - apps/i2pbote/WebContent/buttonFrame.jsp | 47 -- apps/i2pbote/WebContent/checkMail.jsp | 26 - apps/i2pbote/WebContent/deleteIdentity.jsp | 21 - apps/i2pbote/WebContent/editIdentity.jsp | 82 ---- apps/i2pbote/WebContent/folder.jsp | 26 - apps/i2pbote/WebContent/footer.jsp | 2 - apps/i2pbote/WebContent/header.jsp | 53 -- apps/i2pbote/WebContent/i2pbote.css | 318 ------------ apps/i2pbote/WebContent/identities.jsp | 72 --- .../WebContent/images/darkbluetile.png | Bin 298 -> 0 bytes .../WebContent/images/darkerbluetile.png | Bin 1496 -> 0 bytes apps/i2pbote/WebContent/images/delete.png | Bin 475 -> 0 bytes .../WebContent/images/errortriangle.png | Bin 1637 -> 0 bytes apps/i2pbote/WebContent/images/favicon16.png | Bin 714 -> 0 bytes apps/i2pbote/WebContent/images/folder.png | Bin 600 -> 0 bytes apps/i2pbote/WebContent/images/help.png | Bin 852 -> 0 bytes apps/i2pbote/WebContent/images/i2pbote_de.png | Bin 16703 -> 0 bytes apps/i2pbote/WebContent/images/i2pbote_en.png | Bin 16251 -> 0 bytes apps/i2pbote/WebContent/images/info.png | Bin 780 -> 0 bytes .../WebContent/images/lightbluefade.png | Bin 234 -> 0 bytes .../WebContent/images/lightbluetile.png | Bin 1410 -> 0 bytes apps/i2pbote/WebContent/images/link.png | Bin 564 -> 0 bytes .../WebContent/images/mail_folder_sent.png | Bin 1234 -> 0 bytes .../WebContent/images/mail_mark_unread.png | Bin 794 -> 0 bytes apps/i2pbote/WebContent/images/sandtile.png | Bin 1392 -> 0 bytes apps/i2pbote/WebContent/images/tabletile.png | Bin 1075 -> 0 bytes .../WebContent/images/tabletile_alt.png | Bin 1131 -> 0 bytes .../WebContent/images/tabletilelighter.png | Bin 1184 -> 0 bytes .../WebContent/images/tabletitlelight.png | Bin 227 -> 0 bytes apps/i2pbote/WebContent/images/wait.gif | Bin 2182 -> 0 bytes apps/i2pbote/WebContent/images/warning.png | Bin 803 -> 0 bytes apps/i2pbote/WebContent/images/yellowtile.png | Bin 1313 -> 0 bytes apps/i2pbote/WebContent/index.jsp | 8 - apps/i2pbote/WebContent/moz_fix2.xml | 22 - apps/i2pbote/WebContent/newEmail.jsp | 59 --- apps/i2pbote/WebContent/newIdentity.jsp | 13 - apps/i2pbote/WebContent/noIdentities.jsp | 43 -- apps/i2pbote/WebContent/saveIdentity.jsp | 31 -- apps/i2pbote/WebContent/sendEmail.jsp | 13 - apps/i2pbote/doc/techdoc.txt | 462 ------------------ apps/i2pbote/doc/userdoc.txt | 18 - apps/i2pbote/src/i2p/bote/CheckEmailTask.java | 130 ----- apps/i2pbote/src/i2p/bote/Configuration.java | 192 -------- .../src/i2p/bote/EmailDestination.java | 154 ------ apps/i2pbote/src/i2p/bote/EmailIdentity.java | 123 ----- apps/i2pbote/src/i2p/bote/I2PBote.java | 256 ---------- apps/i2pbote/src/i2p/bote/Identities.java | 169 ------- apps/i2pbote/src/i2p/bote/Util.java | 81 --- .../src/i2p/bote/folder/DhtPacketFolder.java | 58 --- .../src/i2p/bote/folder/EmailFolder.java | 54 -- apps/i2pbote/src/i2p/bote/folder/Folder.java | 96 ---- .../src/i2p/bote/folder/FolderElement.java | 17 - .../bote/folder/IncompleteEmailFolder.java | 132 ----- .../i2p/bote/folder/IndexPacketFolder.java | 42 -- apps/i2pbote/src/i2p/bote/folder/Outbox.java | 72 --- .../src/i2p/bote/folder/PacketFolder.java | 62 --- apps/i2pbote/src/i2p/bote/network/DHT.java | 34 -- .../i2p/bote/network/DhtStorageHandler.java | 17 - .../bote/network/EmailAddressResolver.java | 18 - .../i2p/bote/network/I2PPacketDispatcher.java | 101 ---- .../src/i2p/bote/network/I2PSendQueue.java | 354 -------------- .../src/i2p/bote/network/PacketBatch.java | 108 ---- .../src/i2p/bote/network/PacketBatchItem.java | 32 -- .../src/i2p/bote/network/PacketListener.java | 12 - .../src/i2p/bote/network/PeerManager.java | 26 - .../bote/network/SendQueuePacketListener.java | 12 - .../bote/network/kademlia/BucketManager.java | 323 ------------ .../kademlia/ClosestNodesLookupTask.java | 198 -------- .../i2p/bote/network/kademlia/KBucket.java | 260 ---------- .../network/kademlia/KademliaConstants.java | 13 - .../bote/network/kademlia/KademliaDHT.java | 376 -------------- .../network/kademlia/KademliaException.java | 9 - .../bote/network/kademlia/KademliaPeer.java | 76 --- .../bote/network/kademlia/KademliaUtil.java | 19 - .../i2p/bote/packet/CommunicationPacket.java | 116 ----- .../src/i2p/bote/packet/DataPacket.java | 87 ---- apps/i2pbote/src/i2p/bote/packet/Email.java | 166 ------- .../src/i2p/bote/packet/EmailPacket.java | 246 ---------- .../src/i2p/bote/packet/EmailSession.java | 49 -- .../src/i2p/bote/packet/I2PBotePacket.java | 82 ---- .../src/i2p/bote/packet/IndexPacket.java | 108 ---- .../i2pbote/src/i2p/bote/packet/PeerList.java | 70 --- .../src/i2p/bote/packet/PeerListRequest.java | 36 -- .../src/i2p/bote/packet/RelayPacket.java | 93 ---- .../src/i2p/bote/packet/RelayRequest.java | 79 --- .../src/i2p/bote/packet/ResponsePacket.java | 62 --- .../src/i2p/bote/packet/StatusCode.java | 5 - .../i2pbote/src/i2p/bote/packet/TypeCode.java | 12 - .../i2pbote/src/i2p/bote/packet/UniqueId.java | 89 ---- .../bote/packet/dht/DhtStorablePacket.java | 54 -- .../bote/packet/dht/FindClosePeersPacket.java | 55 --- .../i2p/bote/packet/dht/RetrieveRequest.java | 64 --- .../src/i2p/bote/packet/dht/StoreRequest.java | 74 --- .../i2p/bote/service/I2PBoteException.java | 11 - .../src/i2p/bote/service/I2PBoteThread.java | 20 - .../src/i2p/bote/service/OutboxProcessor.java | 155 ------ .../src/i2p/bote/service/POP3Service.java | 13 - .../i2p/bote/service/RelayPacketSender.java | 82 ---- .../src/i2p/bote/service/SMTPService.java | 13 - .../src/i2p/bote/service/StreamHandler.java | 8 - .../i2p/bote/service/StreamReceivedEvent.java | 25 - .../src/i2p/bote/web/CheckMailTag.java | 10 - apps/i2pbote/src/i2p/bote/web/JSPHelper.java | 118 ----- .../src/i2p/bote/web/PrintNumDhtPeersTag.java | 26 - .../i2p/bote/web/PrintNumRelayPeersTag.java | 26 - .../src/i2p/bote/web/ReturnStatus.java | 33 -- .../src/i2p/bote/web/SendEmailTag.java | 61 --- .../src/i2p/bote/web/ServiceInitializer.java | 24 - apps/i2pbote/test/i2p/bote/AllTests.java | 26 - .../network/kademlia/KademliaDHTTest.java | 86 ---- .../test/i2p/bote/packet/EmailPacketTest.java | 54 -- .../i2p/bote/packet/I2PBotePacketTest.java | 33 -- .../i2p/bote/packet/ResponsePacketTest.java | 48 -- .../kademlia/FindCloseNodesPacketTest.java | 36 -- .../packet/kademlia/StorageRequestTest.java | 45 -- 121 files changed, 7546 deletions(-) delete mode 100644 apps/i2pbote/WebContent/META-INF/MANIFEST.MF delete mode 100644 apps/i2pbote/WebContent/WEB-INF/classes/commons-logging.properties delete mode 100644 apps/i2pbote/WebContent/WEB-INF/lib/mail.jar delete mode 100644 apps/i2pbote/WebContent/WEB-INF/tags/emailIdentity.tag delete mode 100644 apps/i2pbote/WebContent/WEB-INF/tlds/i2pbote.tld delete mode 100644 apps/i2pbote/WebContent/WEB-INF/web.xml delete mode 100644 apps/i2pbote/WebContent/buttonFrame.jsp delete mode 100644 apps/i2pbote/WebContent/checkMail.jsp delete mode 100644 apps/i2pbote/WebContent/deleteIdentity.jsp delete mode 100644 apps/i2pbote/WebContent/editIdentity.jsp delete mode 100644 apps/i2pbote/WebContent/folder.jsp delete mode 100644 apps/i2pbote/WebContent/footer.jsp delete mode 100644 apps/i2pbote/WebContent/header.jsp delete mode 100644 apps/i2pbote/WebContent/i2pbote.css delete mode 100644 apps/i2pbote/WebContent/identities.jsp delete mode 100644 apps/i2pbote/WebContent/images/darkbluetile.png delete mode 100644 apps/i2pbote/WebContent/images/darkerbluetile.png delete mode 100644 apps/i2pbote/WebContent/images/delete.png delete mode 100644 apps/i2pbote/WebContent/images/errortriangle.png delete mode 100644 apps/i2pbote/WebContent/images/favicon16.png delete mode 100644 apps/i2pbote/WebContent/images/folder.png delete mode 100644 apps/i2pbote/WebContent/images/help.png delete mode 100644 apps/i2pbote/WebContent/images/i2pbote_de.png delete mode 100644 apps/i2pbote/WebContent/images/i2pbote_en.png delete mode 100644 apps/i2pbote/WebContent/images/info.png delete mode 100644 apps/i2pbote/WebContent/images/lightbluefade.png delete mode 100644 apps/i2pbote/WebContent/images/lightbluetile.png delete mode 100644 apps/i2pbote/WebContent/images/link.png delete mode 100644 apps/i2pbote/WebContent/images/mail_folder_sent.png delete mode 100644 apps/i2pbote/WebContent/images/mail_mark_unread.png delete mode 100644 apps/i2pbote/WebContent/images/sandtile.png delete mode 100644 apps/i2pbote/WebContent/images/tabletile.png delete mode 100644 apps/i2pbote/WebContent/images/tabletile_alt.png delete mode 100644 apps/i2pbote/WebContent/images/tabletilelighter.png delete mode 100644 apps/i2pbote/WebContent/images/tabletitlelight.png delete mode 100644 apps/i2pbote/WebContent/images/wait.gif delete mode 100644 apps/i2pbote/WebContent/images/warning.png delete mode 100644 apps/i2pbote/WebContent/images/yellowtile.png delete mode 100644 apps/i2pbote/WebContent/index.jsp delete mode 100644 apps/i2pbote/WebContent/moz_fix2.xml delete mode 100644 apps/i2pbote/WebContent/newEmail.jsp delete mode 100644 apps/i2pbote/WebContent/newIdentity.jsp delete mode 100644 apps/i2pbote/WebContent/noIdentities.jsp delete mode 100644 apps/i2pbote/WebContent/saveIdentity.jsp delete mode 100644 apps/i2pbote/WebContent/sendEmail.jsp delete mode 100644 apps/i2pbote/doc/techdoc.txt delete mode 100644 apps/i2pbote/doc/userdoc.txt delete mode 100644 apps/i2pbote/src/i2p/bote/CheckEmailTask.java delete mode 100644 apps/i2pbote/src/i2p/bote/Configuration.java delete mode 100644 apps/i2pbote/src/i2p/bote/EmailDestination.java delete mode 100644 apps/i2pbote/src/i2p/bote/EmailIdentity.java delete mode 100644 apps/i2pbote/src/i2p/bote/I2PBote.java delete mode 100644 apps/i2pbote/src/i2p/bote/Identities.java delete mode 100644 apps/i2pbote/src/i2p/bote/Util.java delete mode 100644 apps/i2pbote/src/i2p/bote/folder/DhtPacketFolder.java delete mode 100644 apps/i2pbote/src/i2p/bote/folder/EmailFolder.java delete mode 100644 apps/i2pbote/src/i2p/bote/folder/Folder.java delete mode 100644 apps/i2pbote/src/i2p/bote/folder/FolderElement.java delete mode 100644 apps/i2pbote/src/i2p/bote/folder/IncompleteEmailFolder.java delete mode 100644 apps/i2pbote/src/i2p/bote/folder/IndexPacketFolder.java delete mode 100644 apps/i2pbote/src/i2p/bote/folder/Outbox.java delete mode 100644 apps/i2pbote/src/i2p/bote/folder/PacketFolder.java delete mode 100644 apps/i2pbote/src/i2p/bote/network/DHT.java delete mode 100644 apps/i2pbote/src/i2p/bote/network/DhtStorageHandler.java delete mode 100644 apps/i2pbote/src/i2p/bote/network/EmailAddressResolver.java delete mode 100644 apps/i2pbote/src/i2p/bote/network/I2PPacketDispatcher.java delete mode 100644 apps/i2pbote/src/i2p/bote/network/I2PSendQueue.java delete mode 100644 apps/i2pbote/src/i2p/bote/network/PacketBatch.java delete mode 100644 apps/i2pbote/src/i2p/bote/network/PacketBatchItem.java delete mode 100644 apps/i2pbote/src/i2p/bote/network/PacketListener.java delete mode 100644 apps/i2pbote/src/i2p/bote/network/PeerManager.java delete mode 100644 apps/i2pbote/src/i2p/bote/network/SendQueuePacketListener.java delete mode 100644 apps/i2pbote/src/i2p/bote/network/kademlia/BucketManager.java delete mode 100644 apps/i2pbote/src/i2p/bote/network/kademlia/ClosestNodesLookupTask.java delete mode 100644 apps/i2pbote/src/i2p/bote/network/kademlia/KBucket.java delete mode 100644 apps/i2pbote/src/i2p/bote/network/kademlia/KademliaConstants.java delete mode 100644 apps/i2pbote/src/i2p/bote/network/kademlia/KademliaDHT.java delete mode 100644 apps/i2pbote/src/i2p/bote/network/kademlia/KademliaException.java delete mode 100644 apps/i2pbote/src/i2p/bote/network/kademlia/KademliaPeer.java delete mode 100644 apps/i2pbote/src/i2p/bote/network/kademlia/KademliaUtil.java delete mode 100644 apps/i2pbote/src/i2p/bote/packet/CommunicationPacket.java delete mode 100644 apps/i2pbote/src/i2p/bote/packet/DataPacket.java delete mode 100644 apps/i2pbote/src/i2p/bote/packet/Email.java delete mode 100644 apps/i2pbote/src/i2p/bote/packet/EmailPacket.java delete mode 100644 apps/i2pbote/src/i2p/bote/packet/EmailSession.java delete mode 100644 apps/i2pbote/src/i2p/bote/packet/I2PBotePacket.java delete mode 100644 apps/i2pbote/src/i2p/bote/packet/IndexPacket.java delete mode 100644 apps/i2pbote/src/i2p/bote/packet/PeerList.java delete mode 100644 apps/i2pbote/src/i2p/bote/packet/PeerListRequest.java delete mode 100644 apps/i2pbote/src/i2p/bote/packet/RelayPacket.java delete mode 100644 apps/i2pbote/src/i2p/bote/packet/RelayRequest.java delete mode 100644 apps/i2pbote/src/i2p/bote/packet/ResponsePacket.java delete mode 100644 apps/i2pbote/src/i2p/bote/packet/StatusCode.java delete mode 100644 apps/i2pbote/src/i2p/bote/packet/TypeCode.java delete mode 100644 apps/i2pbote/src/i2p/bote/packet/UniqueId.java delete mode 100644 apps/i2pbote/src/i2p/bote/packet/dht/DhtStorablePacket.java delete mode 100644 apps/i2pbote/src/i2p/bote/packet/dht/FindClosePeersPacket.java delete mode 100644 apps/i2pbote/src/i2p/bote/packet/dht/RetrieveRequest.java delete mode 100644 apps/i2pbote/src/i2p/bote/packet/dht/StoreRequest.java delete mode 100644 apps/i2pbote/src/i2p/bote/service/I2PBoteException.java delete mode 100644 apps/i2pbote/src/i2p/bote/service/I2PBoteThread.java delete mode 100644 apps/i2pbote/src/i2p/bote/service/OutboxProcessor.java delete mode 100644 apps/i2pbote/src/i2p/bote/service/POP3Service.java delete mode 100644 apps/i2pbote/src/i2p/bote/service/RelayPacketSender.java delete mode 100644 apps/i2pbote/src/i2p/bote/service/SMTPService.java delete mode 100644 apps/i2pbote/src/i2p/bote/service/StreamHandler.java delete mode 100644 apps/i2pbote/src/i2p/bote/service/StreamReceivedEvent.java delete mode 100644 apps/i2pbote/src/i2p/bote/web/CheckMailTag.java delete mode 100644 apps/i2pbote/src/i2p/bote/web/JSPHelper.java delete mode 100644 apps/i2pbote/src/i2p/bote/web/PrintNumDhtPeersTag.java delete mode 100644 apps/i2pbote/src/i2p/bote/web/PrintNumRelayPeersTag.java delete mode 100644 apps/i2pbote/src/i2p/bote/web/ReturnStatus.java delete mode 100644 apps/i2pbote/src/i2p/bote/web/SendEmailTag.java delete mode 100644 apps/i2pbote/src/i2p/bote/web/ServiceInitializer.java delete mode 100644 apps/i2pbote/test/i2p/bote/AllTests.java delete mode 100644 apps/i2pbote/test/i2p/bote/network/kademlia/KademliaDHTTest.java delete mode 100644 apps/i2pbote/test/i2p/bote/packet/EmailPacketTest.java delete mode 100644 apps/i2pbote/test/i2p/bote/packet/I2PBotePacketTest.java delete mode 100644 apps/i2pbote/test/i2p/bote/packet/ResponsePacketTest.java delete mode 100644 apps/i2pbote/test/i2p/bote/packet/kademlia/FindCloseNodesPacketTest.java delete mode 100644 apps/i2pbote/test/i2p/bote/packet/kademlia/StorageRequestTest.java diff --git a/apps/i2pbote/WebContent/META-INF/MANIFEST.MF b/apps/i2pbote/WebContent/META-INF/MANIFEST.MF deleted file mode 100644 index 5e9495128c..0000000000 --- a/apps/i2pbote/WebContent/META-INF/MANIFEST.MF +++ /dev/null @@ -1,3 +0,0 @@ -Manifest-Version: 1.0 -Class-Path: - diff --git a/apps/i2pbote/WebContent/WEB-INF/classes/commons-logging.properties b/apps/i2pbote/WebContent/WEB-INF/classes/commons-logging.properties deleted file mode 100644 index 8cc45de2c7..0000000000 --- a/apps/i2pbote/WebContent/WEB-INF/classes/commons-logging.properties +++ /dev/null @@ -1 +0,0 @@ -org.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog diff --git a/apps/i2pbote/WebContent/WEB-INF/lib/mail.jar b/apps/i2pbote/WebContent/WEB-INF/lib/mail.jar deleted file mode 100644 index 09222952eca85801a9ab78763e7ef652c6f8ad45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 434812 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%0D@xc@8iz~AD1T?YJ!;OG!7=g3&Gil0skInU@FDj^ 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⩔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%0D5H;~%{bu5Sb<GK7bHW0{Q_eM<k~MVrrKmR zknvV2vI<xSh9awgtMQD;D$te$s*&#ssz!d;A?w2yS=AXyTd0hc@-jOkInNGEqDUD2 zM=CZc?Ddr11{$hLQ$G<Dkp#b<TFjTI)az1yk<B&p?DFuMK-L{yr$fxnQ5DJ;;M;N$ z`(0@<W%~yr1z%In*U46xq-Yw)K#{cAo7K*keJeREe<js*43{&HF@6X!7lS%@EL^GD z8HnW=m6s?~?J@*rENbXwN<&|)+F(I_2@L%Vc=T7Gw|*A2@@q)_*I|(U25RK@P*{J8 z)PEDk>2Jdf{T<ZIKSIs?9%|;FqGtXv3h=wI4Et63&m8w{5SYB2ZAS#66R5He0$oGR zrdd%C&1!5^_J-w(8yG@dt}+*)G+XANcfO6@)t%^#4@Ykt6X(FM{C@b=Ec|+LFITE| zroyim;VM+^a^>vKQEd^b!{uT4{S)H%&xqf@B7Xmd`28p1_bW)%{{>!y!DxdcZofvW z_aDUVHz;BMgE@G;0IwJ6-=gLF4whrzXGjOXsSbX}JNTXD;I}vkzpEYmUhLp^Sp@tp z=NH@fz2AP5dPvzFN86FpFbI7H^)d-PjU;N&yI}fh)NEO2AubCQ*I{o5Gs@eUi{5;o zejL=s+@u`OLROM~jL{pb=tp3%S9MVJ6|2ipZOmg$m(|94Ee(CeN-t%5bdt$A=?xR$ z8labpSE}|Jbc?T1j^PBj2}w2)Zcr`tcO&VjzuQrSOHhG=(F>#z4Z0Bvy^T0XG~!{9 z(GN0>L>OZv!9*h&W*LK!G=q^OLy#mxq23q<8;ucggOLe08R@XY7zw)#FFasmz>~%( zhh&LRfx6-nWZeQ7%`fGbAsjm#m*RmSm-vvQT@EQng5k(k<y?eDG?(*=phPJJ-$zw` zMG;J=WZSc^Lho>b3~pn+$ts<EfkkI)Vv;-Ftt?U=nIrc&i!2yhyX-E}CP~9VuF`<- z7`TJnkmMqQZFQsldM-&<WHYf%G8Nf$i)?y;Y`P+wPGr;7yL9a^?#2VxqB9BjZ@X$G z+zhuWpW<fN6Y5hKlaW5t!DGyTIAbOZG-ks{BM-(J^I)1WAL)`0ON|1!)K~!P@!C~J z5!`Gnf?JJZ*lCo&9%CWwH7<mwjWWllD1h+_w=U$0d}W&4s4~m=3SNm++i6oshrKq1 zD1CR-q0mwGiJ}mm@hUtMsA#WKCPxdSmCp`4cH^uRc1&<+RrFFuu_aS$I#>+Ss!z5Q zlk|9<5+>;Zq-VtIqY>fd*(h?cyD51^!WXwyN7TQMqQLsnBhN>nlVQXg@o0+sXHivn zywS$uPs88ZSi(Y80{&TR2vcOCi@%6C14XZ&y|D5mr;{702N(ha3A-B*R>cYSCE^54 zaRPz!VuoTask~C!#87fbJ2#@yMo4k6Xv;(WWs=N1b2!_TNijzc9%&SdVSNyPeONrT zAhDka1=vrdR`rKNq3REJxJP~TXk3omQwdQ<74$NE(ATJj0mdpAVbs7(V-3v3^FpH@ zN)10;WHi7EV=XjcyU}QbD~%?U@D`Nr^>B}|5gs-+As1Z%&l^|5d)WVlaUFbYY=%D= zTbOQaW*%cJ>tk$ViN^IT$+&?HH@348#*K>W?t^HU0&%uBNQF$rb(94fXqV9sKxJLc zS0eY6!f?Jy-F+G|?EqsJ%(kDn2j(a~rP|FAwrAXnNnXQOBPV{0dWJYrvZR0)%tmy2 z!EAyPl1$(;@QF|_cnz<$wadL$pbSrEw6R3*e(2r7lF*9wZ)eG;RP2lfpa@Cy*NbOc zL8dnNkfnq)%SYBT+gM5x9S5|rftE`=HpxJ~nVmV<=B6-BW%J5lWRy(etMk()O8>a9 zMK&6I2)8mGu0XG`K()6bGmM9Qupg+T?0{;6zS=SF0GDwms+D`7pK%|g826)Uc>pqu zJuu$b3sa1TVY;yo<{OVfk+C0{<S}HDC*U&U0IW8ige#0AaJ6v=t~H)Qb@Mc;o5S#s zaTE^WHUs&QDKJ~vU>yy@cx3_%RDA&jvolD+Jnbl$r+FP8k0eQfI~Dmkdds&cvk+_y z7_aAkJ3lhZ{_Hcs8^;E9u+(yIJ3}lFIn9RR->`g%@mf&6B%w>bgz*Nx)}EIPr<KH4 z^QKXyC>w?ohZo-)A3`7Fvu+ajjl3!J(;VK+TOvR{yn~G($kP?%Bk^xI<bUn~@^yTD zmm;PN(ayYK;JVPhx_CE5OdI&dFmN~VD<U8S!Oc(z$&7#yS1;(}ijRyCt3o+sg)1Gv zXW4+eycsbW5g;E7hHFUBye?;6R|Lqfia2jpgn6@Y-cjd0@74Sod)@^$M*3M8$x;{@ zr6@QW|AtY}l^3)`KWB-45m0h1zs_D_y3HeT))HfgN5-lZ#)VJ6IEX>wB2<uV=3DGZ z7o#AG&Pm6Yds7hb36V&7ImEhF1yw4>IdI2Ws8MHI!;8)NHh#Um*b2J}CNuE0*sJO* zlkrQfb5mdhLthzUuZ>MS%_iaBu+n$eT9B?rh;lVSjH@|lo0$>h;D$ie9s8C2j`sP^ zLb+W*bxTy|Kt4$vyP$(jCd5urh|Naj&Zh1LJ>$%gkg}m2ZERX$z=b)hYN2+VRn<K^ z&{RyPaywP+gd^J64EoYJGx&4oR_I^k&BPe275apl`PT0q4ZK2PGwB7XCwbcmHjC<( zj-aEPgqn0F?ju_jUV?h*Ky4|kR}TLsCji)@+Csd3BZ})LbOWfR{vCLvKD9@o9iC%3 z!8I1HJ0RY5CnUM<f&s3(VT|huxWIJ)vRzL?p6dlDbe)1y*J-G6y#)2HGtlCC88*4j z!u75<;YQc1aFgpbxDC(maJ>$9y54}juD9S3*H7Rn*L!f(^**$_eg++`51im&490WY z`Hje7H`!4fhdUipU5M`JP5fr0X9u#uD855U%=0$qJq5k_En%-kf&O~|o8NZZIgZ)g z7OWiuX4N_}xz{R{Z)3B)nnSwW*6)5**!tZEM{w@(i1q0XuG9|~xITtN*C#N@^(l;S zeFmdkpTl_9mx!z1Lyqf@j*QQ+VJAMF9mc1H$fvjQomN&xkR6~OMEIaPh>^SUc0(dI zb9O@?Z04dvjLp1Viu;Ihus7ej5);T1h;}$}gdW`mlG=QF^ONx+E7%R0L4}@iY(X1b zfcFc7i#&(Lu_8P>l5v_96lKP-;x<;Y3)Z1zESy2F@B7eq|LUZQGVm(6qMUj>dgd2W z)H_M1Z;JcG%ggC^L+~_Oof5i}c7fOO+9i7J7;MppTKmzJjz{O_4eP_r&!{AsEoy~V zaq&{M_$;+J4Mn%AOwBH<X!2u_uuFZ2h!ZCgDCNRCfbxvl(km!x{;CzO#c39+X{szN zXTHdm>_*=XQ5?sXwzG>)Wu9hBinETg@>d}yjx9UEmX|-n%3DFlOKt4p)6iihp;NsW zI$UB031^`XMG9@~Qm+b7E^Ec9<JjeDsVFajd>mprwd(6I4ms$*kmzPG!OdZ&+XZvo zZYXk_u*e++rEU)_bN7Pf?%uG%9SxQ4I9TmYfbH&naECh)?sO-^eeMCU&pi-Y-Gkt1 z_h2~e9ttPiX>iIt0)F65hqv7$;pc8IeCp1E-@8Y_Ki#95?jFTF?r|*EJ&_G^PiATE zDJ;`HjZJdTV0rFYY>_*MmAms;wR;}B+C86baTl<C?n2h;E@DUA#jMR;!d`GMWG}lH zvmd#avY)%lo!7p9avb?qSi`oecj_l#8NXe<3qZ|b1&HuA<ncSmk!Oq0)v#RkG?+;L zvjBQ`N6?PkMGimP0y*p(em7p*2Se0v8qgbs4;=UX16w=X$7b_;_`T`_$ou#%JIA@& zF2PR`(^DuIOUOtWN43M)w6Th<9GUCOPI{=%Qr#=S<*tO@?kb4K^JI6mWAQj7slAa# zNpWmn3PP|OAxNYDIwYv*gJhk);2KJw)GHxcVTqHa+bhG$Kir$Za9;s^+*b$Lw3IHo zVhH^&4)!V=?XQBT+r|gwwu(;oD>>NlD*7VFp!aTwQNcro9Xo{AjfH`63#7VlgDm&$ zK@Ljrudb*fDg_YvJGpQbdJ_*h8!xptKDb+j+XnPq!jACWKZsJW2U6S*1?_%t1Wmb@ zKWr~`8(6<XGl+J!_HZ}mlpR((&=A@J)kZsUvHB3&)Im25FibaiOb<kxCd8OgFu?5P z)c+WcS&9jIk21)?$soRuKN9A&J<9jnV4k$Uuk%t^zxJ@owPpk*VG-ic{3}8%Y>2N^ zZ66!*{to2BDJC`J5c0kVc|7zn6Cl=1gnni+^f!|r+3XMLW{Oh@Zh&bgN@JZwX>w4a z)a&fU%OA5pT=%M7@sM4$I><k0BY%jEe0C1}2X?blwQhSiv0=Lzg1Z@tyGaALISfp5 z1k%EbyGn;Rb0nmi8BRf(fgESO>oOh6#061ih_jm^T__{zf6}t|@FyHiFB#E%6uo4L zP^$f=F@s|FXPJ*f))~sq$SiW&EC)_Q2TnU>*QRA;s!_$N_$=#iwr*9S>8Eh!Smdz5 z#Ktg8wGx#`mg;*|n+0Q4I|-$Ta6-;mfg={GFy0&k(wqcQ<^_m}$uQWQf^?k<6U-Sf z$;^SN=4{9{gTMbQbM{_l?Hy+y*rh%#jsAlpTSeB|E>e0%r|Phsi0W4L&b+^)z*dqM z5UMWCVsM!ykYFxCnJI-4=Hei|5%i-Mb^@N$|9fSxe5)Oa&9HDkMSb|u##SZoQi?-; zRA)J4HB@ireEp$r;LJ7jWx<ZHUy?E}MIO2gd8Y#TW(5p0t02?#!DMqKOgC$SV4LB< zHpBjefYX1tXY<Bqw$!e%$`TQV)xN%L&0TxY$+9(A8>>S|3mt`CzYAunSJk$DFTzJN zJD)S~yw1Lxsc_q;IH;R-it6UZpyjw2C^>tHYJ-Z2%yq~D>k-i#5Ybn_DDz4fV_uCc za19ig*Fv$m8OqHqa51*4&20`#jDc*sMj1EbY<Ueo6!L{qAujb4f7&L@bekpIR;42I zheem>Z9#Z+JCnMV@g_VTc0R?JV%r09^+sz~@3KFqKNvRQok3bZ@N)$&`p-tX6j7c4 zez>p$BpMS9RSyapQ+uFqe1m3$T@Hvkc=$8?n7SIvkJFC`27VroxAAs+h2Y;LVqxIf zli9yXgj2K!O>u%h3*o=6lDzDAcazv@7Hbl9_Kb>O0@FR`{FK;qH4<RhQP!Zm(6yEq z+MvA9hBnr?+s5WIFoUFk1uuqFpzlRFf1a%eay64!3tYt3>29_G+l{DmF9qvQjosGS zt>11N?Y7x&*W2w@yWMWL@7e9otcIo9ZJOPVu-go~&9d7uc01l~CtIytB+6u|?iMxB zAuod@aVu*gc;yE8Tw?ow08mQ<1PTBE00;neYg#&PU)%LL4gdg>8vp<#0001EZ*4Dg zb#5<hVQFkHX>DO}FHL20b75y?Lt$fRWiDfEVRLhhSPOhq)tUdFnL9H#lL10tLc%04 z#stFTB_L6GlK>K$hwcanRLd}P69$u+Fb@d0R@=p{+tymQg;uD7K$}|81(5*7hHiH& zTie=qee|LBX}7I*AKkj`uI&Gudvj;<0G8j6Ip?1Ho$q|#|NDR6cWz#I_lrXSuEQlS z9>(8$@Cgq->4g*f<j;ODR$^ZPTJR|^K8;7@?0}pd^x`vkR6aiD!67duV4se|a(rC= z9Fadqy*P%?dMWccDLCN4=XE^cMG3wjpP$rm+=HjQ2;gZc^ba~t$cK~i;TavL<oK+P z(>eyF{23i*<#^76FM3fU4?OR|b6(V9Um?DPA-Va2-1KGn_>VfiBFBI7;-B$VFP_Im z9si=^YhJv7uj}}Rj&JICQOCD*d|StNbbME8|DKNTOC3LuaQx7Nmpph`K<_ou=}5Pc z76@)`iza&;)7eC0ZzSH+81IerHMX{|xTW0`StQ^|8#@x&UJ5%lw+d+K_#Q(*aO&<# z_QZ^oz>Lc%S*_kvhbv}m&31FwCIM$Mn-TE0ZIA4XG{%#Sx1{2UOgNJ=BE6K<!fl<m z2ux^6CeoQmBC|fylQo=->2iT7RgrYsNM+)Dw=$lNZ0#{(0tMmSiOe=56ORg1MSCbx zMQf^PO_j8!N?KE8xziGfZlm#&&BJ>liSEW0xq}D07snIv%u<16HCOiLGH=6~WXf37 zI%hq7Xi3I+%A~e<!sy8MZZ%T3Nm~Vq+mg{p&-zFzE}yMMEwe2yBQcKNe5)mjX?cb~ z#T88;!ZmXk9dEahu@neY*0j#KYNXx0>25}v3OEs%dDRWYxg(l)hZRkzC2dV68vT9Q zM7LoZq17mOL|mXGW%MR@8mml+Si4Qg%9=S>r=*~ES8q=|O(GSUvCL*D+Qt>>2LolA zk}!6ui7Q2qsQreT%}TuAR6VTm|8b;dD)5iHU%ocakptZ;yvs29!ozvvPH!W}@8av4 zR+AvKD{T&zl|~|F+N~yqkysuiu4pow$VfaB>1>K@=!-<-ncd7xsYYd^ZerfqWrEx) zb6mwzuDH#l5U8%n<2^Gjp6FgQXPi`U^v`7=M!)DtW>(XX*sA`h(I<0INnR&eJw_|f zUmWeR5{h)B&)#q{n~EB%<C61}^O@Zsw|nr453k|@Cc@RuWxdIXbR?C~N~6mZN~Mx1 zA8yCTeE1Q5?8AG|=D|;V_$glVp&cDQypA_K_?Zts$1i;71dC0{X#1P9U0t%SRjpjr zyzb_pWJ0jLWnnPNB9$?MQE7EB*%g%F2YvV@ekFf??Zcb+jR*hg!*B6BA3lifKD1)3 zKuzv|6{%EYcWWYM^mk@6on6h+=yaZI<yLJDCRE`FvRKNKwkkR47!|L=Y6f$B+eU3? zvA80$rN-a;uow4Ja+Jn+W_CJg<#6m8AKt>-K72?@UNcHEk+jb>iAYekB05&k(k3@p zf{gcNWQ=}hGlM~0H)D;!wc|T%b*ErN0_($V=nyE)!+W@6C}s%E9;L;sL$;g2Tx*<? zt1BvKvbcEg2Os_o|L((o$l&h5-7>-vQfQ3YOg5FE>Hmp8dhlO9{0XG^J3jn3{!IHu zNh=;DlDmk;%rS~0Jw5Ci^i+B1!C!p%AN(&%(P%t+j7WkSv|uL5Vall2EGb+q$aAoA zEbx&;jO;e+i>YR`kXgz`2~8g*v^5gT5n(+xFk{KW2C}e0vamt2upz$$`0%%Qz=wD7 znkjmPKFErni*D!E?M9TPanh)o!P?lBOm#$hDPADUP)j76=DaSy0^YVQmE0wJ@Q5Oq zTNMagq0b6T&2>Lz*-G<{!*aLD?7m^XR7qV@Gbg`oSnINZj$LK-=T@bwQ(ly&S$oG` zmE4iOKGiPju2R?Yi<<OG-UTlER?j5O6*^cmR&LR7VvID0fcMF#9@_68&z$wLwO{#S zrCMWQ+Q<yw3S=|eBo`-+Z1KdHY#w!xNrgoc`=YcR81wo?>oQ4|#H_{E6=3A9an?pg z$G*fAb&pYAG^$d_)}BtLGP2=sR$k>%HoQBXF^E@zO6O>@k2ZzIain#eC8et*W~AdO zBW72&a3+$;rg07L`73!*E`URJ2+ka`aH^4ANR8}<YGfl+BikRx>A02e1^!B{g;6T2 zD4*9s{?la!+fNhu|8{KT^Cr#)_*JEGYzdu#J5+lbo>1K&^wTJiqjwO6r{N1di-Jc` z!NGSP6E>c~#NtVVD5@C5<Ute<VoIpu45pq`hi~R@C65H|q~iC{nJt)%2+G+{u0<3} z5JNKzyq6Lo^Jv^bS*V$GPpH}ZxX+<x(sd_SS*9(c8#ziT7cKH1w~uwJ#k-VhpDAFe z7P6UHo8RQ2@^fTQKzkg80jc5`CY(pf#^PybP<nw2WdSWVuf6UfHjLx>bb21JJwK1Y zM!xj~&Y-;A+FBP5QJ~^cl$zTme!k)vl&;eTF|+Q3ZE+JnOMwi3vzUfm2%;ZV*v(JK zJ!HV$jOSld?)|j=UTnvGNaF*P*sDAYnqJu8?IEy|13`Lepo=F6blYCvPiZMXKSWD| zOUgfkS>yP2%?RJbiBS0<Ds$#eC&a*m{QVfbc!+WRI8A*R_4q`dN%L)!=3|>O$xR7q zoHQv;N0dq8Ee68HvD`MPdK{Ck9bwW*32`~2(^3CC=8Pj=Me%Z5yk6qX*VPx%l^=^) zlCx6P&~x6?sMeY^zgB((Q>Cb1(_((DbFU@_F8xj}@Hl5@xwb_L$>*V?D9H(GF;nzc z16X$%=_Su#_5no(wWmQljKcG%p}li1*o%*$Xn6kKhGC@_aygY^1_1|%<w3|lc1*^j z#QrhV;V>59aomI>SdODa_84>Lb0ok3dhvPe#1kaV7w};`iG3Uo;y5Lq!YMqBFLV4F zPT;#Zi8t^JZzZRMj%S4*Cq)2fR7}^vL&8mCTCHWgo<M~)dx@pWoH2sK5$DW`xG1qA zz5u^gbd(v~LyOGV_cHQ~J<jDvC8YAHmblclX-l-F<uW&qA}m?RY${P~T&UHSY3ESy zz=i?Lt0+GN703!LHcXAM^*rx+Od6iDR5k2%ioFhk`eaBj=Anx6Gia<m2Y&y234w*0 zY01odGR-BK%CsSyPU_@&Jh@EECB>Zt2N)tu7f?h<OYs5|<?9UBH<-&WGC<#AB77T* z@f|F~_Xyh$Se<{!AiYEYUqOPOIT`$fS^raJ`RfeS8%(L6F*HBNAbz2Ou#{n+&r+Ho zkg{Z+vj8t;;FIVhsMB!>I~3sMBt}Y=%n!3rrrAd{1%1YZ-f<U!FJK7TF9UshEt8_d zDfwGF#GI(-=-1{AV!p}A-`1amol}rzL6oh#Y`e?0ZQHhO+qP}n{tI1pRhMnsc2C`y zxeqgO@sJTG-!e0H#NH=!uk{T-O<~rKAK5r@XY)jz#4J$ucI9EGy|sGvcI`1_3Hix_ z)#=GnVVt{~c4BcV|0IF8)?$j)i?aP41cR=fqZN3=SlH|x(=ZjY5G>`6fdaX<6F-bW zs^(+QSJnFr?WvG+7JV69zqws^+#qf1`%71-qcN@ClV2{$u=hIih0|rhew<vVoLm&{ zsJM?fxX;B|z4nRl_Q~-61`*#wIi3*BZ+i^!2eGfr=rHtYkwPpme$Y`+pKMtX+QTX~ z7z+u=r2y@zKJg(L9-5%nl8PZg#n5sQ*6B!10EO9ssABMnD5O7XtB3gF9(|D@B%?ZD zm`9P~IGWNZFoQ5lq!l1ogUBA$x=$ur%!k?}magTQJs=}Wp_|k{z3bLilv^TIsZmgI zBoGRStF?rKYK?KbR`AZY{6mr%{d{2~X)QU+Iv|Sd-Y0w^yMMO%m!5|DWJa6QpK=J# zQ%f`k65;_#kD;QffZx4wcMzzKQNol;3FI|Ohg!=I){#?DbaTlWH2dLf)5Mlmt0%Po zGC^qCt6YaO8e8Z|DU)clHEq^eFZJKjG}GTSs)a>IL*<(qA7=X&FQq$K;!aruOR#K- zQdMV>RUTn26<xwEV3^sy(iJDtKQN{treHwUBO-G_T8+pLLsXjtYAEN~je0Hn@QvuY z`@E}!>kjn6&FU@*zjIgV?fT7!Ydw@g?pgqF<-=UvG;FsI7jE5@Z2Pv2k&CMV?!&ll zU~35cHz?MaJ-8YX-k1dBdZw{al~(<ItFa%*H#pWyaOcR@No#-`Y`e|PD;4$T4l<V1 zw^<sTFf$}_HCWQ3Kw4tEh~X-GkuxvYW)Y0$I_*qNBdRvI%*kz1ILEQxVGW+nc$y^9 zTUDq>(X`+IEHkks6Y({LUC0<mI*4fTP0||M^X20j=N~}gtt%U^87L|{7b+{Ne^odQ za3U7=;?^A`*C?mu_*ilat#pl<nx$(c(&cV*vGP+He)wq^fA|6!5pW`boaC!0zF7or z1v=$Cacs6|80xrD^J-+R5ypNI{+AK^HIn-QkRt*f^35p9zMj$nA8aJTZuNd}4bIE{ z$G%@T5nst|PoBmIqw3ticzi6GC=5jQj7_yaiaGc1`h9y9mXJ^9WYIAAXxQOn)=4xD zI`XO8u+3qgqLTDiia#ERVEcvL5*Qnu(X|)V!ry@t^It`-mRm*_@D}1De*kp2f$aw# z2ADUR=sj?OgAS?q?fG&2ynQ{yjQ(qh%__QM!+u)tlv?kWWk<wAU%!423r?ZM8zp+g z0PuyXIbvM*9XF?2xrY@$p1Jegn+!MGR(ot4?L<32iJ^8f0h~0O(?U5G+z8~jb5;<0 zodwA9+p)OBd^UCMj?NDc$2Y6np#xXMuN0$u@_!&a+1cl`YaT&VXAIUvWvKN0(5cz- z2AY5X9ZV6&Ah#AEvpMAqA0_V+6a3P*e)NiOumAoB8!ZH<cUTPK*RL^@U%wdsuQs2` zF7{5QB*OM~cBaNImiBfE_Vzaa`5T(6e&LR-j`S~9kD6MW+>z+Skbr2Ywq!l&ip0){ z+}3E+@rWzRdYF#2#Dvy12X4NOs#d9-M+wh%;zJiQM1WEOkG6%>NeBdI8VLTx;dS5u zWbdanYUg#t@LDQud7jJUz?tV|yMwtmliS(-_+0*<?+5!Y@Y@S`l3PMSKAJIc(6<VL zbWl&Zgm|cXM?pTqF>)|Zy#x#)iT$P!4B^wEBSgMX`S4pTpSEE0{N&p=#I{{0M18~q zjNsQK%wC)U_1h(a9<q`2pw~_VKjIMTS2M&N==~}U{|$r-d*+|U>wWH4(-~&*pjSIY z`W5$ou4EB6V0Td=_!6&#hFwaGGnJi{rfAB4W3fBy%w+%0PKMN-JxqX+YBIL^IOTPS zS*8%=vfgvH4sB>pPAO*pru40=LAD5-%~YQ_rmQWPPNC||GCoE%)Yhb>B5h03tQLnf zfB4-+fEp8(IWODlA~??6JB8A^ID&u<N1Q*GhqkN~5-ZwPbS5ne<S(aNL(|yY?0n`z z#VZMjze<%AWj{&v5q*l1K=i3JUO+LDi}7^1JiMe#L$gLG6rMa<Q+7)yh<=k9XNaxo zKW#j#QItrd_G&6{uxJTVl0m=d8efboX09&6sp}(@U6~5kq|}Nw)0<0A!fGD+j?>CH z`Yk0!o6d<@-01miy*bvn7Q2vDS4JHw3Ln^%p)M*GQ<IdhE|sORlF9dwGjeunBjz%K zXg5Krmp;OYW}5o)fzypXt+lq=td@!Uawa8cy9v~_g0t-OSF;C1PMpAlQ#Yq4tImwX zTw~6}Rh1I*v?;aI!7cW$R~o0Pb<_0n`59?QicOmBCDw0D0-VTBPKBv6I`1^Ba$;x2 z6Z!!DfU>|p0|N88fuUvZe1$!otNsWY%Cb*}+{?Fph=$8(Y9AddP{RfbQ^Ic9A0dB% z)Y&jD`#BsCPUKma5TKvno`!e(vX%<AW`eK3a*zY<3gBw{@thFSk^R_zJwpeaY#yE4 zT|{L=n>a_zyo5~FA75XEFo~6>sK#3tk-4%FpzJq|bHqtvp<t#u{u*S0hicMKK<ej? z@ns5Qpg1Vly+WG|2gO3{7Qdr1RK6%py(PxtACV{dR2i}M&>g`6xVg12S2s?qHCsh` z2XP1qjm+FS*YQT0-68!YF=U0svfq`3vLAm1t3zpPfsAY-EsjDHx@nAT>=;js2&Ej@ zC*VRx8nKfAP#&avWb0ZZF{xAQJpL<K0<#Wi=je>oinRG9vi@rsGDd{MFVYKZ>9?+v zd$wA1#Oy|%hV6!0*Ub9*bCsXmU(NdP2;@c+B3VMHUZSC!?~&T$wTYea;fL<QEfT7% zB3okTMw=?Ifn%Fel`4K5Ig7V$i(r~5d{=dE?R|PfN!IvCo_tis4fNRBg?wPC#)|V# zt25`*wMI6ztDr``Sr#jt>*zT*&a~AIGUR2`WBLk?QIr9AH~Sdl0xGX9)5cNB?lHm` zF4lE76tyEbX2jmmYpkIvW8S$%+_=tRLMOHIV^zKG(;OmpdWG`qfOY5a=pe}6+~iNT z4aj&3nEg~TsW4Wj{syr+3Ldw}b;DSQ^NZl8#OPR7ysCNxZ71$Kh6kv44NP$l-^Dh( zgC~HkZ_Gb(8l3nFD|C2(SgD3lRA&30a6*1c`vJRy{wF$Des^H3>X@TF8lfQ1UG}O< zXs<n3_QIEc$Rm2^{9TXs>Ohiq*8ugYU&6nxHb%{Uw;S2Z3L&eV9nFoGO_7-f`pd4c zZ;w@VQ35~Qd9=spdaCZ=qYMm<er`=4up2M5egL9P_@-&_WBAufLPYr2jQU=!A>V9Y z%p$`dYL6ExGm0LxF3lEP*LXNqM0kw~Ah9b8(W}}*x0ZtKnWC!-MeHinG#ZsiMc>+r z#@|)-V61c^8-^d3iaQE}>qCQK)TgI6=jKoBwTt{CkED-IMefc6|E5>&^H-(18iKcj zA)kuUuf=2V1o(#&%KT6%B9Y+?GQk}q!yHnd4@|iNcIF|!1&UvpaR+uz8NOx3Z}ESZ z+hrBtamjUACK)|a%-|KHq?Gaeon3h3pk1KRErQi8_4Eq$cmB$gThKqFe22*GXZc{$ z?h4@u#JU)rw&j`TX)?pg*++Stcb#L}Gu^rO2&!+1|FahOaz7=%^@^K!s2T7At+AUq z6mc{7p_yFI=^sThyL+-aX3rvo+>qhlsFPp~%wgMcoAUI)9D%SK12Po0q9Z^Nhe*hd z7(K>DzylW%x1uX>h+~Z8f&znPet}q=1C9`{^w}SJ?nSW0n#dKALF))q0=~&P3Xrhd zFWU3T7U#X3<LY<4x5)onj6ig=tJoJS4mK+Dwq+va9&+0e$bduGZATF0(TSwR->qih zo?BPvj#@qozagaU1Y0{QYca`yoBRhpB3ZncEuIRn>ydqSZU0aLca25EjpKmJP!8hd zFjq9QPZCd<Cb9b=LHznZY|5q4ehKUSxbQpwARmbTKRNlo5RjqD7jh_qsNZD*7-^wG ziBwM2TCG1h1&lr*9bF+3EkYIfjopUaWz4PZ+D_I7Xa{I}KxFQ95aPBl#=H%!D6wfg z?<42oFQ>WR_xm@90A4Ad2EfSZm%6Nuuvqd%*5>SCStN}a%eW=eMzl8BF@t>{TLQa+ zK}0w!mdQPAvgv5`hM@AAE1j<PvghEohvsHoNFIF});krxiUvxd%js;C3X{)J!n7L? zYxCgjpL10(;Ub#URh#9PkbhY>9VU`#yy0Eko9SBi*j=nR;0zkrQc(U&M}h=nOk0%- zWdgq-taVg%@1#KC<iS#`&-EQ#4&&K_Mts8V;2B}fe#oM69#pJt{mEVr5TCs534IBn zBzD*UV?&^5^lK|8`Q#4`mfOAoWHK5W<KY2eg+V9li&FNPw0ZK%`3YrbK@v{9tyQSf z@_E(%YH&Plk07GhvV$e8FczGRBdeY5b?yRGmJDY5C!TZUt#0aSZw5Cr0ytrCZTh0V zEs3>FqtiseO2G2I{Ys@jZo^#6zdT86G?{A-qJq-NlbM}@t%cX1IDHQC9-Jp3uje*; zRShWL{tK3|#D5uBF=5L(!wgxp`D}@sN>>X}1hVzk0cnm2-z9nMcZR3*V*bd)CHe%G zfiAX;&dvILPWnh6sKYVHvBEdbxRgn>w1Y#UI$?VEjxsIGJ~rkQfANYhAk!mU@eMOH zW{_lz?t~vt_<|EHEWY9XgiEyIM5YzeTjCY}YjJ|+RT&xtwI&$cHcWhLkrNCdS*ltV zD=L+gK}y3cD}Jzy5tTS26!ZH8|L@N5^nK!r89%k6xy7$vg#YjG{LdP()*He@MfLfW z^QGtI*z_KfkWe6?@0X$wl_(<7ABZFcAx2a~32;m-CdOoiONnL-8*H^kY!w$lQb9#W zQB&6y-LAUp^$jict=7xVd;XIic6+k%S-&0ropkN(u9HpY8Q!bBkK;Fed|%*S;1es! z4h^#%4BZ37GVv1kko6cYiBqAbQSf?Rnft?pMZ^fwM@1+YmO3TQbD7bwbe#@!snK>i zCSD@$^d=D|*N?Xmd3vX0UXJDM>aQaBc27?cetKib<7H#V?<C4OQ?CB?V@Mz#B6Jv@ zdWrPV016poQ6ctW0Y9EG)Zjlx5gfy)!dM0wlyau0du5pYH_@_=S(IW<&MA~)*+#JJ zqgh5dlq1Y-P@DM{QIcgDHc^yi8CFrq$}-HuF3LZS=2NIgWf_K1nR*$-W|>B9;wm17 zof!v6&a#X%Fs4R)80F52<M!wdjkCn)jOW9foP(&+faXP1KV_N&vsB6|StN#GC*>N3 zVJT(Mx4TTd#t9fzqM_WSvI<7gRn*opj!9J4Pa2~rFTB}4kChCgTFT{2Bi{Nqn|O}! zbeB2|qJ19a9Q!C3j|aNLZ*cIQi0D`yoBN2rpB~ZTHctbd`$qKu5uNi;m?2X<#}09w zz0lZwDf%Clm*>!u-YQic%P=c!V{Ei_2Vfd?C3_zn&lBs#{&1hY%z{N!t!b6cZ}KZ! z#*ul2TgEY(((dTkwhWMa@iQS`arYeB>MkLpbIaPtBYW422h5;$Wdu#iIP%v&1JU`N zly2?(HSqR$4c_#Mhz`fHqUX0hb{yZd+B5$EJVj9A9Vvdu-eq9e8Ro=4G>~iXAb1QV z^PIkvc|;MyXYE_odx-H|AcbcX`rk&K3_a+4&Y}7<4a1bZGROaeLGYVHrO(_qwd)xe z(_<aBp4waavk!MyCjPkuL*MMsJG}7c@9>VyojbUHc(l9h9iIL6N7-w@2Y%K*v9ga% zl)T4j`R6I~$QQzL-;C@X*oyvra=px5D`n4Jgn!n)HoXsB5A*Pg&c8|G@4p~^yM-+0 z;@6*tNc`S=`bFuW96lN0U*W2^y`R_VBzOFG)bV^Wx=@R$61tQC(vH%(q!KxtlrV8G zo_P~8y)#i+vL6XK)K2QqPjmgg8iZZxENT-mNJ&-`%8F%~%*y~f3H3hm+W!vjlPj|c znd^k{iX>jl67u#Y!0GVTw$7`E1U~x8H|%11wBL|*rtL(s$LTmvRWGG;MhuY7VHQ*T zg%90NbRQm}W;ziFBM?oJLwFw|#`6plhkG3|grq?2Wn~Gd`ZDM+GvmM$YLG70XCvN= z69qyBae6BaPhlOQB_lR~7J|UVFMe2`pS%gf0U0%Z!U|U3)x#5%q~@LJAJ9X;S*xL{ zF0O!CtL20x=-_Hx+e0qRz^*J2pY}_Lic%J81?*~~YoS5q{S63d>>*_8*KcKFAO~<E z+7%R5ey^_!$UeP>9ZiC`qFL$OpBu<Zx=O?rYFeX7*_v_;s0x!Ph#xK^Z&?qzE{Ry# z>UwOwJHkCtpH!*iel5bTfXzHV7)g^6k%)dK&Rz!axBTv(w2oMOulAVxlCB=8jwXU* z6|Mg2S5S0l?QM%_SPHKmC@gYvC!nQo<-)w9hXM1*n!k-Qki8IR7WVT?L9W;%M|=A2 zeCI4h6Oq>4tqC*G-9)KpHo<8o4~3$JQK@}g0VS@EEO-o!^w{w91k_P6ENI?c_T6_1 zn2;hF6jKpak=H^kE~5BYrFKmwTZ#f1#j69!LxvI$O-|eHq=!|jwQkR0O-`2pu~e&U zBpdcZheewqvp$I^_w{CNyAd6Wd{P5jF_VL*vDPSX4=1JO2UL@q9+;^uhF<`$)gC1< zxYk0gRH!#cZjrbKR(}6p_gNqBu|-76V>5>2;msxm#36~1t#b=i%T;OUEB7)f;MWM9 zDh~_g$pV_7)Y%Ru%!-<Hi!3-DaTK@&Gh!3_vkbm0Lb`FD+;U~bz-V*GxM{!FHrGmN z=*r<T#C0+d>&RkorGr@m@57cRfnA+5D2|-~6Zlyt^)OC5o)t^=u=69PxUuFU(d0%m zQra02=<Bs%oeJ6MibaTG_%Fcg(L2C;C`re=ztt6fpF^48T^VJ#3pD6GM|c|xPeav1 zFDCFkAXcXx@}DBe!Y`^P9un08j8*1v0tG0hE&07AKg6%{VF{>{hnm<eU2VU-_C-|< za0ddO=a~t+y;z~*Xy22URl%$-aIcq`MBKb1GT{^Nf?EwT#79|*O~gK}|17g<n7IUA zNm`nkdt?_cAOco~MP=rN+iEj2oi{P#q77S0@z|2hAtcr1<c2CLl1A!bt<QP`*}C0m zvCbq4^5E*OP?(S}ac2gK%{t4tJi(rH>QYFwQ0q;dI8<bfoQZUj16_l+Xca|T*0=jQ z1zQM9R%Dovf)*tHq*q%adg126HdTqVDGgy>d2*5q<r;Y24I`;5DdSgETUXTD(}w9< z5P2`NEhOSAit&#~WfngsY3yu_XrolnXK6QAk#)D3QF%_N0bkVDmASe_!qF5O;qbyz z2$NfVL4NK36?DOSwmsAgQuTvS?c_&=t|!&k;w>g?=^;W?%90*RfOgYAi&p`aSonGZ z67`pfx-4yF`-)pQm7$+l|45qdm$=wV#uj2D76S4oiDO-eBNQF|BRe%S4gbz|Im7Sw zWK1*SH2UJ^K1;f}@c2u+y3H^%tr)frucp$ha4z+QY*5>NRJw7`1edGvrvn!kpNQRV zRIUXLwZ~J_s2HypX530BKe6zz(^n!*Zf3MKdP2#gcps!0zGVmHv-R7wUm@YIoe;Kw z(_U>9cFN^7HM2y0(*d$P!~UwBvuDEyei0P!y^5Ef=x4PhK^L()Gq=|${ZQKPEK<GY zk0EPK3RI0fgga!A+RIg^cLXNqD*(${8>ol|tzv;{xHWLwynKuC`gmO7n8ja-6+V&< zD``SgA~KSY-wDYKK@uEk?p9=qm}J{2qhJj!tuQFS5fwfSk#XT;k|O#>I5gmB)L*WF z=N_QAr<OkceRH&i)f8HE2eLA|_9GwFxH~w#@|JcreB?IDXm?|KL-rVy13@{VqwKzI z8#0H8D9!?5z$N^_@;>0}0Y@gv+~i``$S~%tAs1ibi0NtyRs`60oemi;$~i~w@ldv6 z8AuqmVsalq6E!)ez4Fqa`9f?3R;oE}Wi={_ZY;-S@@vcRBcg}U{L79c9*2xLJgUyC z7lp)mTlaNO5Es&E=@oKX7g$#kSuukgQBRh4dj4p4oJqV6y8`#+;!K}zQ&VZ;HQ1OS zzlQ|MaX?NX%W((!ga~q6M4s$?-4Jmc9&JC0cx2p)3R@GhiK~UCIR~|o><Fy+Imc=w z94o0zXwd0~MAL8rjd`0^lgjrD_xl=W7vhG)Qo@%Ank=6SIy)V5Mayo{rQ=eHJ<KC8 zK6h#8)HFDt#5FYHjA?WFhh^x@92v8tJ9MTF{#PAzpwX0R8=r`-<^)Y}VF4jzggP7J z)DkK^cavyL)2)R(k|-hKYB_1UL7Yg!TqPtOmwYfDfFVXyDD=T$GY*yH!7`VWd}snA z{y;Rsuu`VsM8&4rBqH}Pc4jgLohv-<<W`6tH;Ci{n!#cDxk)+97n%!Y%UZG8zKI`| zU`^F(f~6<PtyYoOjNNF`krO!Ej0@~8(ilIUD|xPMK`vCadchU9HE_rCPx7j71A+EA z(UQJpfou|$d-0Pa5b4o6yx>Xzyd4_%%QyvH&SXsQir`>`L19!V)pE~Sn9$sihEsaF zts&&4Qr^3#_4nlMS!h*t980L&Jt*NqpbOsX$lqLMSCz9EO41`b5n6NgI3UJm7aZXd zrrz`O3t=R29Ep&eJ+~coM)S=}PAarybnJ@~%duluS21q+{V?s&oLa}ZvR1)rWUk8R zj3qm%(IhlLJj)W+RIyKEJ0F@XL{%ntrLFvO4T`fxt2mE(a_ZgDLq$hg&S(;E{-RhO z9W`x70J*GfH8;B2E{-%^O7xiUYD(KgDp)lw7v`MZvpsz%6gczJ_;WUwT%9IIZeTMq zNHrmBl46C?x&?4OUDovZMpj{@vtBOFH}iHt^5cXJ+*sN$hHtvw>0xCGFq+!K-oU`H zO^s7Lzx1$-p3NQ>0JN|#vsU&!2(+xHur3T>vk~Ege?lFJo9Ba1{i`+U!FNtnd4{`* zOh;KkxIAkv$4UtfMx7YT_D=#cWEzh!UE?hQ+pveSetVvI1;R&;2p+p9k-q*tiLWIv zFbQ7v8((UmD!MtP?WrT4KFwMBq(`eNqx8I6p_KpDk?9aERT~jZ`>vX_nluw#vSUi9 zG9aVM<btD_DUD=B<jzW`VE&zD-R={*W1cuTjVJlfs1w_aZ+z|yp(pQo;y_Y0D%Uu9 z8z>b1zU!ih#w#dZ!=crE#Vg4|9`=%#xxiwD%10XO;)m71Q;$Tj6nf(xB}bfMkLiUk ziL~|V^K!#TI4N#y4XL!*bY6+faS|z>XBz1R309uhnt&2Ib6lDZ@d}qbG!Do`tfsbf zU9$5yb=CAxQk3I?G`Vbv?_oIa#NcyV@)Z$^0&ZmD;%L%E=F-||vT)Pk+C7eR9`%eM z<~c+8NUAB{;=2X>x(UAd!@aMn3Cp?W?pIG%pBDa)gXCs^j;wsb31Kph@ZkZm2Z*^_ zF&^tRZa=v2gc>U9Yf;`Ck7o}leFBD-Q*ifK5_ZQb3A?rv3{>OhME3er<NR<*%004Y zWhlSH3zOa?i+Nm|XHgDNPY{Z3L3a*@M^dhkLe{h~@VReD;;5l81>gGAsMbAN_aU`s zCxC%b(P|<|eY_e89M`l7I2*89mcBSUw=f{KDL3l2Qc1;ptp&Tmg8spC|6AHFd4+4j zV@M~Bv_5&o`w%XzJ5hJbo+R^bI&>luIr(%GPYd5sNeOGt*1n>eID0QzjE|BpfB(;9 zh*-zgz{lzsyqm!1($bKpe=Pm<_G~bRT_=wS2dxz;mN~<|w%jqjz9ns;BDc2*4?5o@ z(WCZuAWgdH6^a5U2#wAN;iYU^x29giENz?aK~XwBRbIU26|s39WcDVZ<+irxwvYSg z`R#8#H;Tgt{6IY>s`f^)O*;0`m~1W<s&<SzYtmDa&Q@1AR=HJgahkr82Y5sGCRwS? z<yT>zbGea?;@FKl$K|vmkzs6*B5#+H+C78T_40X*xr`JVjBFRb3Ke=gkVD-h;G!<m z<WPj&8=6nv$-tRXW*jIIB}15eGv`~>2m0Ss9fiR&lA3Em3TWK2A8|ZN!(1($dE%2M zBh%>54&0WdG@vLG;tXvucSGF98H?c(F!704&9{PhX|5z(zDpCo{0A2v?c^=1O|ZPD za?`rQeNVJs+r+o6$3Jd`Vf2SrXnY`c+7IcjdjjpX?)~h(QuR}eGD-3K+ELz;K{<)c zW#@*<m;}17IVMG2KH~;P+$=Grugeldt`iZo?g`%-NM9z*@HUOceP1bm_PdGYJksjc zi|!YwpA=0KzoQ||H<0(LNcZe~hl%z|?3e8@Y8<2`3qF|?&pd=;5_AZ}1|~nTqkT{5 zIh!OunVRM!#%Db)%yWov&k2J+>YL`H_npY2J3cfoX&aI3pG2>5Khw<(m`(EE(>N4; zLl!N78BLYT;x%t1)ju}(KB7+ZNo6m~sz>lbEQX1k3vKk+DqR`SziS}XH?BQ(OmSG_ zv>v(v5qfE(EOWH}as@gmz0qLrs`dHINp;<8eQvBi1yy!Ll~vzhhsND7k&a+2kvKYk zr;21|K>38rIh=@>zXLG0PuvgX;c>&U#=BMf=B0nCO$R(zl5jz-jy|!Okc_bmmkV>m zs^GWfBOYka70bn$d|00-1;a}pc8@046UDmG0l(sQBs`hS$NR``9!q%$UWj(6!<9*8 zQM-|gXEU#&yZ_}>vZDP?>Eu(w*TBUvAB`>9syfoE7?}=B-g)I;&>v7I;dPRV8<0CG zn-}!Ccf10-(W6jkF7hMQKS;TqCYQP)>!CQBOkqOCbnPTxlc|ELsaD6GHc(TShXzwi z9<+9z-1n&|<l}C*VVbIPxbiZR%b<rqC&S~~l~8Hj!-<bIlZSAAcDYnE{c}~03xe!R zGfQmVueiERIPy%OPv<fjDUR$dEPR58VJ(eLg4#7CvGiB_H)B^WE!P=E<jrY0MU?hZ zzl7?eH+Wj1#x+m%7O&*RkjF8Se$wei#`#q=?@8NY>I-orL7J)A{FKCHb%{ZVs)UsM zs~ek_bUDXPCECg4XKOciE#9p<O3nHp3Zw~ehxB7);yc6S+t6N24(JZw*FUcTSc(0N z#^rAX>mf&|8O2);5%Lbr>5MX1Ls?2LMp;cn5dP5qWX@Ap)t=UBhmMv0xV3mYEJ$ba z6WAdncTEP={hL^m=>SVebX#tI(m4%XY+}RHe}-Tow1Z{kx%U>Vdk#3yh9D3l?%>2z ze1(<k+NmL7WL$%lJU__$(rM7;djnk@bJiZ8s1sgA=G%}8#hwP|A_VG7@4dSVTlahk zbqJiZ;20V?pt(AdZ&;8*I&#KCM_*dkn2$4JzxTP5j9{B&j6aTUITatnQYqtu{}AR? z2jCfX@O66paQwlLF_;x7!~$9V=t&y-4t?h^QX1UcaFn8wLZy}`)7FGcBZW!C3?NB? z8Lxzatl7$PYqcQaR$pUsx6MyFKHWvgYxI;gn!!mD@SwzDxizgc+#t(y)fHs&YdZHZ z5+n__G`n`EKW;`;%>42|F>-YMw>+1Y#nw2?Vs!yL8GP~jJN1@9n1d%v;Is;)aQEDR zR~zckuf$MuDAK6wFogtiR!&(RKt2Y0v{HLo`eEZ5Uk66aTvlD>6ZWp>`3Z=0)8&-( zEk%9-s_gnh1u3=9&G;l}U(HV5-Ao1TiUey2ijkK=$a8I<B)6;Fs-jk&q}Kj@#*!9E z!x?A~v|0#8>}-Afs$OHze`aG{uO)7oF!1@CRHJ1)QdBHH1UOI&J;m~zc>pup0^&H| z0MqNUTHTx5F7w@Qp&Gbs?2~}oJ^mffdc;ZFMf&yNqWSk{p~QI9Z#k}4;y|~u5j2h1 z-!6V<O1KdYT04JN*YfoQ@o{2=1$HSpP~Qc};75@HG++g0<bqjxAj;i-@0e73!N#dR zag_6KSCVr)iKxQ#^r%0XfYHA~i!CYVb`DjRb3VD0(+xAJrdNA{>VH>zl_}3Sov+F1 z20E+ouAI#%KY4u92rQLzKdS8mKlu^TDLomTykP-Ep3;l*&+T%~N}kk#{$=JAJ9r0I zwBo2MbR>C|76g~9XJ@D9n@ylgtQX&czF|TB;(<uI)!|8g=kq418%P*9Jc?!$So#r% z#xDOn8DKY?gBv~rpE5%_!|Y*r6LP9wgGEQf>y$XmB}S{zaXBWAh;m`%I=={unZmfN z!RS`5)iSk%F}(=Ae46)9*@xjBb%1#nnuoRFz8_zO)BIkeu61XAg+Ar4ML_#It9~8q zH`oGOn@Dy^va<uTCMzOI4v5m~z*^Vipk%MdlG}y}y7-ZuIpc%#h#2FA;GF*yr+s2I zj7Ge|JMg?7h8>_}zYXz(%aO`H$uiP5@Bn?_*DUDIf`u?g#ucZlMP^Ggwqb!RNerX{ z%wvMY{K^*K<O0k?V$81=7IKYqkfA0Pz$Ak<B*O7whbq{TRqBRVdA}whu_qlcq`gUo z*^<mSYFEct@<M|)WsK=#WCCnbVr@)N36La<jlE~)%MwbIO<Ak(%3>v9+1c>wgkkH1 zQSEe$0C#r|l#GBBip`KA2b6<7u900Xu{|=<uxuQJ^xwhKu>-P(980|&ypM})-F(~& z7GX)a3g*P;Xfs!qENS}O-P;HY)PK<_XrC{`n<iw4YrDbBP_r}5n5S$)@^ogX<R)a4 zUb{2#?EczueG1x@m19xig>!lv+LeWqWo*DctShte7oz6m2|!cXQgUpS*6=ogK_$}u zEI%>UW^Yc!%8_T1dst(ea^jvDd5|_TTspeHRCF(mEbL))ke2vDT~#w-1$fDua5u}m z8!}C)0||B&YFyw0&YKV<tB|`zz`luL?Un*IV6*@cz8~=w1UCG{066m+3jjssz?>7O zZNO+3YU;sg(<f~RqX({jfaXA~2gQD{<ba_E@^ZlDfmt8=<-yw>%0AHbiv0?Sy$7=i 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 diff --git a/apps/i2pbote/WebContent/WEB-INF/tags/emailIdentity.tag b/apps/i2pbote/WebContent/WEB-INF/tags/emailIdentity.tag deleted file mode 100644 index 05608be272..0000000000 --- a/apps/i2pbote/WebContent/WEB-INF/tags/emailIdentity.tag +++ /dev/null @@ -1,2 +0,0 @@ -<%@ attribute name="index" required="true" description="0-based index of the email identity" %> -test \ No newline at end of file diff --git a/apps/i2pbote/WebContent/WEB-INF/tlds/i2pbote.tld b/apps/i2pbote/WebContent/WEB-INF/tlds/i2pbote.tld deleted file mode 100644 index bfb1fa4f8f..0000000000 --- a/apps/i2pbote/WebContent/WEB-INF/tlds/i2pbote.tld +++ /dev/null @@ -1,82 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<taglib version="2.0" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"> - -<tlib-version>1.0</tlib-version> -<short-name>i2pbote</short-name> -<uri>I2pBoteTags</uri> - -<tag> - <name>sendEmail</name> - <tag-class>i2p.bote.web.SendEmailTag</tag-class> - <body-content>empty</body-content> - <attribute> - <name>recipient</name> - <rtexprvalue>true</rtexprvalue> - <required>true</required> - </attribute> - <attribute> - <name>message</name> - <rtexprvalue>true</rtexprvalue> - <required>true</required> - </attribute> -</tag> - -<tag> - <name>checkForMail</name> - <tag-class>i2p.bote.web.CheckMailTag</tag-class> - <body-content>empty</body-content> -</tag> - -<tag> - <name>numDhtPeers</name> - <tag-class>i2p.bote.web.PrintNumDhtPeersTag</tag-class> - <body-content>empty</body-content> -</tag> - -<tag> - <name>numRelayPeers</name> - <tag-class>i2p.bote.web.PrintNumRelayPeersTag</tag-class> - <body-content>empty</body-content> -</tag> - -<function> - <name>getIdentities</name> - <function-class>i2p.bote.web.JSPHelper</function-class> - <function-signature> - i2p.bote.Identities getIdentities() - </function-signature> -</function> - -<function> - <name>saveIdentity</name> - <function-class>i2p.bote.web.JSPHelper</function-class> - <function-signature> - boolean saveIdentity(java.lang.String, java.lang.String, java.lang.String, java.lang.String) - </function-signature> -</function> - -<function> - <name>deleteIdentity</name> - <function-class>i2p.bote.web.JSPHelper</function-class> - <function-signature> - boolean deleteIdentity(java.lang.String) - </function-signature> -</function> - -<function> - <name>isCheckingForMail</name> - <function-class>i2p.bote.web.JSPHelper</function-class> - <function-signature> - boolean isCheckingForMail() - </function-signature> -</function> - -<function> - <name>getMailFolder</name> - <function-class>i2p.bote.web.JSPHelper</function-class> - <function-signature> - i2p.bote.EmailFolder getMailFolder(java.lang.String) - </function-signature> -</function> - -</taglib> \ No newline at end of file diff --git a/apps/i2pbote/WebContent/WEB-INF/web.xml b/apps/i2pbote/WebContent/WEB-INF/web.xml deleted file mode 100644 index 3aa2f2fc96..0000000000 --- a/apps/i2pbote/WebContent/WEB-INF/web.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> - <display-name>i2pbote</display-name> - <welcome-file-list> - <welcome-file>index.html</welcome-file> - <welcome-file>index.htm</welcome-file> - <welcome-file>index.jsp</welcome-file> - <welcome-file>default.html</welcome-file> - <welcome-file>default.htm</welcome-file> - <welcome-file>default.jsp</welcome-file> - </welcome-file-list> - - <listener> - <listener-class>i2p.bote.web.ServiceInitializer</listener-class> - </listener> -</web-app> \ No newline at end of file diff --git a/apps/i2pbote/WebContent/buttonFrame.jsp b/apps/i2pbote/WebContent/buttonFrame.jsp deleted file mode 100644 index 3e519a4adb..0000000000 --- a/apps/i2pbote/WebContent/buttonFrame.jsp +++ /dev/null @@ -1,47 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" - pageEncoding="UTF-8"%> -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> - -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="ib" uri="I2pBoteTags" %> - -<c:if test="${ib:isCheckingForMail()}"> - <c:set var="checkingForMail" value="true"/> -</c:if> - -<html> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> - <link rel="stylesheet" href="i2pbote.css" /> - <c:if test="${checkingForMail}"> - <meta http-equiv="refresh" content="20" /> - </c:if> -</head> - -<body style="background-color: transparent; margin: 0px;"> - -<table><tr> - <td> - <c:if test="${checkingForMail}"> - <div class="checkmail"> - <img src="images/wait.gif"/>Checking for mail... - </div> - </c:if> - <c:if test="${!checkingForMail}"> - <div class="checkmail"> - <form action="checkMail.jsp" target="_top" method="GET"> - <input type="hidden" name="path" value="Inbox"/> - <button type="submit" value="Check Mail">Check Mail</button> - </form> - </div> - </c:if> - </td> - <td> - <form action="newEmail.jsp" target="_top" method="GET"> - <button type="submit" value="New">New</button> - </form> - </td> -</tr></table> - -</body> -</html> \ No newline at end of file diff --git a/apps/i2pbote/WebContent/checkMail.jsp b/apps/i2pbote/WebContent/checkMail.jsp deleted file mode 100644 index ac66b1e7ef..0000000000 --- a/apps/i2pbote/WebContent/checkMail.jsp +++ /dev/null @@ -1,26 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" - pageEncoding="UTF-8"%> -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> - -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="ib" uri="I2pBoteTags" %> - -<c:choose> - <c:when test="${empty ib:getIdentities().all}"> - <jsp:forward page="noIdentities.jsp"/> - </c:when> - <c:otherwise> - <ib:checkForMail/> - <c:if test="${empty param.nextPage}"> - <c:set var="param.nextPage" value="index.jsp"/> - </c:if> - <jsp:forward page="${param.nextPage}"/> - </c:otherwise> -</c:choose> - -<p> -TODO checkMailTag, show status at the bottom (or top?), -point the Inbox link here or just check periodically and when the Check Email button is clicked? -</p> - -<jsp:include page="footer.jsp"/> \ No newline at end of file diff --git a/apps/i2pbote/WebContent/deleteIdentity.jsp b/apps/i2pbote/WebContent/deleteIdentity.jsp deleted file mode 100644 index 3b6451bcc4..0000000000 --- a/apps/i2pbote/WebContent/deleteIdentity.jsp +++ /dev/null @@ -1,21 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" - pageEncoding="UTF-8"%> -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> - -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="ib" uri="I2pBoteTags" %> - -<c:set var="errorMessage" value="${ib:deleteIdentity(param.key)}"/> - -<c:if test="${empty errorMessage}"> - <jsp:forward page="identities.jsp"> - <jsp:param name="message" value="The email identity has been deleted."/> - </jsp:forward> -</c:if> -<c:if test="${!empty errorMessage}"> - <jsp:include page="header.jsp"/> - <div class="main"> - Error: ${errorMessage} - </div> - <jsp:include page="footer.jsp"/> -</c:if> \ No newline at end of file diff --git a/apps/i2pbote/WebContent/editIdentity.jsp b/apps/i2pbote/WebContent/editIdentity.jsp deleted file mode 100644 index 4cd5181ff8..0000000000 --- a/apps/i2pbote/WebContent/editIdentity.jsp +++ /dev/null @@ -1,82 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" - pageEncoding="UTF-8"%> -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> - -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> -<%@ taglib prefix="ib" uri="I2pBoteTags" %> - -<c:choose> - <c:when test="${param.new}"> - <c:set var="title" value="New Email Identity"/> - <c:set var="commitAction" value="Create"/> - </c:when> - <c:otherwise> - <c:set var="title" value="Edit Email Identity"/> - <c:set var="commitAction" value="Save"/> - </c:otherwise> -</c:choose> - -<jsp:include page="header.jsp"> - <jsp:param name="title" value="${title}"/> -</jsp:include> - -<div class="errorMessage"> - ${param.errorMessage} -</div> - -<div class="main"> - <form name="form" action="saveIdentity.jsp"> - <table> - <tr> - <td> - <div style="font-weight: bold;">Public Name:</div> - <div style="font-size: 0.8em;">(required field, shown to recipients)</div> - </td> - <td> - <input type="text" size="25" name="publicName" value="${param.publicName}"/> - </td> - </tr> - <tr> - <td> - <div style="font-weight: bold;">Description:</div> - <div style="font-size: 0.8em;">(optional, kept private)</div> - </td> - <td> - <input type="text" size="25" name="description" value="${param.description}"/> - </td> - </tr> - <tr> - <td> - <div style="font-weight: bold;">Email Address:</div> - <div style="font-size: 0.8em;">(optional)</div> - </td> - <td> - <input type="text" size="50" name="emailAddress" value="${param.emailAddress}"/> - </td> - </tr> - <c:if test="${!empty param.key}"> - <tr> - <td style="font-weight: bold; vertical-align: top;"> - Email Destination: - </td> - <td style="font-family: monospace; padding-left: 5px"> - <c:set var="key" value="${param.key}"/> - <c:forEach var="i" begin="0" end="${fn:length(key)}" step="64"> - ${fn:substring(key, i, i+64)}<br/> - </c:forEach> - <input type="hidden" name="key" value="${param.key}"/> - </td> - </tr> - </c:if> - </table> - <input type="submit" name="action" value="${commitAction}"/> - <input type="submit" name="action" value="Cancel"/> - </form> - - <script type="text/javascript" language="JavaScript"> - document.forms['form'].elements['name'].focus(); - </script> -</div> - -<jsp:include page="footer.jsp"/> \ No newline at end of file diff --git a/apps/i2pbote/WebContent/folder.jsp b/apps/i2pbote/WebContent/folder.jsp deleted file mode 100644 index 436301662b..0000000000 --- a/apps/i2pbote/WebContent/folder.jsp +++ /dev/null @@ -1,26 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" - pageEncoding="UTF-8"%> -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> - -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="ib" uri="I2pBoteTags" %> - -<jsp:include page="header.jsp"> - <jsp:param name="title" value="${param.path}"/> -</jsp:include> - -This is the <b>${param.path}</b> folder. - -<table> - <tr> - <th>Sender</th><th>Subject</th><th>Sent Date</th> - </tr> - <c:set var="folderName" value="Inbox"/> - <c:forEach items="${ib:getMailFolder(folderName).elements}" var="email"> - <tr> - <td>${email.sender}</td><td>${email.subject}</td><td>${email.sentDate}</td> - </tr> - </c:forEach> -</table> - -<jsp:include page="footer.jsp"/> \ No newline at end of file diff --git a/apps/i2pbote/WebContent/footer.jsp b/apps/i2pbote/WebContent/footer.jsp deleted file mode 100644 index 691287b6e3..0000000000 --- a/apps/i2pbote/WebContent/footer.jsp +++ /dev/null @@ -1,2 +0,0 @@ -</body> -</html> \ No newline at end of file diff --git a/apps/i2pbote/WebContent/header.jsp b/apps/i2pbote/WebContent/header.jsp deleted file mode 100644 index 8075e233c4..0000000000 --- a/apps/i2pbote/WebContent/header.jsp +++ /dev/null @@ -1,53 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" - pageEncoding="UTF-8"%> -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> - -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="ib" uri="I2pBoteTags" %> - -<html> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> - <link rel="stylesheet" href="i2pbote.css" /> - <link rel="icon" type="image/png" href="images/favicon16.png" /> - <title>${param.title} - I2P-Bote</title> -</head> - -<body> - -<div class="titlebar" style="cursor:pointer" onclick="document.location='.'"> - <div class="title">I2P-Bote</div> - <br/> - <div class="subtitle">Secure Distributed Email</div> -</div> - -<div class="menubox"> - <iframe src="buttonFrame.jsp" width="100%" height="40px" scrolling="no" frameborder="0" allowtransparency="true"></iframe> -</div> - -<div class="menubox"> - <h2>Folders</h2> - <a href=folder.jsp?path=Inbox><img src="images/folder.png"/>Inbox</a><br/> - <a href=folder.jsp?path=Outbox><img src="images/folder.png"/>Outbox</a><br/> - <a href=folder.jsp?path=Sent><img src="images/folder.png"/>Sent</a><br/> - <a href=folder.jsp?path=Drafts><img src="images/folder.png"/>Drafts</a><br/> - <a href=folder.jsp?path=Trash><img src="images/folder.png"/>Trash</a><br/> - <hr/> - <a href=folder.jsp?path=User_created_Folder_1><img src="images/folder.png"/>User_created_Folder_1</a><br/> - <a href=folder.jsp?path=User_created_Folder_2><img src="images/folder.png"/>User_created_Folder_2</a><br/> - <a href=folder.jsp?path=User_created_Folder_3><img src="images/folder.png"/>User_created_Folder_3</a><br/> - <hr/> - <a href=.>Manage Folders</a> -</div> - -<div class="menubox"> - <h2>Addresses</h2> - <a href=identities.jsp>Identities</a><br/> - <a href=.>Private Address Book</a><br/> - <a href=.>Public Address Directory</a><br/> -</div> - -<div class="menubox"> - <h2>Configuration</h2> - <a href=.>Settings</a><br/> -</div> diff --git a/apps/i2pbote/WebContent/i2pbote.css b/apps/i2pbote/WebContent/i2pbote.css deleted file mode 100644 index 0e56379b31..0000000000 --- a/apps/i2pbote/WebContent/i2pbote.css +++ /dev/null @@ -1,318 +0,0 @@ -/* Based on the router console css */ - -body { - margin: 15px 0 0 10px; - padding: 0em; - text-align: center; - background: #eef; - color: #000; - font: 9pt/130% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; -} - -.titlebar { - width: 800px; - margin: 0px 20px 20px 240px; - background-color: #fff; - color: #310; - padding: 0 15px 15px 25px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - border: 1px solid #001; - text-align: center; - -moz-box-shadow: inset 0px 0px 1px 0px #002; - white-space: normal; - background: #ddf url('images/lightbluetile.png'); - opacity: 1.0; -} - -.title { - font: normal bold 20pt/120% 'Lucida Sans Unicode', 'Bitstream Vera Sans', Verdana, Tahoma, Helvetica, sans-serif; - font-weight: bold; - letter-spacing: 0.15em; - text-shadow: 0px 0px 1px rgba(0, 0, 148, 0.9); -} - -.subtitle { - font-size: 8pt; - color: #cf0606; - letter-spacing: 5pt; - text-shadow: 0px 0px 1px rgba(148, 0, 0, 0.9); -} - -.checkmail { - font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; - color: #555; -} - -.menubox { - float: left; - width: 175px; - margin: 0px 0px 10px 10px; - padding: 10px; - text-align: left; - border: 1px solid #000033; - background: #ddf url('images/lightbluetile.png'); - color: #000; - font-size: 8pt; - clear: left; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - -moz-box-shadow: inset 0px 0px 1px 0px #002; -} - -.menubox a:link, .menubox a:visited { - text-shadow: 0px 0px 1px rgba(0, 0, 32, 0.5); -} - -.menubox a:hover { - text-shadow: 0px 0px 0.5px rgba(255, 255, 255, 0.7); - color: #f60; -} - -.menubox h2 { - font-size: 12pt; - color: #001; - letter-spacing: 0.05em; - text-shadow: 0px 0px 1px rgba(0, 0, 64, 0.5); - wordwrap: none; -} - -.main { - width: 800px; - margin: 0px 20px 20px 240px; - padding: 0 15px 15px 25px; - background: #eef; - font: 9pt/130% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; - text-align: left; - color: #001; - border: 1px solid #000033; - background: #ddf url('images/lightbluetile.png'); - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - -moz-box-shadow: inset 0px 0px 1px 0px #002; -} - -.infoMessage { - margin: 0px 20px 5px 240px; - text-align: left; - color: green; -} - -.errorMessage { - margin: 0px 20px 5px 240px; - text-align: left; - color: red; -} - -img { - border: none; -} - -a:active { - color: #900; -} - -a:link { - color: #007; - text-decoration: none; - font-weight: bold; - word-wrap: break-word; -} - -a:visited { - color: #606; - text-decoration: none; - font-weight: bold; -} - -a:hover { - color: #f60; - text-decoration: underline; - font-weight: bold; -} - -a:active { - color: #f93; - text-decoration: underline; - font-weight: bold; -} - -button, button:visited { - font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; - border: 1px outset #999; - padding: 1px 3px; - background: #ddf !important; - text-decoration: none; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - margin: 0 1px; - text-align: center; - min-width: 80px; - -moz-box-shadow: inset 0px 2px 8px 0px #fff; - color: #006; -} - -button:hover { - border: 1px solid #f60; - background: #f60 !important; - color: #fff; - -moz-box-shadow: inset 0px 0px 0px 1px #fff; -} - -button:active { - border: 1px solid #f60; - background: #001 !important; - color: #f60; - -moz-box-shadow: inset 0px 0px 0px 1px #f60; -} - -.underline { - border-bottom: 1px solid #000022; - padding: 5px 0px 5px 0px; - margin: 0px 0px 10px 0px; -} - -input { - background: #eef; - color: #001; - margin: 5px 10px 5px 10px; - padding: 4px 2px; - font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; - border: 1px solid #001; - text-decoration: none; - min-width: 110px; -} - -input, input:visited { - border: 1px outset #999; - background: #ddf; - color: #001; - margin: 5px; - font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; - padding: 1px 2px; - text-decoration: none; - min-width: 110px; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - -moz-box-shadow: inset 0px 2px 8px 0px #fff; - color: #006; - opacity: 0.9; -} - -input:hover { - background: #f60; - color: #fff; - border: 1px solid #f60; - opacity: 1.0; - -moz-box-shadow: inset 0px 0px 0px 1px #fff; -} - -input:active { - background: #002; - color: #f60; - border: 1px solid #f60; - opacity: 1.0; - -moz-box-shadow: inset 0px 0px 0px 1px #f60; -} - -input[type=text] { - width: 100%; - background: #eef; - color: #001; - margin: 5px; - padding: 5px; - font: bold 8pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; - border: 1px solid #001; - text-decoration: none; -} - -input checkbox { - border: 0 !important; -} - -textarea { - width: 100%; - padding: 5px; - margin: 5px; - background: #eef; - color: #003; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - font: 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; - min-height: 100px; - border: 1px solid #001; -} - -submit { - background: #f00; - color: #eef; - margin: 10px 2px 10px 0; - padding: 2px; - font-family: "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; - font-weight: bold; - border: 1px solid #001; - text-decoration: none; -} - -select { - background: #eef; - color: #003; - padding: 2px; - margin: 5px; - border: 1px solid #001; - font: 9pt "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; - border-radius: 4px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - text-align: left !important; -} - -.identities table { - table-layout: fixed; - width: 800px; -} - -.identities td, .identities th { - vertical-align: top; - padding: 0px 30px 0px 0px; - white-space: nowrap; - overflow-x: hidden; -} - -.ellipsis -{ - line-height: 1.2em; - height: 1.2em; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - width: 100%; - -o-text-overflow: ellipsis; - -moz-binding: url(moz_fix2.xml#ellipsis); -} - -.moz-ellipsis > DIV:first-child -{ - float: left; - margin-right: -26px; -} - -.moz-ellipsis > DIV + DIV -{ - float: right; - margin-top: -1.2em; - background: url('images/lightbluefade.png'); - padding-left: 26px; -} - -.moz-ellipsis > DIV + DIV::after -{ - background: url('images/lightbluetile.png'); - content: '...'; -} \ No newline at end of file diff --git a/apps/i2pbote/WebContent/identities.jsp b/apps/i2pbote/WebContent/identities.jsp deleted file mode 100644 index aec9ac4e9e..0000000000 --- a/apps/i2pbote/WebContent/identities.jsp +++ /dev/null @@ -1,72 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" - pageEncoding="UTF-8"%> -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> - -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="ib" uri="I2pBoteTags" %> - -<jsp:include page="header.jsp"> - <jsp:param name="title" value="Identities"/> -</jsp:include> - -<div class="infoMessage"> - ${param.infoMessage} -</div> - -<div class="main"> - <h2> - Email Identities - </h2> - - <c:if test="${empty ib:getIdentities().all}"> - No email identities are defined. - </c:if> - - <div class="identities"> - <table> - <tr> - <th>Description</th> - <th>Public Name</th> - <th>Email Address</th> - <th>Key</th> - <th style="width: 20px; padding: 0px"></th> - </tr> - <c:forEach items="${ib:getIdentities().all}" var="identity"> - <tr> - <td style="width: 100px;"> - <div class="ellipsis"> - <a href="editIdentity.jsp?new=false&key=${identity.key}&publicName=${identity.publicName}&description=${identity.description}&emailAddress=${identity.emailAddress}"> - ${identity.publicName} - </a> - </div> - </td> - <td style="width: 150px;"> - <div class="ellipsis"> - ${identity.description} - </div> - </td> - <td style="width: 150px;"> - <div class="ellipsis"> - ${identity.emailAddress} - </div> - </td> - <td style="width: 100px;"> - <div class="ellipsis"> - ${identity.key} - </div> - </td> - <td> - <a href="deleteIdentity.jsp?key=${identity.key}"><img src="images/delete.png" alt="Delete" title="Delete this identity"/></a> - </td> - </tr> - </c:forEach> - </table> - </div> - - <p/> - <form action="editIdentity.jsp?new=true" method="POST"> - <button type="submit" value="New">New Identity</button> - </form> -</div> - -<jsp:include page="footer.jsp"/> \ No newline at end of file diff --git a/apps/i2pbote/WebContent/images/darkbluetile.png b/apps/i2pbote/WebContent/images/darkbluetile.png deleted file mode 100644 index 89df70b960574329efe68890e5c3303e8bbefef4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 298 zcmeAS@N?(olHy`uVBq!ia0vp^CqS5mnSp^(qp;Z;$T0};32|j$aA9BwVPJ4(U;wgB z7#Kns7>pShOc@y57#N%w7=lAsHv;8CSvEEUIcyu<nwo*?7&r?&B8wRq_zr_G<MI3z zDL}ymo-U3d6?5L6x8`e55O8o@w_5$+xgh<7C)2{}xO6-kj#xw-+*LVKAUWo|G5hvg z+fS~2sB0(xE;;E^>7+_yLqo%#Z&P-jdu<=KCSqgK(JoQ#FuVOmV)HkM%8O!vsn4d? oo~T{<O5Dmsh?5xL8GVv*N9D_Jw<bL32D+8O)78&qol`;+0N}+@761SM diff --git a/apps/i2pbote/WebContent/images/darkerbluetile.png b/apps/i2pbote/WebContent/images/darkerbluetile.png deleted file mode 100644 index 854d46f40c06681bd6ad567f51264a5198679350..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1496 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvEiGhJ})y~t$fE>;OkH}&M2EM}}%y>M1MG6B0 zYnP{sV@SoEx3^CgMW+h1J+$jOd}tCgr?bohxrhegIh6^=ryZy@nB2{5WN0~^@tBWm zVBw|$q3*@;sjkz`6-qDO6#MjfbjjAW*B0L0QyI$VDyn|3YemwGe;aQ8`c!HBFZJ>2 zQ1vts{!a>Ev|#V@tp73De*&^=zkc|eA@{@)gi2WCP5#7muROo<VtS0pUMtf*msjtu zfB#_V%)cp{yIMCzXmn#ILJa@c{k6XFE&tp0|DR00X1$)CTx)8(bM<$*UEGlnO{XtL zWjx=1J?q@XT^Hh#7V3zdB9;jHSAFx&`Hx@D2Ho%2d9~tKmA9>MarVa?L#ynKmT~^> z&%fWOS-W(f)LeV7zs6?qGgs-mKVSc?O3SML__LEIZ`n(R#>RKOn*U<|jUa!QuLi%k zb+?LNt*U<O_SNFo=Th5}|Ht^EWi&dORSOrW@J%_=ILRVFh~4XvgD07SGCvx>eX93+ zm(KUcq1~1^6PK>E>$|LPa@Akz)uRn^_gBp~ySj7jugG9qv8&JDZWX>NZhcLk-Bc}W zYv}&073pnT{{`l6z4GwP+G)3H<}Q=g^}Dm;qt)@vuiq3bKKFlj;N?=W%db<+odlW$ zS`=6mIUG3#1@i(Ar<K`{ht{V*K52eY_UKCf?cbl@{yqC`U)8<uUh%!Zwyw}SGMRs| zcyjIjGd<tMPyZ=MyYhe5*S|*fD_5>h*UPuvzwy4#->F9S7uQeQH?Pv{n!T=Z`0`&5 z&xGs`__aeyx-|aT?B7+-qH=1k+_RtgYW?)@*Z%77ex0B4H!FC5;I|rmvpl~qS0C_S z{?mUky7PE?^52}`dcAAYqkdIAYk#)yckLIsBa4sKsmkq@e*JvW@4FH8`_Jf1pZT%Q zVzbSU=Y02m2isWf|N1u&C>*0<EL>|_yz$JP?3eGS{q#<)TLg6B^qJPWf8QF_FFnJ* z-~Qr$;k~;r>i#{vG-8MGi|eP)9D4g=-Igz3&s;tDS$tpa%l(?4ub=wk5`R7>|7AYU zx0|{9gYHFtk9Yrm@Eg!`)mOrqna_&N{n_Mg>}I{dxc4H*T+WzVzy2P{keMs8c<BqE zoLf(s!*lyY6Q^{k#kntds@akhNI?sl-P#)^I*3CV^Lehc2{IcB;6N7~laDy?5P^(M pFWfUA&7mauiZaDkpV)qhTNVUxJW$&58(35`c)I$ztaD0e0stjBYES?G diff --git a/apps/i2pbote/WebContent/images/delete.png b/apps/i2pbote/WebContent/images/delete.png deleted file mode 100644 index 61e146d8135435f8ff628edd61b84bd9921fcbad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 475 zcmV<10VMv3P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00007bV*G`2hj-` z03a>p>}Qz(000SaNLh0L01FZT01FZU(%pXi00004XF*Lt006O%3;baP0004MNkl<Z zc-oCpy=sF{6h27{2?&B&3}&rMmO_vYSwf${2MDxVw=6D&f>Yk2Lzg~*gV4n+UEQQ9 z#cm}DHej+ykbv}@gUYR#pASCHchBEF_oo4e(W|T%Z~{GnH-=$+p=IWJRLNm9i(*Wg zp=F|eHBA$CyB%z|TOf_TXCY2jr^1G?`)oR$!elZ5S(e$ErYScdtX3<wuIqwr+a#Zm zZy-!ij(m!F?j2Gpj<E23{{aI)Q_!wimX)O4J<p?KFfsQ9YktH#Abev0hQlGWS}hol z#}Gvk2Q141MN#-JD2Gmj{6HpR14h5!=LTUImOj#*PN$lhR3~7ls(R|V|KYOgD8@b) z&2tmuI6kkzd_HHZ>pE+ii1cQ&scmo}Xc?dAUXmnex7#on4A{9|uc6!RLJ$PtI1Xr< z2FvC09YdeUeYN4}*oVqvkH}l3L<NnSsjiV%MM4ee1JNJ&J=6e>6c<Pe@dxTElD$6L RiiH3G002ovPDHLkV1l}M!sh@0 diff --git a/apps/i2pbote/WebContent/images/errortriangle.png b/apps/i2pbote/WebContent/images/errortriangle.png deleted file mode 100644 index f1730ccbf6280167680a8ac21b942faa282a7f21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1637 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 diff --git a/apps/i2pbote/WebContent/images/favicon16.png b/apps/i2pbote/WebContent/images/favicon16.png deleted file mode 100644 index ba34d12c7a2c69c077e853bc5f055b20f7697d61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 714 zcmV;*0yX`KP)<h;3K|Lk000e1NJLTq000mG000mO0ssI2kdbIM00001b5ch_0Itp) z=>Px%gh@m}R4C77QcF)$VGy0~_Pc3I+hEZ^kW%_mF%eTYbfHEqiAd^22n6T@wY;Q- zrA84ppb=K0Cb*FwAPeOst`JB}Se5R0nJ6_aEjB^YmI5ukcU+W|2G43TnR7C8<`6^# z002lAgb>IABA)1w3?U8Q#)jAHO(c>!z0PDZWpj=u5pgdb7X%@dN<Dwpqt_bLDot@w ziAJrvQ&|;>L=bUtadCZZ6%i2;I1A_MbR*)>;Lw@80&A0Pa$<5}ZoaptSFb&1ynH2@ zOtiOkD05F=IA7ZN$R!f9Vy#YBR(7e`@u01}W#s)x>BUlwR%5O(=jAD9zI@%;`MVYR z6Ap(Dlc}}UHAZjH|N6NxJvk+p%j^z&_KA*WM^27pc6QF^^ASP_0fj=r+`M&TX=%yh z@yO*0sYIIX4**D|IicWIC=>#KL?Y2-ZD2T#6N|+Q3*V#BXu$6$gk<~;ZU$q!y8wU) zh<GYD*XeXJs^VgcrHbcyLdfGMPXmEKDwX1SetUa+pnu>nc}UXR061G8s!P-a5rdnX zb+z@r-+oF(GMVh!^{Wzzcx8EYef<Ze6aZqe-A-4>z>9uL>Cpo5c--1(^?1B2%N{?K z5J3<qrLP8GHZ(Rc41<V75QK~~<DWlGPtAnG;dp$HWvNoBEH{-m-*@Ea7i4T;(lXud zZd;R0Z!oYd1%S8jUf0xC$6~R<vxRft=DEAoV;{$kbPo;=x?FCxO4HZdXKl1<OZ1~3 zMiFs;f8TDi7Zwz~86M^=oLZ%s7@t5yk<DsdUS6rGxmQ_v+wTw5)z`MPwg3R7)LdZ} w1fJ)Gt}eHTilWho(P%uG*5g$E7xgs$0p-9kb7GGbGXMYp07*qoM6N<$f-0Lon*aa+ diff --git a/apps/i2pbote/WebContent/images/folder.png b/apps/i2pbote/WebContent/images/folder.png deleted file mode 100644 index fdc6ed0325d19e82bca7c932c237d394ea801a1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 600 zcmV-e0;m0nP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3labT3lag+-G2N4000McNliru)d~s^2qL}DQz!rc0p&?V zK~#90jgvoUQ&AMge>aIGygUqu;B9Oz##9tLJatkt2yQM8X3)V&q~I#JI5>!-lc3nr zr5)A9)urHjsfD5i!L(qcq5mFONzwPnCBz(u_cSGmu^(Kx9KQ2?ALpJ6fQTFrk)((y z`e0C9#h3iYxfADrlfWc!EPLrKTI*|;Wqpb3Z-4|KfC5lTwGfdrA7=B?jq=p6c%CO= z7>>jy2@x3*k<8visysC;7w&8UGhG31voM|Omz*P4+<C3_Ez7btBY~TbfZblEeXpmq zFrA}PQ=Gc`631~SQvevB_0LOetS)xZpY%;|dQAA{mRRQ1i%4JxHdYroJbs<=%TFU# z%RnmK+wDIF{eanrIaXYk6hOPZ1HkCn(atPVea&I5LhI0Tn!mvJ{fM^t^%KdVH0kUJ znEF3D;{XlA_Pa8c2|7OC>+2lUV?YCfKEwQj7NlFdn6)zVKW<Pc=t!Vp0*+5yj7Y`| z6sQ}h)S@+T948V`i3HiBd01H<7$2avy+zvm#I|j;)~IT=D({~;|83lhD1L!bsTA$B z=Xv6~F23*YOF(N)u~>ZVIL>_q5QgD--}je-AlR3HZQD()_1#P+GxPUTh)9CyRV*M$ mXA=z2j89uBB{5$qrQ|nD?$tE4@6Dh90000<MNUMnLSTZRrVXC} diff --git a/apps/i2pbote/WebContent/images/help.png b/apps/i2pbote/WebContent/images/help.png deleted file mode 100644 index 4c5136f45383ee25cf0c0b49c39ddb884ae019c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 852 zcmV-a1FQUrP)<h;3K|Lk000e1NJLTq000pH000pP1^@s7Olo&*00009a7bBm000id z000id0mpBsWB>pI21!IgRCt_aR9{F_VH7|2-tFG0b4p_WL6?fAkebsCZ^VT4kQGLu zLN6-wt<r}OAvDaFG#!BtiGO04l%ytVDl|ip(6E^az9fnWQ4x_zq~2|J`#Rs<uBiLq z-tGH-=lh-C`JKZBP?jZ;zBz!Lg2+hzv(Fbl9|XX36ZS7=a*_}TTVrDqF_~@=6=ms5 z5Cm9WUJVOIFj;_LME<YR(gxDj_K|3{mVZoV=PEH8lVN6N2vSom02+-&qNMcUxI8&T zasDhoUZx^QW!34#AIZsS$8EMkSXx?uxw)AwuXpYULR3<Ad_~1Gg{GxthK!Hz5QZ@+ zdwP!eNtDHERJN?Fi_p{41TL3b*+)kkXtKx<oWXOP*;i9DsxZ{ozauQ0>j$vv!@YrX zM}tq;GFj1ZVz)a<Rn-7NGf+oPamb?VOtV>>9v+^8^>sIFY`D?nSrEm7ex>w?hzs9o z?uiMBxLg5ZFo>kK_LZWC=fywl?(XghN~P5bFf`N-dc7WOwh|?=*DJ-cI-PD)RpRq` zpsQ<mPnlNBdss=@x!Te3L^+t6dJEIjua*CUgD>cX>%nHSxphWkDe3L~M*8}GlJxWn zT8ZO8Z?G&aw&5Cv<Js02z?$b!z@G83IEO`1QTke0mQQ&+l0gu3e;Ee0BuRRT1Oou> z_5C;YXDQZbw9gY0&*-YF??YNzMi~9(=5J_ieF%$-^RnOXF9Z1Wa*v2*O^*2Z!ocY0 zw&G($!#LJrAqfeWNm9}k+8vUTQbe52H3g?}F)=puJKw3?$H6qSEO)oA?hz9a5gZm# zEX2-zfbQ-Iuv%?6(Hy!bgNoDN#zqJB#8ZwVk&h$D1_A*;hxLcaud2EMD=S~2va%eC zi*FymR6-P@K_v@ro)-q2n;(EI`wj$RCg6Dv;^K~lC7|(0G>ay`SB*tq%=ZBNk4s9* z7`y#Wc+)~_WTYS3+a16#T$3!Ht^*kGA8s-3b1q?q2A|KHgC+7Rz;PNGzZhS3cDCyQ e&b*<QRqQ`C;yO@q7&%t}0000<MNUMnLSTYZo{VS! diff --git a/apps/i2pbote/WebContent/images/i2pbote_de.png b/apps/i2pbote/WebContent/images/i2pbote_de.png deleted file mode 100644 index cac902340ccfcc9b492368af11a619fa39d40d55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16703 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 V=lBNh4q7rmMnX}%O4K;y{{SSQp_u>x diff --git a/apps/i2pbote/WebContent/images/i2pbote_en.png b/apps/i2pbote/WebContent/images/i2pbote_en.png deleted file mode 100644 index 1daf2af2eace06ffd22994041843476786b94f7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16251 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 S&c`%8Kw4ZutWv}<@c#jr6$_{U diff --git a/apps/i2pbote/WebContent/images/info.png b/apps/i2pbote/WebContent/images/info.png deleted file mode 100644 index 13f25a9aefc55baaa710c82cf6158c38f890e8e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 780 zcmV+n1M~ceP)<h;3K|Lk000e1NJLTq000pH000pP1^@s7Olo&*00009a7bBm000id z000id0mpBsWB>pHzDYzuRCt_iQh!KOQ4~J!wddPf!=^GUl@Sz3LZNf4LIzqcrN~f9 z{|ZqUWQ0RZA@D~jriidV`bR=T0w<9mWRfnF0x6KGi~@;7LNGNlYHs8Gyxn_sug&?v zdmQdL_q*Tu&H<n(tRnv-0C{Nux&T1d-@OFbGa(*~-;WR^VR~A@r#2MJvgFs-*PdJn z;5dUTi)qO7mwu8f<m0#th^?uq&4|@aO??D*c6Mekc2HL4P~vzl8WM!z`;mr*QOecZ z`-#fI@^fgCNOCwDmF{jYtzKXM4mmki8n3N=1Gl@noM={q!GK0tS68LQo0}ViV@Er% zT5mrynTnCeGmgs39~1cz{3N&UV+^-&Y^cC~<^i0*6hDMG%>}g<%QfWlZ6V^H%hidD zM(4Zz<oPVS{XXrczW%vp?!Z8R#ElHDT%4GApC982hj+nfJVxWv(n4S*Nj@D*&dj{V zE!Jocn@p*|^1Oa56xy5f&dx8`-rj`&Y$25mg=XEAl_j96DxMS%2E$RB92ptJXG(=; zJrPGdAYKqpaA)@*8F^UUIZMLOl8bB(o;S29igHDkMLs@*C2R?T*ny)_fcelNB(|G6 zo$h5(Q3==F+(9*OY^=l5(gN++>AXy<g26@T?0f*SEPseb!#4l|fA&cV+#HuOI6OQK znVBawT4G;+|0BrAuz=4um7v$_?E%04&2LeZ&f*QSrRw#DC)L%p2?PY$*?a3|wVq09 z+T(c$2&rbgfY-?yMi_<_iS&aY(g{dQ2O$UoNRmVx5im(Wibf-@xw&c7)zwO8co2u3 zwY1y?+`(r6?p6GBnB3euZ&y~nxQK~OO>K17R#(4**_;k(Y3X$ThK8QP<m5PF7^YoS z7kbDWhm4q@FyCxG-WrKSuVNJ`EX&IH(yl0qFH}_=16W>;ul@&24j~kq>*7HG0000< KMNUMnLSTY>g=U%n diff --git a/apps/i2pbote/WebContent/images/lightbluefade.png b/apps/i2pbote/WebContent/images/lightbluefade.png deleted file mode 100644 index b79947d3efacd5956ec7eb7fc3542bb434687a51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^Qb4T3!3HF&Ggs6BDaPU;cPEB*=VV?2IZHfU977@w zzrAS9cgR4X<)Nb4$75nUmfrk*zmdB@VE%y%2`2?b3^j!OC-V9J%-$|pyZZ0LO~qUr z1%rgzW<8vH=r%{Zkkjh~WvAB{s_ORt<u`S9QB*rLwPj!0mqiifW=v(wJ(3ds2X5PK zyJuH6cWdRPYnlO<N(!uG>v97R?0J#*a?;1cld9)m{-k<eXR%;!hKsV)#SS-<MQ~<) behF(TceU&^jyV&7?q%?F^>bP0l+XkK{|H=u diff --git a/apps/i2pbote/WebContent/images/lightbluetile.png b/apps/i2pbote/WebContent/images/lightbluetile.png deleted file mode 100644 index e7fc6c1f12ab57637c3c0858a74ad87643a76b28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1410 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvEiGhJ})y~t$fE>;OkH}&M2EM}}%y>M1MG6B0 ztBI$JV@SoEw|8&nO$n7a_VMf1D?w5P)e2W!T03q>fAYvbWW4S)voL>;c>>3~0AT_C zJ0Y`}E*-M?E9Euw+!^D|X}u;Nzss!IliOzc{`;5t|Cc;maQAsU|0$1MALGk{<AP6} zdSRaRSV?^630J+Mz}j6G&u<l$k1(!XSGxSe#h52xiT{VY{c6_rR(kG9epYXIIP~ni zHK96Fk`{_^FOASR>ZB>=wK1TpH3%wH693lc?_Qn1m!`!V{G7V@{)_!~rM!`t>ab`< z7n;)iU;p;sWjS>rS?Bmqzx%rB=Rv0Dzf-@v-K^1{^F41$@#gvOr&Zto_PqS*ovR<8 zAG=yqf9j{-&i}Rb{|bK9B`w$G;tCAtXmSz}S+qcawN*pI#Zi%VLM8F{q-=IYhv`q* z_<SaJYW=03<(8k5>i30w+n#RwecS0<7k`FFR`0Zr*Q~A&n_E9+>-AIj-h11GYu(<t zyTJN3_jY5O_}Dz_!^NpV)~heywp7Y^R`$*PmZj2)U9v2S9F81L0!;!f3WI>T;Iezb z_oH7A{tBzy68vvxY}onfhM(6q@4I&2V#S*bIk7JVA1hbSuYdd8`|-2S$K#4E-cM=Y zuKm38yhY7A_4n3kcK>Fb{Jv*Hs9gB@>A!yZ*~iDc+f%pk{?80KyX*Pq&mB&$ubuaE z^7(bPKVClYznUAP7aKlrX8yO&Q!h>Z^x(K*@ydDn-#?#i-mkFZW0_|2zuMix#g)7K zU%q;N@wwHk)0e-$ViSHQ^v-hkiJFT4`t0vZzpZ_GPCEFRqdkAUSpKwkA8S6pIzB&c zc39zcskz$z7he97|EyBNc03@$%x&@o$vF<Wo)Wr}b2BA)`_2|GDz-2dU^XO(F1$G7 zz;grz6`w;B;4yhlTSZ^yOKT(_ahNIrbZ_XQ!wx)G7?jzP7I>9NbTmpO09_Z-$;WIM zz}y4mYh6rKV9RO{1oBm_fDYv~NK#;1<<j0Lv4YVJ$e;ScK!DlwKnIX7BnvczjbcO3 qpLRHGUH|U+^FBV>xsF@<Mf|f5Im@=I*6RQZRR&L2KbLh*2~7Yq*E7}t diff --git a/apps/i2pbote/WebContent/images/link.png b/apps/i2pbote/WebContent/images/link.png deleted file mode 100644 index e0eba7969888b86b7f9b554434dc9750c1218c9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 564 zcmV-40?Yl0P)<h;3K|Lk000e1NJLTq000gE000pP1^@s7n$N8X00009a7bBm000id z000id0mpBsWB>pG=1D|BRCt_qlTAxhVHC&zdd)GiQ3*}&%-nftq+)O#1TCUv8<&CT z%8j4GMf4fkMlB+BV;ey<D2UpKXgSk+N)w0<zKn>?jAQ+7&mDZcj0ethpXa>)&pB5* zOFa{gx%8JfywO11`^U0L-QY;PG>>?}KU>TrGblN2QuVQK;WivvrDz$`Z15<LNgcls zlmi2|6e=VBJBSwhPM~4<v#k!&^&UtUaIM#*$gXtKDHU_AM%fkPxQuW>`a8`xBPE}P z@}#em{98~&J`g6y!Pp(L^y~JEaehk2U!`l=klrm=<x@<?vpk(wH1mx#u+5#KYO6%M zVgo(~<CM93++!;i&iEICZ1OxLH+k#*L`m7+8x-{5G+p0X+o`gcGzMvUTHm1=VPyX! zEWocVfp-r`9|?76II%=yZZ>nZDDeb{TW6c&CWu@z6HKO?dHDmIV?Y;KoQG02LiQZu zNAMavi*A{g<n5gbk@t*sIKhBL&E||OIzq-ev!s{tJp#P2Gd8Y^aFyPEkoMmb;5m3_ zqz(Rq$~!Vg(cL0wG~~Dr)=NVe^s$5$j4(K&#V)gVZcFWVk-e3+e>B;<2Kg)Q&&Dk> zpF1H)lhW1wmUBD<@)x)^&su;z@`(nfD6)s&>;6BI`gMvN(K;;v0000<MNUMnLSTZb CasfmD diff --git a/apps/i2pbote/WebContent/images/mail_folder_sent.png b/apps/i2pbote/WebContent/images/mail_folder_sent.png deleted file mode 100644 index 53298cae7e8b3aa98b23b3e6ccbea36b755a53ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1234 zcmZ8he^AnA9LD9H=4IJtxw>w7u4~t}T+MSWt2GU;ywt?Jh1*%`3{7`xLMfI?nrS5I zaybptFcY--)l^83#B^yX31yn183B^~M&Jv40dX(qe|zrpKA+F~-21-I=k9&)y&e;N z)Z1&T7Yc>)jyQ&n1=-&<Jl6n5H<O1!T7wUZi1YOHoc(Y@45n+dkHzDGdeJr93MPyB zK-@wI#}ZCv;Rv}&IcHJ1xw(PoGBfbMCuN@v%*sinY7cHjp*{(TiHr*ei&s`w0RIoa z5UPQ4gT1t>Csa#PYGp2kYh6{!d(EJ@%7RJVMo?Vt)Dzk?na!%i8Y!-E@l2iU+}#E2 zUlL5^d~hEB*Ba^RI{9((Y*M`<@s1qVsLE*8=d_wGb--6y7RnQAN`w0LAd*}wO>a^+ zys&3J(9i|;j;ZAwhNf-Y0!=Q12rqqmp-t2N#*z1rwtZBW59uCGI6C-xV14+?1lW5C zTB47^`H&%rD#zVZW;E+^7{+|aRLnG!`^?04W96Xf)_~>CFtY!WfC#}&e5CBLrS-KP z8q<S<A+)u=vIphz=|Wo|{`u+K(&SoMa=kpYf}MI#nMUEHSF!$R)@D|5&NGbo+kF>n zxWqaxu~nQ884K#Ug&^*7Ns#<X4}6_tCexl&@Rle82Fif(PoBA&t*GHD>YiEe^ed=6 z!iKI<+K`GihCCQYTKcD301H6a=mLZeScrfg7(5Z<xf*oEcx8jebdLrn9}SCHBO=zM z{qdBemoMjx&T&UY{Q?<J_+jXkWOP!(e=8Hr8-(+^H#6cXDLgG!PD|9Ya(GU%_+DWa zFDRrcvrM6tsm%)?6$-6Mp|dD8OG=GFrFKDMu<CR=z0qs{fUPhLn*pqd#cH)6cB|Ej zAc)Oov)k=Xr_((p`VhGI1VU`|N${Gy*7^AQ`TcO{r^81hF&J#hSzI2ug4)*0c_y3@ zNfipEYSja{XtY|b%SW$Y0zO8g3HVq5T*tcrEL<KAhhuqp+3EaVWZRBHxzQrfp>cU4 zCO<0Uv-3V9OYaXlhSI6iKl`ey6GA)1QCweIn84;`nuLS%R8LDhu6t~(EZ$krnbsap zosR123u^hsJ$`1+F?S6a_et72T(rR#`)-JDKXIRvsB^<jak9#S-9{($Y40$wlCh4Q zQ+2^1eNnh&2bLrm!OECglWdogz*DE?H*JskYCpSm?Z*4-F-^Ow-+0t3XPB3tmMuo& zcZC)BvqL6|NeNNqiARoX+P7s#%NIM{N>YzAY;c$NT4*>xJmhoA+!(akhZ=%MeYYt~ z%OtUHR6g`x?{o124YwK1>UU1p>o#=n_D5fNHiMq4uRDO*_bB!?C4{e*f88=3_qi`A zb9)i*h`x~ZvNyT3yE{C2J^NG1V&a}3%Ox>4v#X!?dZx>11a04wd8o1M7WLhR(rDrW zo$e(z^mJF04Tu;;_7D;Q?c0*R{4v{4JSz)yrZJ-@ejA{84<7jP9Qxm`GuxP{r|^H5 zcoQ+Tm2_o%XnEkZz0N7@{>+;r*?2g>gTSVcUw+$&au49AmBcJeYzyMKDR;N-Ax55d P{a&bu@Mts?mRS5BVF=Fk diff --git a/apps/i2pbote/WebContent/images/mail_mark_unread.png b/apps/i2pbote/WebContent/images/mail_mark_unread.png deleted file mode 100644 index e07161c1620aaa3ba390f5e177ae4f81986ffcd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 794 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dy%*9TgAsieWw;%dH0CG7CJR*yM zqGce=SbMeU3{X(A#5JNMI6tkVJh3R1p}f3YFEcN@I61K(RWH9NefB#WDFy~civXVx zSD@nm|NjF?l0fyWy=_a6cPu&5x9Y^ib?2t6IX-*K<=I=W&fk7v(T*!i_TE^!@Ak@l z*H#_8yZ-R4O-HV8I`L%l@jF|N-r9ZQ+JSR-k6yTY?8=klmmeL!`r_n`Hz#krJAL*3 zxf_qq-F$ZO-lwaNzFd3!_4>W%*B`vP{^-k%2QP0ue0}Tb*V~Uj+<x-;&hxK#A3VAH z;@iE4Pwzkf^x)OEhtJ+Vdh!0ztFKSqe0%ol!?QQvp1*wa{N4ALuim_T`{fl7eE9zQ z{g*c&@b>Nd4{twye+L8~zrFkP<Nb$^A3l8e2n1h#eERh1^XJcBzJB}i?dMkz`0?%A zx9=eE<NNoYKS1Co5d8V`=ik47b5hUD0tT5-NswPKFf5r^SlK!FW%LY<EN$$40u6RQ zl>~~KdAc};RNT6H`FPkN2Z^?aoQ4yXT&v#i{jLX$KS4%8>8_xr@Ad3z^$pDJ4bin? zn}0luJ(DKzt$V*9$2mWN1P;!lLMK`6J0m&-6l3Qqs0t`<zw%P~m6)aUk-6(miuZS( zmTXs;$sxT-o_$kWffA>q-Td=6)-+$YWnQg&IL4vis7C9Si_2vLb5|UBClJ%T=;n>O zh-~Szu6eBw+Aedfs`-9kIhWZrWtQ#Ip?jA(1&a3W+cj5V$L)-pSH1e(S8m(BO_-&B zPU1n4g{Q1yXLiltI{cO6Ah*O%S=nc`f9;A(Wc~?mclvPd)vn<4)<N&|&IssCKV5mw zy6(2|w`b4Ju(Fug@?Npyzrqwet1aPT&)E#Q%@M_nj=Q#7Et;OjeDgb}5z|AZqfZ05 o1p5r;sGKaWQ|V0p|LFB!hB+F`q?b$YY6c}qPgg&ebxsLQ0JB4#l>h($ diff --git a/apps/i2pbote/WebContent/images/sandtile.png b/apps/i2pbote/WebContent/images/sandtile.png deleted file mode 100644 index 4d88cb84740316d941ccd5b6a5ef0de5ccf4e519..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1392 zcmeAS@N?(olHy`uVBq!ia0vp^CqS5kiGhJJ)Rr?I$l)yTh%9Dc;5!V$jK}j=q%bhB zDtWp%hE&XXd-rT!bgD?}!{R%Oj;-VB^mI^qcxpxgFV7B}WhD`Y$v#ak8FK@!Sa59E zIJxcE%DEfn%-<Y3FZAVQztTUM=})g_@04Bg_g{Pd?5COfZ7<)PU&VgwGyAzq(S;YS z3a9VB^Hi^V=WFMkt7AXL-QFj?-1~m!ZEya{^`%g$?9{Nm*Von5-Hc!N>p}Hl-s$(x zueT|ge*cl|u_(_qQ;%RLy4GF&_v3E($<M3pmh1hEsDAr;{l27!uNUP;YIkm(6hR(w z=KuH7EqkqNDhsYZzxUy(|Khj${|{SM7yW-@BT>7{x~8=K`Mqna|1MtoJmY`Gj_p6+ z-MK3xJ7=!FJpcZPQnA01*LpTJX=r!QpYZto=%=}_an`JdwsWF=i?8@>pY`oi<sBdM z_4do(7VduZ#@AeZ^|^b6`Jev%Jh|li?V~?GF8TiJ&7ZyImD|o$=KJzK_caZlWwpyU z_^qk$R`1!j_MBd(cE0NSwJWnyVlQ8Ld!nlL;`Ld+irkSWoWwRwXw^x9F~5FDx%=vV z`oH{?yB9=IWRMimmAOk{b?wJLum7E#|M=kZ#|Iz(JDK?Q=lYKiHhX_QSMlNEp+C>2 z|NHU&=+8GlXFqrUYu=v!{NLiAb044lGq3w+%7)^q-IWDJJ2oEsQ}Vpz@vNWM)i=+b zpEp0xCT<S@{4?MFm)p&)*MGj=cK-hxGv05@dG|H_yUv-*9}}v3EB~FY+kGsRch5cd ztZ&LO{Oi3v_RbZbu*)`%zxxVrg)KwSbK_(~F$@&O8Y9uYao6$gjX+9bHG@^p(TJW< zas6XSI>)pOjKLbN9%uzhRqp|*=-$Y+;BW*`QRzpZiljA65L3f=M~$Iw*vNNm{KvRe XQLsMVu_G2(gfe)#`njxgN@xNAZith+ diff --git a/apps/i2pbote/WebContent/images/tabletile.png b/apps/i2pbote/WebContent/images/tabletile.png deleted file mode 100644 index f34c0632479b019d2b68c852a705323e6e5767ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1075 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvEiGhJ})y~t$fE>;OkH}&M2EM}}%y>M1MG6B0 z^HWb3$B>FSZ*QK?6Lyqvc{uMutGUA@c7{X0_Y0}?9pQ6q=oRN{lgx9HTHTRr`L}z$ z*y3p$t)4!55fRvS^>^;<vj+b^tuvpqbo>A8m?ui&J5RXk-LgOY=ld<@{a2#;<<Gk6 z6;14p`63^;<#BcH^V|IY8z0{9|8}xZv^7Y?D^SCAp$HlyHRA5yUwhvu?w^15xrBMi z_6bg!TuU{kEDGo%o?-NNZ_edgi~d&HWxoCQ;Q95Jhu{5`S+;+l><=4*%c^((_J0*) zZk5nD;-JXJWf;)W=)@zEv_OD%LT%;WZ-32=-j`uNfAzMS$|cWNZ`*hCb>-b@;qF!Y z@?LNMZMR(d+`p*j+nP)BtfHR(7Ix%t5@-@=QD9NzKw(yW=|vX(@<SR;0lKyYa@QQO znuJjJHwV)mge=G*RT1n^S1h>2vUle_y?NV?y56qIoZX-M>`$eY{p-gyH_hfR`~3Ok z*Wh{Ymwm33e}4L-!94wC*ZnL18C;V%|NL?H;-<1im(|^tyD#_e@#{bL{&UMY{vL@H z3RXNv93W_^VUhwH1ZlPNF&heiQ9x#oL`Ne8omzMps+K22N*Ss)X+hBo1BhAy=BdYE nY9&_4j2aCJkQMyQwam|2^S<1<UBL@11sFVC{an^LB{Ts5^CpC$ diff --git a/apps/i2pbote/WebContent/images/tabletile_alt.png b/apps/i2pbote/WebContent/images/tabletile_alt.png deleted file mode 100644 index ea691b8e20a44f5e4ac278ad6693b95984c58bb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1131 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvEiGhJ})y~t$fE>;OkH}&M2EM}}%y>M1MG6B0 zi>#-MV@SoEw|DP)O$n4~{rLA<Pr|&AWzz$$eJu}CpIgS7+GxHYQn2Ge#N{&*qGpea z>>hme-(R}nwq)+K)9vm`E8ac5UAWuw?pFE#`~IHX`{C5u$BO)wC!FOzU3m3!+P{5f z?`PjqlLiY+Xt&u?mG`k$cmG7Y4G*Fp-pP4md^<$MD^SCAp-5{G8e_`4v)jM^i}`l` z{l0&Vs`K|3b8Ajn6wu|Q$+c92c*f=Z`qtIg%i^}woqPWF&EGdRIo9l-&$F|?{j(ug z-)jEW&-|M|C*Q8y_4D(&+N1BHctnyG2r#!wXdH1+WaBan=xB7JozTlT+1}kZ?VBvV z=XBS<yl$CycdyyMi?4s~Ep0a27xP$VYu@T!{bzHUXWRW;&H4XvsoL`gX%0+|vG-s5 zocsNHt+8c0_jN~sCV>_O7DWz64kx-ZuY7kyw>6}H!OQ>p+qPbJQ-Awt3Geq?LElfN ze!6@zb<3x}J9_Q5uKjCPbLnzz`L*XI*V21`CzSv4jGgCazjEpO{`Bwqn}09<_wM-H zPubG%wjVsK`tI)Q#UHs|#N0J+;OkL~Z#!R`T+({fOTtiq*)SlpN1~$<f=(?w?7(vb zj6$T8*^(5%XhG2n1E4}MntBYTR$_&W6;$mJhoy#4wF+!n?R-$RbT#^mv@G1cPJ_$6 dYqJ;3cYm!k`|fUg4`AuR;OXk;vd$@?2>@i-r>p<~ diff --git a/apps/i2pbote/WebContent/images/tabletilelighter.png b/apps/i2pbote/WebContent/images/tabletilelighter.png deleted file mode 100644 index 5586bb0635f0adfd89b8898a6e29a60833c7afe7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1184 zcmeAS@N?(olHy`uVBq!ia0vp^CqS5kiGhJJ)Rr?I$l)yTh%9Dc;5!V$jK}j=q%bhB z1bMnRhE&XXd&@IVI8lK0LDp<frb(>LE*|F&$sL*ZxPX^s`)L(J9gYnN8+z{wX<K*3 zKYGaj>)xW!rX?#y`t_YI?5(k1>H1Ra--}jz>m470H&sk8uLPsN`tM)WtpBR_{u3BQ zz21H9Z(Q{|^_b`4(Z7_#f2yuCxaO6#Rs}n8=|$At*H8cbn)O%q`>o6`QP@@C)Q%#t zxxQ95ly`O5r#W>~AMbp=<bVF*+4bvedjH97lRVD#D8f-jyCa#kaE(Hr=#h<07GVPP z5}fevZ2QTVE9UXO&N@Fi@a<XK`TVada?dXge0$!OzpZq~zvmCqVqaBMPoHJS9=`9& z%SGOA*ZvIRp1pOZcjmOTp@G7_y@}g1`;Pn-zi@lCQnPivXXB55O?dgU`v1<$mD^Y6 z7k@tdFIj5-^7zx|iavjNZMD1L-dp>9A1mFiZAhzM<rX@7&i7wGpKPkUaQ^YEzk+kl z9q)d&ZoYc%`QLwQN*>l+IN$#K{MGZN!p|Nq4$sdo{aO)FziMAkcJk-vg?Hns{{79b z+mx~I^7;L@=GphYewX_BcwJr9zdxJjzrWiuGvbJn*v4BIIwE+_f><3_+uXpkt4@+& zH(0U*FZ0$mha*`fYCxT?Ys^eQCg4?$tl-)<R;94T#$X*=7YdS~Q*7flU4e~Kb2~wH zt>*0|-cF$Vw&pf=Tz%mK_Fry>3z7Z=JA6$px62y0ba2RIIV<A`p|!RDxF`3q#9lf4 S`3JDbVeoYIb6Mw<&;$VW*B>_k diff --git a/apps/i2pbote/WebContent/images/tabletitlelight.png b/apps/i2pbote/WebContent/images/tabletitlelight.png deleted file mode 100644 index 9c9092e7372739d8bd1deeabd0c125a81dc29c6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^Aht9I69WU|-n%=UfE>;OkH}&M2EM}}%y>M1MG8=G zs;7%%NX4AwJ^y~&Gcz-v{>#my@alfNz|kWNj1HD+3s{5$L{yIKcz&$DgXMHTe}JmN zQisSDp8oHfLjU~g$yCrfTJh;@J)6pbPyaZXx&EK$7qJs&W_GPv!7TW!{#QrV{paQt zZ_|H%m+t*Pebu|gH|oXr|4To>8*y*{A!Y8K4eKkG{{MGGyH`x?#ijrMA5M1resaS^ aHinJTmXA74c0LC>kipZ{&t;ucLK6Urs$5Y3 diff --git a/apps/i2pbote/WebContent/images/wait.gif b/apps/i2pbote/WebContent/images/wait.gif deleted file mode 100644 index cce9681fca0f7aeac8bc6159a4bf734463e920ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2182 zcmb`IZERZC9mWrr%jMl*gKa=o0_MdxBz3`MD>#XD!Ql9XxY(vsT16G4$%NgeC3YGm zn>K+>h?8LKIG5U6XoA5nq)ODhG*hF=l5JpOsp7HJp_8^*cI?nNo8+y_MyGx7E{;^+ zcKNt_{vXfz{hxE6=bW>zsX=dW@&FG!1Yl!hBTrO*V?Cc=&u`@N`P_Pbk*Hign_JK3 z^7Fa%`Nj3r;`(%<a?{z|oow#<d~Tvpixa8EaB2}xEe58uf$2rxbk=t#`_ntwp6l~H z*R$_jpMQH|{!OC7srGQH8Bdw;RBd2-hi{tb3;rLUY=hluv3JxPZI+s94V6MLW&ehm zbbx|g08l^?-~xcyFr5E`xF;w{xKVAWI`d%d79Li&*dLD<7g_&s?O(~vhsi_<ofeJC zl!C5$<L%d~aOI&d!x+jIoM@qNnZA06j)1c$pg@B|L6`CSP1r<}{TOa@#Sg0eW8I*3 z0E-DwLj^urPfg>ZZtR}Se&8Eh!Y`nPhJ2wI`(Ebcc>`+9@BIv41ytz$@~W!$P|)Y( zw^B_2oT&ew4jiJxJ`8v39UOn7EOxvrC~Xq1zG5g+tBP)Ev<iVLo^kg_)k>KIXn3tm zVdQATN22bZJR2DK_011VR#mz8M3sD>ms5I<#D)L_*u((HZcNC!apO1^^14Sonlk>- z4lOMDaPE930FIGJOMYiycqH(}UCx^^Ed26HP3EnelO1oFa$&t4CGn^PkM%82s@EZN zGT>-zG)tCChAINl#JJm0<GK^R_v)#;fzuWL7`?>*A$IgHRm@tiev;Qdy5!Munn*mD z;4wFOT0$Qtl$`a}C)_&K9%k&*w&CU$>rPfO6TKl03fuR7gqZrT?$m~`iS{qk@s_?V zkEno3P?*FntBD}cP{^O~EW6DtId|$t<^t=rD;-d$=vXVV`c)13vpN6o8ud$~t;!lT z<3$J!VKW181}!UXs0K(!9#bf_${>?<=JvG%qRCmettO&YF=Oq+9C7)4D!_us5SUQG zAav{^oa~1p$d%9e4qsT8q%K7jDmcI^J|d1Z43CY=bpdRIm)>pFlq95E02si4P7Hv^ zFgvYR9o0<@7QZgpMU5z*W^}A=rNJKe8;q971-KM`(W*+!{;0<&<|<o%pZ1EbM5eS6 z=N=w){I-k|;Yfxo9<tg(Gi0;bHcWW#n3rLwxK9r)F;18M=Hk^;EL+-=lv>S5oTQHi zo)3VO&Lp3-_j(YNxzgJe4bH>pEsRFl(zG?RY-ZMy5W7m^tTTNkaf!q%C_NzhB`E`2 zQ_Hc1Ub%5^W61+cM-t}<7o=VY*j_B43={Un#1;BDoYr7tb)Fy3`5=AU_pk_|7a(HH z4nMmZ0Zie!1VGyY=LMl}8ZUFXWdCX3{*3LIu*<`TU@pf67!1L7k1hR+C`URrt82C@ z5j&r}$1S&nz#)qGz^qqp+}0*t5q#jZwuO^7-;R4OZ_lJeB)1Bk=$j!?U_u826QAj& zrPAg%6#H?n;E0Q*VsvQ^aWG{ov&(vNfV824UyRL#D3NjuW()%F>`7sD<^34rNRzI` z-|?8S98t)bE0BaCuCS#lNL>qypGR}YR=)L`h$1|p05vbY3f+IKN5?pmtR6*!5|i7S zDmmW?HjOy;g<!wD8EoK_3fkPdaD#b)G6O7ae9BW@|DjJMMSrhs;MT>?!SK@}!3g^> zdEZn*0c-P+zCy%J%a@!EfAJN1cogHSntLu30jd8P_{=rV^~~CJb(N;3rW(yb6HUHC zg*xFmQU)R7u(JsgK=g!`84Y95)V~IsSmH_clSk$O^~2>I|9SUERIt!#v-k}5)wzC2 zpnBD4F3}h1r-pxPY9Pn70DFF)?ICP;Q@nMEOzni4tX2N*WU)z29UCA2YqYxjlds#0 z**jmqJ&XTM0^(Cb<pISK+Suv4`=>wCp=Odvg$tJn3YYorf;xx77x(7ukXD9f`eoO` zt-}vMC)(LyQ+%x`yZHIs1$baM@GDpFNq@=AA1|>LGL#1c6Nv{19(R*RJP!OLOP*k8 z)`l96NdxDv;v$pv;j-gnb4bzhXbm<ht<L52VN8pyX<|a&CDA{}PRr9VNFbn7P60ZT zdGzN1IKRU#yq^WF#QSM;c@B#D#=2(=1K7kxm7yX~=a(gQ?Y(u)&bi~V%eR~hDFyC% qfcCB7*#25~dM$~)q;XTrOHELj%Uw_B+KK0rN*_22LT8O&_kRKUBYzhF diff --git a/apps/i2pbote/WebContent/images/warning.png b/apps/i2pbote/WebContent/images/warning.png deleted file mode 100644 index c2b7e8c098c275410860bf6ac25743c25c8b782d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 803 zcmV+;1Kj+HP)<h;3K|Lk000e1NJLTq000pH000pP1^@s7Olo&*00009a7bBm000id z000id0mpBsWB>pH)k#D_RCt_aQ(Z_?VHkeTIdeP5Ie(UwEpqk)iLJ6W|0U;zlA$Cd zxWrf`UD<Ag$}S8WN`VkqFsMd?T}TM#jaNbt31aKVkjx9iOqnUA=wj~Yob&aa&vQ;^ z?t$^W=lyxU_kG@P00a)_&IxBa0PF~#7TMvr09sJv;|M_#cD!~pIvOHTS{u~qQna5A z8_rB6rpZ*zOQq7!V5s=UjEybaSMrR;v}~X#J5n-Ow&I7vaU7t`tRXEbG8(I*UhiAv z^Ub2#+HS;g6^q(i>-_%jDwWi$V%uzOQqL6bnF@zOTWX2V_j31~lzg7dq9}*h(J@M{ zYifFgQc}wPC|S(^0w)Www-~^Z4G{d5z(v!=gAEN22t!ZLJIqju`zWfC!}iXRkxkN| zPFITD?q|fdTAQTiGiZ!nlPR5~@_Zbk(I~O~{$WYEVLCI@tZpGE#{yRC5%ubLJYJ?- zU;nK-`uhjKY~G`OGYtI&PjO%|H}`O3Ufxk?Y;=MsicnbSfcEw)u)4Z-mSp0!JufJ@ zMyBZNdyi$WM9Qn7R6cO(0REN$2)N77A9l+rL)vJ}WiaSl5TZ`SVo}qMPK=<}>sKO? z$P-*L2oOjRQYI<c&oJn*%~p7+tLq_?kbOG}FoiG;yoIV8yf!Qc{fci)2L<)2&e zc&rxS<CIKt`XI}uO*A*V^IBVPB=l8N;~=NYbrss$ZmRydxv${yxUq#?0H0oAz3KC! zh>{2-DE|UwX$tc5Pe4n{b>O&EJYGq<^bAEo;ECM3QC@xy>p|n^UY-=gI>}a;!6f2q zd}FY;_ij>RATUYDr=}(n{0j^7Ff{Z6wztE#0cJL2VUHPDcHe*?h?hN{PN=K9NW9b2 z0a#fHLS<z&8EJEK1H9flFgrW5&GWH(tj8N!SS_S?5US@m_8!lR1$YAnCBm}Y8qW)Z hJRg0Ei|4gf{{a0LBEFh`IL`n8002ovPDHLkV1lL6eAxg1 diff --git a/apps/i2pbote/WebContent/images/yellowtile.png b/apps/i2pbote/WebContent/images/yellowtile.png deleted file mode 100644 index 4deb2668419a4e9cea5a0f4951fd9b917cb9e552..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1313 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvEiGhJ})y~t$fE>;OkH}&M2EM}}%y>M1MG6B0 z%Vkd&$B>FSZ*Lt8iY}FCEA(ShbYjxA%KgeGGyU9-uVK4B3dy|RwEC6P-5r{bIFf|8 zmP~kjGP9di=w5-)@-siG#sAmkKAgQif4-eg#>db8_t%{DseIf1b7q~x#%<TU<hN(& zY&xOTt+Q!GW!KI4>!&0y&zW*GOCKV3V$rjipG$M&^6I8`$A1;O8?opA&r|<WR(CZA z$xL~)K!km%g~m}wO+K%}0I1NEN7JXr>+f86^ZoQ<yGI92pI}pjMIV~bvithl(QlKA ze$L<Hx?3ZC-`YiUuH;9G9p$>WbyH0Ai?#cM!(;x-&v;)~_-wh&j{O_k#aLT4G+Z1N zxwrxYI+~nBL>4U&pq)_H{kR&-Ta}lj{}}$Sy(KNPr?%bN|98DSPq}zaz5F}7?0<Gu z*X;LI*}s>6fB)k<nfLr@``5Ge@5}h*XTBxK+JD`xmG}N7d@SRemX-c}@%GQJ-p&il zdafu?5^nu>=i4{>*ZG<RS`=6mIUG5h1c+q5I4HEGdx7i!sU+zl$%bTskUu|OZ<l_2 z`RwM0J2soX`!;RHZ|TR^w?F@!w?Fvo^1~mWc|HG}^*>?H&b=RMjP^dib;tVsw^`@s zf3Zq8eqQ%Hr{w<5YO^)d{PVMo_*W%9tGV{JKmXj}SH<hkTVK8ZxV^aa#xtkSD{fu> z_weVnC0pxu{oP@@^N!We)fe}KpLaKZcKvqs+toY6&o5r=S*`jx(YF59zBS+UE%L8? zKKf-|`RCbH?|jP5X1IU7^S@wSxnF*^N&KFha<Xyj%9m}|wfY}<e*RtC_?X$|uPbBT zR@%?MUcCL@&-Z)kuGfUrzbnbB|Nb}Jd%@=lH7jF-C`l{#@9yb;#jM1=7Zw*u&)vK9 z!p@wAa}WPse0j$yy{5h-FX@N_&nO~21pXH@|7A`(FyYyW3v)DpWgdg4tDnm{r-UW| DP}eK) diff --git a/apps/i2pbote/WebContent/index.jsp b/apps/i2pbote/WebContent/index.jsp deleted file mode 100644 index 296b30743b..0000000000 --- a/apps/i2pbote/WebContent/index.jsp +++ /dev/null @@ -1,8 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" - pageEncoding="UTF-8"%> -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> -<%@ taglib prefix="ib" uri="I2pBoteTags" %> - -<jsp:forward page="folder.jsp?path=Inbox"/> \ No newline at end of file diff --git a/apps/i2pbote/WebContent/moz_fix2.xml b/apps/i2pbote/WebContent/moz_fix2.xml deleted file mode 100644 index d308c4a978..0000000000 --- a/apps/i2pbote/WebContent/moz_fix2.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0"?> -<bindings xmlns="http://www.mozilla.org/xbl" xmlns:html="http://www.w3.org/1999/xhtml"> - -<binding id="ellipsis" applyauthorstyles="false"> - <implementation> - <constructor><![CDATA[ - (function(block){ - setTimeout(function(){ - block.style.mozBinding = ''; - var t = document.createElement('DIV'); - block.appendChild(t); - block.appendChild(document.createElement('DIV')); - while (block.firstChild != t) - t.appendChild(block.firstChild); - block.className = block.className + ' moz-ellipsis'; - }, 0); - })(this); - ]]></constructor> - </implementation> -</binding> - -</bindings> \ No newline at end of file diff --git a/apps/i2pbote/WebContent/newEmail.jsp b/apps/i2pbote/WebContent/newEmail.jsp deleted file mode 100644 index 6495c50e59..0000000000 --- a/apps/i2pbote/WebContent/newEmail.jsp +++ /dev/null @@ -1,59 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" - pageEncoding="UTF-8"%> -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> - -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="ib" uri="I2pBoteTags" %> - -<jsp:include page="header.jsp"> - <jsp:param name="title" value="New Email"/> -</jsp:include> - -<div class="main"> - <form action="sendEmail.jsp"> - <table> - <tr> - <td> - From: - </td> - <td> - <select name="sender"> - <option value="anonymous">Anonymous</option> - <c:forEach items="${ib:getIdentities().all}" var="identity"> - <option value="${identity.key}"> - ${identity.publicName} - <c:if test="${!empty identity.description}"> - ${identity.description}</c:if> - </option> - </c:forEach> - </select> - </td> - </tr> - <tr> - <td> - <select name="recipientType0"> - <option value="to">To:</option> - <option value="cc">CC:</option> - <option value="bcc">BCC:</option> - <option value="reply_to">Reply To:</option> - </select> - </td> - <td> - <input type="text" size="80" name="recipient0"/> - </td> - </tr> - <tr> - <td valign="top"><br/>Message:</td> - <td><textarea rows="30" cols="80" name="message"></textarea></td> - </tr> - <tr> - <td colspan=2 align="center"> - <input type="submit" value="Send"/> - <input type="submit" value="Cancel"/> - <input type="submit" value="Save"/> - </td> - </tr> - </table> - </form> -</div> - -<jsp:include page="footer.jsp"/> \ No newline at end of file diff --git a/apps/i2pbote/WebContent/newIdentity.jsp b/apps/i2pbote/WebContent/newIdentity.jsp deleted file mode 100644 index e4eb581380..0000000000 --- a/apps/i2pbote/WebContent/newIdentity.jsp +++ /dev/null @@ -1,13 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" - pageEncoding="UTF-8"%> -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> - -<%@ taglib prefix="ib" uri="I2pBoteTags" %> - -<jsp:include page="header.jsp"> - <jsp:param name="title" value="New Email Identity"/> -</jsp:include> - -<ib:createKeyPair/> - -<jsp:include page="footer.jsp"/> \ No newline at end of file diff --git a/apps/i2pbote/WebContent/noIdentities.jsp b/apps/i2pbote/WebContent/noIdentities.jsp deleted file mode 100644 index c63b550c87..0000000000 --- a/apps/i2pbote/WebContent/noIdentities.jsp +++ /dev/null @@ -1,43 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" - pageEncoding="UTF-8"%> -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> - -<jsp:include page="header.jsp"> - <jsp:param name="title" value="No Identity"/> -</jsp:include> - -<div class="main"> - <h2>No Email Identity Defined</h2> - <p> - In order to receive email from other people, you need to create an email identity - first. - </p><p> - This is similar to traditional email where you first have to set up an email account - with an email provider. The difference is that in I2P-Bote, there is no provider that - can read all your email because I2P-Bote stores all emails encrypted on the network. - </p><p> - I2P-Bote automatically decrypts emails sent to you, using the email identity you - created. - </p><p> - An email identity has a secret key, and a public key. Anybody who has the secret key - can download and decrypt your emails, so you should never give it to anybody. The - public key, on the other hand, allows people to send email to you. Think of it as - the equivalent of a traditional email address. Give it to everybody you want to be - able to contact you, or make it public. - </p><p> - [TODO paragraph about spam, HashCash]. - </p><p> - You will find that email identities are long combinations of numbers and letters, - and that they are impossible to memorize. I2P-Bote lets you assign an email address - to an email identity to make it easier for you and your contacts to remember. - </p><p> - [TODO name attribute, address attribute]. - The public addressbook should not be 100% trusted. Only destination keys are secure. - </p><p> - [TODO private address book, address directory]. - <form action="editIdentity.jsp?new=true" method="POST"> - <button type="submit" value="New">Create a New Email Identity</button> - </form> -</div> - -<jsp:include page="footer.jsp"/> \ No newline at end of file diff --git a/apps/i2pbote/WebContent/saveIdentity.jsp b/apps/i2pbote/WebContent/saveIdentity.jsp deleted file mode 100644 index f865ab9961..0000000000 --- a/apps/i2pbote/WebContent/saveIdentity.jsp +++ /dev/null @@ -1,31 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" - pageEncoding="UTF-8"%> -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> - -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ taglib prefix="ib" uri="I2pBoteTags" %> - - -<c:if test="${param.action == 'Cancel'}"> - <jsp:forward page="identities.jsp"/> -</c:if> - -<c:choose> - <c:when test="${empty param.publicName}"> - <c:set var="errorMessage" value="Please fill in the Public Name field."/> - </c:when> - <c:otherwise> - <c:set var="errorMessage" value="${ib:saveIdentity(param.key, param.publicName, param.description, param.emailAddress)}"/> - </c:otherwise> -</c:choose> - -<c:if test="${empty errorMessage}"> - <jsp:forward page="identities.jsp"> - <jsp:param name="infoMessage" value="The email identity has been saved."/> - </jsp:forward> -</c:if> -<c:if test="${!empty errorMessage}"> - <jsp:forward page="editIdentity.jsp"> - <jsp:param name="errorMessage" value="${errorMessage}"/> - </jsp:forward> -</c:if> \ No newline at end of file diff --git a/apps/i2pbote/WebContent/sendEmail.jsp b/apps/i2pbote/WebContent/sendEmail.jsp deleted file mode 100644 index aa74b3b1d8..0000000000 --- a/apps/i2pbote/WebContent/sendEmail.jsp +++ /dev/null @@ -1,13 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" - pageEncoding="UTF-8"%> -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> - -<%@ taglib prefix="ib" uri="I2pBoteTags" %> - -<jsp:include page="header.jsp"> - <jsp:param name="title" value="New Email"/> -</jsp:include> - -<ib:sendEmail recipient="${param.recipient0}" message="${param.message}" /> - -<jsp:include page="footer.jsp"/> \ No newline at end of file diff --git a/apps/i2pbote/doc/techdoc.txt b/apps/i2pbote/doc/techdoc.txt deleted file mode 100644 index 575f0c6607..0000000000 --- a/apps/i2pbote/doc/techdoc.txt +++ /dev/null @@ -1,462 +0,0 @@ -I2P-Bote Ver. 0.1 ------------------ - -1) Introduction - -I2P-Bote is a serverless pseudonymous email exchange service for the I2P network. Emails are -stored encrypted on other I2P-bote nodes. -There is a SMTP/POP interface [TO BE IMPLEMENTED] to use with an email client, and a web interface -[TO BE IMPLEMENTED] that lets you change settings or send/read email. - -Email can be sent through a number of other nodes (relays) for increased security, or directly to -a set of storage nodes for faster delivery. The same applies to retrieving email. -All nodes are created equal. There are no "supernodes" or designated relay/storage nodes. -Everybody acts as a potential relay and storage node. The maximum amount of disk space used for -relayed/stored email packets can be configured by the user. -Before an email is sent to a relay, it is broken up into packets and encrypted with the recipient's -public key. - -Email packets are stored redundantly in a distributed hash table (DHT). Stored email packets are -kept for at least 100 days, during which the recipient can download them. -For relays, the guaranteed retention time is only 7 days. -If a node runs out of email storage space, and there are no old packets that can be deleted, the -node refuses storage requests. - -〮Email addresses are entered in the format "username@domain.i2p"; they must match an entry in the -local address book or the distributed email directory. An exception are addresses of the form -"dest_key@bote.i2p", where dest_key is a 516-byte base64-encoded email keypair. No lookup is done -for these addresses; the dest_key part is directly used for routing the email. - -Below is a diagram of how an email packet is routed from a sender to a recipient: - - - .-------. .-------. .--------. - | Relay | ----> | Relay | ----> | Storer | --------------------. - _ `-------' `-------' `--------' `\ - /` | - / | - .--------. / .-------. .-------. .--------. | - | Sender | -----> | Relay | ---> | Relay | ----> | Storer | -------------. | - `--------' \ `-------' `-------' `--------' `\ | - \ | | - _\/ | | - .-------. .-------. .--------. | | - | Relay | ----> | Relay | ----> | Storer | ------. | | - `-------' `-------' `--------' `\ | | - | | | - V V V - - .--------------- Kademlia DHT -------------------------. - | .---------. | - | .---------. | Storage | | - | | Storage | .---------. | Node | | - | | Node | | Storage | `---------' | - | `---------' | Node | | - | `---------' .---------. | - | .---------. .---------. | Storage | | - | | Storage | | Storage | .---------. | Node | | - | | Node | | Node | | Storage | `---------' | - | `---------' `---------' | Node | | - | `---------' | - `------------------------------------------------------' - - | | | - .-------. .-------. .---------. _' | | - | Relay | <----- | Relay | <---- | Fetcher | <---' | | - / `-------' `-------' `---------' | | - / | | - \/_ | | - .-----------. .-------. .-------. .---------. _' | - | Recipient | <---- | Relay | <--- | Relay | <---- | Fetcher | <----------' | - `-----------' _ `-------' `-------' `---------' | - |\ | - \ | - \ .-------. .-------. .---------. _' - | Relay | <----- | Relay | <---- | Fetcher | <-----------------' - `-------' `-------' `---------' - - -The number of relays for sending or retrieving an email is user-configurable. For higher performance (but -reduced anonymity), it is possible to use no relays, no storers/fetchers, i.e. sender and recipient -talk to the storage nodes directly. - -TODO explain how an index packet is relayed back to the recipient, who then uses another chain to get the email packets -referenced in the index packet. - -The code is licensed under the GPL. The author can be reached at HungryHobo@mail.i2p, either in -German or English. - - -2. Kademlia - -TODO explain modified Kademlia: index packets, 2-stage retrieval; -exhaustive Kademlia search for index packets, standard Kademlia search for email packets; -no need for exponential expiration time (used in standard kademlia to prevent over-caching of popular files) because -emails are only retrieved once (or a few times if there is a transmission error). - -TODO mention the problem of highly unbalanced trees and the sibling list solution. - - -3. Packet Types - -3.1. Communication Packets - - Communication packets are used for sending data between two I2P-Bote nodes. They contain a - payload packet, see 3.2. - All Communication Packets start with a four-byte prefix, followed by one byte for the packet - type, one byte for the packet version, and a 32-byte packet ID. - Strings are UTF8 encoded. - - Packet Type | Field | Data Type | Description - ---------------------+-------+------------+---------------------------------------------------- - Relay Request | | | Request to a node to forward a Relay Packet - | PFX | 4 bytes | Packet prefix, must be 0x6D 0x30 0x52 0xE9 - | TYPE | 1 byte | Value = 'Y' - | VER | 1 byte | Format version (only ver. 1 is supported) - | PID | 32 bytes | Packet ID, used for delivery confirmation - | HLEN | 2 bytes | HashCash length - | HK | byte[] | HashCash token (HLEN bytes) - | DLEN | 2 bytes | Length of DATA field in bytes, up to ~30k - | DATA | byte[] | A Relay Packet - ---------------------+-------+------------+---------------------------------------------------- - Fetch Request | | | Request to a chain end point to fetch emails - | PFX | 4 bytes | Packet prefix, must be 0x6D 0x30 0x52 0xE9 - | TYPE | 1 byte | Value = 'T' - | VER | 1 byte | Format version (only ver. 1 is supported) - | PID | 32 bytes | Packet ID, used for delivery confirmation - | DTYP | 1 byte | Type of data to retrieve: - | KEY | 32 bytes | DHT key to look up - | KPR | 384 bytes | Email keypair of recipient - | RLEN | 2 bytes | Length of RET field - | RET | byte[] | Relay packet, contains the return chain (RLEN bytes) - ---------------------+-------+------------+---------------------------------------------------- - Response Packet | | | Response to a Retrieve Request, Fetch Request, - | | | Find Close Peers Request, or a Relay List Request - | PFX | 4 bytes | Packet prefix, must be 0x6D 0x30 0x52 0xE9 - | TYPE | 1 byte | Value = 'N' - | VER | 1 byte | Format version (only ver. 1 is supported) - | PID | 32 bytes | Packet Id of the request packet - | STA | 1 byte | Status code: - | | | 0 = OK - | | | 1 = General error - | | | 2 = No data found - | | | 3 = Invalid packet - | | | 4 = Invalid HashCash - | | | 5 = Not enough HashCash provided - | | | 6 = No disk space left - | DLEN | 2 bytes | Length of DATA field; can be 0 if no payload - | DATA | byte[] | A Payload Packet - ---------------------+-------+------------+---------------------------------------------------- - Delete Request | | | Request to delete all copies of a packet by DHT key - | PFX | 4 bytes | Packet prefix, must be 0x6D 0x30 0x52 0xE9 - | TYPE | 1 byte | Value = 'D' - | VER | 1 byte | Format version (only ver. 1 is supported) - | KEY | 32 bytes | DHT key of the packet that is to be deleted - | DEL | 32 bytes | Deletion key, encrypts to DEL value in the email pkt - ---------------------+-------+------------+------------------------------------------------- - Ping | | | Check to see if a host is still up. - | PFX | 4 bytes | Packet prefix, must be 0x6D 0x30 0x52 0xE9 - | TYPE | 1 byte | Value = 'P' - | VER | 1 byte | Format version (only ver. 1 is supported) - | PID | 32 bytes | Packet ID - ---------------------+-------+------------+------------------------------------------------- - Pong | | | Let the the pinger know we're still there. - | PFX | 4 bytes | Packet prefix, must be 0x6D 0x30 0x52 0xE9 - | TYPE | 1 byte | Value = 'O' - | VER | 1 byte | Format version (only ver. 1 is supported) - | PID | 32 bytes | Packet ID of the corresponding Ping packet - | HKS | 1 byte | Minimum HashCash strength this node will accept - ---------------------+-------+------------+---------------------------------------------------- - Relay List Request | | | "Send me your list of relay peers" - | PFX | 4 bytes | Packet prefix, must be 0x6D 0x30 0x52 0xE9 - | TYPE | 1 byte | Value = 'A' - | VER | 1 byte | Format version (only ver. 1 is supported) - | PID | 32 bytes | Packet ID - ---------------------+-------+------------+---------------------------------------------------- - - DHT Packets - - Packet Type | Field | Data Type | Description - ---------------------+-------+------------+---------------------------------------------------- - Retrieve Request | | | DHT Request for a value for a key - | PFX | 4 bytes | Packet prefix, must be 0x6D 0x30 0x52 0xE9 - | TYPE | 1 byte | Value = 'Q' - | VER | 1 byte | Format version (only ver. 1 is supported) - | PID | 32 bytes | Packet ID, used for delivery confirmation - | DTYP | 1 byte | Type of data to retrieve: - | | | 'I' = Index Packet - | | | 'E' = Email Packet - | | | 'K' = Email destination - | KEY | 32 bytes | DHT key to look up - ---------------------+-------+------------+---------------------------------------------------- - Store Request | | | DHT Store Request - | PFX | 4 bytes | Packet prefix, must be 0x6D 0x30 0x52 0xE9 - | TYPE | 1 byte | Value = 'S' - | VER | 1 byte | Format version (only ver. 1 is supported) - | PID | 32 bytes | Packet ID, used for delivery confirmation - | HLEN | 2 bytes | HashCash length - | HK | byte[] | HashCash token (HLEN bytes) - | DLEN | 2 bytes | Length of DATA field - | DATA | byte[] | Payload packet to store (DLEN bytes). Can be an - | | | Index Pkt / Email Pkt / Email Destination) - ---------------------+-------+------------+---------------------------------------------------- - Find Close Peers | | | Request for k peers close to a key - | PFX | 4 bytes | Packet prefix, must be 0x6D 0x30 0x52 0xE9 - | TYPE | 1 byte | Value = 'F' - | VER | 1 byte | Format version (only ver. 1 is supported) - | PID | 32 bytes | Packet ID, used for delivery confirmation - | KEY | 32 bytes | DHT key - ---------------------+-------+------------+---------------------------------------------------- - -3.2. Data Packets - - These are always sent wrapped in a Communication Packet (see 3.1). - E denotes an encrypted field. - - Packet Type | Field | Data Type | Description - ---------------------+-------+------------+---------------------------------------------------- - Email Packet | | | A email or email fragment, 1 recipient. - | TYPE | 1 byte | Value = 'E' - | KEY | 32 bytes | The DHT key of the packet (generated randomly) - | DELP | 32 bytes | Deletion key in plaintext, zeroed out for retrieving - | LEN | 2 bytes | Length of the encrypted part of the packet - | DELE | 32 bytes E | Deletion key, encrypted w/ recipient's key - | MSID | 32 bytes E | Message ID in binary format - | FRID | 2 bytes E | Fragment Index of this packet (0..NFR-1) - | NFR | 2 bytes E | Number of fragments in the email - | MLEN | 2 bytes E | Length of the MSG field - | MSG | byte[] E | encrypted email or fragment (MLEN bytes) - ---------------------+-------+------------+---------------------------------------------------- - Index Packet | | | Contains the DHT keys of one or more Email Packets. - | TYPE | 1 byte | Value = 'I' - | DH | 32 bytes | SHA-256 hash of the recipient's email destination - | NP | 1 byte | Number of keys in the packet - | KEY1 | 256 bytes | DHT key of the first Email Packet - | KEY1 | 256 bytes | DHT key of the second Email Packet - | ... | ... | ... - | KEYn | 256 bytes | DHT key of the n-th Email Packet - ---------------------+-------+------------+---------------------------------------------------- - Relay Packet | | | The payload of a Relay Request - | TYPE | 1 byte | Value = 'R' - | TMIN | 4 bytes | Earliest send time - | TMAX | 4 bytes | Latest sent time (no guarantee!) - | XK | 32 bytes | Key to XOR the payload with - | NEXT | 384 bytes | Destination to forward the packet to - | DLEN | 2 bytes | Length of DATA field in bytes, up to ~30k - | DATA | byte[] E | Payload, encrypted with NEXT's key (DLEN bytes) - | | | (can contain another Relay Packet, Email Packet, - | | | or Retrieve Request) - ---------------------+-------+------------+------------------------------------------------- - Peer List | | | Response to a Find Close Peers Request or - | | | a Relay List Request - | TYPE | 1 byte | Value = 'L' - | NUMP | 2 bytes | Number of peers in the list - | P1 | 384 bytes | Destination key - | P2 | 384 bytes | Destination key - | ... | ... | ... - | Pn | 384 bytes | Destination key - ---------------------+-------+------------+------------------------------------------------- - Email Destination | | | TBD - | | | - | | | - | | | - | | | - | | | - ---------------------+-------+------------+------------------------------------------------- - - -4. Protocols For Inter-Node Communication - -4.1. Sending Email - I2P nodes involved: A=Sender, R1...Rn=Relays, S1...Sm=Storage Nodes - - 1) A sends an Relay Packet to R1. - 2) R1 decrypts the packet, waits a random amount of time, and sends it to R2. - 3) R2 confirms delivery with R1. - 4) Repeat until packet arrives at Rn. - 5) Rn decrypts the Relay Packet into an Email Packet. - 6) Rn sends the packet to S1,...,Sm through a Kademlia STORE - -4.2. Retrieving Email - I2P nodes involved: A=Address Owner, O1...On=Outbound Relays, I1...In=Inbound Relays, S1...Sm=Storage Nodes - - 1) A sends a Relay Packet to O1. - 2) O1 decrypts the packet, waits a random amount of time, and sends it to O2. - 3) O2 confirms delivery with O1. - 4) Repeat until packet arrives at On. - 5) On decrypts the Relay Packet into a Retrieve Request. - 6) On does a Kademlia LOOKUP for the email address. - 7) Nodes S1,...,Sm verify the expiration time, request number, and A's signature on the Retrieve Request. - 8) Nodes S1,...,Sm send their stored Email Packets to Rn. - 9) On confirms delivery with S1,...,Sm - 10) On makes a Relay Packet from the Email Packet and sends it to I1. - 11) I1 confirms delivery with On. - 12) I1 sends each packet to I2. - 13) I2 confirms delivery with I1. - 14) Repeat the last two steps until packet arrives at A. - 15) A decrypts the packet into a plaintext email or email fragment. - - Note: The system purposely does not prevent retrieval of email by unauthorized nodes, in order to - allow a node to test the reliability of a storage node before using it to store an Email Packet. - - -4.3. Pinging a node - -4.4. Responding to a Ping - -4.5. Storing an Email Packet on a storage node - -4.6. Sending a Retrieve Request to a Node - -4.7. Deleting an Email Packet - - 1) Recipient knows the deletion key after it decrypts the email packet (the packet also contains a - "plaintext deletion key" field, which is all zeros after it leaves a storage node). - 2) Recipient sends a Delete Request to all storage nodes close to the DHT key of the Email Packet - -4.8. Looking up an email address in the directory - -4.9. Announcing a new email address to the directory - -4.10. Updating or deleting an email address from the directory - - -5. Algorithms Used By Nodes Locally - -5.1. Sending Email *** OUTDATED *** - - 1) Given a MIME email, GZip it, sign it, store it in the local outbox, split it into 30kB - packets plus an Index Packet, pad the packets if necessary, and store them locally. - 2) Pick a random packet/recipient combination for which the wait time is up, and for which - less than <storage redundancy> distinct delivery confirmations have been received within the - timeout period, and the maximum number of retries has not been reached. - 3) Set a random packet ID on the packet. - 4) Encrypt the packet with the public key for the recipient - 5) Encrypt the packet with the public keys of relay n, relay n-1, ..., relay 1, and add - the destination key of the next relay each time. Also included is a minimum/maximum delay - value for each relay. - 6) Queue the packet for sending to the first relay. - 7) Repeat from step 2 until no more packets left. - 8) When all packets have been sent, move the email from the outbox to the sent folder. - - Rationale for storing the whole email, not the packets, on disk: When sending to multiple - recipients, only one copy of the email needs to be stored. - -5.2. Retrieving Email - - 1) Randomly choose a set of n relay nodes, R1...Rn (outgoing chain for request) - 2) Randomly choose a set of m relay nodes, S1...Sm.(return chain / inbound mail chain) - - with Sm being the node closest to the receiver - and S1 the chain node closest to fetcher - 3) Generate m+1 random 32-byte arrays (for XORing the return packets), X1...Xm+1 - 4) With Sm's public key, encrypt the local destination key and Xm+1 - 5) With Sm-1's public key, encrypt Sm's destination key, Xm, and the data from step 4) - 6) With Sm-2's public key, encrypt Sm-1's destination key, Xm-1, and the data from step 5) - 7) Repeat until the entire return chain, S1...Sm, has been onion-encrypted, - and also include a minimum/maximum delay value for each relay. - 8) Add S1's destination key and X1 to the data from step 7) - 9) Add the data (which is a Relay Packet) to a Retrieve Request packet. - 10) Encrypt the resulting packet, using the public keys of relays - Rn (Fetcher), Rn-1, ..., R1, and add the destination key of the next relay each time. - Also included is a minimum/maximum delay value for each relay. - 11) Set a random packet ID on the packet at each layer - 12) Queue the packet for immediate sending to the first relay. - - The following is done continuously and asynchronously, regardless of whether there a Retrieve - Request has been sent recently: - - 1) Nodes are always ready for incoming Email Packets. - 2) For every email packet that is received, a Delete Request is sent out to the Kademlia network - via a relay chain. - -5.3. Fetching Email Packets For an Address Through Kademlia - - 1) Do a Kademlia lookup for the keypair in the Retrieve Request - 2) Extract packet IDs from the Index Packet(s) - 3) Do a Kademlia lookup for each packet ID - 4) Check the packet ID on the Email Packets and send them back to the first return relay - -5.4. Relaying a Packet - - 1) Decrypt packet - 2) Verify signature - 3) XOR payload with the key included in the packet. - 4) Read wait time range from packet - 5) Wait for a random amount of time within the wait time range. - 6) Queue packet for sending with that delay. - 7) If no delivery confirmation within timeout period, wait for $resend_delay and repeat from step 5 - -5.5. Storing an Email Packet - - 1) If packet can't fit in storage space, delete stored email packets that are more than 100 days old. - 2) If still no room, send back negative response - 3) Otherwise, write packet to file and send positive response - - -6. Local Address Book - - -7. Distributed Email Directory - -Each adress-keypair mapping is stored at multiple nodes. Nodes can only add an address to the -distributed address directory, but they cannot edit or delete them. An address must be renewed -periodically, or it expires after a year and is deleted from the address directory. -A node only stores one keypair per email address. Whichever came first, stays in the address -directory. -When doing an address lookup, a error message is displayed to the user if lookup results from two -nodes are different. -It is important for the user to understand that using the distributed email directory is not as -secure as manually adding keypairs to the local address book, although it is more convenient. - - -8. UI - -8.1. Retrieving email - - * Wait 20 seconds for any emails to arrive, then return from HTTP request or POP3 request. - All other emails will be received in the background. - * The "high priority" setting found in most email clients sets all relaying delays to zero. - - -9. Files - -9.1. Identities file - - Stores all email identities the local user has created. One line per entry. - Format: <base64 key><tab><public name>[<tab><description>][<tab><email address>] - - -10. To Do - - * Replication per the Kademlia spec - * Have an option to disable automatic lookups in the distributed address directory for your own address - * Automatically create a different sender address for each recipient - * test relays periodically - * test storage nodes periodically - * optionally pad all packets to a system-wide fixed size - * Always use the same amount of bandwidth, testing nodes or sending dummy messages - if necessary. - * Always keep incoming bandwidth the same as outgoing bandwidth - * Pad packets before encrypting to prevent tagging attacks - * packet id for confirmation - * onion packets/regular packets - * delivery confirmation to sender - * What about incoming bandwith, can it be limited? - * Turnkey outproxy feature? - * All nodes keep track of I2PBote peers through Peer List Requests and by pinging known peers - periodically. - * optionally, packets are padded to a constant size - * select different set of hops for each packet - * instead of sending dummy messages for cover traffic, test gateways by routing packet to self - * keep track of uptimes + reliability of paths (or gateways), have a "minimum - uptime/min reliability percentage" setting for selecting gateways - * Use three different I2P destinations for sending and receiving data - * Use more storage nodes if email destination is known to be heavily frequented (like Kademlia does for popular hashes) - * mention that min/max delay = earliest/latest send time (explain that there is no guarantee for the send time being between min and max, it can be after max) - * Consider replacing ElGamal with 256-bit ECC encryption (=86 base64 chars) which comes standard in Java 7 - * If an email fits in one packet, don't bother with an index packet - * Emails in the Outbox: Show addt'l "progress" progress column which is clickable and brings up detailed info. - * On first run, offer to create a new email identity, and optionally assign an email address to it. - * Folder structure on disk should reflect folders in app. All email folders visible to the user have the same root directory: [app dir]/folders. - * ask user for confirmation before deleting an email identity - * have a view of the incomplete folder, so users can look at incomplete emails diff --git a/apps/i2pbote/doc/userdoc.txt b/apps/i2pbote/doc/userdoc.txt deleted file mode 100644 index de252cc93b..0000000000 --- a/apps/i2pbote/doc/userdoc.txt +++ /dev/null @@ -1,18 +0,0 @@ -I2P-Bote --------- - -This file explains how to use I2P-Bote. For technical documentation, see techdoc.txt. - -1. To install the app, [TODO] - -2. Set up an email address [TODO] - -3. Send a test email to yourself [TODO] - -4. Checking for email - -When you view your inbox through the web interface or click the "Get Mail" button on your email -client, two things happen: New downloaded emails are shown, if there are any, and the I2P-Bote -network is contacted to see if more emails are waiting to be downloaded. - -5. The Configuration File \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/CheckEmailTask.java b/apps/i2pbote/src/i2p/bote/CheckEmailTask.java deleted file mode 100644 index 0f847bc14e..0000000000 --- a/apps/i2pbote/src/i2p/bote/CheckEmailTask.java +++ /dev/null @@ -1,130 +0,0 @@ -package i2p.bote; - -import i2p.bote.folder.IncompleteEmailFolder; -import i2p.bote.network.DHT; -import i2p.bote.network.PeerManager; -import i2p.bote.packet.EmailPacket; -import i2p.bote.packet.IndexPacket; -import i2p.bote.packet.UniqueId; -import i2p.bote.packet.dht.DhtStorablePacket; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.ThreadFactory; -import java.util.concurrent.TimeUnit; - -import net.i2p.data.DataFormatException; -import net.i2p.data.Hash; -import net.i2p.util.Log; - -/** - * Gets email packets from the DHT for one email identity. A separate thread is used for - * each packet in order to speed things up, and because the packets are in different places - * on the network. - * - * @author HungryHobo@mail.i2p - */ -public class CheckEmailTask implements Runnable { - private static final int MAX_THREADS = 50; - private static final int THREAD_STACK_SIZE = 64 * 1024; // TODO find a safe low value (default in 64-bit Java 1.6 = 1MByte) - private static final ThreadFactory EMAIL_PACKET_TASK_THREAD_FACTORY = Util.createThreadFactory("EmailPktTask", THREAD_STACK_SIZE); - private ExecutorService executor; - - private Log log = new Log(CheckEmailTask.class); - private EmailIdentity identity; - private DHT dht; - private PeerManager peerManager; - private IncompleteEmailFolder incompleteEmailFolder; - - public CheckEmailTask(EmailIdentity identity, DHT dht, PeerManager peerManager, IncompleteEmailFolder incompleteEmailFolder) { - this.identity = identity; - this.dht = dht; - this.peerManager = peerManager; - this.incompleteEmailFolder = incompleteEmailFolder; - } - - @Override - public void run() { - Collection<Hash> emailPacketKeys = findEmailPacketKeys(); - - executor = Executors.newFixedThreadPool(MAX_THREADS, EMAIL_PACKET_TASK_THREAD_FACTORY); - for (Hash dhtKey: emailPacketKeys) - executor.submit(new EmailPacketTask(dhtKey)); - executor.shutdown(); - try { - executor.awaitTermination(1, TimeUnit.DAYS); - } catch (InterruptedException e) { - log.error("Interrupted while checking for mail.", e); - executor.shutdownNow(); - } - } - - /** - * Queries the DHT for new index packets and returns the DHT keys contained in them. - * @return A <code>Collection</code> containing zero or more elements - */ - private Collection<Hash> findEmailPacketKeys() { - log.debug("Querying the DHT for index packets with key " + identity.getHash()); - Collection<DhtStorablePacket> packets = dht.findAll(identity.getHash(), IndexPacket.class); - - // build an Collection of index packets - Collection<IndexPacket> indexPackets = new ArrayList<IndexPacket>(); - for (DhtStorablePacket packet: packets) - if (packet instanceof IndexPacket) - indexPackets.add((IndexPacket)packet); - else - log.error("DHT returned packet of class " + packet.getClass().getSimpleName() + ", expected IndexPacket."); - - IndexPacket mergedPacket = new IndexPacket(indexPackets); - log.debug("Found " + mergedPacket.getDhtKeys().size() + " Email Packet keys."); - return mergedPacket.getDhtKeys(); - } - - /** - * Queries the DHT for an email packet, adds the packet to the {@link IncompleteEmailFolder}, - * and deletes the packet from the DHT. - * - * @author HungryHobo@mail.i2p - */ - private class EmailPacketTask implements Runnable { - private Hash dhtKey; - - /** - * - * @param dhtKey The DHT key of the email packet to retrieve - */ - public EmailPacketTask(Hash dhtKey) { - this.dhtKey = dhtKey; - } - - @Override - public void run() { - DhtStorablePacket packet = dht.findOne(dhtKey, EmailPacket.class); - if (packet instanceof EmailPacket) { - EmailPacket emailPacket = (EmailPacket)packet; - try { - emailPacket.decrypt(identity); - } - catch (DataFormatException e) { - log.error("Can't decrypt email packet: " + emailPacket, e); - // TODO propagate error message to UI - } - incompleteEmailFolder.add(emailPacket); - sendDeleteRequest(dhtKey, emailPacket.getEncryptedDeletionKey()); - } - else - log.error("DHT returned packet of class " + packet.getClass().getSimpleName() + ", expected EmailPacket."); - } - - /** - * Sends a delete request to the DHT. - * @param dhtKey The DHT key of the email packet that is to be deleted - * @param deletionKey The deletion key for the email packet - */ - private void sendDeleteRequest(Hash dhtKey, UniqueId deletionKey) { - // TODO - } - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/Configuration.java b/apps/i2pbote/src/i2p/bote/Configuration.java deleted file mode 100644 index d7fd06c37d..0000000000 --- a/apps/i2pbote/src/i2p/bote/Configuration.java +++ /dev/null @@ -1,192 +0,0 @@ -package i2p.bote; - -import java.io.File; -import java.io.IOException; -import java.util.Properties; - -import net.i2p.I2PAppContext; -import net.i2p.data.DataHelper; -import net.i2p.util.Log; - -public class Configuration extends Properties { - private static final long serialVersionUID = -6318245413106186095L; - private static final String I2P_BOTE_SUBDIR = ".i2pbote"; // relative to the I2P app dir - private static final String CONFIG_FILE_NAME = "i2pbote.config"; - private static final String DEST_KEY_FILE_NAME = "local_dest.key"; - private static final String PEER_FILE_NAME = "peers.txt"; - private static final String IDENTITIES_FILE_NAME = "identities.txt"; - private static final String OUTBOX_DIR = "outbox"; // relative to I2P_BOTE_SUBDIR - private static final String OUTBOX_SUBDIR_LOCAL = "local"; // relative to OUTBOX_DIR - private static final String OUTBOX_SUBDIR_RELAY = "relay"; // relative to OUTBOX_DIR - private static final String INCOMPLETE_SUBDIR = "incomplete"; // relative to I2P_BOTE_SUBDIR - private static final String EMAIL_DHT_SUBDIR = "dht_email_pkt"; // relative to I2P_BOTE_SUBDIR - private static final String INDEX_PACKET_DHT_SUBDIR = "dht_index_pkt"; // relative to I2P_BOTE_SUBDIR - private static final String INBOX_SUBDIR = "inbox"; // relative to I2P_BOTE_SUBDIR - - // Parameter names in the config file - private static final String PARAMETER_REDUNDANCY = "redundancy"; - private static final String PARAMETER_STORAGE_SPACE_INBOX = "storageSpaceInbox"; - private static final String PARAMETER_STORAGE_SPACE_RELAY = "storageSpaceRelay"; - private static final String PARAMETER_STORAGE_TIME = "storageTime"; - private static final String PARAMETER_MAX_FRAGMENT_SIZE = "maxFragmentSize"; - private static final String PARAMETER_HASHCASH_STRENGTH = "hashCashStrength"; - private static final String PARAMETER_SMTP_PORT = "smtpPort"; - private static final String PARAMETER_POP3_PORT = "pop3Port"; - - // Defaults for each parameter - private static final int DEFAULT_REDUNDANCY = 2; - private static final int DEFAULT_STORAGE_SPACE_INBOX = 1024 * 1024 * 1024; - private static final int DEFAULT_STORAGE_SPACE_RELAY = 100 * 1024 * 1024; - private static final int DEFAULT_STORAGE_TIME = 31; // in days - private static final int DEFAULT_MAX_FRAGMENT_SIZE = 10 * 1024 * 1024; // the maximum size one email fragment can be, in bytes - private static final int DEFAULT_HASHCASH_STRENGTH = 10; - private static final int DEFAULT_SMTP_PORT = 7661; - private static final int DEFAULT_POP3_PORT = 7662; - - private Log log = new Log(Configuration.class); - private File i2pBoteDir; - - /** - * Reads configuration settings from the <code>I2P_BOTE_SUBDIR</code> subdirectory under - * the I2P application directory. The I2P application directory can be changed via the - * <code>i2p.dir.app</code> system property. - * - * Logging is done through the I2P logger. I2P reads the log configuration from the - * <code>logger.config</code> file whose location is determined by the - * <code>i2p.dir.config</code> system property. - * @return - */ - public Configuration() { - // get the I2PBote directory and make sure it exists - i2pBoteDir = getI2PBoteDirectory(); - if (!i2pBoteDir.exists()) - i2pBoteDir.mkdirs(); - - // read the configuration file - File configFile = new File(i2pBoteDir, CONFIG_FILE_NAME); - boolean configurationLoaded = false; - if (configFile.exists()) { - log.debug("Loading config file <" + configFile.getAbsolutePath() + ">"); - - try { - DataHelper.loadProps(this, configFile); - configurationLoaded = true; - } catch (IOException e) { - log.error("Error loading configuration file <" + configFile.getAbsolutePath() + ">", e); - } - } - if (!configurationLoaded) - log.info("Can't read configuration file <" + configFile.getAbsolutePath() + ">, using default settings."); - } - - public File getDestinationKeyFile() { - return new File(i2pBoteDir, DEST_KEY_FILE_NAME); - } - - public File getPeerFile() { - return new File(i2pBoteDir, PEER_FILE_NAME); - } - - public File getIdentitiesFile() { - return new File(i2pBoteDir, IDENTITIES_FILE_NAME); - } - - public File getLocalOutboxDir() { - return new File(getOutboxBaseDir(), OUTBOX_SUBDIR_LOCAL); - } - - public File getRelayOutboxDir() { - return new File(getOutboxBaseDir(), OUTBOX_SUBDIR_RELAY); - } - - private File getOutboxBaseDir() { - return new File(i2pBoteDir, OUTBOX_DIR); - } - - public File getInboxDir() { - return new File(i2pBoteDir, INBOX_SUBDIR); - } - - public File getIncompleteDir() { - return new File(i2pBoteDir, INCOMPLETE_SUBDIR); - } - - public File getEmailDhtStorageDir() { - return new File(i2pBoteDir, EMAIL_DHT_SUBDIR); - } - - public File getIndexPacketDhtStorageDir() { - return new File(i2pBoteDir, INDEX_PACKET_DHT_SUBDIR); - } - - private static File getI2PBoteDirectory() { - // the parent directory of the I2PBote directory ($HOME or the value of the i2p.dir.app property) - File i2pAppDir = I2PAppContext.getGlobalContext().getAppDir(); - - return new File(i2pAppDir, I2P_BOTE_SUBDIR); - } - - /** - * Save the configuration - * @param configFile - * @throws IOException - */ - public void saveToFile(File configFile) throws IOException { - log.debug("Saving config file <" + configFile.getAbsolutePath() + ">"); - DataHelper.storeProps(this, configFile); - } - - /** - * Returns the number of relays to use for sending and receiving email. Zero is a legal value. - * @return - */ - public int getRedundancy() { - return getIntParameter(PARAMETER_REDUNDANCY, DEFAULT_REDUNDANCY); - } - - /** - * Returns the maximum size (in bytes) the inbox can take up. - * @return - */ - public int getStorageSpaceInbox() { - return getIntParameter(PARAMETER_STORAGE_SPACE_INBOX, DEFAULT_STORAGE_SPACE_INBOX); - } - - /** - * Returns the maximum size (in bytes) all messages stored for relaying can take up. - * @return - */ - public int getStorageSpaceRelay() { - return getIntParameter(PARAMETER_STORAGE_SPACE_RELAY, DEFAULT_STORAGE_SPACE_RELAY); - } - - /** - * Returns the time (in milliseconds) after which an email is deleted from the outbox if it cannot be sent / relayed. - * @return - */ - public long getStorageTime() { - return 24L * 3600 * 1000 * getIntParameter(PARAMETER_STORAGE_TIME, DEFAULT_STORAGE_TIME); - } - - public int getMaxFragmentSize() { - return getIntParameter(PARAMETER_MAX_FRAGMENT_SIZE, DEFAULT_MAX_FRAGMENT_SIZE); - } - - public int getHashCashStrength() { - return getIntParameter(PARAMETER_HASHCASH_STRENGTH, DEFAULT_HASHCASH_STRENGTH); - } - - private int getIntParameter(String parameterName, int defaultValue) { - String stringValue = getProperty(parameterName); - if (stringValue == null) - return defaultValue; - else - try { - return new Integer(getProperty(parameterName)); - } - catch (NumberFormatException e) { - log.warn("Can't convert value <" + stringValue + "> for parameter <" + parameterName + "> to int, using default."); - return defaultValue; - } - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/EmailDestination.java b/apps/i2pbote/src/i2p/bote/EmailDestination.java deleted file mode 100644 index 32b848c438..0000000000 --- a/apps/i2pbote/src/i2p/bote/EmailDestination.java +++ /dev/null @@ -1,154 +0,0 @@ -package i2p.bote; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.nio.ByteBuffer; - -import net.i2p.client.I2PClient; -import net.i2p.client.I2PClientFactory; -import net.i2p.client.I2PSession; -import net.i2p.crypto.SHA256Generator; -import net.i2p.data.Base64; -import net.i2p.data.DataFormatException; -import net.i2p.data.Destination; -import net.i2p.data.Hash; -import net.i2p.data.PublicKey; -import net.i2p.data.SigningPublicKey; -import net.i2p.util.Log; - -/** - * Uniquely identifies an email recipient. This implementation uses I2P keypairs. - * - * @author HungryHobo@mail.i2p - */ -public class EmailDestination { - private Log log = new Log(EmailDestination.class); - private PublicKey publicEncryptionKey; - private SigningPublicKey publicSigningKey; - - /** - * Creates a fresh <code>EmailDestination</code>. - */ - public EmailDestination() { - try { - I2PClient i2pClient = I2PClientFactory.createClient(); - ByteArrayOutputStream arrayStream = new ByteArrayOutputStream(); - i2pClient.createDestination(arrayStream); - byte[] destinationArray = arrayStream.toByteArray(); - I2PSession i2pSession = i2pClient.createSession(new ByteArrayInputStream(destinationArray), null); - - initKeys(i2pSession); - } - catch (Exception e) { - log.error("Can't generate EmailDestination.", e); - } - } - - /** - * Creates a <code>EmailDestination</code> using data read from a {@link ByteBuffer}. - * @param buffer - */ - public EmailDestination(ByteBuffer buffer) { - byte[] encryptionKeyArray = new byte[PublicKey.KEYSIZE_BYTES]; - buffer.get(encryptionKeyArray); - publicEncryptionKey = new PublicKey(encryptionKeyArray); - - byte[] signingKeyArray = new byte[SigningPublicKey.KEYSIZE_BYTES]; - buffer.get(signingKeyArray); - publicSigningKey = new SigningPublicKey(signingKeyArray); - } - - public EmailDestination(String base64Data) { - try { - base64Data += "AAAA"; // add a null certificate - Destination i2pDestination = new Destination(base64Data); - publicEncryptionKey = i2pDestination.getPublicKey(); - publicSigningKey = i2pDestination.getSigningPublicKey(); - } catch (DataFormatException e) { - log.error("Can't generate EmailDestination.", e); - } - } - -/* public EmailDestination(byte[] data) { - try { - byte[] destinationPlusCert = addNullCertificate(data); - ByteArrayInputStream byteStream = new ByteArrayInputStream(destinationPlusCert); - I2PSession i2pSession = I2PClientFactory.createClient().createSession(byteStream, null); - initKeys(i2pSession); - } - catch (I2PSessionException e) { - log.error("Can't generate EmailDestination.", e); - } - }*/ - -/* private byte[] addNullCertificate(byte[] data) { - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - try { - outputStream.write(data); - outputStream.write(new Certificate().toByteArray()); - // Add an extra zero byte so I2PSessionImpl.readDestination doesn't fall on its face. I believe this is a bug. - outputStream.write(0); - } - catch (IOException e) { - log.error("Can't write to ByteArrayOutputStream.", e); - } - return outputStream.toByteArray(); - }*/ - - protected void initKeys(I2PSession i2pSession) { - publicEncryptionKey = i2pSession.getMyDestination().getPublicKey(); - publicSigningKey = i2pSession.getMyDestination().getSigningPublicKey(); - } - - public PublicKey getPublicEncryptionKey() { - return publicEncryptionKey; - } - - public SigningPublicKey getPublicSigningKey() { - return publicSigningKey; - } - - private byte[] getKeysAsArray() { - ByteArrayOutputStream byteStream = new ByteArrayOutputStream(); - try { - writeTo(byteStream); - } - catch (IOException e) { - log.error("Can't write to ByteArrayOutputStream.", e); - } - return byteStream.toByteArray(); - } - - private void writeTo(OutputStream outputStream) throws IOException { - try { - publicEncryptionKey.writeBytes(outputStream); - publicSigningKey.writeBytes(outputStream); - } - catch (DataFormatException e) { - log.error("Invalid encryption key or signing key.", e); - } - } - - public Hash getHash() { - // TODO cache the hash value? - return SHA256Generator.getInstance().calculateHash(getKeysAsArray()); - } - - /** - * Returns the two public keys in Base64 representation. - */ - public String getKey() { - return Base64.encode(getKeysAsArray()); - } - - public String toBase64() { - return getKey(); - } - - @Override - public String toString() { - return getKey(); - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/EmailIdentity.java b/apps/i2pbote/src/i2p/bote/EmailIdentity.java deleted file mode 100644 index e21ef19d5f..0000000000 --- a/apps/i2pbote/src/i2p/bote/EmailIdentity.java +++ /dev/null @@ -1,123 +0,0 @@ -package i2p.bote; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; - -import net.i2p.client.I2PClient; -import net.i2p.client.I2PClientFactory; -import net.i2p.client.I2PSession; -import net.i2p.client.I2PSessionException; -import net.i2p.data.Base64; -import net.i2p.data.PrivateKey; -import net.i2p.data.SigningPrivateKey; -import net.i2p.util.Log; - -public class EmailIdentity extends EmailDestination { - private Log log = new Log(EmailIdentity.class); - private PrivateKey privateEncryptionKey; - private SigningPrivateKey privateSigningKey; - private String publicName; - private String description; // optional - private String emailAddress; // optional - - /** - * Creates a random <code>EmailIdentity</code>. - */ - public EmailIdentity() { - // key initialization happens in the super constructor, which calls initKeys - } - - /** - * Creates a <code>EmailIdentity</code> from a Base64-encoded string. The format is the same as - * for Base64-encoded local I2P destinations, except there is no null certificate. - * @param key - */ - public EmailIdentity(String key) { - try { - key = key.substring(0, 512) + "AAAA" + key.substring(512); // insert a null certificate for I2PClient.createSession() - ByteArrayInputStream inputStream = new ByteArrayInputStream(Base64.decode(key)); - - I2PClient i2pClient = I2PClientFactory.createClient(); - I2PSession i2pSession = i2pClient.createSession(inputStream, null); - initKeys(i2pSession); - } - catch (I2PSessionException e) { - log.error("Can't generate EmailIdentity.", e); - } - } - - public PrivateKey getPrivateEncryptionKey() { - return privateEncryptionKey; - } - - public SigningPrivateKey getPrivateSigningKey() { - return privateSigningKey; - } - - public void setPublicName(String publicName) { - this.publicName = publicName; - } - - public String getPublicName() { - return publicName; - } - - public void setDescription(String name) { - this.description = name; - } - - public String getDescription() { - return description; - } - - public void setEmailAddress(String emailAddress) { - this.emailAddress = emailAddress; - } - - public String getEmailAddress() { - return emailAddress; - } - - protected void initKeys(I2PSession i2pSession) { - super.initKeys(i2pSession); - privateEncryptionKey = i2pSession.getDecryptionKey(); - privateSigningKey = i2pSession.getPrivateKey(); - } - - private byte[] getKeysAsArray() { - ByteArrayOutputStream byteStream = new ByteArrayOutputStream(); - try { - byteStream.write(getPublicEncryptionKey().getData()); - byteStream.write(getPublicSigningKey().getData()); - byteStream.write(getPrivateEncryptionKey().getData()); - byteStream.write(getPrivateSigningKey().getData()); - } - catch (IOException e) { - log.error("Can't write to ByteArrayOutputStream.", e); - } - return byteStream.toByteArray(); - } - - /** - * Returns the two key pairs (public + private) as one Base64-encoded string. - * @return - */ - public String getFullKey() { - return Base64.encode(getKeysAsArray()); - } - - @Override - public String toString() { - return getKey() + " address=<" + getEmailAddress() + "> identity name=<" + getDescription() + "> visible name=<" + getPublicName() + ">"; - } - -/* @Override - public boolean equals(Object anotherObject) { - if (anotherObject instanceof EmailIdentity) { - EmailIdentity otherIdentity = (EmailIdentity)anotherObject; - return Arrays.equals(getKeysAsArray(), otherIdentity.getKeysAsArray()); - } - return false; - }*/ -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/I2PBote.java b/apps/i2pbote/src/i2p/bote/I2PBote.java deleted file mode 100644 index 10787ea9ab..0000000000 --- a/apps/i2pbote/src/i2p/bote/I2PBote.java +++ /dev/null @@ -1,256 +0,0 @@ -package i2p.bote; - -import i2p.bote.folder.DhtPacketFolder; -import i2p.bote.folder.EmailFolder; -import i2p.bote.folder.IncompleteEmailFolder; -import i2p.bote.folder.IndexPacketFolder; -import i2p.bote.folder.Outbox; -import i2p.bote.folder.PacketFolder; -import i2p.bote.network.DHT; -import i2p.bote.network.I2PPacketDispatcher; -import i2p.bote.network.I2PSendQueue; -import i2p.bote.network.PeerManager; -import i2p.bote.network.kademlia.KademliaDHT; -import i2p.bote.packet.DataPacket; -import i2p.bote.packet.Email; -import i2p.bote.packet.EmailPacket; -import i2p.bote.packet.IndexPacket; -import i2p.bote.packet.RelayPacket; -import i2p.bote.service.OutboxProcessor; -import i2p.bote.service.POP3Service; -import i2p.bote.service.RelayPacketSender; -import i2p.bote.service.SMTPService; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.util.Collection; - -import net.i2p.I2PException; -import net.i2p.client.I2PClient; -import net.i2p.client.I2PClientFactory; -import net.i2p.client.I2PSession; -import net.i2p.client.I2PSessionException; -import net.i2p.data.Base64; -import net.i2p.data.DataFormatException; -import net.i2p.data.Destination; -import net.i2p.util.Log; - -/** - * This is the core class of the application. Is is implemented as a singleton. - * - * @author HungryHobo@mail.i2p - */ -public class I2PBote { - private static I2PBote instance; - - private Log log = new Log(I2PBote.class); - private I2PClient i2pClient; - private I2PSession i2pSession; - private Configuration configuration; - private Identities identities; - private I2PSendQueue sendQueue; - private Outbox outbox; // stores outgoing emails for all local users - private EmailFolder inbox; // stores incoming emails for all local users - private PacketFolder<RelayPacket> relayPacketFolder; // stores email packets we're forwarding for other machines - private IncompleteEmailFolder incompleteEmailFolder; // stores email packets addressed to a local user - private DhtPacketFolder<? extends DataPacket> emailDhtStorageFolder; // stores email packets and index packets for other peers - private IndexPacketFolder indexPacketDhtStorageFolder; // stores index packets -//TODO private PacketFolder<> addressDhtStorageFolder; // stores email address-destination mappings - private SMTPService smtpService; - private POP3Service pop3Service; - private OutboxProcessor outboxProcessor; // reads emails stored in the outbox and sends them - private RelayPacketSender relayPacketSender; // reads packets stored in the relayPacketFolder and sends them - private DHT dht; - private PeerManager peerManager; - - private I2PBote() { - Thread.currentThread().setName("I2PBoteMain"); - - initializeLogging(); - - i2pClient = I2PClientFactory.createClient(); - configuration = new Configuration(); - - identities = new Identities(configuration.getIdentitiesFile()); - initializeSession(); - initializeFolderAccess(); - initializeServices(); - startAllServices(); - } - - private void initializeLogging() { - } - - /** - * Initializes objects for accessing emails and packet files on the filesystem. - */ - private void initializeFolderAccess() { - inbox = new EmailFolder(configuration.getInboxDir()); - outbox = new Outbox(configuration.getLocalOutboxDir()); - relayPacketFolder = new PacketFolder<RelayPacket>(configuration.getRelayOutboxDir()); - incompleteEmailFolder = new IncompleteEmailFolder(configuration.getIncompleteDir(), inbox); - emailDhtStorageFolder = new DhtPacketFolder<EmailPacket>(configuration.getEmailDhtStorageDir()); - indexPacketDhtStorageFolder = new IndexPacketFolder(configuration.getIndexPacketDhtStorageDir()); - } - - /** - * Sets up a {@link I2PSession}, using the I2P destination stored on disk or creating a new I2P - * destination if no key file exists. - */ - private void initializeSession() { - // read the local destination key from the key file if it exists - File destinationKeyFile = configuration.getDestinationKeyFile(); - try { - FileReader fileReader = new FileReader(destinationKeyFile); - char[] destKeyBuffer = new char[(int)destinationKeyFile.length()]; - fileReader.read(destKeyBuffer); - byte[] localDestinationKey = Base64.decode(new String(destKeyBuffer)); - ByteArrayInputStream inputStream = new ByteArrayInputStream(localDestinationKey); - i2pSession = i2pClient.createSession(inputStream, null); - i2pSession.connect(); - } - catch (IOException e) { - log.debug("Destination key file doesn't exist or isn't readable: " + e); - } catch (I2PSessionException e) { - log.warn("Error creating I2PSession", e); - } - - // if the local destination key can't be read or is invalid, create a new one - if (i2pSession == null) { - log.debug("Creating new local destination key"); - try { - ByteArrayOutputStream arrayStream = new ByteArrayOutputStream(); - i2pClient.createDestination(arrayStream); - byte[] localDestinationArray = arrayStream.toByteArray(); - - i2pSession = i2pClient.createSession(new ByteArrayInputStream(localDestinationArray), null); - i2pSession.connect(); - - saveLocalDestinationKeys(destinationKeyFile, localDestinationArray); - } catch (I2PException e) { - log.error("Error creating local destination key or I2PSession.", e); - } catch (IOException e) { - log.error("Error writing local destination key to file.", e); - } - } - - Destination localDestination = i2pSession.getMyDestination(); - log.debug("Local destination key = " + localDestination.toBase64()); - log.debug("Local destination hash = " + localDestination.calculateHash().toBase64()); - } - - /** - * Initializes daemon threads, doesn't start them yet. - */ - private void initializeServices() { - I2PPacketDispatcher dispatcher = new I2PPacketDispatcher(); - i2pSession.addSessionListener(dispatcher, I2PSession.PROTO_ANY, I2PSession.PORT_ANY); - - smtpService = new SMTPService(); - pop3Service = new POP3Service(); - outboxProcessor = new OutboxProcessor(i2pSession, outbox, configuration, peerManager); - relayPacketSender = new RelayPacketSender(sendQueue, relayPacketFolder); - sendQueue = new I2PSendQueue(i2pSession, dispatcher); - - dht = new KademliaDHT(i2pSession.getMyDestination(), sendQueue, dispatcher, configuration.getPeerFile()); - - dht.setStorageHandler(EmailPacket.class, emailDhtStorageFolder); - dht.setStorageHandler(IndexPacket.class, indexPacketDhtStorageFolder); -//TODO dht.setStorageHandler(AddressPacket.class, ); - - peerManager = new PeerManager(); - } - - /** - * Writes private + public keys for the local destination out to a file. - * @param keyFile - * @param localDestinationArray - * @throws DataFormatException - * @throws IOException - */ - private void saveLocalDestinationKeys(File keyFile, byte[] localDestinationArray) throws DataFormatException, IOException { - if (keyFile.exists()) { - File oldKeyFile = new File(keyFile.getPath() + "_backup"); - keyFile.renameTo(oldKeyFile); - } - else - keyFile.createNewFile(); - - FileWriter fileWriter = new FileWriter(keyFile); - fileWriter.write(Base64.encode(localDestinationArray)); - fileWriter.close(); - } - - public static void startUp() { - getInstance(); - } - - public static void shutDown() { - if (instance != null) - instance.stopAllServices(); - } - - public static I2PBote getInstance() { - if (instance == null) - instance = new I2PBote(); - return instance; - } - - public Identities getIdentities() { - return identities; - } - - public void sendEmail(Email email) throws Exception { -/*XXX*/ -javax.mail.Address recipient = email.getAllRecipients()[0]; -String address = ((javax.mail.internet.InternetAddress)recipient).getAddress(); -if (address.indexOf('@')>=0) - address = address.substring(0, address.indexOf('@')); -EmailDestination emailDestination = new EmailDestination(address); -Collection<EmailPacket> emailPackets = email.createEmailPackets(emailDestination); -for (EmailPacket packet: emailPackets) - dht.store(packet); -dht.store(new IndexPacket(emailPackets, emailDestination)); - // TODO uncomment for next milestone, move code above into OutboxProcessor -/* outbox.add(email); - outboxProcessor.checkForEmail();*/ - } - - public Runnable createCheckMailTask(EmailIdentity identity) { - return new CheckEmailTask(identity, dht, peerManager, incompleteEmailFolder); - } - - public EmailFolder getInbox() { - return inbox; - } - - public int getNumDhtPeers() { - return dht.getNumPeers(); - } - - public int getNumRelayPeers() { - return peerManager.getNumPeers(); - } - - private void startAllServices() { - dht.start(); - outboxProcessor.start(); - relayPacketSender.start(); - smtpService.start(); - pop3Service.start(); - sendQueue.start(); - } - - private void stopAllServices() { - dht.shutDown(); - outboxProcessor.shutDown(); - relayPacketSender.requestShutdown(); - smtpService.shutDown(); - pop3Service.shutDown(); - sendQueue.requestShutdown(); - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/Identities.java b/apps/i2pbote/src/i2p/bote/Identities.java deleted file mode 100644 index e525bbb297..0000000000 --- a/apps/i2pbote/src/i2p/bote/Identities.java +++ /dev/null @@ -1,169 +0,0 @@ -package i2p.bote; - -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.io.Writer; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; -import java.util.regex.PatternSyntaxException; - -import net.i2p.data.Hash; -import net.i2p.util.Log; - -public class Identities implements Iterable<EmailIdentity> { - private Log log = new Log(Identities.class); - private File identitiesFile; - private List<EmailIdentity> identities; - - public Identities(File identitiesFile) { - this.identitiesFile = identitiesFile; - identities = Collections.synchronizedList(new ArrayList<EmailIdentity>()); - - if (!identitiesFile.exists()) { - log.debug("Identities file does not exist: <" + identitiesFile.getAbsolutePath() + ">"); - return; - } - - log.debug("Reading identities file: <" + identitiesFile.getAbsolutePath() + ">"); - BufferedReader input = null; - try { - input = new BufferedReader(new FileReader(identitiesFile)); - - while (true) { - String line = input.readLine(); - if (line == null) // EOF - break; - - EmailIdentity identity = parse(line); - if (identity != null) - identities.add(identity); - } - } catch (IOException e) { - log.error("Can't read identities file.", e); - } - finally { - if (input != null) - try { - input.close(); - } - catch (IOException e) { - log.error("Error closing input stream.", e); - } - } - } - - private EmailIdentity parse(String emailIdentityString) { - try { - String[] fields = emailIdentityString.split("\\t", 4); - if (fields.length < 2) { - log.debug("Unparseable email identity: <" + emailIdentityString + ">"); - return null; - } - EmailIdentity identity = new EmailIdentity(fields[0]); - if (fields.length > 1) - identity.setPublicName(fields[1]); - if (fields.length > 2) - identity.setDescription(fields[2]); - if (fields.length > 3) - identity.setEmailAddress(fields[3]); - return identity; - } - catch (PatternSyntaxException e) { - log.debug("Unparseable email identity: <" + emailIdentityString + ">"); - return null; - } - } - - /** - * This is the counterpart of the <code>parse</code> method. It encodes a {@link EmailIdentity} into - * an entry for the identities file. - * @param identity - * @return - */ - private String toFileFormat(EmailIdentity identity) { - StringBuilder string = new StringBuilder(); - string = string.append(identity.getFullKey()); - string = string.append("\t"); - string = string.append(identity.getPublicName()); - string = string.append("\t"); - if (identity.getDescription() != null) - string = string.append(identity.getDescription()); - string = string.append("\t"); - if (identity.getEmailAddress() != null) - string = string.append(identity.getEmailAddress()); - return string.toString(); - } - - public void save() throws IOException { - String newLine = System.getProperty("line.separator"); - try { - Writer writer = new BufferedWriter(new FileWriter(identitiesFile)); - for (EmailIdentity identity: identities) - writer.write(toFileFormat(identity) + newLine); - writer.close(); - } - catch (IOException e) { - log.error("Can't save email identities to file <" + identitiesFile.getAbsolutePath() + ">.", e); - throw e; - } - } - - public void add(EmailIdentity identity) { - identities.add(identity); - } - - public void remove(String key) { - EmailIdentity identity = get(key); - if (identity != null) - identities.remove(identity); - } - - public EmailIdentity get(int i) { - return identities.get(i); - } - - /** - * Looks up an {@link EmailIdentity} by its Base64 key. If none is found, - * <code>null</code> is returned. - * @param key - * @return - */ - public EmailIdentity get(String key) { - if (key==null || key.isEmpty()) - return null; - - for (EmailIdentity identity: identities) - if (key.equals(identity.getKey())) - return identity; - return null; - } - - public Collection<EmailIdentity> getAll() { - return identities; - } - - public EmailIdentity[] getArray() { - return identities.toArray(new EmailIdentity[0]); - } - - public int size() { - return identities.size(); - } - - public boolean contains(Hash emailDestination) { - // TODO - return true; - } - - @Override - public Iterator<EmailIdentity> iterator() { - return identities.iterator(); - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/Util.java b/apps/i2pbote/src/i2p/bote/Util.java deleted file mode 100644 index 24f6e50b1e..0000000000 --- a/apps/i2pbote/src/i2p/bote/Util.java +++ /dev/null @@ -1,81 +0,0 @@ -package i2p.bote; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.Properties; -import java.util.concurrent.ThreadFactory; - -import net.i2p.client.I2PClient; -import net.i2p.client.I2PClientFactory; -import net.i2p.client.I2PSession; -import net.i2p.client.I2PSessionException; -import net.i2p.client.streaming.I2PSocketManager; -import net.i2p.client.streaming.I2PSocketManagerFactory; -import net.i2p.data.DataFormatException; - -public class Util { - private static final int BUFFER_SIZE = 32 * 1024; - - private Util() { } - - public static void copyBytes(InputStream inputStream, OutputStream outputStream) throws IOException { - byte[] buffer = new byte[BUFFER_SIZE]; - boolean done = false; - while (!done) { - int bytesRead = inputStream.read(buffer); - outputStream.write(buffer); - if (bytesRead < 0) - done = true; - } - } - - public static void writeKeyStream(I2PSession i2pSession, OutputStream outputStream) throws DataFormatException, IOException { - i2pSession.getMyDestination().writeBytes(outputStream); - i2pSession.getDecryptionKey().writeBytes(outputStream); - i2pSession.getPrivateKey().writeBytes(outputStream); - } - - public static InputStream createKeyStream(I2PSession i2pSession) throws DataFormatException, IOException { - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - writeKeyStream(i2pSession, outputStream); - return new ByteArrayInputStream(outputStream.toByteArray()); - } - - public static I2PSession createNewSession(I2PClient i2pClient, I2PSession existingSession, Properties options) throws I2PSessionException, DataFormatException, IOException { - return I2PClientFactory.createClient().createSession(createKeyStream(existingSession), options); - } - - public static I2PSocketManager getSocketManager(I2PSession i2pSession) throws DataFormatException, IOException { - ByteArrayOutputStream keyOutputStream = new ByteArrayOutputStream(); - Util.writeKeyStream(i2pSession, keyOutputStream); - InputStream keyInputStream = new ByteArrayInputStream(keyOutputStream.toByteArray()); - return I2PSocketManagerFactory.createManager(keyInputStream); - } - - public static byte[] readInputStream(InputStream inputStream) throws IOException { - ByteArrayOutputStream byteStream = new ByteArrayOutputStream(); - byte[] buffer = new byte[32*1024]; - while (true) { - int bytesToRead = Math.min(inputStream.available(), buffer.length); - if (bytesToRead <= 0) - break; - else { - int bytesRead = inputStream.read(buffer, 0, bytesToRead); - byteStream.write(buffer, 0, bytesRead); - } - } - return byteStream.toByteArray(); - } - - public static ThreadFactory createThreadFactory(final String threadName, final int stackSize) { - return new ThreadFactory() { - @Override - public Thread newThread(Runnable runnable) { - return new Thread(null, runnable, threadName, stackSize); - } - }; - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/folder/DhtPacketFolder.java b/apps/i2pbote/src/i2p/bote/folder/DhtPacketFolder.java deleted file mode 100644 index cc4f60a36d..0000000000 --- a/apps/i2pbote/src/i2p/bote/folder/DhtPacketFolder.java +++ /dev/null @@ -1,58 +0,0 @@ -package i2p.bote.folder; - -import i2p.bote.network.DhtStorageHandler; -import i2p.bote.packet.dht.DhtStorablePacket; - -import java.io.File; -import java.io.FilenameFilter; - -import net.i2p.data.Hash; -import net.i2p.util.Log; - -/** - * This class uses dht keys for file names. - * - * @author HungryHobo@mail.i2p - * @param <T> The type of DHT data stored in this folder - */ -public class DhtPacketFolder<T extends DhtStorablePacket> extends PacketFolder<T> implements DhtStorageHandler { - private Log log = new Log(DhtPacketFolder.class); - - public DhtPacketFolder(File storageDir) { - super(storageDir); - } - - @Override - public void store(DhtStorablePacket packetToStore) { - add(packetToStore); - } - - @Override - public DhtStorablePacket retrieve(Hash dhtKey) { - final String base64Key = dhtKey.toBase64(); - - File[] files = storageDir.listFiles(new FilenameFilter() { - @Override - public boolean accept(File dir, String name) { - return filenameMatches(name, base64Key); - } - }); - - if (files.length > 1) - log.warn("More than one packet files found for DHT key " + dhtKey); - if (files.length > 0) { - File file = files[0]; - return DhtStorablePacket.createPacket(file); - } - return null; - } - - protected boolean filenameMatches(String filename, String base64DhtKey) { - return filename.startsWith(base64DhtKey); - } - - @Override - protected String getFilename(DhtStorablePacket packet) { - return packet.getDhtKey().toBase64() + PACKET_FILE_EXTENSION; - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/folder/EmailFolder.java b/apps/i2pbote/src/i2p/bote/folder/EmailFolder.java deleted file mode 100644 index cf71f27586..0000000000 --- a/apps/i2pbote/src/i2p/bote/folder/EmailFolder.java +++ /dev/null @@ -1,54 +0,0 @@ -package i2p.bote.folder; - -import i2p.bote.packet.Email; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStream; - -import javax.mail.MessagingException; - -import net.i2p.util.Log; - -/** - * Stores emails in a directory on the filesystem. Each email is stored in one file. - * The filename is the message Id plus an extension. - * - * @author HungryHobo@mail.i2p - */ -public class EmailFolder extends Folder<Email> { - protected static final String EMAIL_FILE_EXTENSION = ".mail"; - - private Log log = new Log(EmailFolder.class); - - public EmailFolder(File storageDir) { - super(storageDir, EMAIL_FILE_EXTENSION); - } - - // store an email file - public void add(Email email) throws MessagingException, IOException { - // write out the email file - File emailFile = getEmailFile(email); - log.info("Storing email in outbox: '"+ emailFile.getAbsolutePath() + "'"); - OutputStream emailOutputStream = new FileOutputStream(emailFile); - email.writeTo(emailOutputStream); - emailOutputStream.close(); - } - - private File getEmailFile(Email email) throws MessagingException { - return new File(storageDir, email.getMessageID() + EMAIL_FILE_EXTENSION); - } - - public void delete(Email email) throws MessagingException { - if (!getEmailFile(email).delete()) - log.error("Cannot delete file: '" + getEmailFile(email) + "'"); - } - - @Override - protected Email createFolderElement(File file) throws Exception { - FileInputStream inputStream = new FileInputStream(file); - return new Email(inputStream); - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/folder/Folder.java b/apps/i2pbote/src/i2p/bote/folder/Folder.java deleted file mode 100644 index d3bb0c37d3..0000000000 --- a/apps/i2pbote/src/i2p/bote/folder/Folder.java +++ /dev/null @@ -1,96 +0,0 @@ -package i2p.bote.folder; - -import java.io.File; -import java.io.FilenameFilter; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Comparator; -import java.util.Iterator; - -import net.i2p.util.Log; - -/** - * - * @author HungryHobo@mail.i2p - * - * @param <T> The type of objects the folder can store. - */ -public abstract class Folder<T extends FolderElement> implements Iterable<T> { - private Log log = new Log(Folder.class); - protected File storageDir; - protected String fileExtension; - - protected Folder(File storageDir, String fileExtension) { - this.storageDir = storageDir; - this.fileExtension = fileExtension; - - if (!storageDir.exists() && !storageDir.mkdirs()) - log.error("Can't create directory: '" + storageDir + "'"); - } - - public File getStorageDirectory() { - return storageDir; - } - - public Collection<T> getElements() { - Collection<T> elements = new ArrayList<T>(); - Iterator<T> iterator = iterator(); - while (iterator.hasNext()) - elements.add(iterator.next()); - return elements; - } - - // An {@link Iterator} implementation that loads one file into memory at a time. - @Override - public final Iterator<T> iterator() { - final File[] files = storageDir.listFiles(new FilenameFilter() { - @Override - public boolean accept(File dir, String name) { - return name.toUpperCase().endsWith(fileExtension.toUpperCase()); - } - }); - log.debug(files.length + " files with the extension '" + fileExtension + "' found in '" + storageDir + "'."); - - // sort files by date, newest first - Arrays.sort(files, new Comparator<File>() { - @Override - public int compare(File f1, File f2) { - return (int)Math.signum(f1.lastModified() - f2.lastModified()); - } - }); - - return new Iterator<T>() { - int nextIndex = 0; - - @Override - public boolean hasNext() { - return nextIndex < files.length; - } - - @Override - public T next() { - File file = files[nextIndex]; - String filePath = file.getAbsolutePath(); - log.info("Reading file: '" + filePath + "'"); - try { - T nextElement = createFolderElement(file); - nextElement.setFile(file); - nextIndex++; - return nextElement; - } - catch (Exception e) { - log.error("Can't create a FolderElement from file: " + filePath, e); - return null; - } - } - - @Override - public void remove() { - throw new UnsupportedOperationException("Use the Folder instance to delete a folder element."); - } - }; - } - - protected abstract T createFolderElement(File file) throws Exception; -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/folder/FolderElement.java b/apps/i2pbote/src/i2p/bote/folder/FolderElement.java deleted file mode 100644 index c31cc4eb35..0000000000 --- a/apps/i2pbote/src/i2p/bote/folder/FolderElement.java +++ /dev/null @@ -1,17 +0,0 @@ -package i2p.bote.folder; - -import java.io.File; -import java.io.OutputStream; - -public interface FolderElement { - - void setFile(File file); - - /** - * Returns the {@link File} from which this packet was read, or <code>null</code>. - * @return - */ - File getFile(); - - void writeTo(OutputStream outputStream) throws Exception; -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/folder/IncompleteEmailFolder.java b/apps/i2pbote/src/i2p/bote/folder/IncompleteEmailFolder.java deleted file mode 100644 index 03ea8ee37b..0000000000 --- a/apps/i2pbote/src/i2p/bote/folder/IncompleteEmailFolder.java +++ /dev/null @@ -1,132 +0,0 @@ -package i2p.bote.folder; - -import i2p.bote.packet.DataPacket; -import i2p.bote.packet.Email; -import i2p.bote.packet.EmailPacket; -import i2p.bote.packet.I2PBotePacket; -import i2p.bote.packet.UniqueId; - -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.FilenameFilter; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Comparator; - -import net.i2p.util.Log; - -/** - * File name format: <email dest hash>_<message id>.pkt - * - * @author HungryHobo@mail.i2p - */ -public class IncompleteEmailFolder extends DhtPacketFolder<EmailPacket> { - private Log log = new Log(IncompleteEmailFolder.class); - private EmailFolder inbox; - - public IncompleteEmailFolder(File storageDir, EmailFolder inbox) { - super(storageDir); - this.inbox = inbox; - } - - public void add(EmailPacket packetToStore) { - super.add(packetToStore); - - // TODO possible optimization: if getNumFragments == 1, no need to check for other packet files - File[] finishedPacketFiles = getAllMatchingFiles(packetToStore.getMessageId()); - - // if all packets of the email are available, assemble them into an email - if (finishedPacketFiles.length == packetToStore.getNumFragments()) - assemble(finishedPacketFiles); - } - - private void assemble(File[] packetFiles) { - // No need to do this in a separate thread - new AssembleTask(packetFiles, inbox).run(); - } - - private File[] getAllMatchingFiles(UniqueId messageId) { - final String base64Id = messageId.toBase64(); - - return storageDir.listFiles(new FilenameFilter() { - @Override - public boolean accept(File dir, String name) { - int _index = name.indexOf('_'); - if (_index >= 0) - return name.substring(_index).startsWith(base64Id); - else { - log.error("Invalid file name: <" + name + ">, directory: <" + dir.getAbsolutePath() + ">"); - return false; - } - } - }); - } - - // Overridden to include the message id in the file name - protected String getFilename(EmailPacket packet) { - return packet.getDhtKey().toBase64() + packet.getMessageId() + PACKET_FILE_EXTENSION; - } - - // Overridden because the file format is different than what the superclass uses - @Override - protected boolean filenameMatches(String filename, String base64DhtKey) { - return filename.startsWith(base64DhtKey); - } - - /** - * Makes a set of {@link EmailPacket}s into an {@link Email}, stores the email in the <code>inbox</code> - * folder, and deletes the packet files. - * - * @author HungryHobo@mail.i2p - */ - private class AssembleTask implements Runnable { - File[] packetFiles; - - public AssembleTask(File[] packetFiles, EmailFolder inbox) { - this.packetFiles = packetFiles; - } - - @Override - public void run() { - EmailPacket[] packets = getEmailPackets(packetFiles).toArray(new EmailPacket[0]); - - // sort by fragment index - Arrays.sort(packets, new Comparator<EmailPacket>() { - @Override - public int compare(EmailPacket packet1, EmailPacket packet2) { - return new Integer(packet1.getFragmentIndex()).compareTo(packet2.getFragmentIndex()); - } - }); - - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - try { - for (EmailPacket packet: packets) - outputStream.write(packet.getContent()); - Email email = new Email(outputStream.toByteArray()); - inbox.add(email); - - // delete packets - for (File file: packetFiles) - if (!file.delete()) - log.warn("Email packet file not deleted: <" + file.getAbsolutePath() + ">"); - } - catch (Exception e) { - log.error("Error assembling/storing email, or deleting email packets. ", e); - return; - } - } - - private Collection<EmailPacket> getEmailPackets(File[] files) { - Collection<EmailPacket> packets = new ArrayList<EmailPacket>(); - for (File file: files) { - I2PBotePacket packet = DataPacket.createPacket(file); - if (packet instanceof EmailPacket) - packets.add((EmailPacket)packet); - else - log.error("Non-Email Packet found in the IncompleteEmailFolder, file: <" + file.getAbsolutePath() + ">"); - } - return packets; - } - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/folder/IndexPacketFolder.java b/apps/i2pbote/src/i2p/bote/folder/IndexPacketFolder.java deleted file mode 100644 index 4879e3617b..0000000000 --- a/apps/i2pbote/src/i2p/bote/folder/IndexPacketFolder.java +++ /dev/null @@ -1,42 +0,0 @@ -package i2p.bote.folder; - -import i2p.bote.packet.I2PBotePacket; -import i2p.bote.packet.IndexPacket; -import i2p.bote.packet.dht.DhtStorablePacket; - -import java.io.File; - -import net.i2p.util.Log; - -/** - * This class differs from {@link DhtPacketFolder} in that it doesn't overwrite an existing - * packet when a new packet is stored under the same key, but - * - * @author HungryHobo@mail.i2p - */ -public class IndexPacketFolder extends DhtPacketFolder<IndexPacket> { - private final Log log = new Log(I2PBotePacket.class); - - public IndexPacketFolder(File storageDir) { - super(storageDir); - } - - @Override - public void store(DhtStorablePacket packetToStore) { - if (!(packetToStore instanceof IndexPacket)) - throw new IllegalArgumentException("This class only stores packets of type " + IndexPacket.class.getSimpleName() + "."); - - IndexPacket indexPacketToStore = (IndexPacket)packetToStore; - DhtStorablePacket existingPacket = retrieve(packetToStore.getDhtKey()); - - // If an index packet with the same key exists in the folder, merge the two packets. - if (existingPacket instanceof IndexPacket) { - packetToStore = new IndexPacket(indexPacketToStore, (IndexPacket)existingPacket); - if (packetToStore.isTooBig()) - // TODO make two new index packets, put half the email packet keys in each one, store the two index packets on the DHT, and put the two index packet keys into the local index file (only keep those two). - log.error("After merging, IndexPacket is too big for a datagram: size=" + packetToStore.getSize()); - } - - super.store(packetToStore); - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/folder/Outbox.java b/apps/i2pbote/src/i2p/bote/folder/Outbox.java deleted file mode 100644 index 3bacd86b06..0000000000 --- a/apps/i2pbote/src/i2p/bote/folder/Outbox.java +++ /dev/null @@ -1,72 +0,0 @@ -package i2p.bote.folder; - -import i2p.bote.packet.Email; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; - -import javax.mail.MessagingException; - -import net.i2p.util.Log; - -/** - * Stores emails in a directory on the filesystem. For each email, two files are created; the actual - * email and a status file. - * Status files and email files have the same name, except for the extension. - * Even emails that need to be fragmented are stored as a whole. - * Message IDs are used for filenames. - * - * Status files contain a status for each recipient address. - * - * @author HungryHobo@mail.i2p - * - */ -public class Outbox extends EmailFolder implements Iterable<Email> { - private static final String STATUS_FILE_EXTENSION = ".status"; -// private static final String PARAM_QUEUE_DATE = "X-QueueDate"; - private static final Log log = new Log(Outbox.class); - - public Outbox(File storageDir) { - super(storageDir); - } - - // store one email file + one status file. - @Override - public void add(Email email) throws MessagingException, IOException { - // write out the email file - super.add(email); - - // collect info for status file - String queueDate = String.valueOf(System.currentTimeMillis()); - - // write out the status file - File statusFile = getStatusFile(email); - FileWriter statusFileWriter = new FileWriter(statusFile); - statusFileWriter.write(queueDate); - statusFileWriter.close(); - } - - private File getStatusFile(Email email) throws MessagingException { - return new File(storageDir, email.getMessageID() + STATUS_FILE_EXTENSION); - } - - // delete an email file + the status file - @Override - public void delete(Email email) throws MessagingException { - super.delete(email); - - if (!getStatusFile(email).delete()) - log.error("Cannot delete file: '" + getStatusFile(email) + "'"); - } - - /** - * - * @param email - * @param relayInfo A 0-length array means no relays were used, i.e. the email was sent directly to the recipient. - * @param statusMessage - */ - public void updateStatus(Email email, int[] relayInfo, String statusMessage) { - // TODO write out a new status file. filename is the msg id, statusMessage goes into the file. - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/folder/PacketFolder.java b/apps/i2pbote/src/i2p/bote/folder/PacketFolder.java deleted file mode 100644 index 7bd7d6ab56..0000000000 --- a/apps/i2pbote/src/i2p/bote/folder/PacketFolder.java +++ /dev/null @@ -1,62 +0,0 @@ -package i2p.bote.folder; - -import i2p.bote.packet.DataPacket; -import i2p.bote.packet.UniqueId; -import i2p.bote.packet.dht.DhtStorablePacket; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; - -import net.i2p.util.Log; - -/** - * This class stores new files under a random file name with the .pkt extension. - * - * @author HungryHobo@mail.i2p - * @param <T> The type of data stored in this folder - */ -public class PacketFolder<T extends DataPacket> extends Folder<T> { - protected static final String PACKET_FILE_EXTENSION = ".pkt"; - - private Log log = new Log(PacketFolder.class); - - public PacketFolder(File storageDir) { - super(storageDir, PACKET_FILE_EXTENSION); - } - - public void add(DhtStorablePacket packetToStore) { - String filename = getFilename(packetToStore); - FileOutputStream outputStream = null; - try { - File file = new File(storageDir, filename); - outputStream = new FileOutputStream(file); - packetToStore.writeTo(outputStream); - } catch (Exception e) { - log.error("Can't save packet to file: <" + filename + ">", e); - } - finally { - if (outputStream != null) - try { - outputStream.close(); - } - catch (IOException e) { - log.error("Can't close file: <" + filename + ">", e); - } - } - } - - public void delete(UniqueId packetId) { - // TODO - } - - protected String getFilename(DhtStorablePacket packet) { - return new UniqueId().toBase64() + PACKET_FILE_EXTENSION; - } - - @Override - @SuppressWarnings("unchecked") - protected T createFolderElement(File file) throws Exception { - return (T)DataPacket.createPacket(file); - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/network/DHT.java b/apps/i2pbote/src/i2p/bote/network/DHT.java deleted file mode 100644 index a997227a58..0000000000 --- a/apps/i2pbote/src/i2p/bote/network/DHT.java +++ /dev/null @@ -1,34 +0,0 @@ -package i2p.bote.network; - -import i2p.bote.packet.dht.DhtStorablePacket; - -import java.util.Collection; - -import net.i2p.data.Hash; - -public interface DHT { - - void store(DhtStorablePacket packet) throws Exception; - - DhtStorablePacket findOne(Hash key, Class<? extends DhtStorablePacket> dataType); - - Collection<DhtStorablePacket> findAll(Hash key, Class<? extends DhtStorablePacket> dataType); - - /** - * Registers a <code>DhtStorageHandler</code> that handles incoming storage requests of a certain - * type (but not its subclasses). - * @param packetType - * @param storageHandler - */ - void setStorageHandler(Class<? extends DhtStorablePacket> packetType, DhtStorageHandler storageHandler); - - /** - * Returns the current number of known active peers. - * @return - */ - int getNumPeers(); - - void start(); - - void shutDown(); -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/network/DhtStorageHandler.java b/apps/i2pbote/src/i2p/bote/network/DhtStorageHandler.java deleted file mode 100644 index b99e057fef..0000000000 --- a/apps/i2pbote/src/i2p/bote/network/DhtStorageHandler.java +++ /dev/null @@ -1,17 +0,0 @@ -package i2p.bote.network; - -import i2p.bote.packet.dht.DhtStorablePacket; -import net.i2p.data.Hash; - -/** - * Defines methods for accessing a local DHT store. - * - * @author HungryHobo@mail.i2p - */ -public interface DhtStorageHandler { - - void store(DhtStorablePacket packetToStore); - - // Retrieves a packet by DHT key. If no matching packet is found, <code>null</code> is returned. - DhtStorablePacket retrieve(Hash dhtKey); -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/network/EmailAddressResolver.java b/apps/i2pbote/src/i2p/bote/network/EmailAddressResolver.java deleted file mode 100644 index f58652caba..0000000000 --- a/apps/i2pbote/src/i2p/bote/network/EmailAddressResolver.java +++ /dev/null @@ -1,18 +0,0 @@ -package i2p.bote.network; - -import i2p.bote.EmailDestination; - -public class EmailAddressResolver { - - /** - * Looks up a key pair for an email address. This method blocks. - * The local address book is searched first, then the distributed - * email directory. - * @param emailAddress - * @return An <code>EmailDestination</code>, or <code>null</code> if none is found - */ - public EmailDestination getDestination(String emailAddress) { - // TODO - return null; - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/network/I2PPacketDispatcher.java b/apps/i2pbote/src/i2p/bote/network/I2PPacketDispatcher.java deleted file mode 100644 index 983ca79bbf..0000000000 --- a/apps/i2pbote/src/i2p/bote/network/I2PPacketDispatcher.java +++ /dev/null @@ -1,101 +0,0 @@ -package i2p.bote.network; - -import i2p.bote.packet.CommunicationPacket; -import i2p.bote.packet.I2PBotePacket; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import net.i2p.client.I2PSession; -import net.i2p.client.I2PSessionException; -import net.i2p.client.I2PSessionListener; -import net.i2p.client.datagram.I2PDatagramDissector; -import net.i2p.client.datagram.I2PInvalidDatagramException; -import net.i2p.data.DataFormatException; -import net.i2p.data.Destination; -import net.i2p.util.Log; - -/** - * An {@link I2PSessionListener} that receives datagrams from the I2P network and notifies {@link PacketListener}s. - * - * @author HungryHobo@mail.i2p - */ -public class I2PPacketDispatcher implements I2PSessionListener { - private Log log = new Log(I2PPacketDispatcher.class); - private List<PacketListener> packetListeners; - - public I2PPacketDispatcher() { - packetListeners = Collections.synchronizedList(new ArrayList<PacketListener>()); - } - - public void addPacketListener(PacketListener listener) { - packetListeners.add(listener); - } - - public void removePacketListener(PacketListener listener) { - packetListeners.remove(listener); - } - - private void firePacketReceivedEvent(CommunicationPacket packet, Destination sender) { - for (PacketListener listener: packetListeners) - listener.packetReceived(packet, sender, System.currentTimeMillis()); - } - - public void shutDown() { - } - - // I2PSessionListener implementation follows - - @Override - public void reportAbuse(I2PSession session, int severity) { - } - - @Override - public void messageAvailable(I2PSession session, int msgId, long size) { - byte[] msg = new byte[0]; - try { - msg = session.receiveMessage(msgId); - } catch (I2PSessionException e) { - log.error("Can't get new message from I2PSession.", e); - } - I2PDatagramDissector datagramDissector = new I2PDatagramDissector(); - try { - datagramDissector.loadI2PDatagram(msg); - datagramDissector.verifySignature(); // TODO keep this line or remove it? - byte[] payload = datagramDissector.extractPayload(); - Destination sender = datagramDissector.getSender(); - - CommunicationPacket packet = CommunicationPacket.createPacket(payload); - if (packet == null) - log.debug("Ignoring unparseable packet."); - else { - logPacket(packet, sender); - firePacketReceivedEvent(packet, sender); - } - } - catch (DataFormatException e) { - log.error("Invalid datagram received.", e); - e.printStackTrace(); - } - catch (I2PInvalidDatagramException e) { - log.error("Datagram failed verification.", e); - e.printStackTrace(); - } - } - - private void logPacket(I2PBotePacket packet, Destination sender) { - String senderHash = sender.calculateHash().toBase64().substring(0, 8) + "..."; - log.debug("I2P packet received: [" + packet + "] Sender: [" + senderHash + "]"); - } - - @Override - public void errorOccurred(I2PSession session, String message, Throwable error) { - log.error("Router says: " + message, error); - } - - @Override - public void disconnected(I2PSession session) { - log.warn("I2P session disconnected."); - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/network/I2PSendQueue.java b/apps/i2pbote/src/i2p/bote/network/I2PSendQueue.java deleted file mode 100644 index 8f3e26e236..0000000000 --- a/apps/i2pbote/src/i2p/bote/network/I2PSendQueue.java +++ /dev/null @@ -1,354 +0,0 @@ -package i2p.bote.network; - -import i2p.bote.packet.CommunicationPacket; -import i2p.bote.packet.DataPacket; -import i2p.bote.packet.RelayPacket; -import i2p.bote.packet.RelayRequest; -import i2p.bote.packet.ResponsePacket; -import i2p.bote.packet.StatusCode; -import i2p.bote.packet.UniqueId; -import i2p.bote.service.I2PBoteThread; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.Set; -import java.util.SortedSet; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentSkipListSet; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; - -import net.i2p.client.I2PSession; -import net.i2p.client.I2PSessionException; -import net.i2p.client.datagram.I2PDatagramMaker; -import net.i2p.data.Destination; -import net.i2p.util.ConcurrentHashSet; -import net.i2p.util.Log; - -import com.nettgryppa.security.HashCash; - -/** - * All outgoing I2P traffic goes through this class. - * Packets are sent at a rate no greater than specified by the - * <CODE>maxBandwidth</CODE> property. - * - * @author HungryHobo@mail.i2p - * - */ -public class I2PSendQueue extends I2PBoteThread implements PacketListener { - private Log log = new Log(I2PSendQueue.class); - private I2PSession i2pSession; - private SortedSet<ScheduledPacket> packetQueue; - private Map<UniqueId, ScheduledPacket> outstandingRequests; // sent packets that haven't been responded to - private Set<PacketBatch> runningBatches; - private int maxBandwidth; - private Collection<SendQueuePacketListener> sendQueueListeners; - private Map<SendQueuePacketListener, Long> timeoutValues; - - /** - * @param i2pSession - * @param i2pReceiver - */ - public I2PSendQueue(I2PSession i2pSession, I2PPacketDispatcher i2pReceiver) { - super("I2PSendQueue"); - - this.i2pSession = i2pSession; - i2pReceiver.addPacketListener(this); - packetQueue = new ConcurrentSkipListSet<ScheduledPacket>(); - outstandingRequests = new ConcurrentHashMap<UniqueId, ScheduledPacket>(); - runningBatches = new ConcurrentHashSet<PacketBatch>(); - sendQueueListeners = Collections.synchronizedCollection(new ArrayList<SendQueuePacketListener>()); - timeoutValues = new HashMap<SendQueuePacketListener, Long>(); - } - - /** - * Queues a packet for sending ASAP. - * @param packet - * @param destination - */ - public void send(CommunicationPacket packet, Destination destination) { - send(packet, destination, 0); - } - - /** - * Queues a packet for sending ASAP and waits for up to <code>timeoutSeconds</code> for a response. - * @param packet - * @param destination - * @param timeoutMilliSeconds - * @return The response packet, or <code>null</code> if a timeout occurred. - * @throws InterruptedException - */ - public CommunicationPacket sendAndWait(CommunicationPacket packet, Destination destination, long timeoutMilliSeconds) throws InterruptedException { - ScheduledPacket scheduledPacket = new ScheduledPacket(packet, destination, 0); - - long scheduleTime = System.currentTimeMillis(); - packetQueue.add(scheduledPacket); - scheduledPacket.awaitSending(); - outstandingRequests.put(packet.getPacketId(), scheduledPacket); - scheduledPacket.awaitResponse(timeoutMilliSeconds, TimeUnit.MILLISECONDS); - - if (log.shouldLog(Log.DEBUG)) { - long responseTime = scheduledPacket.getResponseTime(); - String responseInfo = responseTime<0?"timed out":"took " + (responseTime-scheduledPacket.getSentTime()) + "ms."; - log.debug("Packet with id " + packet.getPacketId() + " was queued for " + (scheduledPacket.getSentTime()-scheduleTime) + " ms, response " + responseInfo); - } - - return scheduledPacket.getResponse(); - } - - /** - * Queues a packet for sending at or after a certain time. - * @param packet - * @param destination - * @param earliestSendTime - */ - public void send(CommunicationPacket packet, Destination destination, long earliestSendTime) { - packetQueue.add(new ScheduledPacket(packet, destination, earliestSendTime)); - } - - public void sendRelayRequest(RelayPacket relayPacket, HashCash hashCash, long earliestSendTime) { - RelayRequest relayRequest = new RelayRequest(hashCash, relayPacket); - ScheduledPacket scheduledPacket = new ScheduledPacket(relayRequest, relayPacket.getNextDestination(), earliestSendTime); - packetQueue.add(scheduledPacket); - } - - /** - * Sends a Response Packet to a {@link Destination}, with the status code "OK". - * @param packet - * @param destination - * @param requestPacketId The packet id of the packet we're responding to - */ - public void sendResponse(DataPacket packet, Destination destination, UniqueId requestPacketId) { - sendResponse(packet, destination, StatusCode.OK, requestPacketId); - } - - /** - * Sends a Response Packet to a {@link Destination}. - * @param packet - * @param destination - * @param statusCode - * @param requestPacketId The packet id of the packet we're responding to - */ - public void sendResponse(DataPacket packet, Destination destination, StatusCode statusCode, UniqueId requestPacketId) { - send(new ResponsePacket(packet, statusCode, requestPacketId), destination); - } - - /** - * Sends a batch of packets, each to its own destination. - * Replies to the batch's packets are received until {@link remove(PacketBatch)} is called. - * @param batch - */ - public void send(PacketBatch batch) { - for (PacketBatchItem batchItem: batch) { - ScheduledPacket scheduledPacket = new ScheduledPacket(batchItem.getPacket(), batchItem.getDestination(), 0, batch); - packetQueue.add(scheduledPacket); - } - } - - public void remove(PacketBatch batch) { - runningBatches.remove(batch); - } - - public int getQueueLength() { - return packetQueue.size(); - } - - /** - * Set the maximum outgoing bandwidth in kbits/s - * @param maxBandwidth - */ - public void setMaxBandwidth(int maxBandwidth) { - this.maxBandwidth = maxBandwidth; - } - - /** - * Return the maximum outgoing bandwidth in kbits/s - * @return - */ - public int getMaxBandwidth() { - return maxBandwidth; - } - - public void addSendQueueListener(SendQueuePacketListener listener) { - addSendQueueListener(listener, null); - } - - /** - * Add a {@link SendQueuePacketListener} that is automatically removed after - * <code>timeout</code> milliseconds. - * @param listener - * @param timeout - */ - public void addSendQueueListener(SendQueuePacketListener listener, Long timeout) { - sendQueueListeners.add(listener); - timeoutValues.put(listener, timeout); - } - - public void removeSendQueueListener(SendQueuePacketListener listener) { - sendQueueListeners.remove(listener); - timeoutValues.remove(listener); - } - - private void firePacketListeners(CommunicationPacket packet) { - for (SendQueuePacketListener listener: sendQueueListeners) - listener.packetSent(packet); - } - - // Implementation of PacketListener - @Override - public void packetReceived(CommunicationPacket packet, Destination sender, long receiveTime) { - if (packet instanceof ResponsePacket) { - log.debug("Response Packet received: Packet Id = " + packet.getPacketId() + " Sender = " + sender); - - UniqueId packetId = packet.getPacketId(); - - for (PacketBatch batch: runningBatches) - if (batch.contains(packetId)) - batch.addResponsePacket(packet); - - // Remove the original request if it is on the list, and notify objects waiting on a response - ScheduledPacket requestPacket = outstandingRequests.remove(packetId); - if (requestPacket != null) { - requestPacket.setResponse(packet); - requestPacket.decrementResponseLatch(); - } - - // If there is a packet file for the original packet, it can be deleted now. - // Use the cached filename if the packet was in the cache; otherwise, find the file by packet Id -/* ScheduledPacket cachedPacket = recentlySentCache.remove(packetId); - if (cachedPacket != null) - fileManager.removePacketFile(cachedPacket); - else - fileManager.removePacketFile(packetId);*/ - } - } - - @Override - public void run() { - I2PDatagramMaker datagramMaker = new I2PDatagramMaker(i2pSession); - - while (true) { - if (packetQueue.isEmpty()) - try { - TimeUnit.SECONDS.sleep(1); - } - catch (InterruptedException e) { - log.warn("Interrupted while waiting for new packets.", e); - } - else { - ScheduledPacket scheduledPacket = packetQueue.last(); - CommunicationPacket i2pBotePacket = scheduledPacket.data; - - // wait long enough so rate <= maxBandwidth; - if (maxBandwidth > 0) { - int packetSizeBits = i2pBotePacket.getSize() * 8; - int maxBWBitsPerSecond = maxBandwidth * 1024; - long waitTimeMsecs = 1000L * packetSizeBits / maxBWBitsPerSecond; - if (System.currentTimeMillis()+waitTimeMsecs < scheduledPacket.earliestSendTime) - waitTimeMsecs = scheduledPacket.earliestSendTime; - try { - TimeUnit.MILLISECONDS.sleep(waitTimeMsecs); - } - catch (InterruptedException e) { - log.warn("Interrupted while waiting to send packet.", e); - } - } - - log.debug("Sending packet: [" + i2pBotePacket + "] to peer: " + scheduledPacket.destination.toBase64()); - byte[] replyableDatagram = datagramMaker.makeI2PDatagram(i2pBotePacket.toByteArray()); - try { - i2pSession.sendMessage(scheduledPacket.destination, replyableDatagram); - - // set sentTime; update queue+cache, update countdown latch, fire packet listeners - scheduledPacket.data.setSentTime(System.currentTimeMillis()); - packetQueue.remove(scheduledPacket); - if (scheduledPacket.batch != null) - scheduledPacket.batch.decrementSentLatch(); - scheduledPacket.decrementSentLatch(); - firePacketListeners(scheduledPacket.data); - } - catch (I2PSessionException e) { - log.error("Can't send packet.", e); - } - } - } - } - - private class ScheduledPacket implements Comparable<ScheduledPacket> { - CommunicationPacket data; - Destination destination; - long earliestSendTime; - PacketBatch batch; // the batch this packet belongs to, or null if not part of a batch - long sentTime; - long responseTime; - CountDownLatch sentSignal; - CountDownLatch responseSignal; - CommunicationPacket response; - - public ScheduledPacket(CommunicationPacket packet, Destination destination, long earliestSendTime) { - this(packet, destination, earliestSendTime, null); - } - - public ScheduledPacket(CommunicationPacket packet, Destination destination, long earliestSendTime, PacketBatch batch) { - this.data = packet; - this.destination = destination; - this.earliestSendTime = earliestSendTime; - this.batch = batch; - this.sentSignal = new CountDownLatch(1); - this.responseSignal = new CountDownLatch(1); - this.responseTime = -1; - } - - @Override - public int compareTo(ScheduledPacket anotherPacket) { - return new Long(earliestSendTime).compareTo(anotherPacket.earliestSendTime); - } - - public void decrementSentLatch() { - sentTime = System.currentTimeMillis(); - sentSignal.countDown(); - } - - public void awaitSending() throws InterruptedException { - sentSignal.await(); - } - - public long getSentTime() { - return sentTime; - } - - /** - * Returns the time at which a response packet was received, or -1 if no response. - * @return - */ - public long getResponseTime() { - return responseTime; - } - - public void decrementResponseLatch() { - responseTime = System.currentTimeMillis(); - responseSignal.countDown(); - } - - public void awaitResponse(long timeout, TimeUnit unit) throws InterruptedException { - responseSignal.await(timeout, unit); - } - - public void setResponse(CommunicationPacket response) { - this.response = response; - } - - /** - * If this packet was sent via <code>sendAndWait</code>, and a response packet has been - * received (i.e., a packet with the same packet id), this method returns the response packet. - * Otherwise, <code>null</code> is returned. - * @return - */ - public CommunicationPacket getResponse() { - return response; - } - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/network/PacketBatch.java b/apps/i2pbote/src/i2p/bote/network/PacketBatch.java deleted file mode 100644 index dec2b8df38..0000000000 --- a/apps/i2pbote/src/i2p/bote/network/PacketBatch.java +++ /dev/null @@ -1,108 +0,0 @@ -package i2p.bote.network; - -import i2p.bote.packet.CommunicationPacket; -import i2p.bote.packet.I2PBotePacket; -import i2p.bote.packet.UniqueId; - -import java.util.Iterator; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; - -import net.i2p.data.Destination; -import net.i2p.util.ConcurrentHashSet; - -/** - * This class is used for sending a number of packets to other nodes, - * and collecting the response packets. - * - * @author HungryHobo@mail.i2p - * - */ -// TODO use I2PSendQueue.sendAndWait(), get rid of PacketBatch.sentSignal, etc? -public class PacketBatch implements Iterable<PacketBatchItem> { - private Map<UniqueId, PacketBatchItem> outgoingPackets; - private Set<I2PBotePacket> incomingPackets; - private CountDownLatch sentSignal; // this field is lazy-initialized - private CountDownLatch firstReplyReceivedSignal; - - public PacketBatch() { - outgoingPackets = new ConcurrentHashMap<UniqueId, PacketBatchItem>(); - incomingPackets = new ConcurrentHashSet<I2PBotePacket>(); - firstReplyReceivedSignal = new CountDownLatch(1); - } - - public void putPacket(CommunicationPacket packet, Destination destination) { - outgoingPackets.put(packet.getPacketId(), new PacketBatchItem(packet, destination)); - } - - /** - * Return <code>true</code> if the batch contains a packet with a given {@link UniqueId}. - * @param packetId - * @return - */ - public boolean contains(final UniqueId packetId) { - return outgoingPackets.containsKey(packetId); - } - - public int getPacketCount() { - return outgoingPackets.keySet().size(); - } - - public Iterator<PacketBatchItem> iterator() { - return outgoingPackets.values().iterator(); - } - -/* private void decrementConfirmedLatch() { - initSignals(); - confirmedSignal.countDown(); - } - - boolean areAllPacketsConfirmed() { - return confirmedSignal.getCount() == 0; - } - - boolean isPacketConfirmed(UniqueId packetId) { - decrementConfirmedLatch(); - return packetMap.get(packetId).isDeliveryConfirmed(); - }*/ - - /** - * Notify the <code>PacketBatch</code> that delivery confirmation has been received for - * a packet. - * @param packetId - */ -/* void confirmDelivery(UniqueId packetId) { - if (outgoingPackets.containsKey(packetId)) - outgoingPackets.get(packetId).confirmDelivery(); - }*/ - - void addResponsePacket(I2PBotePacket packet) { - incomingPackets.add(packet); - firstReplyReceivedSignal.countDown(); - } - - public Set<I2PBotePacket> getResponsePackets() { - return incomingPackets; - } - - void decrementSentLatch() { - getSentSignal().countDown(); - } - - private synchronized CountDownLatch getSentSignal() { - if (sentSignal == null) - sentSignal = new CountDownLatch(getPacketCount()); - return sentSignal; - } - - public void awaitSendCompletion() throws InterruptedException { - getSentSignal().await(5, TimeUnit.MINUTES); - } - - public void awaitFirstReply(long timeout, TimeUnit timeoutUnit) throws InterruptedException { - firstReplyReceivedSignal.await(timeout, timeoutUnit); - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/network/PacketBatchItem.java b/apps/i2pbote/src/i2p/bote/network/PacketBatchItem.java deleted file mode 100644 index 8afe58e99b..0000000000 --- a/apps/i2pbote/src/i2p/bote/network/PacketBatchItem.java +++ /dev/null @@ -1,32 +0,0 @@ -package i2p.bote.network; - -import i2p.bote.packet.CommunicationPacket; -import net.i2p.data.Destination; - -public class PacketBatchItem { - private CommunicationPacket packet; - private Destination destination; - private boolean confirmed; - - PacketBatchItem(CommunicationPacket packet, Destination destination) { - this.packet = packet; - this.destination = destination; - confirmed = false; - } - - public CommunicationPacket getPacket() { - return packet; - } - - public Destination getDestination() { - return destination; - } - - void confirmDelivery() { - confirmed = true; - } - - boolean isDeliveryConfirmed() { - return confirmed; - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/network/PacketListener.java b/apps/i2pbote/src/i2p/bote/network/PacketListener.java deleted file mode 100644 index 42e020cef1..0000000000 --- a/apps/i2pbote/src/i2p/bote/network/PacketListener.java +++ /dev/null @@ -1,12 +0,0 @@ -package i2p.bote.network; - -import i2p.bote.packet.CommunicationPacket; - -import java.util.EventListener; - -import net.i2p.data.Destination; - -public interface PacketListener extends EventListener { - - void packetReceived(CommunicationPacket packet, Destination sender, long receiveTime); -} diff --git a/apps/i2pbote/src/i2p/bote/network/PeerManager.java b/apps/i2pbote/src/i2p/bote/network/PeerManager.java deleted file mode 100644 index eada4f5a20..0000000000 --- a/apps/i2pbote/src/i2p/bote/network/PeerManager.java +++ /dev/null @@ -1,26 +0,0 @@ -package i2p.bote.network; - -import net.i2p.data.Destination; - -public class PeerManager { - - public PeerManager() { - } - - /** - * Return a random active peer. - * - * The peers are managed independently of the Kademlia peers because they need to - * be uniformly distributed across the key space to prevent leaking information about - * the local destination key to nodes that could link it to the local email address. - * @return - */ - public Destination getRandomPeer() { - return null; - } - - public int getNumPeers() { - // TODO - return 0; - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/network/SendQueuePacketListener.java b/apps/i2pbote/src/i2p/bote/network/SendQueuePacketListener.java deleted file mode 100644 index 60fd571735..0000000000 --- a/apps/i2pbote/src/i2p/bote/network/SendQueuePacketListener.java +++ /dev/null @@ -1,12 +0,0 @@ -package i2p.bote.network; - -import i2p.bote.packet.I2PBotePacket; - -public interface SendQueuePacketListener { - - /** - * - * @param packet - */ - void packetSent(I2PBotePacket packet); -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/network/kademlia/BucketManager.java b/apps/i2pbote/src/i2p/bote/network/kademlia/BucketManager.java deleted file mode 100644 index 57c950e71c..0000000000 --- a/apps/i2pbote/src/i2p/bote/network/kademlia/BucketManager.java +++ /dev/null @@ -1,323 +0,0 @@ -package i2p.bote.network.kademlia; - -import i2p.bote.network.I2PSendQueue; -import i2p.bote.network.PacketListener; -import i2p.bote.packet.CommunicationPacket; -import i2p.bote.service.I2PBoteThread; - -import java.math.BigInteger; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; - -import net.i2p.data.Destination; -import net.i2p.data.Hash; -import net.i2p.util.ConcurrentHashSet; -import net.i2p.util.Log; -import net.i2p.util.RandomSource; - -// TODO if a sibling times out, refill the sibling table -public class BucketManager extends I2PBoteThread implements PacketListener { - private static final int INTERVAL = 5 * 60 * 1000; - private static final int PING_TIMEOUT = 20 * 1000; - - private Log log = new Log(BucketManager.class); - private I2PSendQueue sendQueue; - private List<KBucket> kBuckets; - private KBucket siblingBucket; // TODO [ordered furthest away to closest in terms of hash distance to local node] - private Hash localDestinationHash; - - public BucketManager(I2PSendQueue sendQueue, Collection<KademliaPeer> initialPeers, Hash localDestinationHash) { - super("BucketMgr"); - this.sendQueue = sendQueue; - this.localDestinationHash = localDestinationHash; - kBuckets = Collections.synchronizedList(new ArrayList<KBucket>()); - kBuckets.add(new KBucket(KBucket.MIN_HASH_VALUE, KBucket.MAX_HASH_VALUE, 0, true)); // this is the root bucket, so depth=0 - siblingBucket = new KBucket(KBucket.MIN_HASH_VALUE, KBucket.MAX_HASH_VALUE, 0, false); - addAll(initialPeers); - } - - public void addAll(Collection<KademliaPeer> nodes) { - for (KademliaPeer node: nodes) - addOrUpdate(node); - } - - /** - * Add a <code>{@link KademliaPeer}</code> to the sibling list or a bucket. - * @param peer - */ - public void addOrUpdate(KademliaPeer peer) { - Hash peerHash = peer.getDestinationHash(); - log.debug("Adding/updating peer: Hash = " + peerHash); - - peer.resetStaleCounter(); - - synchronized(this) { - if (!siblingBucket.isFull() || siblingBucket.contains(peer)) { - siblingBucket.addOrUpdate(peer); - getBucket(peerHash).remove(peer); - } - else if (isCloserSibling(peer)) { - KademliaPeer ejectedPeer = siblingBucket.getMostDistantPeer(localDestinationHash); - - addToBucket(ejectedPeer); - siblingBucket.remove(ejectedPeer); - - siblingBucket.addOrUpdate(peer); - getBucket(peerHash).remove(peer); - } - else - addToBucket(peer); - } - logBucketStats(); - -/* KademliaPeer ejectedPeer = addSibling(peer); - // if the peer was added as a sibling, it may need to be removed from a bucket - if (ejectedPeer != peer) - getBucket(peerHash).remove(peer); - // if the peer didn't get added as a sibling, try a bucket - else - addToBucket(peer); - // if adding the peer to the list of siblings replaced another sibling, add the old sibling to a bucket - if (ejectedPeer != null) - addToBucket(ejectedPeer);*/ - -/*TODO synchronized(siblings) { - if (siblings.isFull()) { - KBucket bucket = getBucket(nodeHash); - KademliaPeer mostDistantSibling = getMostDistantSibling(); - if (getDistance(node.getDestinationHash()) < getDistance(mostDistantSibling)) { - bucket.addOrUpdate(mostDistantSibling); - siblings.remove(mostDistantSibling); - siblings.add(node); - } - else - bucket.addOrUpdate(node); - } - else { - siblings.add(node); - }*/ - - } - - private void logBucketStats() { - int numBuckets = kBuckets.size(); - int numPeers = getAllPeers().size(); - - log.debug("#buckets=" + numBuckets + "+sibBkt, #peers=" + numPeers); - } - - /** - * Add a <code>{@link KademliaPeer}</code> to the appropriate bucket. - * @param peer - */ - private void addToBucket(KademliaPeer peer) { - Hash nodeHash = peer.getDestinationHash(); - KBucket bucket = getBucket(nodeHash); - KBucket newBucket = bucket.addOrSplit(peer); - if (newBucket != null) - kBuckets.add(newBucket); - } - - /** - * Return <code>true</code> if a given peer is closer to the local node than at - * least one sibling. In other words, test if <code>peer</code> should replace - * an existing sibling. - * @param peer - * @return - */ - private boolean isCloserSibling(KademliaPeer peer) { - BigInteger peerDistance = KademliaUtil.getDistance(peer, localDestinationHash); - for (KademliaPeer sibling: siblingBucket) { - BigInteger siblingDistance = KademliaUtil.getDistance(sibling.getDestinationHash(), localDestinationHash); - if (peerDistance.compareTo(siblingDistance) < 0) - return true; - } - return false; - } - - /** - * Add a peer to the sibling list if the list is not full, or if there is a node that can be - * replaced. - * - * If <code>peer</code> replaced an existing sibling, that sibling is returned. - * If <code>peer</code> could not be added to the list, <code>peer</code> is returned. - * If the list was not full, <code>null</code> is returned. - * @param peer - * @return - */ -/* private KademliaPeer addSibling(KademliaPeer peer) { - // no need to handle a replacement cache because the sibling bucket has none. - KademliaPeer mostDistantSibling = siblingBucket.getMostDistantPeer(localDestinationHash); - if (!siblingBucket.isFull()) { - siblingBucket.add(peer); - return null; - } - else if (new PeerDistanceComparator(localDestinationHash).compare(peer, mostDistantSibling) < 0) { - siblingBucket.remove(mostDistantSibling); - siblingBucket.add(peer); - return mostDistantSibling; - } - else - return peer; - }*/ - - public void remove(KademliaPeer peer) { - Hash nodeHash = peer.getDestinationHash(); - getBucket(nodeHash).remove(peer); - } - - /** - * Do a binary search for the index of the bucket whose key range contains a given {@link Hash}. - * @param key - * @return - */ - private int getBucketIndex(Hash key) { - // initially, the search interval is 0..n-1 - int lowEnd = 0; - int highEnd = kBuckets.size(); - - BigInteger keyValue = new BigInteger(key.getData()); - while (lowEnd < highEnd) { - int centerIndex = (highEnd + lowEnd) / 2; - if (keyValue.compareTo(kBuckets.get(centerIndex).getStartId()) < 0) - highEnd = centerIndex; - else if (keyValue.compareTo(kBuckets.get(centerIndex).getEndId()) > 0) - lowEnd = centerIndex; - else - return centerIndex; - } - - log.error("This should never happen! No k-bucket found for hash: " + key); - return -1; - } - - /** - * Do a binary search for the bucket whose key range contains a given {@link Hash}. - * @param key - * @return - */ - private KBucket getBucket(Hash key) { - return kBuckets.get(getBucketIndex(key)); - } - - /** - * Return the <code>count</code> peers that are closest to a given key. - * Less than <code>count</code> peers may be returned if there aren't - * enough peers in the k-buckets. - * @param key - * @param count - * @return - */ - public Collection<KademliaPeer> getClosestPeers(Hash key, int count) { - Collection<KademliaPeer> closestPeers = new ConcurrentHashSet<KademliaPeer>(); - - // TODO don't put all peers in one huge list, only use two buckets at a time - KademliaPeer[] allPeers = getAllPeersSortedByDistance(key); - - for (int i=0; i<count && i<allPeers.length; i++) - closestPeers.add(allPeers[i]); - - return closestPeers; - } - - private KademliaPeer[] getAllPeersSortedByDistance(Hash key) { - List<KademliaPeer> allPeers = getAllPeers(); - KademliaPeer[] peerArray = getAllPeers().toArray(new KademliaPeer[allPeers.size()]); - Arrays.sort(peerArray, new PeerDistanceComparator(key)); - return peerArray; - } - - private List<KademliaPeer> getAllPeers() { - List<KademliaPeer> allPeers = new ArrayList<KademliaPeer>(); - for (KBucket bucket: kBuckets) - allPeers.addAll(bucket.getNodes()); - allPeers.addAll(siblingBucket.getNodes()); - return allPeers; - } - - /** - * Return all siblings of the local node (siblings are an S/Kademlia feature). - * @return - */ - public List<KademliaPeer> getSiblings() { - List<KademliaPeer> siblingDestinations = new ArrayList<KademliaPeer>(); - for (KademliaPeer sibling: siblingBucket) - siblingDestinations.add(sibling); - return siblingDestinations; - } - - /** - * Return the total number of known Kademlia peers. - * @return - */ - public int getPeerCount() { - int count = 0; - for (KBucket bucket: kBuckets) - count += bucket.size(); - count += siblingBucket.size(); - return count; - } - - /** - * "refresh all k-buckets further away than the closest neighbor. This refresh is just a lookup of a random key that is within that k-bucket range." - */ - public void refreshAll() { - for (KBucket bucket: kBuckets) - refresh(bucket); - } - - private void refresh(KBucket bucket) { - byte[] randomHash = new byte[Hash.HASH_LENGTH]; - for (int i=0; i<Hash.HASH_LENGTH; i++) - randomHash[i] = (byte)RandomSource.getInstance().nextInt(256); - Hash key = new Hash(randomHash); - getClosestPeers(key, KademliaConstants.K); - } - -/* private void updatePeerList() { - for (Destination peer: peers) { - if (ping(peer)) - requestPeerList(peer); - } - }*/ - - @Override - public void run() { - while (!shutdownRequested()) { - try { - // TODO replicate(); - // TODO updatePeerList(); refresh every bucket to which we haven't performed a node lookup in the past hour. Refreshing means picking a random ID in the bucket's range and performing a node search for that ID. - sleep(INTERVAL); - } - catch (InterruptedException e) { - log.debug("Thread '" + getName() + "' + interrupted", e); - } - } - } - - // PacketListener implementation - @Override - public void packetReceived(CommunicationPacket packet, Destination sender, long receiveTime) { - // any type of incoming packet updates the peer's record in the bucket/sibling list, or adds the peer to the bucket/sibling list - addOrUpdate(new KademliaPeer(sender, receiveTime)); - } - - private class PeerDistanceComparator implements Comparator<KademliaPeer> { - private Hash reference; - - PeerDistanceComparator(Hash reference) { - this.reference = reference; - } - - @Override - public int compare(KademliaPeer peer1, KademliaPeer peer2) { - BigInteger distance1 = KademliaUtil.getDistance(peer1.getDestinationHash(), reference); - BigInteger distance2 = KademliaUtil.getDistance(peer2.getDestinationHash(), reference); - return distance1.compareTo(distance2); - } - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/network/kademlia/ClosestNodesLookupTask.java b/apps/i2pbote/src/i2p/bote/network/kademlia/ClosestNodesLookupTask.java deleted file mode 100644 index d98e78fdf2..0000000000 --- a/apps/i2pbote/src/i2p/bote/network/kademlia/ClosestNodesLookupTask.java +++ /dev/null @@ -1,198 +0,0 @@ -package i2p.bote.network.kademlia; - -import i2p.bote.network.I2PPacketDispatcher; -import i2p.bote.network.I2PSendQueue; -import i2p.bote.network.PacketListener; -import i2p.bote.packet.CommunicationPacket; -import i2p.bote.packet.DataPacket; -import i2p.bote.packet.PeerList; -import i2p.bote.packet.ResponsePacket; -import i2p.bote.packet.UniqueId; -import i2p.bote.packet.dht.FindClosePeersPacket; - -import java.math.BigInteger; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; -import java.util.Random; -import java.util.Set; -import java.util.TreeSet; - -import net.i2p.data.Destination; -import net.i2p.data.Hash; -import net.i2p.util.ConcurrentHashSet; -import net.i2p.util.Log; - -public class ClosestNodesLookupTask implements Runnable { - private static final int REQUEST_TIMEOUT = 30 * 1000; - private static final int CLOSEST_NODES_LOOKUP_TIMEOUT = 2 * 60 * 1000; // the maximum amount of time a FIND_CLOSEST_NODES can take - - private Log log = new Log(ClosestNodesLookupTask.class); - private Hash key; - private I2PPacketDispatcher i2pReceiver; - private BucketManager bucketManager; - private Random randomNumberGenerator; - private I2PSendQueue sendQueue; - private Set<Destination> responseReceived; - private Set<KademliaPeer> notQueriedYet; - private Set<FindClosePeersPacket> pendingRequests; - - public ClosestNodesLookupTask(Hash key, I2PSendQueue sendQueue, I2PPacketDispatcher i2pReceiver, BucketManager bucketManager) { - this.key = key; - this.sendQueue = sendQueue; - this.i2pReceiver = i2pReceiver; - this.bucketManager = bucketManager; - randomNumberGenerator = new Random(getTime()); - responseReceived = new TreeSet<Destination>(new HashDistanceComparator(key)); // nodes that have responded to a query; sorted by distance to the key - notQueriedYet = new ConcurrentHashSet<KademliaPeer>(); // peers we haven't contacted yet - pendingRequests = new ConcurrentHashSet<FindClosePeersPacket>(); // outstanding queries - } - - @Override - public void run() { - log.debug("Looking up nodes closest to " + key); - - PacketListener packetListener = new IncomingPacketHandler(); - i2pReceiver.addPacketListener(packetListener); - - // prepare a list of close nodes (might need more than alpha if they don't all respond) - notQueriedYet.addAll(bucketManager.getClosestPeers(key, KademliaConstants.S)); - - long startTime = getTime(); - while (true) { - // send new requests if less than alpha are pending - while (pendingRequests.size()<KademliaConstants.ALPHA && !notQueriedYet.isEmpty()) { - KademliaPeer peer = selectRandom(notQueriedYet); - notQueriedYet.remove(peer); - FindClosePeersPacket packet = new FindClosePeersPacket(key); - pendingRequests.add(packet); - try { - CommunicationPacket response = sendQueue.sendAndWait(packet, peer.getDestination(), REQUEST_TIMEOUT); - if (response == null) // timeout occurred - peer.incrementStaleCounter(); - else - peer.resetStaleCounter(); - } - catch (InterruptedException e) { - log.warn("Interrupted while waiting on a lookup request.", e); - } - } - - if (responseReceived.size() >= KademliaConstants.S) - break; - if (hasTimedOut(startTime, CLOSEST_NODES_LOOKUP_TIMEOUT)) { - log.error("Lookup for closest nodes timed out."); - break; - } - } - log.debug(responseReceived.size() + " nodes found."); - - i2pReceiver.removePacketListener(packetListener); - } - - private KademliaPeer selectRandom(Collection<KademliaPeer> collection) { - KademliaPeer[] array = new KademliaPeer[collection.size()]; - int index = randomNumberGenerator.nextInt(array.length); - return collection.toArray(array)[index]; - } - - private long getTime() { - return System.currentTimeMillis(); - } - - private boolean hasTimedOut(long startTime, long timeout) { - return getTime() > startTime + timeout; - } - - /** - * Return up to <code>s</code> peers. - * @return - */ - public List<Destination> getResults() { - List<Destination> resultsList = new ArrayList<Destination>(); - for (Destination destination: responseReceived) - resultsList.add(destination); - Collections.sort(resultsList, new HashDistanceComparator(key)); - - // trim the list to the k closest nodes - if (resultsList.size() > KademliaConstants.S) - resultsList = resultsList.subList(0, KademliaConstants.S); - return resultsList; - } - - /** - * Return <code>true</code> if a set of peers contains a given peer. - * @param peerSet - * @param peerToFind - * @return - */ - private boolean contains(Set<KademliaPeer> peerSet, KademliaPeer peerToFind) { - Hash peerHash = peerToFind.getDestinationHash(); - for (KademliaPeer peer: peerSet) - if (peer.getDestinationHash().equals(peerHash)) - return true; - return false; - } - - // compares two Destinations in terms of closeness to <code>reference</code> - private class HashDistanceComparator implements Comparator<Destination> { - private Hash reference; - - public HashDistanceComparator(Hash reference) { - this.reference = reference; - } - - public int compare(Destination dest1, Destination dest2) { - BigInteger dest1Distance = KademliaUtil.getDistance(dest1.calculateHash(), reference); - BigInteger dest2Distance = KademliaUtil.getDistance(dest2.calculateHash(), reference); - return dest1Distance.compareTo(dest2Distance); - } - }; - - private class IncomingPacketHandler implements PacketListener { - @Override - public void packetReceived(CommunicationPacket packet, Destination sender, long receiveTime) { - if (packet instanceof ResponsePacket) { - ResponsePacket responsePacket = (ResponsePacket)packet; - DataPacket payload = responsePacket.getPayload(); - if (payload instanceof PeerList) - addPeers(responsePacket, (PeerList)payload, sender, receiveTime); - } - } - - private void addPeers(ResponsePacket responsePacket, PeerList peerListPacket, Destination sender, long receiveTime) { - log.debug("Peer List Packet received: #peers=" + peerListPacket.getPeers().size() + ", sender="+ sender); - - // if the packet is in response to a pending request, update the three Sets - FindClosePeersPacket request = getPacketById(pendingRequests, responsePacket.getPacketId()); // find the request the node list is in response to - if (request != null) { - // TODO make responseReceived and pendingRequests a parameter in the constructor? - responseReceived.add(sender); - Collection<KademliaPeer> peersReceived = peerListPacket.getPeers(); - for (KademliaPeer peer: peersReceived) - if (contains(notQueriedYet, peer)) - notQueriedYet.add(peer); - pendingRequests.remove(request); - // TODO synchronize access to shortList and pendingRequests - } - else - log.debug("No Find Close Nodes packet found for Peer List: " + peerListPacket); - } - - /** - * Returns a packet that matches a given {@link UniqueId} from a {@link Collection} of packets, or - * <code>null</code> if no match. - * @param packets - * @param packetId - * @return - */ - private FindClosePeersPacket getPacketById(Collection<FindClosePeersPacket> packets, UniqueId packetId) { - for (FindClosePeersPacket packet: packets) - if (packetId.equals(packet.getPacketId())) - return packet; - return null; - } - }; -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/network/kademlia/KBucket.java b/apps/i2pbote/src/i2p/bote/network/kademlia/KBucket.java deleted file mode 100644 index dafecbc00e..0000000000 --- a/apps/i2pbote/src/i2p/bote/network/kademlia/KBucket.java +++ /dev/null @@ -1,260 +0,0 @@ -package i2p.bote.network.kademlia; - -import java.math.BigInteger; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.Iterator; -import java.util.List; -import java.util.Set; -import java.util.concurrent.ConcurrentSkipListSet; - -import net.i2p.data.Destination; -import net.i2p.data.Hash; -import net.i2p.util.Log; - -/** - * Peers are sorted by the time of the most recent communication: Index 0 = least recent, - * index n-1 = most recent. - * - * @author HungryHobo@mail.i2p - */ -class KBucket implements Iterable<KademliaPeer> { - static final BigInteger MIN_HASH_VALUE = BigInteger.ONE.negate().shiftLeft(Hash.HASH_LENGTH*8); // system-wide minimum hash value - static final BigInteger MAX_HASH_VALUE = BigInteger.ONE.shiftLeft(Hash.HASH_LENGTH*8).subtract(BigInteger.ONE); // system-wide maximum hash value - private static final int CAPACITY = KademliaConstants.K; // The maximum number of peers the bucket can hold - - private Log log = new Log(KBucket.class); - private BigInteger startId; - private BigInteger endId; - private List<KademliaPeer> peers; // the list is always kept sorted by "last seen" time - private Set<KademliaPeer> replacementCache; - private int depth; - private boolean replacementCacheEnabled; - - KBucket(BigInteger startId, BigInteger endId, int depth, boolean replacementCacheEnabled) { - this.startId = startId; - this.endId = endId; - Comparator<KademliaPeer> peerComparator = createLastReceptionComparator(); - peers = new ArrayList<KademliaPeer>(); - replacementCache = new ConcurrentSkipListSet<KademliaPeer>(peerComparator); - this.depth = depth; - this.replacementCacheEnabled = replacementCacheEnabled; - } - - BigInteger getStartId() { - return startId; - } - - BigInteger getEndId() { - return endId; - } - - List<KademliaPeer> getNodes() { - // TODO only return peers that are not locked - return peers; - } - - void add(KademliaPeer node) { - if (isFull()) - log.error("Error: adding a node to a full k-bucket. Bucket needs to be split first. Size=" + size() + ", capacity=" + CAPACITY); - - peers.add(node); - } - - /** - * Add a node to the bucket, splitting the bucket if necessary. If the bucket is split, - * the newly created bucket is returned. Otherwise, return <code>null</code>. - * - * If the bucket is full but cannot be split, the new node is added to the replacement - * cache and <code>null</code> is returned. - * @param peer - * @return - */ - synchronized KBucket addOrSplit(KademliaPeer peer) { - if (!rangeContains(peer)) - log.error("Attempt to add a node whose hash is outside the bucket's range! Bucket start=" + startId + " Bucket end=" + endId + " peer hash=" + new BigInteger(peer.getDestinationHash().getData())); - - if (isFull() && !contains(peer)) { - if (canSplit(peer)) { - KBucket newBucket = split(peer.getDestinationHash()); - if (rangeContains(peer)) - add(peer); - else if (newBucket.rangeContains(peer)) - newBucket.add(peer); - else - log.error("After splitting a bucket, node is outside of both buckets' ranges."); - return newBucket; - } - else { - replacementCache.add(peer); - return null; - } - } - else { - addOrUpdate(peer); - return null; - } - } - - /** - * Return <code>true</code> if the bucket should be split in order to make room for a new peer. - * @return - */ - private boolean canSplit(KademliaPeer peer) { - return depth%KademliaConstants.B!=0 || rangeContains(peer); - } - - /** - * Update a known peer, or add the peer if it isn't known. - * TODO If the bucket is full, the peer is added to the bucket's replacement cache. - * @param destination - * @return <code>true</code> if the peer was added (or replacement-cached), - * <code>false</code> if it was updated. - */ - boolean addOrUpdate(KademliaPeer peer) { - // TODO log an error if peer outside bucket's range - // TODO handle stale peers - // TODO manage replacement cache - KademliaPeer existingPeer = getPeer(peer.getDestination()); - if (existingPeer == null) { - add(peer); - return true; - } - else { - existingPeer.setLastReception(peer.getLastReception()); - // TODO move to end of list if lastReception is highest value, which it should be most of the time - return false; - } - } - - /** - * Return <code>true</code> if a peer exists in the bucket. - * @param peer - * @return - */ - boolean contains(KademliaPeer peer) { - return getPeer(peer.getDestination()) != null; - } - - /** - * Return <code>true</code> if the bucket's Id range contains the hash of a given - * peer, regardless if the bucket contains the peer; <code>false</code> if the hash - * is outside the range. - * @param peer - * @return - */ - private boolean rangeContains(KademliaPeer peer) { - BigInteger peerHash = new BigInteger(peer.getDestinationHash().getData()); - return (startId.compareTo(peerHash)<=0 || endId.compareTo(peerHash)>0); - } - - /** - * Return a peer with a given I2P destination from the bucket, or <code>null</code> if the - * peer isn't in the bucket. - * @param destination - * @return - */ - KademliaPeer getPeer(Destination destination) { - for (KademliaPeer peer: peers) - if (peer.getDestination().equals(destination)) - return peer; - return null; - } - - KademliaPeer getClosestPeer(Hash key) { - KademliaPeer closestPeer = null; - BigInteger minDistance = MAX_HASH_VALUE; - for (KademliaPeer peer: peers) { - BigInteger distance = KademliaUtil.getDistance(key, peer.getDestination().calculateHash()); - if (distance.compareTo(minDistance) < 0) { - closestPeer = peer; - minDistance = distance; - } - } - return closestPeer; - } - -/* KademliaPeer getMostDistantPeer(KademliaPeer node) { - return getMostDistantPeer(node.getDestinationHash()); - }*/ - - KademliaPeer getMostDistantPeer(Hash key) { - KademliaPeer mostDistantPeer = null; - BigInteger maxDistance = BigInteger.ZERO; - for (KademliaPeer peer: peers) { - BigInteger distance = KademliaUtil.getDistance(key, peer.getDestination().calculateHash()); - if (distance.compareTo(maxDistance) > 0) { - mostDistantPeer = peer; - maxDistance = distance; - } - } - return mostDistantPeer; - } - - @Override - public Iterator<KademliaPeer> iterator() { - return peers.iterator(); - } - - void remove(Destination destination) { - peers.remove(getPeer(destination)); - } - - /** - * Remove a peer from the bucket. If the peer doesn't exist in the bucket, nothing happens. - * @param node - */ - void remove(KademliaPeer node) { - peers.remove(node); - } - - int size() { - return peers.size(); - } - - boolean isFull() { - return size() >= CAPACITY; - } - - /** - * Move half the nodes into a new bucket. - * @return The new bucket - */ - KBucket split() { - depth++; - KBucket newBucket = new KBucket(startId, endId, depth, replacementCacheEnabled); - for (int i=0; i<peers.size()/2; i++) { - KademliaPeer peer = peers.get(i); - newBucket.add(peer); - remove(peer); - } - return newBucket; - } - - KBucket split(Hash hash) { - return split(new BigInteger(hash.toBase64())); - } - - KBucket split(BigInteger pivot) { - depth++; - KBucket newBucket = new KBucket(startId, pivot.subtract(BigInteger.ONE), depth, replacementCacheEnabled); - startId = pivot; - for (KademliaPeer peer: peers) { - BigInteger nodeId = new BigInteger(peer.getDestination().calculateHash().getData()); - if (nodeId.compareTo(pivot) >= 0) { - newBucket.add(peer); - remove(peer); - } - } - return newBucket; - } - - private Comparator<KademliaPeer> createLastReceptionComparator() { - return new Comparator<KademliaPeer>() { - @Override - public int compare(KademliaPeer peer1, KademliaPeer peer2) { - return Long.valueOf(peer1.getLastReception()).compareTo(peer2.getLastReception()); - } - }; - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/network/kademlia/KademliaConstants.java b/apps/i2pbote/src/i2p/bote/network/kademlia/KademliaConstants.java deleted file mode 100644 index bb3b592626..0000000000 --- a/apps/i2pbote/src/i2p/bote/network/kademlia/KademliaConstants.java +++ /dev/null @@ -1,13 +0,0 @@ -package i2p.bote.network.kademlia; - -public class KademliaConstants { - public static final int K = 2; // Number of redundant storage nodes. - public static final int S = 3; // The size of the sibling list for S/Kademlia. -// public static final int B = 5; // This is the value from the original Kademlia paper. - public static final int B = 1; - public static final int ALPHA = 3; // According to the literature, this is the optimum choice for alpha. - public static final int REFRESH_TIMEOUT = 3600; - public static final int REPLICATE_INTERVAL = 3600; // TODO would it be better for REPLICATE_INTERVAL to be slightly longer than REFRESH_TIMEOUT? - - private KademliaConstants() { } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/network/kademlia/KademliaDHT.java b/apps/i2pbote/src/i2p/bote/network/kademlia/KademliaDHT.java deleted file mode 100644 index 83b8ab651d..0000000000 --- a/apps/i2pbote/src/i2p/bote/network/kademlia/KademliaDHT.java +++ /dev/null @@ -1,376 +0,0 @@ -package i2p.bote.network.kademlia; - -import i2p.bote.network.DHT; -import i2p.bote.network.I2PPacketDispatcher; -import i2p.bote.network.I2PSendQueue; -import i2p.bote.network.PacketBatch; -import i2p.bote.network.PacketListener; -import i2p.bote.network.DhtStorageHandler; -import i2p.bote.packet.CommunicationPacket; -import i2p.bote.packet.I2PBotePacket; -import i2p.bote.packet.PeerList; -import i2p.bote.packet.ResponsePacket; -import i2p.bote.packet.StatusCode; -import i2p.bote.packet.dht.DhtStorablePacket; -import i2p.bote.packet.dht.FindClosePeersPacket; -import i2p.bote.packet.dht.RetrieveRequest; -import i2p.bote.packet.dht.StoreRequest; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileWriter; -import java.io.IOException; -import java.io.InputStreamReader; -import java.security.NoSuchAlgorithmException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; - -import com.nettgryppa.security.HashCash; - -import net.i2p.data.DataFormatException; -import net.i2p.data.Destination; -import net.i2p.data.Hash; -import net.i2p.util.ConcurrentHashSet; -import net.i2p.util.Log; - -/** - * The main class of the Kademlia implementation. All the high-level Kademlia logic - * is in here. - * - * Resources used: - * [1] http://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs.pdf - * [2] http://xlattice.sourceforge.net/components/protocol/kademlia/specs.html - * [3] http://en.wikipedia.org/wiki/Kademlia - * [4] http://www.barsoom.org/papers/infocom-2006-kad.pdf - * [5] http://doc.tm.uka.de/SKademlia_2007.pdf - * [6] OverSim (http://www.oversim.org/), which includes a S/Kademlia implementation - * - * @author HungryHobo@mail.i2p - */ -public class KademliaDHT implements DHT, PacketListener { - private Log log = new Log(KademliaDHT.class); - private Hash localDestinationHash; - private I2PSendQueue sendQueue; - private I2PPacketDispatcher i2pReceiver; - private File peerFile; - private Collection<KademliaPeer> initialPeers; - private BucketManager bucketManager; - private Map<Class<? extends DhtStorablePacket>, DhtStorageHandler> storageHandlers; - - public KademliaDHT(Destination localDestination, I2PSendQueue sendQueue, I2PPacketDispatcher i2pReceiver, File peerFile) { - localDestinationHash = localDestination.calculateHash(); - this.sendQueue = sendQueue; - this.i2pReceiver = i2pReceiver; - this.peerFile = peerFile; - initialPeers = readPeersFromFile(peerFile); - bucketManager = new BucketManager(sendQueue, initialPeers, localDestination.calculateHash()); - storageHandlers = new ConcurrentHashMap<Class<? extends DhtStorablePacket>, DhtStorageHandler>(); - } - - /** - * Returns the S nodes closest to a given key by querying peers. - * This method blocks. It returns after <code>CLOSEST_NODES_LOOKUP_TIMEOUT+1</code> seconds at - * the longest. - * - * The number of pending requests never exceeds ALPHA. According to [4], this is the most efficient. - * - * If there are less than <code>s</code> results after the kademlia lookup finishes, nodes from - * the sibling list are used. - */ - private Collection<Destination> getClosestNodes(Hash key) { - ClosestNodesLookupTask lookupTask = new ClosestNodesLookupTask(key, sendQueue, i2pReceiver, bucketManager); - lookupTask.run(); - return lookupTask.getResults(); - } - - @Override - public DhtStorablePacket findOne(Hash key, Class<? extends DhtStorablePacket> dataType) { - Collection<DhtStorablePacket> results = find(key, dataType, false); - if (results.isEmpty()) - return null; - else - return results.iterator().next(); - } - - @Override - public Collection<DhtStorablePacket> findAll(Hash key, Class<? extends DhtStorablePacket> dataType) { - return find(key, dataType, true); - } - - @Override - public void setStorageHandler(Class<? extends DhtStorablePacket> packetType, DhtStorageHandler storageHandler) { - storageHandlers.put(packetType, storageHandler); - } - - @Override - public int getNumPeers() { - return bucketManager.getPeerCount(); - } - - private Collection<DhtStorablePacket> find(Hash key, Class<? extends DhtStorablePacket> dataType, boolean exhaustive) { - final Collection<Destination> closeNodes = getClosestNodes(key); - log.debug("Querying " + closeNodes.size() + " nodes with Kademlia key " + key); - - final Collection<I2PBotePacket> receivedPackets = new ConcurrentHashSet<I2PBotePacket>(); // avoid adding duplicate packets - - PacketListener packetListener = new PacketListener() { - @Override - public void packetReceived(CommunicationPacket packet, Destination sender, long receiveTime) { - // add packet to list of received packets if the packet is in response to a RetrieveRequest - if (packet instanceof RetrieveRequest && closeNodes.contains(sender)) - receivedPackets.add(packet); - } - }; - i2pReceiver.addPacketListener(packetListener); - - // Send the retrieve requests - PacketBatch batch = new PacketBatch(); - for (Destination node: closeNodes) - batch.putPacket(new RetrieveRequest(key, dataType), node); - sendQueue.send(batch); - try { - batch.awaitSendCompletion(); - } - catch (InterruptedException e) { - log.warn("Interrupted while waiting for Retrieve Requests to be sent.", e); - } - - // wait for replies - try { - if (exhaustive) - TimeUnit.SECONDS.sleep(60); - else - batch.awaitFirstReply(30, TimeUnit.SECONDS); - } - catch (InterruptedException e) { - log.warn("Interrupted while waiting for responses to Retrieve Requests.", e); - } - log.debug(batch.getResponsePackets().size() + " response packets received for hash " + key + " and data type " + dataType); - - sendQueue.remove(batch); - i2pReceiver.removePacketListener(packetListener); - - ConcurrentHashSet<DhtStorablePacket> storablePackets = getStorablePackets(batch); - DhtStorablePacket localResult = findLocally(key, dataType); - if (localResult != null) - storablePackets.add(localResult); - return storablePackets; - } - - private DhtStorablePacket findLocally(Hash key, Class<? extends DhtStorablePacket> dataType) { - DhtStorageHandler storageHandler = storageHandlers.get(dataType); - if (storageHandler != null) - return storageHandler.retrieve(key); - else - return null; - } - - /** - * Returns all <code>DhtStorablePacket</code> packets that have been received as a response to a send batch. - * @param batch - * @return - */ - private ConcurrentHashSet<DhtStorablePacket> getStorablePackets(PacketBatch batch) { - ConcurrentHashSet<DhtStorablePacket> storablePackets = new ConcurrentHashSet<DhtStorablePacket>(); - for (I2PBotePacket packet: batch.getResponsePackets()) - if (packet instanceof DhtStorablePacket) - storablePackets.add((DhtStorablePacket)packet); - return storablePackets; - } - - @Override - public void store(DhtStorablePacket packet) throws NoSuchAlgorithmException { - Hash key = packet.getDhtKey(); - - Collection<Destination> closeNodes = getClosestNodes(key); - log.debug("Storing a " + packet.getClass().getSimpleName() + " with key " + key + " on " + closeNodes.size() + " nodes"); - - HashCash hashCash = HashCash.mintCash("", 1); // TODO - StoreRequest storageRequest = new StoreRequest(hashCash, packet); - PacketBatch batch = new PacketBatch(); - for (Destination node: closeNodes) - batch.putPacket(storageRequest, node); - sendQueue.send(batch); - - try { - batch.awaitSendCompletion(); - } - catch (InterruptedException e) { - log.warn("Interrupted while waiting for responses to Storage Requests to be sent.", e); - } - - sendQueue.remove(batch); - } - - @Override - public void start() { - i2pReceiver.addPacketListener(this); - bucketManager.start(); - bootstrap(); - } - - @Override - public void shutDown() { - i2pReceiver.removePacketListener(this); - bucketManager.requestShutdown(); - writePeersToFile(peerFile); - } - - private void bootstrap() { - new BootstrapTask().start(); - } - - private class BootstrapTask extends Thread { - public BootstrapTask() { - setDaemon(true); - } - - @Override - public void run() { - log.debug("Bootstrap start"); - while (true) { - for (KademliaPeer bootstrapNode: initialPeers) { - bootstrapNode.setLastReception(-1); - bucketManager.addOrUpdate(bootstrapNode); - Collection<Destination> closestNodes = getClosestNodes(localDestinationHash); - // if last reception time is not set, the node didn't respond, so remove it - if (bootstrapNode.getLastReception() <= 0) - bucketManager.remove(bootstrapNode); - - if (closestNodes.isEmpty()) { - log.debug("No response from bootstrap node " + bootstrapNode); - bucketManager.remove(bootstrapNode); - } - else { - bucketManager.refreshAll(); - log.info("Bootstrapping finished. Number of peers = " + bucketManager.getPeerCount()); - return; - } - } - - log.warn("Can't bootstrap off any known peer, will retry shortly."); - try { - TimeUnit.MINUTES.sleep(1); - } catch (InterruptedException e) { - log.error("Interrupted while pausing after unsuccessful bootstrap attempt.", e); - } - } - } - } - - private void writePeersToFile(File peerFile) { - // TODO - } - - private Collection<KademliaPeer> readPeersFromFile(File peerFile) { - log.info("Reading peers from file: '" + peerFile.getAbsolutePath() + "'"); - Collection<KademliaPeer> peers = new ArrayList<KademliaPeer>(); - - FileInputStream fileInput = null; - try { - fileInput = new FileInputStream(peerFile); - } - catch (FileNotFoundException notFoundExc) { - log.error("Peer file not found, creating a new one: '" + peerFile.getAbsolutePath() + "'"); - log.error("Please provide a peer file with at least one active peer and restart the application."); - try { - createPeerFile(peerFile); - } - catch (IOException ioExc) { - log.error("Can't create peer file.", ioExc); - return peers; - } - } - - BufferedReader inputBuffer = new BufferedReader(new InputStreamReader(fileInput)); - - while (true) { - String line = null; - try { - line = inputBuffer.readLine(); - } - catch (IOException e) { - log.error("Error reading peer file.", e); - } - if (line == null) - break; - - if (!line.startsWith("#")) - // TODO read "up since" time if present, use a separate method for parsing lines - // TODO write "up since" time back to the peer file - try { - Destination destination = new Destination(line); - KademliaPeer peer = new KademliaPeer(destination, 0); - - // don't add the local destination as a peer - if (!peer.getDestinationHash().equals(localDestinationHash)) - peers.add(peer); - } - catch (DataFormatException e) { - log.error("Invalid destination key in '" + peerFile + "': " + line, e); - } - } - - return peers; - } - - private void createPeerFile(File file) throws IOException { - String lineFeed = System.getProperty("line.separator"); - - file.createNewFile(); - FileWriter fileWriter = new FileWriter(file); - fileWriter.write("# Each line in this file should begin with a 516-byte I2P destination key in" + lineFeed); - fileWriter.write("# Base64 format. Optionally, the destination key can be followed by a space" + lineFeed); - fileWriter.write("# and an \"active since\" time." + lineFeed); - fileWriter.write("# Lines beginning with a # are ignored." + lineFeed); - fileWriter.close(); - } - - private void sendPeerList(FindClosePeersPacket packet, Destination destination) { - Collection<KademliaPeer> closestPeers = bucketManager.getClosestPeers(packet.getKey(), KademliaConstants.K); - PeerList peerList = new PeerList(closestPeers); - sendQueue.sendResponse(peerList, destination, packet.getPacketId()); - } - - // PacketListener implementation - @Override - public void packetReceived(CommunicationPacket packet, Destination sender, long receiveTime) { - if (packet instanceof FindClosePeersPacket) - sendPeerList((FindClosePeersPacket)packet, sender); - else if (packet instanceof StoreRequest) { - DhtStorablePacket packetToStore = ((StoreRequest)packet).getPacketToStore(); - if (packetToStore != null) { - DhtStorageHandler storageHandler = storageHandlers.get(packetToStore.getClass()); - if (storageHandler != null) - storageHandler.store(packetToStore); - else - log.warn("No storage handler found for type " + packetToStore.getClass().getSimpleName() + "."); - } - } - else if (packet instanceof RetrieveRequest) { - RetrieveRequest retrieveRequest = (RetrieveRequest)packet; - DhtStorageHandler storageHandler = storageHandlers.get(retrieveRequest.getDataType()); - if (storageHandler != null) { - DhtStorablePacket storedPacket = storageHandler.retrieve(retrieveRequest.getKey()); - // if requested packet found, send it to the requester - if (storedPacket != null) { - log.debug("Packet found for retrieve request: [" + retrieveRequest + "], replying to sender: [" + sender + "]"); - ResponsePacket response = new ResponsePacket(storedPacket, StatusCode.OK, retrieveRequest.getPacketId()); - sendQueue.send(response, sender); - } - else - log.debug("No matching packet found for retrieve request: [" + retrieveRequest + "]"); - } - else - log.warn("No storage handler found for type " + packet.getClass().getSimpleName() + "."); - } - - // bucketManager is not registered as a PacketListener, so notify it here - bucketManager.packetReceived(packet, sender, receiveTime); - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/network/kademlia/KademliaException.java b/apps/i2pbote/src/i2p/bote/network/kademlia/KademliaException.java deleted file mode 100644 index 9c60dc54d9..0000000000 --- a/apps/i2pbote/src/i2p/bote/network/kademlia/KademliaException.java +++ /dev/null @@ -1,9 +0,0 @@ -package i2p.bote.network.kademlia; - -public class KademliaException extends Exception { - private static final long serialVersionUID = -1286128818859245017L; - - public KademliaException(String message) { - super(message); - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/network/kademlia/KademliaPeer.java b/apps/i2pbote/src/i2p/bote/network/kademlia/KademliaPeer.java deleted file mode 100644 index 202c7c5119..0000000000 --- a/apps/i2pbote/src/i2p/bote/network/kademlia/KademliaPeer.java +++ /dev/null @@ -1,76 +0,0 @@ -package i2p.bote.network.kademlia; - -import java.util.concurrent.atomic.AtomicInteger; - -import net.i2p.data.Destination; -import net.i2p.data.Hash; -import net.i2p.util.Log; - -public class KademliaPeer { - private static final int STALE_THRESHOLD = 5; - - private Log log = new Log(KademliaPeer.class); - private Destination destination; - private Hash destinationHash; - private long lastPingSent; - private long lastReception; - private long activeSince; - private AtomicInteger consecutiveTimeouts; - - public KademliaPeer(Destination destination, long lastReception) { - this.destination = destination; - destinationHash = destination.calculateHash(); - if (destinationHash == null) - log.error("calculateHash() returned null!"); - - this.lastReception = lastReception; - lastPingSent = 0; - activeSince = lastReception; - consecutiveTimeouts = new AtomicInteger(0); - } - - public Destination getDestination() { - return destination; - } - - public Hash getDestinationHash() { - return destinationHash; - } - - public boolean isStale() { - return consecutiveTimeouts.get() >= STALE_THRESHOLD; - } - - public void incrementStaleCounter() { - consecutiveTimeouts.incrementAndGet(); - } - - public void resetStaleCounter() { - consecutiveTimeouts.set(0); - } - - public long getLastPingSent() { - return lastPingSent; - } - - public void setLastReception(long time) { - lastReception = time; - } - - public long getLastReception() { - return lastReception; - } - - public long getActiveSince() { - return activeSince; - } - -/* public BigInteger getDistance(KademliaPeer anotherPeer) { - return KademliaUtil.getDistance(getDestinationHash(), anotherPeer.getDestinationHash()); - }*/ - - @Override - public String toString() { - return destination.toString(); - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/network/kademlia/KademliaUtil.java b/apps/i2pbote/src/i2p/bote/network/kademlia/KademliaUtil.java deleted file mode 100644 index 59bb5f02f8..0000000000 --- a/apps/i2pbote/src/i2p/bote/network/kademlia/KademliaUtil.java +++ /dev/null @@ -1,19 +0,0 @@ -package i2p.bote.network.kademlia; - -import java.math.BigInteger; - -import net.i2p.data.DataHelper; -import net.i2p.data.Hash; - -public class KademliaUtil { - - public static BigInteger getDistance(KademliaPeer node, Hash key) { - return getDistance(node.getDestinationHash(), key); - } - - public static BigInteger getDistance(Hash key1, Hash key2) { - // This shouldn't be a performance bottleneck, so save some mem by not using Hash.cachedXor - byte[] xoredData = DataHelper.xor(key1.getData(), key2.getData()); - return new BigInteger(xoredData); - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/packet/CommunicationPacket.java b/apps/i2pbote/src/i2p/bote/packet/CommunicationPacket.java deleted file mode 100644 index 4eddeb0d24..0000000000 --- a/apps/i2pbote/src/i2p/bote/packet/CommunicationPacket.java +++ /dev/null @@ -1,116 +0,0 @@ -package i2p.bote.packet; - -import java.io.IOException; -import java.io.OutputStream; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; - -import net.i2p.util.Log; - -public abstract class CommunicationPacket extends I2PBotePacket { - private static final byte PACKET_VERSION = 1; - protected static final int HEADER_LENGTH = 6 + UniqueId.LENGTH; // length of the common packet header in the byte array representation; this is where subclasses start reading - private static final byte[] PACKET_PREFIX = new byte[] {(byte)0x6D, (byte)0x30, (byte)0x52, (byte)0xE9}; - private static Log static_log = new Log(CommunicationPacket.class); - - private Log log = new Log(CommunicationPacket.class); - private UniqueId packetId; - private CountDownLatch sentSignal; - private long sentTime; - - protected CommunicationPacket() { - this(new UniqueId()); - } - - protected CommunicationPacket(UniqueId packetId) { - this.packetId = packetId; - sentSignal = new CountDownLatch(1); - sentTime = -1; - } - - /** - * Creates a packet and initializes the header fields shared by all Communication Packets: packet type and packet id. - * @param data - */ - protected CommunicationPacket(byte[] data) { - verifyHeader(data); - checkPacketType(data[4]); - packetId = new UniqueId(data, 6); - } - - /** - * Creates a packet object from its byte array representation. If there is an error, - * <code>null</code> is returned. - * @param data - * @param log - * @return - */ - public static CommunicationPacket createPacket(byte[] data) { - char packetTypeCode = (char)data[4]; // byte 4 of a communication packet is the packet type code - Class<? extends I2PBotePacket> packetType = decodePacketTypeCode(packetTypeCode); - if (packetType==null || !CommunicationPacket.class.isAssignableFrom(packetType)) { - static_log.error("Type code is not a CommunicationPacket type code: <" + packetTypeCode + ">"); - return null; - } - - Class<? extends CommunicationPacket> commPacketType = packetType.asSubclass(CommunicationPacket.class); - try { - return commPacketType.getConstructor(byte[].class).newInstance(data); - } - catch (Exception e) { - static_log.warn("Can't instantiate packet for type code <" + packetTypeCode + ">", e); - return null; - } - } - - // check the packet prefix and version number of a packet - private void verifyHeader(byte[] packet) { - for (int i=0; i<PACKET_PREFIX.length; i++) - if (packet[i] != PACKET_PREFIX[i]) - log.error("Packet prefix invalid at byte " + i + ". Expected = " + PACKET_PREFIX[i] + ", actual = " + packet[i]); - if (packet[5] != 1) - log.error("Unsupported packet version: " + packet[5]); - } - - public void setPacketId(UniqueId packetId) { - this.packetId = packetId; - } - - public UniqueId getPacketId() { - return packetId; - } - - public synchronized void setSentTime(long sentTime) { - this.sentTime = sentTime; - sentSignal.countDown(); - } - - public synchronized long getSentTime() { - return sentTime; - } - - public boolean hasBeenSent() { - return sentTime > 0; - } - - public boolean awaitSending(long timeout, TimeUnit unit) throws InterruptedException { - return sentSignal.await(timeout, unit); - } - - /** - * Writes the Prefix, Version, Type, and Packet Id fields of a I2PBote packet to - * an {@link OutputStream}. - * @param outputStream - */ - protected void writeHeader(OutputStream outputStream) throws IOException { - outputStream.write(PACKET_PREFIX); - outputStream.write((byte)getPacketTypeCode()); - outputStream.write(PACKET_VERSION); - outputStream.write(packetId.toByteArray()); - } - - @Override - public String toString() { - return "Type=" + getClass().getSimpleName() + " Id=" + (packetId==null?"<null>":packetId.toString().substring(0, 8)) + "..."; - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/packet/DataPacket.java b/apps/i2pbote/src/i2p/bote/packet/DataPacket.java deleted file mode 100644 index 3764f728bc..0000000000 --- a/apps/i2pbote/src/i2p/bote/packet/DataPacket.java +++ /dev/null @@ -1,87 +0,0 @@ -package i2p.bote.packet; - -import i2p.bote.Util; -import i2p.bote.folder.FolderElement; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; - -import net.i2p.util.Log; - -/** - * The superclass of all "payload" packet types. - * - * @author HungryHobo@mail.i2p - */ -public abstract class DataPacket extends I2PBotePacket implements FolderElement { - private static Log log = new Log(DataPacket.class); - - private File file; - - public DataPacket() { - } - - @Override - public void writeTo(OutputStream outputStream) throws Exception { - outputStream.write(toByteArray()); - } - - public static DataPacket createPacket(File file) { - InputStream inputStream = null; - try { - inputStream = new FileInputStream(file); - DataPacket packet = createPacket(Util.readInputStream(inputStream)); - return packet; - } - catch (IOException e) { - log.error("Can't read packet file: " + file.getAbsolutePath(), e); - return null; - } - finally { - try { - inputStream.close(); - } - catch (IOException e) { - log.error("Can't close stream.", e); - } - } - } - - /** - * Creates a {@link DataPacket} object from its byte array representation. - * If there is an error, <code>null</code> is returned. - * @param data - * @return - */ - public static DataPacket createPacket(byte[] data) { - char packetTypeCode = (char)data[0]; // first byte of a data packet is the packet type code - Class<? extends I2PBotePacket> packetType = decodePacketTypeCode(packetTypeCode); - if (packetType==null || !DataPacket.class.isAssignableFrom(packetType)) { - log.error("Type code is not a DataPacket type code: <" + packetTypeCode + ">"); - return null; - } - - Class<? extends DataPacket> dataPacketType = packetType.asSubclass(DataPacket.class); - try { - return dataPacketType.getConstructor(byte[].class).newInstance(data); - } - catch (Exception e) { - log.warn("Can't instantiate packet for type code <" + packetTypeCode + ">", e); - return null; - } - } - - // FolderElement implementation - @Override - public File getFile() { - return file; - } - - @Override - public void setFile(File file) { - this.file = file; - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/packet/Email.java b/apps/i2pbote/src/i2p/bote/packet/Email.java deleted file mode 100644 index 905ff89108..0000000000 --- a/apps/i2pbote/src/i2p/bote/packet/Email.java +++ /dev/null @@ -1,166 +0,0 @@ -package i2p.bote.packet; - -import i2p.bote.EmailDestination; -import i2p.bote.folder.FolderElement; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Enumeration; -import java.util.Properties; - -import javax.mail.MessagingException; -import javax.mail.Session; -import javax.mail.internet.MimeMessage; - -import net.i2p.util.Log; - -import com.nettgryppa.security.HashCash; - -public class Email extends MimeMessage implements FolderElement { - private static final int MAX_BYTES_PER_PACKET = 30 * 1024; - private static final String[] HEADER_WHITELIST = new String[] { - "From", "Sender", "To", "CC", "BCC", "Reply-To", "Subject", "MIME-Version", "Content-Type", "Content-Transfer-Encoding", - "Message-Id", "In-Reply-To" - }; - - private Log log = new Log(Email.class); - private String filename; - private UniqueId messageId; - - public Email() { - super(Session.getDefaultInstance(new Properties())); - messageId = new UniqueId(); - } - - /** - * Creates an Email object from an InputStream containing a MIME email. - * - * @param inputStream - * @throws MessagingException - * @see MimeMessage(Session, InputStream) - - */ - public Email(InputStream inputStream) throws MessagingException { - super(Session.getDefaultInstance(new Properties()), inputStream); - messageId = new UniqueId(); - } - - /** - * Creates an Email object from a byte array containing a MIME email. - * - * @param bytes - * @throws MessagingException - */ - public Email(byte[] bytes) throws MessagingException { - super(Session.getDefaultInstance(new Properties()), new ByteArrayInputStream(bytes)); - messageId = new UniqueId(); - } - - // TODO - public void setHashCash(HashCash hashCash) { - // add hashCash to header - } - - /** - * Called by <code>saveChanges()</code>, see JavaMail JavaDoc. - */ - @Override - protected void updateHeaders() throws MessagingException { - setHeader("Message-Id", getMessageID()); - } - - /** - * Returns a message ID that conforms to RFC822, but doesn't reveal the sender's - * domain or user name. - */ - @Override - public String getMessageID() { - return messageId.toBase64() + "@i2p"; - } - - /** - * Converts the email into one or more email packets. - * - * @param destination - * @return - * @throws IOException - * @throws MessagingException - */ - public Collection<EmailPacket> createEmailPackets(EmailDestination destination) throws IOException, MessagingException { - ArrayList<EmailPacket> packets = new ArrayList<EmailPacket>(); - - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - writeTo(outputStream); - byte[] emailArray = outputStream.toByteArray(); - - int fragmentIndex = 0; - int blockStart = 0; // the array index where the next block of data starts - while (true) { - int blockSize = Math.min(emailArray.length-blockStart, MAX_BYTES_PER_PACKET); - if (blockSize <= 0) - break; - else { - // make a new array with the right length - byte[] block = new byte[blockSize]; - System.arraycopy(emailArray, blockStart, block, 0, blockSize); - UniqueId deletionKeyPlain = new UniqueId(); - UniqueId deletionKeyEncrypted = new UniqueId(deletionKeyPlain); // encryption happens later - EmailPacket packet = new EmailPacket(block, deletionKeyPlain, deletionKeyEncrypted, messageId, fragmentIndex, 0, destination); // we'll set the # of fragments in a minute - packets.add(packet); - fragmentIndex++; - blockStart += blockSize; - } - } - - // set fragment count - int numFragments = fragmentIndex; - for (EmailPacket packet: packets) - packet.setNumFragments(numFragments); - - return packets; - } - -/* private byte[] toByteArray() throws MessagingException { - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - try { - writeTo(outputStream); - } - catch (IOException e) { - log.error("Can't write to ByteArrayOutputStream.", e); - } - return outputStream.toByteArray(); - }*/ - - /** - * Removes all mail headers except the ones in <code>HEADER_WHITELIST</code>. - * @throws MessagingException - */ - public void scrubHeaders() throws MessagingException { - // TODO does the superclass remove BCC addresses (except the recipient's)? if not, do it in here. - @SuppressWarnings("unchecked") - Enumeration<String> headersToRemove = getNonMatchingHeaders(HEADER_WHITELIST); - while (headersToRemove.hasMoreElements()) { - String headerName = headersToRemove.nextElement(); - removeHeader(headerName); - } - } - - // FolderElement implementation - @Override - public File getFile() { - // TODO Auto-generated method stub - return null; - } - - // FolderElement implementation - @Override - public void setFile(File file) { - // TODO Auto-generated method stub - - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/packet/EmailPacket.java b/apps/i2pbote/src/i2p/bote/packet/EmailPacket.java deleted file mode 100644 index cff46ccfa7..0000000000 --- a/apps/i2pbote/src/i2p/bote/packet/EmailPacket.java +++ /dev/null @@ -1,246 +0,0 @@ -package i2p.bote.packet; - -import i2p.bote.EmailDestination; -import i2p.bote.EmailIdentity; -import i2p.bote.packet.dht.DhtStorablePacket; - -import java.io.ByteArrayOutputStream; -import java.io.DataOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - -import net.i2p.I2PAppContext; -import net.i2p.crypto.ElGamalAESEngine; -import net.i2p.crypto.SessionKeyManager; -import net.i2p.data.DataFormatException; -import net.i2p.data.Hash; -import net.i2p.data.PrivateKey; -import net.i2p.data.PublicKey; -import net.i2p.data.SessionKey; -import net.i2p.util.Log; -import net.i2p.util.RandomSource; - -@TypeCode('E') -public class EmailPacket extends DhtStorablePacket { - private static final int PADDED_SIZE = PrivateKey.KEYSIZE_BYTES; // TODO is this a good choice? - - private ElGamalAESEngine cryptoEngine = I2PAppContext.getGlobalContext().elGamalAESEngine(); - private SessionKeyManager sessionKeyManager = I2PAppContext.getGlobalContext().sessionKeyManager(); - private Log log = new Log(EmailPacket.class); - private Hash dhtKey; - private UniqueId deletionKeyPlain; - // Begin encrypted fields - private UniqueId deletionKeyEncrypted; - private UniqueId messageId; - private int fragmentIndex; - private int numFragments; - private byte[] content; - private byte[] encryptedData; // all encrypted fields: Encrypted Deletion Key, Message ID, Fragment Index, Number of Fragments, and Content. - - /** - * Creates an <code>EmailPacket</code> from raw datagram data. - * To read the encrypted parts of the packet, <code>decrypt</code> must be called first. - * @param data - */ - public EmailPacket(byte[] data) { - ByteBuffer buffer = ByteBuffer.wrap(data); - if (buffer.get() != getPacketTypeCode()) - log.error("Wrong type code for EmailPacket. Expected <" + getPacketTypeCode() + ">, got <" + (char)data[0] + ">"); - - dhtKey = readHash(buffer); - deletionKeyPlain = new UniqueId(buffer); - - int encryptedLength = buffer.getShort(); // length of the encrypted part of the packet - encryptedData = new byte[encryptedLength]; - buffer.get(encryptedData); - } - - /** - * Creates a <code>EmailPacket</code> from a <code>byte</code> array that contains MIME data. - * The public key of <code>emailDestination</code> is used for encryption. - * @param content - * @param deletionKeyPlain - * @param deletionKeyEncrypted - * @param messageId - * @param fragmentIndex - * @param numFragments - * @param emailDestination - */ - public EmailPacket(byte[] content, UniqueId deletionKeyPlain, UniqueId deletionKeyEncrypted, UniqueId messageId, int fragmentIndex, int numFragments, EmailDestination emailDestination) { - this.deletionKeyPlain = deletionKeyPlain; - this.deletionKeyEncrypted = deletionKeyEncrypted; - this.messageId = messageId; - this.fragmentIndex = fragmentIndex; - this.numFragments = numFragments; - this.content = content; - - dhtKey = generateRandomHash(); - - // make an array with all data that gets encrypted - ByteArrayOutputStream byteStream = new ByteArrayOutputStream(); - DataOutputStream dataStream = new DataOutputStream(byteStream); - try { - deletionKeyEncrypted.writeTo(dataStream); - messageId.writeTo(dataStream); - dataStream.writeShort(fragmentIndex); - dataStream.writeShort(numFragments); - dataStream.writeShort(content.length); - dataStream.write(content); - - encryptedData = encrypt(byteStream.toByteArray(), emailDestination); - verify(); - } - catch (IOException e) { - log.error("Can't write to ByteArrayOutputStream/DataOutputStream.", e); - } - } - - private Hash generateRandomHash() { - RandomSource randomSource = RandomSource.getInstance(); - - byte[] bytes = new byte[Hash.HASH_LENGTH]; - for (int i=0; i<bytes.length; i++) - bytes[i] = (byte)randomSource.nextInt(256); - - return new Hash(bytes); - } - - /** - * Decrypts the encrypted part of the packet with the private key of <code>identity</code>. - * @param identity - * @throws DataFormatException - */ - public void decrypt(EmailIdentity identity) throws DataFormatException { - byte[] decryptedData = decrypt(encryptedData, identity); - ByteBuffer buffer = ByteBuffer.wrap(decryptedData); - - deletionKeyEncrypted = new UniqueId(buffer); - messageId = new UniqueId(buffer); - fragmentIndex = buffer.getShort(); - numFragments = buffer.getShort(); - - int contentLength = buffer.getShort(); - content = new byte[contentLength]; - buffer.get(content); - - verify(); - } - - /** - * Decrypts data with an email identity's private key. - * @param data - * @param identity - * @return The decrypted data - */ - private byte[] decrypt(byte[] data, EmailIdentity identity) throws DataFormatException { - PrivateKey privateKey = identity.getPrivateEncryptionKey(); - return cryptoEngine.decrypt(data, privateKey); - } - - /** - * Encrypts data with an email destination's public key. - * @param data - * @param emailDestination - * @return The encrypted data - */ - public byte[] encrypt(byte[] data, EmailDestination emailDestination) { - PublicKey publicKey = emailDestination.getPublicEncryptionKey(); - SessionKey sessionKey = sessionKeyManager.createSession(publicKey); - return cryptoEngine.encrypt(data, publicKey, sessionKey, PADDED_SIZE); - } - - @Override - public Hash getDhtKey() { - return dhtKey; - } - - /** - * Returns the value of the "plaintext deletion key" field. - * Storage nodes set this to all zero bytes when the packet is retrieved. - * @return - */ - public UniqueId getPlaintextDeletionKey() { - return deletionKeyPlain; - } - - /** - * Returns the value of the "encrypted deletion key" field. - * Storage nodes set this to all zero bytes when the packet is retrieved. - * @return - */ - public UniqueId getEncryptedDeletionKey() { - return deletionKeyEncrypted; - } - - /** - * Returns the index of the fragment in the {@link Email} this packet belongs to. - */ - public int getFragmentIndex() { - return fragmentIndex; - } - - /** - * Returns the number of fragments in the {@link Email} this packet belongs to. - * @return - */ - public int getNumFragments() { - return numFragments; - } - - public void setContent(byte[] content) { - this.content = content; - } - - public byte[] getContent() { - return content; - } - - @Override - public byte[] toByteArray() { - ByteArrayOutputStream byteArrayStream = new ByteArrayOutputStream(); - DataOutputStream dataStream = new DataOutputStream(byteArrayStream); - - try { - dataStream.write((byte)getPacketTypeCode()); - dataStream.write(dhtKey.toByteArray()); - dataStream.write(deletionKeyPlain.toByteArray()); - dataStream.writeShort(encryptedData.length); - dataStream.write(encryptedData); - } - catch (IOException e) { - log.error("Can't write to ByteArrayOutputStream.", e); - } - return byteArrayStream.toByteArray(); - } - - public void setNumFragments(int numFragments) { - this.numFragments = numFragments; - } - - // Return the number of bytes in the packet. - // TODO just return content.length+CONST so we don't call toByteArray every time - public int getSize() { - return toByteArray().length; - } - - public UniqueId getMessageId() { - return messageId; - } - - private void verify() { - if (fragmentIndex<0 || fragmentIndex>=numFragments || numFragments<1) - log.error("Illegal values: fragmentIndex=" + fragmentIndex + " numFragments="+numFragments); - // TODO more sanity checks? - } - - @Override - public String toString() { - // TODO needs improvement - String str = super.toString() + " fragIdx=" + fragmentIndex + " numFrags=" + numFragments; - if (content == null) - str += " content=null"; - else - str += " content length=" + content.length + " bytes"; - return str; - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/packet/EmailSession.java b/apps/i2pbote/src/i2p/bote/packet/EmailSession.java deleted file mode 100644 index df5be3c53c..0000000000 --- a/apps/i2pbote/src/i2p/bote/packet/EmailSession.java +++ /dev/null @@ -1,49 +0,0 @@ -package i2p.bote.packet; - -import java.nio.ByteBuffer; - -import net.i2p.util.RandomSource; - -public class EmailSession { - private static final byte SESSION_ID_LENGTH = 16; - - private byte[] sessionId; - - public EmailSession() { - sessionId = generateSessionId(); - } - - /** - * Construct a <CODE>EmailSession</CODE> using data read from a <CODE>ByteBuffer</CODE>. - * @param buffer - */ - public EmailSession(ByteBuffer buffer) { - sessionId = new byte[SESSION_ID_LENGTH]; - buffer.get(sessionId); - } - - public byte[] getSessionId() { - return sessionId; - } - - private byte[] generateSessionId() { - RandomSource randomSource = RandomSource.getInstance(); - byte[] sessionId = new byte[SESSION_ID_LENGTH]; - for (int i=0; i<sessionId.length; i++) - sessionId[i] = (byte)randomSource.nextInt(256); - return sessionId; - } - - public String toString() { - StringBuffer buffer = new StringBuffer("["); - for (int i=0; i<sessionId.length; i++) { - if (i > 0) - buffer = buffer.append(" "); - String hexByte = Integer.toHexString(sessionId[i] & 0xFF); - if (hexByte.length() < 2) - buffer = buffer.append("0"); - buffer = buffer.append(hexByte); - } - return buffer.append("]").toString(); - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/packet/I2PBotePacket.java b/apps/i2pbote/src/i2p/bote/packet/I2PBotePacket.java deleted file mode 100644 index 9694c2edcd..0000000000 --- a/apps/i2pbote/src/i2p/bote/packet/I2PBotePacket.java +++ /dev/null @@ -1,82 +0,0 @@ -package i2p.bote.packet; - -import java.nio.ByteBuffer; - -import i2p.bote.packet.dht.FindClosePeersPacket; -import i2p.bote.packet.dht.RetrieveRequest; -import i2p.bote.packet.dht.StoreRequest; -import net.i2p.data.Hash; -import net.i2p.util.Log; - -public abstract class I2PBotePacket { - private static final int MAX_DATAGRAM_SIZE = 31 * 1024; - private static final Log log = new Log(I2PBotePacket.class); - @SuppressWarnings("unchecked") - private static Class<? extends I2PBotePacket>[] ALL_PACKET_TYPES = new Class[] { - RelayPacket.class, ResponsePacket.class, RetrieveRequest.class, StoreRequest.class, FindClosePeersPacket.class, - PeerList.class, EmailPacket.class, IndexPacket.class - }; - - public abstract byte[] toByteArray(); - - /** - * Returns the size of the packet in bytes. - * @return - */ - public int getSize() { - return toByteArray().length; - } - - /** - * Returns <code>false</code> if this packet can't fit into an I2P datagram. - * @return - */ - public boolean isTooBig() { - return getSize() > MAX_DATAGRAM_SIZE; - } - - protected char getPacketTypeCode(Class<? extends I2PBotePacket> dataType) { - return dataType.getAnnotation(TypeCode.class).value(); - } - - public char getPacketTypeCode() { - return getPacketTypeCode(getClass()); - } - - /** - * Logs an error if the packet type of the packet instance is not correct - * @param packetTypeCode - */ - protected void checkPacketType(char packetTypeCode) { - if (getPacketTypeCode() != packetTypeCode) - log.error("Packet type code of class " + getClass().getSimpleName() + " should be " + getPacketTypeCode() + ", is <" + packetTypeCode + ">"); - } - - protected void checkPacketType(byte packetTypeCode) { - checkPacketType((char)packetTypeCode); - } - -/* protected void checkPacketVersion(byte version, byte minVersion, byte maxVersion) { - // TODO - }*/ - - /** - * Creates a {@link Hash} from bytes read from a {@link ByteBuffer}. - * No check is done to make sure the buffer has enough bytes available. - */ - protected Hash readHash(ByteBuffer buffer) { - byte[] bytes = new byte[Hash.HASH_LENGTH]; - buffer.get(bytes); - return new Hash(bytes); - } - - protected static Class<? extends I2PBotePacket> decodePacketTypeCode(char packetTypeCode) { - for (Class<? extends I2PBotePacket> packetType: ALL_PACKET_TYPES) - if (packetType.getAnnotation(TypeCode.class).value() == packetTypeCode) - return packetType; - - log.debug("Invalid type code for I2PBotePacket: <" + packetTypeCode + ">"); - return null; - } - -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/packet/IndexPacket.java b/apps/i2pbote/src/i2p/bote/packet/IndexPacket.java deleted file mode 100644 index 0b09d74451..0000000000 --- a/apps/i2pbote/src/i2p/bote/packet/IndexPacket.java +++ /dev/null @@ -1,108 +0,0 @@ -package i2p.bote.packet; - -import i2p.bote.EmailDestination; -import i2p.bote.packet.dht.DhtStorablePacket; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashSet; - -import net.i2p.data.DataFormatException; -import net.i2p.data.Hash; -import net.i2p.util.Log; - -/** - * This class is not thread-safe. - * - * @author HungryHobo@mail.i2p - */ -@TypeCode('I') -public class IndexPacket extends DhtStorablePacket { - private Log log = new Log(IndexPacket.class); - private Collection<Hash> dhtKeys; // DHT keys of email packets - private Hash destinationHash; // The DHT key of this packet - - public IndexPacket(byte[] data) { - ByteBuffer dataBuffer = ByteBuffer.wrap(data); - if (dataBuffer.get() != getPacketTypeCode()) - log.error("Wrong type code for IndexPacket. Expected <" + getPacketTypeCode() + ">, got <" + (char)data[0] + ">"); - - destinationHash = readHash(dataBuffer); - - int numKeys = dataBuffer.get(); - - dhtKeys = new ArrayList<Hash>(); - for (int i=0; i<numKeys; i++) { - Hash dhtKey = readHash(dataBuffer); - dhtKeys.add(dhtKey); - } - - // TODO catch BufferUnderflowException; warn if extra bytes in the array - } - - public IndexPacket(Collection<EmailPacket> emailPackets, EmailDestination emailDestination) { - dhtKeys = new ArrayList<Hash>(); - for (EmailPacket emailPacket: emailPackets) - dhtKeys.add(emailPacket.getDhtKey()); - - destinationHash = emailDestination.getHash(); - } - - /** - * Merges the DHT keys of multiple index packets into one big index packet. - * The DHT key of this packet is not initialized. - * @param indexPackets - */ - public IndexPacket(Collection<IndexPacket> indexPackets) { - dhtKeys = new HashSet<Hash>(); - for (IndexPacket packet: indexPackets) - dhtKeys.addAll(packet.getDhtKeys()); - } - - /** - * A varargs version of {@link IndexPacket(Collection<IndexPacket>)}. - * @param indexPackets - */ - public IndexPacket(IndexPacket... indexPackets) { - this(Arrays.asList(indexPackets)); - } - - @Override - public byte[] toByteArray() { - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - outputStream.write(getPacketTypeCode()); - try { - outputStream.write((byte)getPacketTypeCode()); - destinationHash.writeBytes(outputStream); - outputStream.write((byte)dhtKeys.size()); - for (Hash dhtKey: dhtKeys) - dhtKey.writeBytes(outputStream); - // TODO in the unit test, verify that toByteArray().length = Hash.NUM_BYTES + 1 + dhtKeys.size()*Hash.NUM_BYTES - } catch (DataFormatException e) { - log.error("Invalid format for email destination.", e); - } catch (IOException e) { - log.error("Can't write to ByteArrayOutputStream.", e); - } - return outputStream.toByteArray(); - } - - /** - * Returns the DHT keys of the {@link EmailPacket}s referenced by this {@link IndexPacket}. - * @return - */ - public Collection<Hash> getDhtKeys() { - return dhtKeys; - } - - /** - * Returns the DHT key of this packet. - */ - @Override - public Hash getDhtKey() { - return destinationHash; - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/packet/PeerList.java b/apps/i2pbote/src/i2p/bote/packet/PeerList.java deleted file mode 100644 index 41679113b2..0000000000 --- a/apps/i2pbote/src/i2p/bote/packet/PeerList.java +++ /dev/null @@ -1,70 +0,0 @@ -package i2p.bote.packet; - -import i2p.bote.network.kademlia.KademliaPeer; - -import java.io.ByteArrayOutputStream; -import java.io.DataOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; -import java.util.ArrayList; -import java.util.Collection; - -import net.i2p.data.DataFormatException; -import net.i2p.data.Destination; -import net.i2p.util.Log; - -@TypeCode('L') -public class PeerList extends DataPacket { - private Log log = new Log(PeerList.class); - // TODO should be a Collection<Destination> because this class will also be used for relay peer lists - private Collection<KademliaPeer> peers; - - public PeerList(Collection<KademliaPeer> peers) { - this.peers = peers; - } - - public PeerList(byte[] data) throws DataFormatException { - ByteBuffer buffer = ByteBuffer.wrap(data); - if (buffer.get() != getPacketTypeCode()) - log.error("Wrong type code for PeerList. Expected <" + getPacketTypeCode() + ">, got <" + (char)data[0] + ">"); - - int numPeers = buffer.getShort(); - - peers = new ArrayList<KademliaPeer>(); - for (int i=0; i<numPeers; i++) { - Destination destination = new Destination(); - byte[] peerData = new byte[388]; - // read 384 bytes, leave the last 3 bytes zero - buffer.get(peerData, 0, 384); - - destination.readBytes(peerData, 0); - KademliaPeer peer = new KademliaPeer(destination, 0); - peers.add(peer); - } - - if (buffer.hasRemaining()) - log.debug("Peer List has " + buffer.remaining() + " extra bytes."); - } - - public Collection<KademliaPeer> getPeers() { - return peers; - } - - @Override - public byte[] toByteArray() { - ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream(); - DataOutputStream dataStream = new DataOutputStream(arrayOutputStream); - - try { - dataStream.write((byte)getPacketTypeCode()); - dataStream.writeShort(peers.size()); - for (KademliaPeer peer: peers) - dataStream.write(peer.getDestination().toByteArray()); - } - catch (IOException e) { - log.error("Can't write to ByteArrayOutputStream.", e); - } - - return arrayOutputStream.toByteArray(); - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/packet/PeerListRequest.java b/apps/i2pbote/src/i2p/bote/packet/PeerListRequest.java deleted file mode 100644 index 060fcf7723..0000000000 --- a/apps/i2pbote/src/i2p/bote/packet/PeerListRequest.java +++ /dev/null @@ -1,36 +0,0 @@ -package i2p.bote.packet; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; - -import net.i2p.util.Log; - -@TypeCode('A') -public class PeerListRequest extends CommunicationPacket { - private Log log = new Log(PeerListRequest.class); - - public PeerListRequest() { - } - - public PeerListRequest(byte[] data) { - super(data); - - int remaining = data.length - CommunicationPacket.HEADER_LENGTH; - if (remaining > 0) - log.debug("Peer List Request packet has " + remaining + " extra bytes."); - } - - @Override - public byte[] toByteArray() { - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - - try { - writeHeader(outputStream); - } - catch (IOException e) { - log.error("Can't write to ByteArrayOutputStream.", e); - } - - return outputStream.toByteArray(); - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/packet/RelayPacket.java b/apps/i2pbote/src/i2p/bote/packet/RelayPacket.java deleted file mode 100644 index 736da9e1c5..0000000000 --- a/apps/i2pbote/src/i2p/bote/packet/RelayPacket.java +++ /dev/null @@ -1,93 +0,0 @@ -package i2p.bote.packet; - -import i2p.bote.Util; - -import java.io.ByteArrayOutputStream; -import java.io.DataOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.nio.ByteBuffer; - -import net.i2p.data.DataFormatException; -import net.i2p.data.Destination; -import net.i2p.util.Log; - -@TypeCode('R') -public class RelayPacket extends DataPacket { - public static final int XOR_KEY_LENGTH = 32; // length of the XOR key in bytes - - private Log log = new Log(RelayPacket.class); - private long earliestSendTime; - private long latestSendTime; - private byte[] xorKey; - private Destination nextDestination; // an I2P node to send the packet to - private byte[] payload; // can contain another Relay Packet, Email Packet, or Retrieve Request - - public RelayPacket(Destination nextDestination, long earliestSendTime, long latestSendTime) { - this.nextDestination = nextDestination; - this.earliestSendTime = earliestSendTime; - this.latestSendTime = latestSendTime; - } - - public RelayPacket(byte[] data) throws DataFormatException { - ByteBuffer buffer = ByteBuffer.wrap(data); - - earliestSendTime = buffer.getInt(); - latestSendTime = buffer.getInt(); - - xorKey = new byte[XOR_KEY_LENGTH]; - buffer.get(xorKey); - - nextDestination = new Destination(); - byte[] destinationData = new byte[384]; - buffer.get(destinationData); - nextDestination.readBytes(destinationData, 0); - - int payloadLength = buffer.getShort(); - payload = new byte[payloadLength]; - buffer.get(payload); - - if (buffer.hasRemaining()) - log.debug("Relay Packet has " + buffer.remaining() + " extra bytes."); - } - - public RelayPacket(DataPacket dataPacket, Destination nextDestination, long earliestSendTime, long latestSendTime, byte[] xorKey) throws DataFormatException { - // TODO - } - - public RelayPacket(InputStream inputStream) throws IOException, DataFormatException { - this(Util.readInputStream(inputStream)); - } - - public Destination getNextDestination() { - return nextDestination; - } - - public long getEarliestSendTime() { - return earliestSendTime; - } - - public long getLatestSendTime() { - return latestSendTime; - } - - @Override - public byte[] toByteArray() { - ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream(); - DataOutputStream dataStream = new DataOutputStream(arrayOutputStream); - - try { - dataStream.writeInt((int)earliestSendTime); - dataStream.writeInt((int)latestSendTime); - dataStream.write(xorKey); - dataStream.write(nextDestination.toByteArray()); - dataStream.writeShort(payload.length); - dataStream.write(payload); - } - catch (IOException e) { - log.error("Can't write to ByteArrayOutputStream.", e); - } - - return arrayOutputStream.toByteArray(); - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/packet/RelayRequest.java b/apps/i2pbote/src/i2p/bote/packet/RelayRequest.java deleted file mode 100644 index 405ec6fd6d..0000000000 --- a/apps/i2pbote/src/i2p/bote/packet/RelayRequest.java +++ /dev/null @@ -1,79 +0,0 @@ -package i2p.bote.packet; - -import java.io.ByteArrayOutputStream; -import java.io.DataOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; -import java.security.NoSuchAlgorithmException; - -import net.i2p.I2PAppContext; -import net.i2p.crypto.ElGamalAESEngine; -import net.i2p.data.DataFormatException; -import net.i2p.data.PrivateKey; -import net.i2p.util.Log; - -import com.nettgryppa.security.HashCash; - -@TypeCode('Y') -public class RelayRequest extends CommunicationPacket { - private Log log = new Log(RelayPacket.class); - private ElGamalAESEngine encrypter = I2PAppContext.getGlobalContext().elGamalAESEngine(); - private HashCash hashCash; - private byte[] storedData; - - public RelayRequest(HashCash hashCash, DataPacket dataPacket) { - this.hashCash = hashCash; - this.storedData = dataPacket.toByteArray(); - } - - public RelayRequest(byte[] data) throws NoSuchAlgorithmException { - super(data); - ByteBuffer buffer = ByteBuffer.wrap(data, HEADER_LENGTH, data.length-HEADER_LENGTH); - - int hashCashLength = buffer.getShort(); - byte[] hashCashData = new byte[hashCashLength]; - buffer.get(hashCashData); - hashCash = new HashCash(new String(hashCashData)); - - int dataLength = buffer.getShort(); - storedData = new byte[dataLength]; - buffer.get(storedData); - - if (buffer.hasRemaining()) - log.debug("Storage Request Packet has " + buffer.remaining() + " extra bytes."); - } - - public HashCash getHashCash() { - return hashCash; - } - - /** - * Returns the payload packet, i.e. the data that is being relayed. - * @param localDecryptionKey - * @return - * @throws DataFormatException - */ - public DataPacket getStoredPacket(PrivateKey localDecryptionKey) throws DataFormatException { - byte[] decryptedData = encrypter.decrypt(storedData, localDecryptionKey); - return DataPacket.createPacket(decryptedData); - } - - @Override - public byte[] toByteArray() { - ByteArrayOutputStream byteArrayStream = new ByteArrayOutputStream(); - DataOutputStream dataStream = new DataOutputStream(byteArrayStream); - - try { - writeHeader(dataStream); - String hashCashString = hashCash.toString(); - dataStream.writeShort(hashCashString.length()); - dataStream.write(hashCashString.getBytes()); - dataStream.writeShort(storedData.length); - dataStream.write(storedData); - } - catch (IOException e) { - log.error("Can't write to ByteArrayOutputStream.", e); - } - return byteArrayStream.toByteArray(); - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/packet/ResponsePacket.java b/apps/i2pbote/src/i2p/bote/packet/ResponsePacket.java deleted file mode 100644 index 01d70ef2ae..0000000000 --- a/apps/i2pbote/src/i2p/bote/packet/ResponsePacket.java +++ /dev/null @@ -1,62 +0,0 @@ -package i2p.bote.packet; - -import java.io.ByteArrayOutputStream; -import java.io.DataOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - -import net.i2p.util.Log; - -@TypeCode('N') -public class ResponsePacket extends CommunicationPacket { - private Log log = new Log(EmailPacket.class); - private StatusCode statusCode; - private DataPacket payload; - - public ResponsePacket(DataPacket payload, StatusCode statusCode, UniqueId packetId) { - super(packetId); - this.payload = payload; - this.statusCode = statusCode; - } - - public ResponsePacket(byte[] data) { - super(data); - ByteBuffer buffer = ByteBuffer.wrap(data, HEADER_LENGTH, data.length-HEADER_LENGTH); - - statusCode = StatusCode.values()[buffer.get()]; - - int payloadLength = buffer.getShort(); - if (payloadLength > 0) { - byte[] payloadData = new byte[payloadLength]; - buffer.get(payloadData); - payload = DataPacket.createPacket(payloadData); - } - - if (buffer.hasRemaining()) - log.debug("Response Packet has " + buffer.remaining() + " extra bytes."); - } - - public DataPacket getPayload() { - return payload; - } - - @Override - public byte[] toByteArray() { - ByteArrayOutputStream byteStream = new ByteArrayOutputStream(); - DataOutputStream dataStream = new DataOutputStream(byteStream); - - try { - writeHeader(dataStream); - dataStream.write(statusCode.ordinal()); - - byte[] payloadBytes = payload.toByteArray(); - dataStream.writeShort(payloadBytes.length); - dataStream.write(payloadBytes); - } - catch (IOException e) { - log.error("Can't write to ByteArrayOutputStream.", e); - } - - return byteStream.toByteArray(); - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/packet/StatusCode.java b/apps/i2pbote/src/i2p/bote/packet/StatusCode.java deleted file mode 100644 index 9bb44a22dd..0000000000 --- a/apps/i2pbote/src/i2p/bote/packet/StatusCode.java +++ /dev/null @@ -1,5 +0,0 @@ -package i2p.bote.packet; - -public enum StatusCode { - OK, GENERAL_ERROR, NO_DATA_FOUND, INVALID_PACKET, INVALID_HASHCASH, INSUFFICIENT_HASHCASH, NO_DISK_SPACE; -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/packet/TypeCode.java b/apps/i2pbote/src/i2p/bote/packet/TypeCode.java deleted file mode 100644 index 8006b07dce..0000000000 --- a/apps/i2pbote/src/i2p/bote/packet/TypeCode.java +++ /dev/null @@ -1,12 +0,0 @@ -package i2p.bote.packet; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.TYPE) -public @interface TypeCode { - char value(); -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/packet/UniqueId.java b/apps/i2pbote/src/i2p/bote/packet/UniqueId.java deleted file mode 100644 index d72fcc7470..0000000000 --- a/apps/i2pbote/src/i2p/bote/packet/UniqueId.java +++ /dev/null @@ -1,89 +0,0 @@ -package i2p.bote.packet; - -import java.io.IOException; -import java.io.OutputStream; -import java.math.BigInteger; -import java.nio.ByteBuffer; -import java.util.Arrays; - -import net.i2p.data.Base64; -import net.i2p.util.Log; -import net.i2p.util.RandomSource; - -public class UniqueId implements Comparable<UniqueId> { - public static final byte LENGTH = 32; - - private Log log = new Log(UniqueId.class); - private byte[] bytes; - - /** - * Create a random <code>UniqueId</code>. - */ - public UniqueId() { - bytes = new byte[LENGTH]; - for (int i=0; i<LENGTH; i++) - bytes[i] = (byte)RandomSource.getInstance().nextInt(256); - } - - /** - * Create a packet id from a 32 bytes of an array, starting at <code>offset</code>. - * @param bytes - */ - public UniqueId(byte[] bytes, int offset) { - this.bytes = new byte[LENGTH]; - System.arraycopy(bytes, offset, this.bytes, 0, LENGTH); - } - - /** - * A copy constructor. - * @param uniqueId - */ - public UniqueId(UniqueId uniqueId) { - this.bytes = uniqueId.bytes.clone(); - } - - /** - * Creates a <code>UniqueId</code> using data read from a {@link ByteBuffer}. - * @param buffer - */ - public UniqueId(ByteBuffer buffer) { - bytes = new byte[LENGTH]; - buffer.get(bytes); - } - - public byte[] toByteArray() { - return bytes; - } - - public String toBase64() { - return Base64.encode(bytes); - } - - public void writeTo(OutputStream outputStream) throws IOException { - outputStream.write(bytes); - } - - @Override - public int compareTo(UniqueId otherPacketId) { - return new BigInteger(bytes).compareTo(new BigInteger(otherPacketId.bytes)); - } - - @Override - public String toString() { - return Base64.encode(bytes); - } - - @Override - public boolean equals(Object anotherObject) { - if (!(anotherObject instanceof UniqueId)) - return false; - UniqueId otherPacketId = (UniqueId)anotherObject; - - return Arrays.equals(bytes, otherPacketId.bytes); - } - - @Override - public int hashCode() { - return Arrays.hashCode(bytes); - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/packet/dht/DhtStorablePacket.java b/apps/i2pbote/src/i2p/bote/packet/dht/DhtStorablePacket.java deleted file mode 100644 index f854cc7131..0000000000 --- a/apps/i2pbote/src/i2p/bote/packet/dht/DhtStorablePacket.java +++ /dev/null @@ -1,54 +0,0 @@ -package i2p.bote.packet.dht; - -import i2p.bote.packet.DataPacket; -import i2p.bote.packet.I2PBotePacket; - -import java.io.File; - -import net.i2p.data.Hash; -import net.i2p.util.Log; - -public abstract class DhtStorablePacket extends DataPacket { - private static Log log = new Log(DhtStorablePacket.class); - - public abstract Hash getDhtKey(); - - /** - * Creates a {@link DhtStorablePacket} object from its byte array representation. - * The type of packet depends on the packet type field in the byte array. - * If there is an error, <code>null</code> is returned. - * @param data - * @param log - * @return - */ - public static DhtStorablePacket createPacket(byte[] data) { - DataPacket packet = DataPacket.createPacket(data); - if (packet instanceof DhtStorablePacket) - return (DhtStorablePacket)packet; - else { - log.error("Packet is not a DhtStorablePacket: " + packet); - return null; - } - } - - public static Class<? extends DhtStorablePacket> decodePacketTypeCode(char packetTypeCode) { - Class<? extends I2PBotePacket> packetType = I2PBotePacket.decodePacketTypeCode(packetTypeCode); - if (packetType!=null && DhtStorablePacket.class.isAssignableFrom(packetType)) - return packetType.asSubclass(DhtStorablePacket.class); - else { - log.debug("Invalid type code for DhtStorablePacket: <" + packetTypeCode + ">"); - return null; - } - } - - public static DhtStorablePacket createPacket(File file) { - DataPacket dataPacket; - dataPacket = DataPacket.createPacket(file); - if (dataPacket instanceof DhtStorablePacket) - return (DhtStorablePacket)dataPacket; - else { - log.warn("Expected: DhtStorablePacket, got: " + dataPacket.getClass().getSimpleName()); - return null; - } - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/packet/dht/FindClosePeersPacket.java b/apps/i2pbote/src/i2p/bote/packet/dht/FindClosePeersPacket.java deleted file mode 100644 index 9cd8cd3925..0000000000 --- a/apps/i2pbote/src/i2p/bote/packet/dht/FindClosePeersPacket.java +++ /dev/null @@ -1,55 +0,0 @@ -package i2p.bote.packet.dht; - -import i2p.bote.packet.CommunicationPacket; -import i2p.bote.packet.TypeCode; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; - -import net.i2p.data.Hash; -import net.i2p.util.Log; - -@TypeCode('F') -public class FindClosePeersPacket extends CommunicationPacket { - private Log log = new Log(FindClosePeersPacket.class); - private Hash key; - - public FindClosePeersPacket(Hash key) { - this.key = key; - } - - public FindClosePeersPacket(byte[] data) { - super(data); - - byte[] hashData = new byte[Hash.HASH_LENGTH]; - System.arraycopy(data, CommunicationPacket.HEADER_LENGTH, hashData, 0, hashData.length); - key = new Hash(hashData); - - int remaining = data.length - (CommunicationPacket.HEADER_LENGTH+hashData.length); - if (remaining > 0) - log.debug("Find Close Nodes Request packet has " + remaining + " extra bytes."); - } - public Hash getKey() { - return key; - } - - @Override - public byte[] toByteArray() { - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - - try { - writeHeader(outputStream); - outputStream.write(key.toByteArray()); - } - catch (IOException e) { - log.error("Can't write to ByteArrayOutputStream.", e); - } - - return outputStream.toByteArray(); - } - - @Override - public String toString() { - return super.toString() + " key=" + key.toBase64().substring(0, 8) + "..."; - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/packet/dht/RetrieveRequest.java b/apps/i2pbote/src/i2p/bote/packet/dht/RetrieveRequest.java deleted file mode 100644 index b23d4223b6..0000000000 --- a/apps/i2pbote/src/i2p/bote/packet/dht/RetrieveRequest.java +++ /dev/null @@ -1,64 +0,0 @@ -package i2p.bote.packet.dht; - -import i2p.bote.I2PBote; -import i2p.bote.packet.CommunicationPacket; -import i2p.bote.packet.I2PBotePacket; -import i2p.bote.packet.TypeCode; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; - -import net.i2p.data.Hash; -import net.i2p.util.Log; - -@TypeCode('Q') -public class RetrieveRequest extends CommunicationPacket { - private Log log = new Log(I2PBote.class); - private Hash key; - private Class<? extends DhtStorablePacket> dataType; - - public RetrieveRequest(Hash key, Class<? extends DhtStorablePacket> dataType) { - this.key = key; - this.dataType = dataType; - } - - public RetrieveRequest(byte[] data) { - super(data); - ByteBuffer buffer = ByteBuffer.wrap(data, HEADER_LENGTH, data.length-HEADER_LENGTH); - - char dataTypeCode = (char)buffer.get(); - dataType = DhtStorablePacket.decodePacketTypeCode(dataTypeCode); - - byte[] keyBytes = new byte[Hash.HASH_LENGTH]; - buffer.get(keyBytes); - key = new Hash(keyBytes); - - if (buffer.hasRemaining()) - log.debug("Retrieve Request Packet has " + buffer.remaining() + " extra bytes."); - } - - public Hash getKey() { - return key; - } - - public Class<? extends I2PBotePacket> getDataType() { - return dataType; - } - - @Override - public byte[] toByteArray() { - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - - try { - writeHeader(outputStream); - outputStream.write(getPacketTypeCode(dataType)); - outputStream.write(key.toByteArray()); - } - catch (IOException e) { - log.error("Can't write to ByteArrayOutputStream.", e); - } - - return outputStream.toByteArray(); - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/packet/dht/StoreRequest.java b/apps/i2pbote/src/i2p/bote/packet/dht/StoreRequest.java deleted file mode 100644 index b387d38897..0000000000 --- a/apps/i2pbote/src/i2p/bote/packet/dht/StoreRequest.java +++ /dev/null @@ -1,74 +0,0 @@ -package i2p.bote.packet.dht; - -import i2p.bote.packet.CommunicationPacket; -import i2p.bote.packet.RelayPacket; -import i2p.bote.packet.TypeCode; - -import java.io.ByteArrayOutputStream; -import java.io.DataOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; -import java.security.NoSuchAlgorithmException; - -import net.i2p.data.Hash; -import net.i2p.util.Log; - -import com.nettgryppa.security.HashCash; - -@TypeCode('S') -public class StoreRequest extends CommunicationPacket { - private Log log = new Log(RelayPacket.class); - private HashCash hashCash; - private DhtStorablePacket packetToStore; - - public StoreRequest(HashCash hashCash, DhtStorablePacket packetToStore) { - this.hashCash = hashCash; - this.packetToStore = packetToStore; - } - - public StoreRequest(byte[] data) throws NoSuchAlgorithmException { - super(data); - ByteBuffer buffer = ByteBuffer.wrap(data, HEADER_LENGTH, data.length-HEADER_LENGTH); - - int hashCashLength = buffer.getShort(); - byte[] hashCashData = new byte[hashCashLength]; - buffer.get(hashCashData); - hashCash = new HashCash(new String(hashCashData)); - - int dataLength = buffer.getShort(); - byte[] storedData = new byte[dataLength]; - buffer.get(storedData); - packetToStore = DhtStorablePacket.createPacket(storedData); - - if (buffer.hasRemaining()) - log.debug("Storage Request Packet has " + buffer.remaining() + " extra bytes."); - } - - public Hash getKey() { - return packetToStore.getDhtKey(); - } - - public DhtStorablePacket getPacketToStore() { - return packetToStore; - } - - @Override - public byte[] toByteArray() { - ByteArrayOutputStream byteArrayStream = new ByteArrayOutputStream(); - DataOutputStream dataStream = new DataOutputStream(byteArrayStream); - - try { - writeHeader(dataStream); - String hashCashString = hashCash.toString(); - dataStream.writeShort(hashCashString.length()); - dataStream.write(hashCashString.getBytes()); - byte[] dataToStore = packetToStore.toByteArray(); - dataStream.writeShort(dataToStore.length); - dataStream.write(dataToStore); - } - catch (IOException e) { - log.error("Can't write to ByteArrayOutputStream.", e); - } - return byteArrayStream.toByteArray(); - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/service/I2PBoteException.java b/apps/i2pbote/src/i2p/bote/service/I2PBoteException.java deleted file mode 100644 index 0024dc4d5d..0000000000 --- a/apps/i2pbote/src/i2p/bote/service/I2PBoteException.java +++ /dev/null @@ -1,11 +0,0 @@ -package i2p.bote.service; - -import net.i2p.I2PException; - -public class I2PBoteException extends I2PException { - private static final long serialVersionUID = 5002910979704859701L; - - public I2PBoteException(String message) { - super(message); - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/service/I2PBoteThread.java b/apps/i2pbote/src/i2p/bote/service/I2PBoteThread.java deleted file mode 100644 index 12bb918a33..0000000000 --- a/apps/i2pbote/src/i2p/bote/service/I2PBoteThread.java +++ /dev/null @@ -1,20 +0,0 @@ -package i2p.bote.service; - -import net.i2p.util.I2PAppThread; - -public class I2PBoteThread extends I2PAppThread { - - protected I2PBoteThread(String name) { - super(name); - } - - private volatile boolean shutdown; - - public void requestShutdown() { - shutdown = true; - } - - protected boolean shutdownRequested() { - return shutdown; - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/service/OutboxProcessor.java b/apps/i2pbote/src/i2p/bote/service/OutboxProcessor.java deleted file mode 100644 index 839bfa44c9..0000000000 --- a/apps/i2pbote/src/i2p/bote/service/OutboxProcessor.java +++ /dev/null @@ -1,155 +0,0 @@ -package i2p.bote.service; - -import i2p.bote.Configuration; -import i2p.bote.EmailDestination; -import i2p.bote.folder.Outbox; -import i2p.bote.network.EmailAddressResolver; -import i2p.bote.network.PeerManager; -import i2p.bote.packet.Email; - -import java.io.IOException; -import java.security.NoSuchAlgorithmException; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; - -import javax.mail.Address; -import javax.mail.MessagingException; -import javax.mail.internet.InternetAddress; - -import net.i2p.client.I2PSession; -import net.i2p.util.I2PAppThread; -import net.i2p.util.Log; - -import com.nettgryppa.security.HashCash; - -/** - * A background thread that checks the outbox for emails and sends them to the I2P network. - * - * @author HungryHobo@mail.i2p - */ -public class OutboxProcessor extends I2PAppThread { - private static final int PAUSE = 10; // The wait time, in minutes, before processing the folder again. Can be interrupted from the outside. - - private Log log = new Log(OutboxProcessor.class); - private Outbox outbox; - private Configuration configuration; - private EmailAddressResolver emailAddressResolver; - private Map<Address, String> statusMap; - private CountDownLatch checkForEmailSignal; - - public OutboxProcessor(I2PSession i2pSession, Outbox outbox, Configuration configuration, PeerManager peerManager) { - super("OutboxProcessor"); - this.outbox = outbox; - this.configuration = configuration; - statusMap = new ConcurrentHashMap<Address, String>(); - emailAddressResolver = new EmailAddressResolver(); - } - - @Override - public void run() { - while (true) { - synchronized(this) { - checkForEmailSignal = new CountDownLatch(1); - } - - log.info("Processing outgoing emails in directory '" + outbox.getStorageDirectory() + "'."); - for (Email email: outbox) { - log.info("Processing outbox file: '" + email.getFile() + "'."); - try { - sendEmail(email); - } catch (Exception e) { - log.error("Error sending email.", e); - } - } - - try { - checkForEmailSignal.await(PAUSE, TimeUnit.MINUTES); - } catch (InterruptedException e) { - log.error("OutboxProcessor received an InterruptedException.", e); - } - } - } - - /** - * Tells the <code>OutboxProcessor</code> to check for new outgoing emails immediately. - */ - public void checkForEmail() { - checkForEmailSignal.countDown(); - } - - /** - * Send an {@link Email} to all recipients specified in the header. - * @param email - * @throws MessagingException - * @throws IOException - */ - private void sendEmail(Email email) throws MessagingException, IOException { - email.saveChanges(); // this updates the headers - email.scrubHeaders(); // TODO if the MimeMessage implementation doesn't remove BCC fields, move this line to EmailSendTask.sendIndividual(), after addHashCash - - for (Address recipient: email.getAllRecipients()) - // only handle email addresses, report an error for news addresses - if (recipient instanceof InternetAddress) { - String recipientAddress = ((InternetAddress)recipient).getAddress(); - sendToOne(recipientAddress, email); - } - else - log.error("Illegal recipient type: " + recipient.getType()); - } - - /** - * Send an {@link Email} to one recipient. - * @param address - * @param email - */ - private void sendToOne(String address, Email email) { - String logSuffix = null; // only used for logging - try { - addHashCash(email); - logSuffix = "Recipient = '" + address + "' Message ID = '" + email.getMessageID() + "'"; - EmailDestination emailDestination = emailAddressResolver.getDestination(address); - } - catch (Exception e) { - log.error("Error trying to send email. " + logSuffix); - outbox.updateStatus(email, new int[] { 1 }, "Email sent to recipient: " + address); - return; - } - -/* int[] numForwarded = new int[fragments.size()]; - for (int fragmentIndex=0; fragmentIndex<fragments.size(); fragmentIndex++) - for (int i=0; i<configuration.getRedundancy(); i++) { - Destination peer = peerManager.getRandomPeer(); - Authorizer.Response relaySendResult = sendToHost(fragments.get(fragmentIndex), peer); - if (Authorizer.Response.ACCEPTED.equals(relaySendResult)) - numForwarded[fragmentIndex]++; - int redundancy = configuration.getRedundancy(); - - boolean done = true; - for (int j=0; j<numForwarded.length; j++) - if (numForwarded[j] < redundancy) - done = false; - if (done) { - outbox.updateStatus(email, numForwarded, "Email sent to " + redundancy + " relays, plus kept on localhost."); - log.info("Email submitted to relays. " + logSuffix); - return; - } - } - log.info("Relaying not yet successful. " + logSuffix); - outbox.updateStatus(email, numForwarded, "Relaying failed or succeeded partially, will try again soon."); - }*/ - } - - private void addHashCash(Email email) throws NoSuchAlgorithmException, MessagingException { - email.setHeader("X-HashCash", HashCash.mintCash("", configuration.getHashCashStrength()).toString()); - } - - public Map<Address, String> getStatus() { - return statusMap; - } - - public void shutDown() { - // TODO - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/service/POP3Service.java b/apps/i2pbote/src/i2p/bote/service/POP3Service.java deleted file mode 100644 index 0073364c1d..0000000000 --- a/apps/i2pbote/src/i2p/bote/service/POP3Service.java +++ /dev/null @@ -1,13 +0,0 @@ -package i2p.bote.service; - -import net.i2p.util.I2PAppThread; - -public class POP3Service extends I2PAppThread { - - public POP3Service() { - super("Background thread for delivering email to email clients"); - } - - public void shutDown() { - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/service/RelayPacketSender.java b/apps/i2pbote/src/i2p/bote/service/RelayPacketSender.java deleted file mode 100644 index 1af71c2b31..0000000000 --- a/apps/i2pbote/src/i2p/bote/service/RelayPacketSender.java +++ /dev/null @@ -1,82 +0,0 @@ -package i2p.bote.service; - -import i2p.bote.Configuration; -import i2p.bote.folder.PacketFolder; -import i2p.bote.network.I2PSendQueue; -import i2p.bote.packet.RelayPacket; - -import java.text.ParseException; - -import javax.mail.MessagingException; - -import com.nettgryppa.security.HashCash; - -import net.i2p.I2PAppContext; -import net.i2p.crypto.ElGamalAESEngine; -import net.i2p.crypto.SessionKeyManager; -import net.i2p.util.Log; -import net.i2p.util.RandomSource; - -/** - * A background thread that sends packets in the relay outbox to the I2P network. - * - * @author HungryHobo@mail.i2p - */ -public class RelayPacketSender extends I2PBoteThread { - private static final int PAUSE = 10 * 60 * 1000; // the wait time, in milliseconds, before processing the folder again - private static final int PADDED_SIZE = 16 * 1024; - private static final Log log = new Log(RelayPacketSender.class); - - private I2PSendQueue sendQueue; - private ElGamalAESEngine encrypter = I2PAppContext.getGlobalContext().elGamalAESEngine(); - private SessionKeyManager sessionKeyManager = I2PAppContext.getGlobalContext().sessionKeyManager(); - private PacketFolder<RelayPacket> packetStore; - private Configuration configuration; - - public RelayPacketSender(I2PSendQueue sendQueue, PacketFolder<RelayPacket> packetStore) { - super("RelayPacketSender"); - this.sendQueue = sendQueue; - this.packetStore = packetStore; - } - - @Override - public void run() { - while (true) { - if (log.shouldLog(Log.DEBUG)) - log.debug("Deleting expired packets..."); - try { - deleteExpiredPackets(); - } catch (Exception e) { - log.error("Error deleting expired packets", e); - } - - log.info("Processing outgoing packets in directory '" + packetStore.getStorageDirectory().getAbsolutePath() + "'"); - for (RelayPacket packet: packetStore) { - log.info("Processing packet file: <" + packet.getFile() + ">"); - try { - HashCash hashCash = null; // TODO - long sendTime = getRandomSendTime(packet); - sendQueue.sendRelayRequest(packet, hashCash, sendTime); - } catch (Exception e) { - log.error("Error sending packet. ", e); - } - } - - try { - Thread.sleep(PAUSE); - } catch (InterruptedException e) { - log.error("RelayPacketSender received an InterruptedException."); - } - } - } - - private long getRandomSendTime(RelayPacket packet) { - long min = packet.getEarliestSendTime(); - long max = packet.getLatestSendTime(); - return min + RandomSource.getInstance().nextLong(max-min); - } - - public void deleteExpiredPackets() throws ParseException, MessagingException { - // TODO look at filename which = receive time, delete if too old - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/service/SMTPService.java b/apps/i2pbote/src/i2p/bote/service/SMTPService.java deleted file mode 100644 index 3bdb8f0e58..0000000000 --- a/apps/i2pbote/src/i2p/bote/service/SMTPService.java +++ /dev/null @@ -1,13 +0,0 @@ -package i2p.bote.service; - -import net.i2p.util.I2PAppThread; - -public class SMTPService extends I2PAppThread { - - public SMTPService() { - super("Background thread for receiving email from email clients"); - } - - public void shutDown() { - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/service/StreamHandler.java b/apps/i2pbote/src/i2p/bote/service/StreamHandler.java deleted file mode 100644 index 7a78bd9818..0000000000 --- a/apps/i2pbote/src/i2p/bote/service/StreamHandler.java +++ /dev/null @@ -1,8 +0,0 @@ -package i2p.bote.service; - -import java.util.EventListener; - -public interface StreamHandler extends EventListener { - - void streamReceived(StreamReceivedEvent event); -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/service/StreamReceivedEvent.java b/apps/i2pbote/src/i2p/bote/service/StreamReceivedEvent.java deleted file mode 100644 index 4cd93f6d94..0000000000 --- a/apps/i2pbote/src/i2p/bote/service/StreamReceivedEvent.java +++ /dev/null @@ -1,25 +0,0 @@ -package i2p.bote.service; - -import java.util.EventObject; - -import net.i2p.client.streaming.I2PSocket; -import net.i2p.data.Destination; - -public class StreamReceivedEvent extends EventObject { - private static final long serialVersionUID = 5231936151819853813L; - - private I2PSocket socket; - - public StreamReceivedEvent(I2PSocket socket) { - super(socket.getPeerDestination()); - this.socket = socket; - } - - public I2PSocket getSocket() { - return socket; - } - - public Destination getSource() { - return (Destination)super.getSource(); - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/web/CheckMailTag.java b/apps/i2pbote/src/i2p/bote/web/CheckMailTag.java deleted file mode 100644 index e58cf995fe..0000000000 --- a/apps/i2pbote/src/i2p/bote/web/CheckMailTag.java +++ /dev/null @@ -1,10 +0,0 @@ -package i2p.bote.web; - -import javax.servlet.jsp.tagext.SimpleTagSupport; - -public class CheckMailTag extends SimpleTagSupport { - - public void doTag() { - JSPHelper.checkForMail(); - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/web/JSPHelper.java b/apps/i2pbote/src/i2p/bote/web/JSPHelper.java deleted file mode 100644 index 7100a15c0f..0000000000 --- a/apps/i2pbote/src/i2p/bote/web/JSPHelper.java +++ /dev/null @@ -1,118 +0,0 @@ -package i2p.bote.web; - -import i2p.bote.EmailIdentity; -import i2p.bote.I2PBote; -import i2p.bote.Identities; -import i2p.bote.Util; -import i2p.bote.folder.EmailFolder; - -import java.io.IOException; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.ThreadFactory; -import java.util.concurrent.TimeUnit; - -import net.i2p.util.Log; - -/** - * Implements JSP functions. - * - * @author HungryHobo@mail.i2p - */ -public class JSPHelper { - private static final Log log = new Log(JSPHelper.class); - private static final int MAX_THREADS = 10; - private static final int THREAD_STACK_SIZE = 64 * 1024; // TODO find a safe low value (default in 64-bit Java 1.6 = 1MByte) - private static final ThreadFactory MAIL_CHECK_THREAD_FACTORY = Util.createThreadFactory("CheckMail", THREAD_STACK_SIZE); - private static ExecutorService EXECUTOR; - - private JSPHelper() { - throw new UnsupportedOperationException(); - } - - public static Identities getIdentities() { - return I2PBote.getInstance().getIdentities(); - } - - /** - * Updates an email identity if <code>key</code> exists, or adds a new identity. - * @param key A base64-encoded email identity key - * @param description - * @param publicName - * @param emailAddress - * @return null if sucessful, or an error message if an error occured - */ - public static String saveIdentity(String key, String publicName, String description, String emailAddress) { - Identities identities = JSPHelper.getIdentities(); - EmailIdentity identity = identities.get(key); - - if (identity != null) { - identity.setPublicName(publicName); - identity.setDescription(description); - identity.setEmailAddress(emailAddress); - } - else { - identity = new EmailIdentity(); - identity.setPublicName(publicName); - identity.setDescription(description); - identity.setEmailAddress(emailAddress); - identities.add(identity); - } - - try { - identities.save(); - return null; - } - catch (IOException e) { - return e.getLocalizedMessage(); - } - } - - /** - * Deletes an email identity. - * @param key A base64-encoded email identity key - * @return null if sucessful, or an error message if an error occured - */ - public static String deleteIdentity(String key) { - Identities identities = JSPHelper.getIdentities(); - identities.remove(key); - - try { - identities.save(); - return null; - } - catch (IOException e) { - return e.getLocalizedMessage(); - } - } - - public static void checkForMail() { - if (!isCheckingForMail()) { - EXECUTOR = Executors.newFixedThreadPool(MAX_THREADS, MAIL_CHECK_THREAD_FACTORY); - - I2PBote bote = I2PBote.getInstance(); - for (EmailIdentity identity: bote.getIdentities()) - EXECUTOR.submit(bote.createCheckMailTask(identity)); - - EXECUTOR.shutdown(); - try { - EXECUTOR.awaitTermination(1, TimeUnit.DAYS); - } - catch (InterruptedException e) { - log.error("Interrupted while checking for mail.", e); - EXECUTOR.shutdownNow(); - } - } - } - - public static boolean isCheckingForMail() { - return (EXECUTOR!=null && !EXECUTOR.isTerminated()); - } - - public static EmailFolder getMailFolder(String folderName) { - if ("Inbox".equals(folderName)) - return I2PBote.getInstance().getInbox(); - else - return null; - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/web/PrintNumDhtPeersTag.java b/apps/i2pbote/src/i2p/bote/web/PrintNumDhtPeersTag.java deleted file mode 100644 index aec3a723de..0000000000 --- a/apps/i2pbote/src/i2p/bote/web/PrintNumDhtPeersTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package i2p.bote.web; - -import i2p.bote.I2PBote; - -import java.io.IOException; - -import javax.servlet.jsp.JspWriter; -import javax.servlet.jsp.PageContext; -import javax.servlet.jsp.tagext.SimpleTagSupport; - -import net.i2p.util.Log; - -public class PrintNumDhtPeersTag extends SimpleTagSupport { - private Log log = new Log(PrintNumDhtPeersTag.class); - - public void doTag() { - PageContext pageContext = (PageContext) getJspContext(); - JspWriter out = pageContext.getOut(); - - try { - out.println(I2PBote.getInstance().getNumDhtPeers()); - } catch (IOException e) { - log.error("Can't write output to HTML page", e); - } - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/web/PrintNumRelayPeersTag.java b/apps/i2pbote/src/i2p/bote/web/PrintNumRelayPeersTag.java deleted file mode 100644 index edd48a419b..0000000000 --- a/apps/i2pbote/src/i2p/bote/web/PrintNumRelayPeersTag.java +++ /dev/null @@ -1,26 +0,0 @@ -package i2p.bote.web; - -import i2p.bote.I2PBote; - -import java.io.IOException; - -import javax.servlet.jsp.JspWriter; -import javax.servlet.jsp.PageContext; -import javax.servlet.jsp.tagext.SimpleTagSupport; - -import net.i2p.util.Log; - -public class PrintNumRelayPeersTag extends SimpleTagSupport { - private Log log = new Log(PrintNumRelayPeersTag.class); - - public void doTag() { - PageContext pageContext = (PageContext) getJspContext(); - JspWriter out = pageContext.getOut(); - - try { - out.println(I2PBote.getInstance().getNumRelayPeers()); - } catch (IOException e) { - log.error("Can't write output to HTML page", e); - } - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/web/ReturnStatus.java b/apps/i2pbote/src/i2p/bote/web/ReturnStatus.java deleted file mode 100644 index 23417308cd..0000000000 --- a/apps/i2pbote/src/i2p/bote/web/ReturnStatus.java +++ /dev/null @@ -1,33 +0,0 @@ -package i2p.bote.web; - -/** - * Represents the return status of a JSP function. - * - * @author HungryHobo@mail.i2p - */ -public class ReturnStatus { - - private boolean error; - private String message; - - public ReturnStatus(boolean error, String message) { - this.setError(error); - this.setMessage(message); - } - - public void setError(boolean error) { - this.error = error; - } - - public boolean isError() { - return error; - } - - public void setMessage(String message) { - this.message = message; - } - - public String getMessage() { - return message; - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/web/SendEmailTag.java b/apps/i2pbote/src/i2p/bote/web/SendEmailTag.java deleted file mode 100644 index c74d5487db..0000000000 --- a/apps/i2pbote/src/i2p/bote/web/SendEmailTag.java +++ /dev/null @@ -1,61 +0,0 @@ -package i2p.bote.web; - -import i2p.bote.I2PBote; -import i2p.bote.packet.Email; - -import java.io.IOException; - -import javax.mail.Message.RecipientType; -import javax.mail.internet.InternetAddress; -import javax.servlet.jsp.JspWriter; -import javax.servlet.jsp.PageContext; -import javax.servlet.jsp.tagext.SimpleTagSupport; - -import net.i2p.util.Log; - -public class SendEmailTag extends SimpleTagSupport { - // TODO make all Log instances final - private Log log = new Log(SendEmailTag.class); - private String recipientAddress; - private String message; - - public void doTag() { - PageContext pageContext = (PageContext) getJspContext(); - JspWriter out = pageContext.getOut(); - - Email email = new Email(); - String statusMessage; - try { - email.addRecipient(RecipientType.TO, new InternetAddress(recipientAddress)); - email.setContent(message, "text/html"); - I2PBote.getInstance().sendEmail(email); - statusMessage = "Email has been queued for sending."; - } - catch (Exception e) { - statusMessage = "Error sending email: " + e.getLocalizedMessage(); - log.error("Error sending email", e); - } - - try { - out.println(statusMessage); - } catch (IOException e) { - log.error("Can't write output to HTML page", e); - } - } - - public void setRecipient(String recipient) { - this.recipientAddress = recipient; - } - - public String getRecipient() { - return recipientAddress; - } - - public void setMessage(String message) { - this.message = message; - } - - public String getMessage() { - return message; - } -} \ No newline at end of file diff --git a/apps/i2pbote/src/i2p/bote/web/ServiceInitializer.java b/apps/i2pbote/src/i2p/bote/web/ServiceInitializer.java deleted file mode 100644 index 24052823e4..0000000000 --- a/apps/i2pbote/src/i2p/bote/web/ServiceInitializer.java +++ /dev/null @@ -1,24 +0,0 @@ -package i2p.bote.web; - -import i2p.bote.I2PBote; - -import javax.servlet.ServletContextEvent; -import javax.servlet.ServletContextListener; - -/** - * Starts the I2PBote backend when the web app is initialized - * @author HungryHobo@mail.i2p - * - */ -public class ServiceInitializer implements ServletContextListener { - @Override - public void contextDestroyed(ServletContextEvent event) { - I2PBote.shutDown(); - } - - @Override - public void contextInitialized(ServletContextEvent event) { - I2PBote.startUp(); - } - -} diff --git a/apps/i2pbote/test/i2p/bote/AllTests.java b/apps/i2pbote/test/i2p/bote/AllTests.java deleted file mode 100644 index 42146bba0c..0000000000 --- a/apps/i2pbote/test/i2p/bote/AllTests.java +++ /dev/null @@ -1,26 +0,0 @@ -package i2p.bote; - -import i2p.bote.packet.EmailPacketTest; -import i2p.bote.packet.I2PBotePacketTest; -import i2p.bote.packet.ResponsePacketTest; -import i2p.bote.packet.kademlia.FindCloseNodesPacketTest; -import i2p.bote.packet.kademlia.StorageRequestTest; - -import org.junit.runner.RunWith; -import org.junit.runners.Suite; - -import junit.framework.Test; -import junit.framework.TestSuite; - -@RunWith(Suite.class) -@Suite.SuiteClasses( { I2PBotePacketTest.class, StorageRequestTest.class, EmailPacketTest.class, FindCloseNodesPacketTest.class, ResponsePacketTest.class }) -public class AllTests { - - public static Test suite() { - TestSuite suite = new TestSuite("Test for i2p.bote"); - //$JUnit-BEGIN$ - - //$JUnit-END$ - return suite; - } -} \ No newline at end of file diff --git a/apps/i2pbote/test/i2p/bote/network/kademlia/KademliaDHTTest.java b/apps/i2pbote/test/i2p/bote/network/kademlia/KademliaDHTTest.java deleted file mode 100644 index 3cc8cee641..0000000000 --- a/apps/i2pbote/test/i2p/bote/network/kademlia/KademliaDHTTest.java +++ /dev/null @@ -1,86 +0,0 @@ -package i2p.bote.network.kademlia; - -import static org.junit.Assert.fail; -import i2p.bote.network.I2PPacketDispatcher; -import i2p.bote.network.I2PSendQueue; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.FileWriter; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; - -import net.i2p.client.I2PClient; -import net.i2p.client.I2PClientFactory; -import net.i2p.client.I2PSession; -import net.i2p.data.Destination; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -public class KademliaDHTTest { - private static final int NUM_NODES = 100; - - private Collection<KademliaDHT> nodes; - - @Before - public void setUp() throws Exception { - File tmpDir = new File(System.getProperty("java.io.tmpdir")); - File testDir = new File(tmpDir, "I2PBote-Test_" + System.currentTimeMillis()); - testDir.mkdir(); - - I2PClient i2pClient = I2PClientFactory.createClient(); - - Destination firstNode = null; - - nodes = Collections.synchronizedList(new ArrayList<KademliaDHT>()); - for (int i=0; i<NUM_NODES; i++) { - ByteArrayOutputStream arrayStream = new ByteArrayOutputStream(); - Destination destination = i2pClient.createDestination(arrayStream); - byte[] destinationArray = arrayStream.toByteArray(); - I2PSession i2pSession = i2pClient.createSession(new ByteArrayInputStream(destinationArray), null); - - I2PPacketDispatcher packetDispatcher = new I2PPacketDispatcher(); - i2pSession.addSessionListener(packetDispatcher, I2PSession.PROTO_ANY, I2PSession.PORT_ANY); - - I2PSendQueue sendQueue = new I2PSendQueue(i2pSession, packetDispatcher); - - File peerFile = new File(testDir, "peers" + i); - if (firstNode != null) { - FileWriter writer = new FileWriter(peerFile); - writer.write(firstNode.toBase64()); - } - else - firstNode = destination; - - nodes.add(new KademliaDHT(destination, sendQueue, packetDispatcher, peerFile)); - } - } - - @After - public void tearDown() throws Exception { - } - - @Test - public void testBootstrap() { - fail("Not yet implemented"); - } - - @Test - public void testFindOne() { - fail("Not yet implemented"); - } - - @Test - public void testFindAll() { - fail("Not yet implemented"); - } - - @Test - public void testStore() { - fail("Not yet implemented"); - } -} \ No newline at end of file diff --git a/apps/i2pbote/test/i2p/bote/packet/EmailPacketTest.java b/apps/i2pbote/test/i2p/bote/packet/EmailPacketTest.java deleted file mode 100644 index d5671f7087..0000000000 --- a/apps/i2pbote/test/i2p/bote/packet/EmailPacketTest.java +++ /dev/null @@ -1,54 +0,0 @@ -package i2p.bote.packet; - -import static junit.framework.Assert.assertTrue; -import i2p.bote.EmailIdentity; - -import java.util.Arrays; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -public class EmailPacketTest { - EmailPacket emailPacket; - EmailIdentity identity; - String message = "This is a test message. Test 1 2 3 Test"; - - @Before - public void setUp() throws Exception { - byte[] content = message.getBytes(); - UniqueId deletionKeyPlain = new UniqueId(new byte[] {72, -18, -72, -39, 122, 40, -104, -66, -54, -61, -108, 72, 54, 30, 37, 76, 44, 86, 104, -124, -31, 32, -82, -27, 26, 76, 7, 106, -76, 72, 49, -44}, 0); - UniqueId deletionKeyEncrypted = new UniqueId(new byte[] {-62, -112, 99, -65, 13, 44, -117, -111, 96, 45, -6, 64, 78, 57, 117, 103, -24, 101, 106, -116, -18, 62, 99, -49, 60, -81, 8, 64, 27, -41, -104, 58}, 0); - - byte[] messageIdBytes = new byte[] {2, -69, -24, -109, 1, 69, -122, -69, 113, -68, -90, 55, -28, 105, 97, 125, 70, 51, 58, 14, 2, -13, -53, 90, -29, 36, 67, 36, -94, -108, -125, 11, 123}; - UniqueId messageId = new UniqueId(messageIdBytes, 0); - - int fragmentIndex = 0; - int numFragments = 1; - - String base64Identity = "piYT1uJ3O8~bBPZmTvehMbp3-Zksg5enhvIlp2X8txqL25l0WdQMWwyt30UAOVQqxGdnMPTqqjh~-zoa~rCQORo~J1gRxLwCX9LlHQqaIimJilrbN-rhKy4Xlft054wbgQjLSC-WICE4W64KDfitwRzdr7lV6lz~0KFiZ8erZ-~WPMG1CgWEku9lILQUdUHyFBguPcK9oPDq7oGBuFGy8w0CvAq7ex3nmbL7zQVA~VqILtOGeGK2fidCuuofj4AQsTcXmH9O0nxZGCIJBhf~4EWmazvxu8XVB8pabNQvRDbmFu6q85JTwmxC45lCjqNw30hp8q2zoqP-zchjWOrxFUhSumpBdD0xXJR~qmhejh4WnuRnnam9j3fcxH5i~T7xWgmvIbpZEI4kyc9VEbXbLI7k-bU2A6sdP-AGt5~TjGLcxpdsPnOLRXO-Dsi7E9-3Kc84s4TmdpEJdtHn1dxYyeeT-ysVOqXjv5w5Cuk0XJpUIJG8n7aXHpNb-QLxPD3yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADWF3qnAX-p41Po~VNmOUzS-Yt~noD8-e~L3P5rZXBWf-XtB4hkloo6m1jwqphEdf1"; - identity = new EmailIdentity(base64Identity); - - emailPacket = new EmailPacket(content, deletionKeyPlain, deletionKeyEncrypted, messageId, fragmentIndex, numFragments, identity); - } - - @After - public void tearDown() throws Exception { - } - - @Test - public void toByteArrayAndBack() throws Exception { - byte[] arrayA = emailPacket.toByteArray(); - byte[] arrayB = new EmailPacket(arrayA).toByteArray(); - assertTrue("The two arrays differ!", Arrays.equals(arrayA, arrayB)); - } - - @Test - public void testEncryptionDecryption() throws Exception { - emailPacket.setContent(null); - emailPacket.decrypt(identity); - byte[] arrayA = emailPacket.getContent(); - byte[] arrayB = message.getBytes(); - assertTrue("Email message differs after decryption!", Arrays.equals(arrayA, arrayB)); - } -} \ No newline at end of file diff --git a/apps/i2pbote/test/i2p/bote/packet/I2PBotePacketTest.java b/apps/i2pbote/test/i2p/bote/packet/I2PBotePacketTest.java deleted file mode 100644 index ad49db6482..0000000000 --- a/apps/i2pbote/test/i2p/bote/packet/I2PBotePacketTest.java +++ /dev/null @@ -1,33 +0,0 @@ -package i2p.bote.packet; - -import static org.junit.Assert.assertTrue; - -import java.lang.reflect.Field; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -public class I2PBotePacketTest { - - @Before - public void setUp() throws Exception { - } - - @After - public void tearDown() throws Exception { - } - - @Test - public void testDecodePacketTypeCode() throws Exception { - Field allPacketTypesField = I2PBotePacket.class.getDeclaredField("ALL_PACKET_TYPES"); - allPacketTypesField.setAccessible(true); - Class<? extends I2PBotePacket>[] allPacketTypes = (Class<? extends I2PBotePacket>[])allPacketTypesField.get(null); - - for (Class<? extends I2PBotePacket> packetType: allPacketTypes) { - TypeCode typeCode = packetType.getAnnotation(TypeCode.class); - System.out.println("Testing decodePacketTypeCode on " + packetType); - assertTrue(I2PBotePacket.decodePacketTypeCode(typeCode.value()).equals(packetType)); - } - } -} \ No newline at end of file diff --git a/apps/i2pbote/test/i2p/bote/packet/ResponsePacketTest.java b/apps/i2pbote/test/i2p/bote/packet/ResponsePacketTest.java deleted file mode 100644 index 9d604ebd66..0000000000 --- a/apps/i2pbote/test/i2p/bote/packet/ResponsePacketTest.java +++ /dev/null @@ -1,48 +0,0 @@ -package i2p.bote.packet; - -import static junit.framework.Assert.assertTrue; -import i2p.bote.EmailIdentity; - -import java.security.NoSuchAlgorithmException; -import java.util.Arrays; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -public class ResponsePacketTest { - private ResponsePacket responsePacket; - - @Before - public void setUp() throws Exception { - byte[] packetIdBytes = new byte[] {120, 120, -8, -88, 21, 126, 46, -61, 18, -101, 15, 53, 20, -44, -112, 42, 86, -117, 30, -96, -66, 33, 71, -55, -102, -78, 78, -82, -105, 66, -116, 43}; - UniqueId packetId = new UniqueId(packetIdBytes, 0); - - responsePacket = new ResponsePacket(createDataPacket(), StatusCode.OK, packetId); - } - - private DataPacket createDataPacket() throws NoSuchAlgorithmException { - byte[] dataToStore = new byte[] {2, 109, -80, -37, -106, 83, -33, -39, -94, -76, -112, -98, 99, 25, -61, 44, -92, -85, 1, 10, -128, -2, -27, -86, -126, -33, -11, 42, 56, 3, -97, -101, 111, 7, -96, 25, 121, 74, 89, -40, -33, 82, -50, -18, 49, 106, 13, -121, 53, -83, -2, 35, -7, 71, -71, 26, 90, 1}; - - UniqueId deletionKeyPlain = new UniqueId(new byte[] {72, -18, -72, -39, 122, 40, -104, -66, -54, -61, -108, 72, 54, 30, 37, 76, 44, 86, 104, -124, -31, 32, -82, -27, 26, 76, 7, 106, -76, 72, 49, -44}, 0); - UniqueId deletionKeyEncrypted = new UniqueId(new byte[] {-62, -112, 99, -65, 13, 44, -117, -111, 96, 45, -6, 64, 78, 57, 117, 103, -24, 101, 106, -116, -18, 62, 99, -49, 60, -81, 8, 64, 27, -41, -104, 58}, 0); - byte[] messageIdBytes = new byte[] {2, -69, -24, -109, 1, 69, -122, -69, 113, -68, -90, 55, -28, 105, 97, 125, 70, 51, 58, 14, 2, -13, -53, 90, -29, 36, 67, 36, -94, -108, -125, 11, 123}; - UniqueId messageId = new UniqueId(messageIdBytes, 0); - - String base64Identity = "piYT1uJ3O8~bBPZmTvehMbp3-Zksg5enhvIlp2X8txqL25l0WdQMWwyt30UAOVQqxGdnMPTqqjh~-zoa~rCQORo~J1gRxLwCX9LlHQqaIimJilrbN-rhKy4Xlft054wbgQjLSC-WICE4W64KDfitwRzdr7lV6lz~0KFiZ8erZ-~WPMG1CgWEku9lILQUdUHyFBguPcK9oPDq7oGBuFGy8w0CvAq7ex3nmbL7zQVA~VqILtOGeGK2fidCuuofj4AQsTcXmH9O0nxZGCIJBhf~4EWmazvxu8XVB8pabNQvRDbmFu6q85JTwmxC45lCjqNw30hp8q2zoqP-zchjWOrxFUhSumpBdD0xXJR~qmhejh4WnuRnnam9j3fcxH5i~T7xWgmvIbpZEI4kyc9VEbXbLI7k-bU2A6sdP-AGt5~TjGLcxpdsPnOLRXO-Dsi7E9-3Kc84s4TmdpEJdtHn1dxYyeeT-ysVOqXjv5w5Cuk0XJpUIJG8n7aXHpNb-QLxPD3yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADWF3qnAX-p41Po~VNmOUzS-Yt~noD8-e~L3P5rZXBWf-XtB4hkloo6m1jwqphEdf1"; - EmailIdentity identity = new EmailIdentity(base64Identity); - - return new EmailPacket(dataToStore, deletionKeyPlain, deletionKeyEncrypted, messageId, 0, 1, identity); - } - - @After - public void tearDown() throws Exception { - } - - @Test - public void toByteArrayAndBack() throws Exception { - byte[] arrayA = responsePacket.toByteArray(); - byte[] arrayB = new ResponsePacket(arrayA).toByteArray(); - assertTrue(Arrays.equals(arrayA, arrayB)); - } -} \ No newline at end of file diff --git a/apps/i2pbote/test/i2p/bote/packet/kademlia/FindCloseNodesPacketTest.java b/apps/i2pbote/test/i2p/bote/packet/kademlia/FindCloseNodesPacketTest.java deleted file mode 100644 index 5773b01d91..0000000000 --- a/apps/i2pbote/test/i2p/bote/packet/kademlia/FindCloseNodesPacketTest.java +++ /dev/null @@ -1,36 +0,0 @@ -package i2p.bote.packet.kademlia; - - -import static junit.framework.Assert.assertTrue; - -import i2p.bote.packet.dht.FindClosePeersPacket; - -import java.util.Arrays; - -import net.i2p.data.Hash; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -public class FindCloseNodesPacketTest { - FindClosePeersPacket findCloseNodesPacket; - - @Before - public void setUp() throws Exception { - Hash key = new Hash(new byte[] {-48, 78, 66, 58, -79, 87, 38, -103, -60, -27, 108, 55, 117, 37, -99, 93, -23, -102, -83, 20, 44, -80, 65, 89, -68, -73, 69, 51, 115, 79, 24, 127}); - - findCloseNodesPacket = new FindClosePeersPacket(key); - } - - @After - public void tearDown() throws Exception { - } - - @Test - public void toByteArrayAndBack() throws Exception { - byte[] arrayA = findCloseNodesPacket.toByteArray(); - byte[] arrayB = new FindClosePeersPacket(arrayA).toByteArray(); - assertTrue("The two arrays differ!", Arrays.equals(arrayA, arrayB)); - } -} \ No newline at end of file diff --git a/apps/i2pbote/test/i2p/bote/packet/kademlia/StorageRequestTest.java b/apps/i2pbote/test/i2p/bote/packet/kademlia/StorageRequestTest.java deleted file mode 100644 index 172b1c5c30..0000000000 --- a/apps/i2pbote/test/i2p/bote/packet/kademlia/StorageRequestTest.java +++ /dev/null @@ -1,45 +0,0 @@ -package i2p.bote.packet.kademlia; - -import static junit.framework.Assert.assertTrue; -import i2p.bote.EmailIdentity; -import i2p.bote.packet.EmailPacket; -import i2p.bote.packet.UniqueId; -import i2p.bote.packet.dht.StoreRequest; - -import java.util.Arrays; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import com.nettgryppa.security.HashCash; - -public class StorageRequestTest { - StoreRequest storageRequest; - - @Before - public void setUp() throws Exception { - byte[] emailContent = new byte[] {2, 109, -80, -37, -106, 83, -33, -39, -94, -76, -112, -98, 99, 25, -61, 44, -92, -85, 1, 10, -128, -2, -27, -86, -126, -33, -11, 42, 56, 3, -97, -101, 111, 7, -96, 25, 121, 74, 89, -40, -33, 82, -50, -18, 49, 106, 13, -121, 53, -83, -2, 35, -7, 71, -71, 26, 90, 1}; - UniqueId deletionKeyPlain = new UniqueId(new byte[] {72, -18, -72, -39, 122, 40, -104, -66, -54, -61, -108, 72, 54, 30, 37, 76, 44, 86, 104, -124, -31, 32, -82, -27, 26, 76, 7, 106, -76, 72, 49, -44}, 0); - UniqueId deletionKeyEncrypted = new UniqueId(new byte[] {-62, -112, 99, -65, 13, 44, -117, -111, 96, 45, -6, 64, 78, 57, 117, 103, -24, 101, 106, -116, -18, 62, 99, -49, 60, -81, 8, 64, 27, -41, -104, 58}, 0); - UniqueId messageId = new UniqueId(new byte[] {2, -69, -24, -109, 1, 69, -122, -69, 113, -68, -90, 55, -28, 105, 97, 125, 70, 51, 58, 14, 2, -13, -53, 90, -29, 36, 67, 36, -94, -108, -125, 11, 123}, 0); - String base64Identity = "piYT1uJ3O8~bBPZmTvehMbp3-Zksg5enhvIlp2X8txqL25l0WdQMWwyt30UAOVQqxGdnMPTqqjh~-zoa~rCQORo~J1gRxLwCX9LlHQqaIimJilrbN-rhKy4Xlft054wbgQjLSC-WICE4W64KDfitwRzdr7lV6lz~0KFiZ8erZ-~WPMG1CgWEku9lILQUdUHyFBguPcK9oPDq7oGBuFGy8w0CvAq7ex3nmbL7zQVA~VqILtOGeGK2fidCuuofj4AQsTcXmH9O0nxZGCIJBhf~4EWmazvxu8XVB8pabNQvRDbmFu6q85JTwmxC45lCjqNw30hp8q2zoqP-zchjWOrxFUhSumpBdD0xXJR~qmhejh4WnuRnnam9j3fcxH5i~T7xWgmvIbpZEI4kyc9VEbXbLI7k-bU2A6sdP-AGt5~TjGLcxpdsPnOLRXO-Dsi7E9-3Kc84s4TmdpEJdtHn1dxYyeeT-ysVOqXjv5w5Cuk0XJpUIJG8n7aXHpNb-QLxPD3yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADWF3qnAX-p41Po~VNmOUzS-Yt~noD8-e~L3P5rZXBWf-XtB4hkloo6m1jwqphEdf1"; - EmailIdentity identity = new EmailIdentity(base64Identity); - EmailPacket emailPacket = new EmailPacket(emailContent, deletionKeyPlain, deletionKeyEncrypted, messageId, 0, 1, identity); - - HashCash hashCash = HashCash.mintCash("1234", 1); - - storageRequest = new StoreRequest(hashCash, emailPacket); - } - - @After - public void tearDown() throws Exception { - } - - @Test - public void toByteArrayAndBack() throws Exception { - byte[] arrayA = storageRequest.toByteArray(); - byte[] arrayB = new StoreRequest(arrayA).toByteArray(); - assertTrue(Arrays.equals(arrayA, arrayB)); - } -} \ No newline at end of file -- GitLab