Skip to content

Commit 47d4513

Browse files
committed
fix NullPointerException when geyser dispatches ProxyPingEvent with a null virtual host
1 parent f4261e0 commit 47d4513

File tree

2 files changed

+15
-10
lines changed

2 files changed

+15
-10
lines changed

src/main/java/xyz/webmc/originblacklist/bungee/OriginBlacklistBungee.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,9 @@ public final void onJavaLogin(final PostLoginEvent event) {
9494
final PendingConnection conn = event.getPlayer().getPendingConnection();
9595
final InetSocketAddress vhost = conn.getVirtualHost();
9696
final ProxiedPlayer aPlayer = event.getPlayer();
97+
final String origin = vhost != null ? vhost.getHostString() + vhost.getPort() : OriginBlacklist.UNKNOWN_STR;
9798
final OPlayer bPlayer = new OPlayer(null, aPlayer.getName(), aPlayer.getUniqueId(),
98-
aPlayer.getAddress().toString(), aPlayer.getClientBrand(), vhost.getHostString() + vhost.getPort(),
99+
aPlayer.getAddress().toString(), aPlayer.getClientBrand(), origin,
99100
conn.getVersion());
100101
this.blacklist.handleLogin(new OriginBlacklistLoginEvent(null, event, EnumConnectionType.JAVA, bPlayer));
101102
}
@@ -104,17 +105,19 @@ public final void onJavaLogin(final PostLoginEvent event) {
104105
public final void onJavaHandshake(final PreLoginEvent event) {
105106
final PendingConnection conn = event.getConnection();
106107
final InetSocketAddress vhost = conn.getVirtualHost();
108+
final String origin = vhost != null ? vhost.getHostString() + vhost.getPort() : OriginBlacklist.UNKNOWN_STR;
107109
final OPlayer player = new OPlayer(null, null, null, conn.getAddress().toString(), OriginBlacklist.UNKNOWN_STR,
108-
vhost.getHostString() + vhost.getPort(), conn.getVersion());
110+
origin, conn.getVersion());
109111
this.blacklist.handleLogin(new OriginBlacklistLoginEvent(null, event, EnumConnectionType.JAVA, player));
110112
}
111113

112114
@EventHandler(priority = EventPriority.LOWEST)
113115
public final void onJavaMOTD(final ProxyPingEvent event) {
114116
final PendingConnection conn = event.getConnection();
115117
final InetSocketAddress vhost = conn.getVirtualHost();
118+
final String origin = vhost != null ? vhost.getHostString() + vhost.getPort() : OriginBlacklist.UNKNOWN_STR;
116119
final OPlayer player = new OPlayer(null, null, null, conn.getAddress().toString(), null,
117-
vhost.getHostString() + vhost.getPort(), -1);
120+
origin, -1);
118121
this.blacklist.handleMOTD(new OriginBlacklistMOTDEvent(null, event, EnumConnectionType.JAVA, player));
119122
}
120123

src/main/java/xyz/webmc/originblacklist/velocity/OriginBlacklistVelocity.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -108,30 +108,32 @@ public final void onEaglerMOTD(final EaglercraftMOTDEvent event) {
108108
@Subscribe(order = PostOrder.FIRST)
109109
public final void onJavaLogin(final PreLoginEvent event) {
110110
final InboundConnection conn = event.getConnection();
111-
final InetSocketAddress vhost = conn.getVirtualHost().orElseThrow();
111+
final InetSocketAddress vhost = conn.getVirtualHost().orElse(null);
112+
final String origin = vhost != null ? vhost.getHostString() + vhost.getPort() : OriginBlacklist.UNKNOWN_STR;
112113
final OPlayer player = new OPlayer(null, event.getUsername(), event.getUniqueId(),
113-
conn.getRemoteAddress().toString(), OriginBlacklist.UNKNOWN_STR, vhost.getHostString() + vhost.getPort(),
114+
conn.getRemoteAddress().toString(), OriginBlacklist.UNKNOWN_STR, origin,
114115
conn.getProtocolVersion().getProtocol());
115116
this.blacklist.handleLogin(new OriginBlacklistLoginEvent(null, event, EnumConnectionType.JAVA, player));
116117
}
117118

118119
@Subscribe(order = PostOrder.FIRST)
119120
public final void onJavaHandshake(final PlayerClientBrandEvent event) {
120-
final InetSocketAddress vhost = event.getPlayer().getVirtualHost().orElseThrow();
121+
final InetSocketAddress vhost = event.getPlayer().getVirtualHost().orElse(null);
122+
final String origin = vhost != null ? vhost.getHostString() + vhost.getPort() : OriginBlacklist.UNKNOWN_STR;
121123
final Player aPlayer = event.getPlayer();
122124
final OPlayer bPlayer = new OPlayer(null, aPlayer.getUsername(), aPlayer.getUniqueId(),
123-
aPlayer.getRemoteAddress().getAddress().toString(), event.getBrand(), vhost.getHostString() + vhost.getPort(),
125+
aPlayer.getRemoteAddress().getAddress().toString(), event.getBrand(), origin,
124126
event.getPlayer().getProtocolVersion().getProtocol());
125127
this.blacklist.handleLogin(new OriginBlacklistLoginEvent(null, event, EnumConnectionType.JAVA, bPlayer));
126128
}
127129

128130
@Subscribe(order = PostOrder.LAST)
129131
public final void onJavaMOTD(final ProxyPingEvent event) {
130132
final InboundConnection conn = event.getConnection();
131-
final InetSocketAddress vhost = conn.getVirtualHost().orElseThrow();
133+
final InetSocketAddress vhost = conn.getVirtualHost().orElse(null);
134+
final String origin = vhost != null ? vhost.getHostString() + vhost.getPort() : OriginBlacklist.UNKNOWN_STR;
132135
final OPlayer player = new OPlayer(null, null, null, conn.getRemoteAddress().getHostString(),
133-
vhost.getHostString() + vhost.getPort(),
134-
null, -1);
136+
null, origin, -1);
135137
this.blacklist.handleMOTD(new OriginBlacklistMOTDEvent(null, event, EnumConnectionType.JAVA, player));
136138
}
137139

0 commit comments

Comments
 (0)