1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.giraph.comm.netty.handler;
20
21 import org.apache.giraph.comm.netty.NettyServer;
22 import org.apache.giraph.comm.netty.SaslNettyServer;
23 import org.apache.log4j.Logger;
24
25 import io.netty.channel.ChannelInboundHandlerAdapter;
26 import io.netty.channel.ChannelHandlerContext;
27
28
29
30
31 public class AuthorizeServerHandler extends
32 ChannelInboundHandlerAdapter {
33
34 private static final Logger LOG =
35 Logger.getLogger(AuthorizeServerHandler.class);
36
37
38
39
40 public AuthorizeServerHandler() {
41 }
42
43 @Override
44 public void channelRead(ChannelHandlerContext ctx, Object msg)
45 throws Exception {
46 if (LOG.isDebugEnabled()) {
47 LOG.debug("messageReceived: Got " + msg.getClass());
48 }
49
50
51 SaslNettyServer saslNettyServer =
52 ctx.attr(NettyServer.CHANNEL_SASL_NETTY_SERVERS).get();
53 if (saslNettyServer == null) {
54 LOG.warn("messageReceived: This client is *NOT* authorized to perform " +
55 "this action since there's no saslNettyServer to " +
56 "authenticate the client: " +
57 "refusing to perform requested action: " + msg);
58 return;
59 }
60
61 if (!saslNettyServer.isComplete()) {
62 LOG.warn("messageReceived: This client is *NOT* authorized to perform " +
63 "this action because SASL authentication did not complete: " +
64 "refusing to perform requested action: " + msg);
65
66
67 return;
68 }
69 if (LOG.isDebugEnabled()) {
70 LOG.debug("messageReceived: authenticated client: " +
71 saslNettyServer.getUserName() + " is authorized to do request " +
72 "on server.");
73 }
74
75
76
77 ctx.fireChannelRead(msg);
78 }
79 }