package io.netty.protocol.wamp.server;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelHandlerContext;
import io.netty.protocol.wamp.messages.EventMessage;
import java.util.HashMap;
import java.util.Random;
public class Session {
private static final int ID_LENGTH = 16;
public final String id;
private final ChannelHandlerContext ctx;
public final HashMap<String, String> prefixes = new HashMap<>();
public String authKey;
public String challenge;
public String signature; // HmacSHA256(challenge, secret)
public Session(ChannelHandlerContext ctx) {
this.id = randomString(ID_LENGTH);
this.ctx = ctx;
}
public ChannelFuture write(EventMessage msg) {
return ctx.writeAndFlush(msg);
}
public boolean isAuthRequested() {
return authKey != null;
}
public boolean isAuthenticated() {
return signature != null;
}
private final static String alphaNum = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
private final static Random rnd = new Random();
private static String randomString(int len) {
StringBuilder sb = new StringBuilder(len);
for (int i = 0; i < len; i++)
sb.append(alphaNum.charAt(rnd.nextInt(alphaNum.length())));
return sb.toString();
}
}