Skip to content

Commit 3e216c6

Browse files
authored
Merge pull request #727 from Kas-tle/feature/packetlib
Merge Packetlib and Maintain History
2 parents 65f00c4 + 81131c4 commit 3e216c6

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+3815
-7
lines changed

Jenkinsfile

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,31 @@ pipeline {
2323
when {
2424
branch "master"
2525
}
26+
pipeline {
27+
agent any
28+
tools {
29+
maven 'Maven 3'
30+
jdk 'Java 8'
31+
}
32+
options {
33+
buildDiscarder(logRotator(artifactNumToKeepStr: '20'))
34+
}
35+
stages {
36+
stage ('Build') {
37+
steps {
38+
sh 'mvn clean package'
39+
}
40+
post {
41+
success {
42+
archiveArtifacts artifacts: 'target/*.jar', excludes: 'target/*-sources.jar', fingerprint: true
43+
}
44+
}
45+
}
46+
47+
stage ('Deploy') {
48+
when {
49+
branch "master"
50+
}
2651

2752
steps {
2853
rtMavenDeployer(
@@ -50,4 +75,4 @@ pipeline {
5075
}
5176
}
5277
}
53-
}
78+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package com.github.steveice10.packetlib.test;
2+
3+
import com.github.steveice10.packetlib.Session;
4+
import com.github.steveice10.packetlib.event.session.ConnectedEvent;
5+
import com.github.steveice10.packetlib.event.session.DisconnectedEvent;
6+
import com.github.steveice10.packetlib.event.session.DisconnectingEvent;
7+
import com.github.steveice10.packetlib.event.session.SessionAdapter;
8+
import com.github.steveice10.packetlib.packet.Packet;
9+
10+
public class ClientSessionListener extends SessionAdapter {
11+
@Override
12+
public void packetReceived(Session session, Packet packet) {
13+
if (packet instanceof PingPacket) {
14+
String id = ((PingPacket) packet).getPingId();
15+
16+
System.out.println("CLIENT Received: " + id);
17+
18+
if (id.equals("hello")) {
19+
session.send(new PingPacket("exit"));
20+
} else if (id.equals("exit")) {
21+
session.disconnect("Finished");
22+
}
23+
}
24+
}
25+
26+
@Override
27+
public void packetSent(Session session, Packet packet) {
28+
if (packet instanceof PingPacket) {
29+
System.out.println("CLIENT Sent: " + ((PingPacket) packet).getPingId());
30+
}
31+
}
32+
33+
@Override
34+
public void connected(ConnectedEvent event) {
35+
System.out.println("CLIENT Connected");
36+
37+
event.getSession().enableEncryption(((TestProtocol) event.getSession().getPacketProtocol()).getEncryption());
38+
event.getSession().send(new PingPacket("hello"));
39+
}
40+
41+
@Override
42+
public void disconnecting(DisconnectingEvent event) {
43+
System.out.println("CLIENT Disconnecting: " + event.getReason());
44+
}
45+
46+
@Override
47+
public void disconnected(DisconnectedEvent event) {
48+
System.out.println("CLIENT Disconnected: " + event.getReason());
49+
}
50+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.github.steveice10.packetlib.test;
2+
3+
import com.github.steveice10.packetlib.codec.PacketCodecHelper;
4+
import com.github.steveice10.packetlib.packet.Packet;
5+
6+
import java.io.IOException;
7+
8+
public class PingPacket implements Packet {
9+
private final String id;
10+
11+
public PingPacket(ByteBuf buf, PacketCodecHelper codecHelper) throws IOException {
12+
this.id = codecHelper.readString(buf);
13+
}
14+
15+
public PingPacket(String id) {
16+
this.id = id;
17+
}
18+
19+
public String getPingId() {
20+
return this.id;
21+
}
22+
23+
@Override
24+
public void write(ByteBuf buf, PacketCodecHelper codecHelper) throws IOException {
25+
codecHelper.writeString(buf, this.id);
26+
}
27+
28+
@Override
29+
public boolean isPriority() {
30+
return false;
31+
}
32+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.github.steveice10.packetlib.test;
2+
3+
import com.github.steveice10.packetlib.Server;
4+
import com.github.steveice10.packetlib.Session;
5+
import com.github.steveice10.packetlib.tcp.TcpClientSession;
6+
import com.github.steveice10.packetlib.tcp.TcpServer;
7+
8+
import javax.crypto.KeyGenerator;
9+
import javax.crypto.SecretKey;
10+
import java.security.NoSuchAlgorithmException;
11+
12+
public class PingServerTest {
13+
public static void main(String[] args) {
14+
SecretKey key;
15+
try {
16+
KeyGenerator gen = KeyGenerator.getInstance("AES");
17+
gen.init(128);
18+
key = gen.generateKey();
19+
} catch(NoSuchAlgorithmException e) {
20+
System.err.println("AES algorithm not supported, exiting...");
21+
return;
22+
}
23+
24+
Server server = new TcpServer("127.0.0.1", 25565, TestProtocol::new);
25+
server.addListener(new ServerListener(key));
26+
server.bind();
27+
28+
Session client = new TcpClientSession("127.0.0.1", 25565, new TestProtocol(key));
29+
client.connect();
30+
}
31+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.github.steveice10.packetlib.test;
2+
3+
import com.github.steveice10.packetlib.event.server.ServerAdapter;
4+
import com.github.steveice10.packetlib.event.server.ServerBoundEvent;
5+
import com.github.steveice10.packetlib.event.server.ServerClosedEvent;
6+
import com.github.steveice10.packetlib.event.server.ServerClosingEvent;
7+
import com.github.steveice10.packetlib.event.server.SessionAddedEvent;
8+
import com.github.steveice10.packetlib.event.server.SessionRemovedEvent;
9+
10+
import javax.crypto.SecretKey;
11+
12+
public class ServerListener extends ServerAdapter {
13+
private SecretKey key;
14+
15+
public ServerListener(SecretKey key) {
16+
this.key = key;
17+
}
18+
19+
@Override
20+
public void serverBound(ServerBoundEvent event) {
21+
System.out.println("SERVER Bound: " + event.getServer().getHost() + ":" + event.getServer().getPort());
22+
}
23+
24+
@Override
25+
public void serverClosing(ServerClosingEvent event) {
26+
System.out.println("CLOSING SERVER...");
27+
}
28+
29+
@Override
30+
public void serverClosed(ServerClosedEvent event) {
31+
System.out.println("SERVER CLOSED");
32+
}
33+
34+
@Override
35+
public void sessionAdded(SessionAddedEvent event) {
36+
System.out.println("SERVER Session Added: " + event.getSession().getHost() + ":" + event.getSession().getPort());
37+
((TestProtocol) event.getSession().getPacketProtocol()).setSecretKey(this.key);
38+
event.getSession().enableEncryption(((TestProtocol) event.getSession().getPacketProtocol()).getEncryption());
39+
}
40+
41+
@Override
42+
public void sessionRemoved(SessionRemovedEvent event) {
43+
System.out.println("SERVER Session Removed: " + event.getSession().getHost() + ":" + event.getSession().getPort());
44+
event.getServer().close(false);
45+
}
46+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.github.steveice10.packetlib.test;
2+
3+
import com.github.steveice10.packetlib.Session;
4+
import com.github.steveice10.packetlib.event.session.ConnectedEvent;
5+
import com.github.steveice10.packetlib.event.session.DisconnectedEvent;
6+
import com.github.steveice10.packetlib.event.session.DisconnectingEvent;
7+
import com.github.steveice10.packetlib.event.session.SessionAdapter;
8+
import com.github.steveice10.packetlib.packet.Packet;
9+
10+
public class ServerSessionListener extends SessionAdapter {
11+
@Override
12+
public void packetReceived(Session session, Packet packet) {
13+
if (packet instanceof PingPacket) {
14+
System.out.println("SERVER Received: " + ((PingPacket) packet).getPingId());
15+
session.send(packet);
16+
}
17+
}
18+
19+
@Override
20+
public void packetSent(Session session, Packet packet) {
21+
if (packet instanceof PingPacket) {
22+
System.out.println("SERVER Sent: " + ((PingPacket) packet).getPingId());
23+
}
24+
}
25+
26+
@Override
27+
public void connected(ConnectedEvent event) {
28+
System.out.println("SERVER Connected");
29+
}
30+
31+
@Override
32+
public void disconnecting(DisconnectingEvent event) {
33+
System.out.println("SERVER Disconnecting: " + event.getReason());
34+
}
35+
36+
@Override
37+
public void disconnected(DisconnectedEvent event) {
38+
System.out.println("SERVER Disconnected: " + event.getReason());
39+
}
40+
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package com.github.steveice10.packetlib.test;
2+
3+
import com.github.steveice10.packetlib.Server;
4+
import com.github.steveice10.packetlib.Session;
5+
import com.github.steveice10.packetlib.crypt.AESEncryption;
6+
import com.github.steveice10.packetlib.crypt.PacketEncryption;
7+
import com.github.steveice10.packetlib.packet.DefaultPacketHeader;
8+
import com.github.steveice10.packetlib.packet.PacketHeader;
9+
import com.github.steveice10.packetlib.packet.PacketProtocol;
10+
11+
import javax.crypto.SecretKey;
12+
import java.security.GeneralSecurityException;
13+
14+
public class TestProtocol extends PacketProtocol {
15+
private final PacketHeader header = new DefaultPacketHeader();
16+
private AESEncryption encrypt;
17+
18+
@SuppressWarnings("unused")
19+
public TestProtocol() {
20+
}
21+
22+
public TestProtocol(SecretKey key) {
23+
this.setSecretKey(key);
24+
}
25+
26+
public PacketCodecHelper createHelper() {
27+
return new BasePacketCodecHelper();
28+
}
29+
30+
public void setSecretKey(SecretKey key) {
31+
this.register(0, PingPacket.class, PingPacket::new);
32+
try {
33+
this.encrypt = new AESEncryption(key);
34+
} catch(GeneralSecurityException e) {
35+
e.printStackTrace();
36+
}
37+
}
38+
39+
@Override
40+
public String getSRVRecordPrefix() {
41+
return "_test";
42+
}
43+
44+
@Override
45+
public PacketHeader getPacketHeader() {
46+
return this.header;
47+
}
48+
49+
public PacketEncryption getEncryption() {
50+
return this.encrypt;
51+
}
52+
53+
@Override
54+
public void newClientSession(Session session) {
55+
session.addListener(new ClientSessionListener());
56+
}
57+
58+
@Override
59+
public void newServerSession(Server server, Session session) {
60+
session.addListener(new ServerSessionListener());
61+
}
62+
}

pom.xml

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -87,12 +87,6 @@
8787
<version>1.4</version>
8888
<scope>compile</scope>
8989
</dependency>
90-
<dependency>
91-
<groupId>com.github.steveice10</groupId>
92-
<artifactId>packetlib</artifactId>
93-
<version>3.0.1</version>
94-
<scope>compile</scope>
95-
</dependency>
9690
<dependency>
9791
<groupId>com.github.GeyserMC</groupId>
9892
<artifactId>mcauthlib</artifactId>
@@ -135,6 +129,37 @@
135129
<version>4.13.1</version>
136130
<scope>test</scope>
137131
</dependency>
132+
<dependency>
133+
<groupId>io.netty</groupId>
134+
<artifactId>netty-all</artifactId>
135+
<version>4.1.66.Final</version>
136+
<scope>compile</scope>
137+
</dependency>
138+
<dependency>
139+
<groupId>io.netty</groupId>
140+
<artifactId>netty-codec-haproxy</artifactId>
141+
<version>4.1.66.Final</version>
142+
<scope>compile</scope>
143+
<optional>true</optional>
144+
</dependency>
145+
<dependency>
146+
<groupId>io.netty.incubator</groupId>
147+
<artifactId>netty-incubator-transport-native-io_uring</artifactId>
148+
<version>0.0.8.Final</version>
149+
<classifier>linux-x86_64</classifier>
150+
</dependency>
151+
<dependency>
152+
<groupId>com.github.spotbugs</groupId>
153+
<artifactId>spotbugs-annotations</artifactId>
154+
<version>4.3.0</version>
155+
<scope>provided</scope>
156+
</dependency>
157+
<dependency>
158+
<groupId>com.nukkitx.fastutil</groupId>
159+
<artifactId>fastutil-int-object-maps</artifactId>
160+
<version>8.5.2</version>
161+
<scope>compile</scope>
162+
</dependency>
138163
</dependencies>
139164

140165
<build>

0 commit comments

Comments
 (0)