Add hash to script tag
This commit is contained in:
parent
837be0fd4e
commit
7bc2a8746c
3 changed files with 18 additions and 4 deletions
|
@ -11,7 +11,8 @@ import com.lbry.globe.util.GeoIP;
|
||||||
import io.netty.bootstrap.ServerBootstrap;
|
import io.netty.bootstrap.ServerBootstrap;
|
||||||
import io.netty.channel.ChannelInitializer;
|
import io.netty.channel.ChannelInitializer;
|
||||||
import io.netty.channel.EventLoopGroup;
|
import io.netty.channel.EventLoopGroup;
|
||||||
import io.netty.channel.nio.NioEventLoopGroup;
|
import io.netty.channel.MultiThreadIoEventLoopGroup;
|
||||||
|
import io.netty.channel.nio.NioIoHandler;
|
||||||
import io.netty.channel.socket.SocketChannel;
|
import io.netty.channel.socket.SocketChannel;
|
||||||
import io.netty.channel.socket.nio.NioServerSocketChannel;
|
import io.netty.channel.socket.nio.NioServerSocketChannel;
|
||||||
import io.netty.handler.codec.http.HttpRequestDecoder;
|
import io.netty.handler.codec.http.HttpRequestDecoder;
|
||||||
|
@ -34,7 +35,7 @@ public class Main implements Runnable{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run(){
|
public void run(){
|
||||||
EventLoopGroup group = new NioEventLoopGroup();
|
EventLoopGroup group = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());
|
||||||
this.runTCPServerHTTP(group);
|
this.runTCPServerHTTP(group);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@ import java.io.ByteArrayOutputStream;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
|
import java.security.MessageDigest;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
@ -27,6 +28,8 @@ public class HTTPHandler extends ChannelInboundHandlerAdapter{
|
||||||
public static final AttributeKey<List<HttpContent>> ATTR_CONTENT = AttributeKey.newInstance("content");
|
public static final AttributeKey<List<HttpContent>> ATTR_CONTENT = AttributeKey.newInstance("content");
|
||||||
private static final Logger LOGGER = Logger.getLogger("Handler");
|
private static final Logger LOGGER = Logger.getLogger("Handler");
|
||||||
|
|
||||||
|
private static byte[] jsHash;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void channelRead(ChannelHandlerContext ctx,Object msg){
|
public void channelRead(ChannelHandlerContext ctx,Object msg){
|
||||||
if(msg instanceof HttpRequest){
|
if(msg instanceof HttpRequest){
|
||||||
|
@ -62,7 +65,7 @@ public class HTTPHandler extends ChannelInboundHandlerAdapter{
|
||||||
status = 500;
|
status = 500;
|
||||||
indexData = "Some error occured.".getBytes();
|
indexData = "Some error occured.".getBytes();
|
||||||
}
|
}
|
||||||
indexData = new String(indexData).replace("<div class=\"version\"></div>","<div class=\"version\">"+Main.class.getPackage().getImplementationVersion()+"</div>").getBytes();
|
indexData = new String(indexData).replace("${GLOBE_JS_VERSION}",Base64.getEncoder().encodeToString(HTTPHandler.getJSHash()).replaceAll("=","")).replace("<div class=\"version\"></div>","<div class=\"version\">"+Main.class.getPackage().getImplementationVersion()+"</div>").getBytes();
|
||||||
ByteBuf responseContent = Unpooled.copiedBuffer(indexData);
|
ByteBuf responseContent = Unpooled.copiedBuffer(indexData);
|
||||||
FullHttpResponse response = new DefaultFullHttpResponse(request.protocolVersion(),HttpResponseStatus.valueOf(status),responseContent);
|
FullHttpResponse response = new DefaultFullHttpResponse(request.protocolVersion(),HttpResponseStatus.valueOf(status),responseContent);
|
||||||
response.headers().add("Content-Length",responseContent.capacity());
|
response.headers().add("Content-Length",responseContent.capacity());
|
||||||
|
@ -143,4 +146,14 @@ public class HTTPHandler extends ChannelInboundHandlerAdapter{
|
||||||
return HTTPHandler.class.getClassLoader().getResourceAsStream(name);
|
return HTTPHandler.class.getClassLoader().getResourceAsStream(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static byte[] getJSHash(){
|
||||||
|
if(HTTPHandler.jsHash==null){
|
||||||
|
try{
|
||||||
|
MessageDigest md = MessageDigest.getInstance("SHA-1");
|
||||||
|
HTTPHandler.jsHash = md.digest(HTTPHandler.readResource(HTTPHandler.getResource("globe.js")));
|
||||||
|
}catch(Exception ignored){}
|
||||||
|
}
|
||||||
|
return HTTPHandler.jsHash;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -10,7 +10,7 @@
|
||||||
<meta content="website" property="og:type" />
|
<meta content="website" property="og:type" />
|
||||||
<meta content="//globe.lbry.org" property="og:url" />
|
<meta content="//globe.lbry.org" property="og:url" />
|
||||||
<script src="//unpkg.com/globe.gl"></script>
|
<script src="//unpkg.com/globe.gl"></script>
|
||||||
<script src="/globe.js"></script>
|
<script src="/globe.js?v=${GLOBE_JS_VERSION}"></script>
|
||||||
<title>LBRY Globe</title>
|
<title>LBRY Globe</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
Loading…
Add table
Reference in a new issue