2323
2424public class ConsoleProxyHttpHandlerHelper {
2525 private static final Logger s_logger = Logger .getLogger (ConsoleProxyHttpHandlerHelper .class );
26+ private static final String AND = "&" ;
27+ private static final String EQUALS = "=" ;
28+ private static final String HOST = "host" ;
29+ private static final String PORT = "port" ;
30+ private static final String SID = "sid" ;
31+ private static final String TAG = "tag" ;
32+ private static final String CONSOLE_URL = "consoleurl" ;
33+ private static final String SESSION_REF = "sessionref" ;
34+ private static final String TICKET = "ticket" ;
35+ private static final String LOCALE = "locale" ;
36+ private static final String HYPERV_HOST = "hypervHost" ;
37+ private static final String USERNAME = "username" ;
38+ private static final String PASSWORD = "password" ;
39+ private static final String TOKEN = "token" ;
2640
2741 public static Map <String , String > getQueryMap (String query ) {
28- String [] params = query .split ("&" );
42+ String [] params = query .split (AND );
2943 Map <String , String > map = new HashMap <String , String >();
3044 for (String param : params ) {
31- String [] paramTokens = param .split ("=" );
45+ String [] paramTokens = param .split (EQUALS );
3246 if (paramTokens != null && paramTokens .length == 2 ) {
33- String name = param . split ( "=" ) [0 ];
34- String value = param . split ( "=" ) [1 ];
47+ String name = paramTokens [0 ];
48+ String value = paramTokens [1 ];
3549 map .put (name , value );
3650 } else if (paramTokens .length == 3 ) {
3751 // very ugly, added for Xen tunneling url
3852 String name = paramTokens [0 ];
39- String value = paramTokens [1 ] + "=" + paramTokens [2 ];
53+ String value = paramTokens [1 ] + EQUALS + paramTokens [2 ];
4054 map .put (name , value );
4155 } else {
4256 if (s_logger .isDebugEnabled ())
@@ -46,53 +60,53 @@ public static Map<String, String> getQueryMap(String query) {
4660
4761 // This is a ugly solution for now. We will do encryption/decryption translation
4862 // here to make it transparent to rest of the code.
49- if (map .get ("token" ) != null ) {
63+ if (map .get (TOKEN ) != null ) {
5064 ConsoleProxyPasswordBasedEncryptor encryptor = new ConsoleProxyPasswordBasedEncryptor (ConsoleProxy .getEncryptorPassword ());
5165
52- ConsoleProxyClientParam param = encryptor .decryptObject (ConsoleProxyClientParam .class , map .get ("token" ));
66+ ConsoleProxyClientParam param = encryptor .decryptObject (ConsoleProxyClientParam .class , map .get (TOKEN ));
5367
5468 // make sure we get information from token only
5569 guardUserInput (map );
5670 if (param != null ) {
5771 if (param .getClientHostAddress () != null ) {
5872 s_logger .debug ("decode token. host: " + param .getClientHostAddress ());
59- map .put ("host" , param .getClientHostAddress ());
73+ map .put (HOST , param .getClientHostAddress ());
6074 } else {
61- s_logger . error ( "decode token. host info is not found!" );
75+ logMessageIfCannotFindClientParam ( HOST );
6276 }
6377 if (param .getClientHostPort () != 0 ) {
6478 s_logger .debug ("decode token. port: " + param .getClientHostPort ());
65- map .put ("port" , String .valueOf (param .getClientHostPort ()));
79+ map .put (PORT , String .valueOf (param .getClientHostPort ()));
6680 } else {
67- s_logger . error ( "decode token. port info is not found!" );
81+ logMessageIfCannotFindClientParam ( PORT );
6882 }
6983 if (param .getClientTag () != null ) {
7084 s_logger .debug ("decode token. tag: " + param .getClientTag ());
71- map .put ("tag" , param .getClientTag ());
85+ map .put (TAG , param .getClientTag ());
7286 } else {
73- s_logger . error ( "decode token. tag info is not found!" );
87+ logMessageIfCannotFindClientParam ( TAG );
7488 }
7589 if (param .getClientHostPassword () != null ) {
76- map .put ("sid" , param .getClientHostPassword ());
90+ map .put (SID , param .getClientHostPassword ());
7791 } else {
78- s_logger . error ( "decode token. sid info is not found!" );
92+ logMessageIfCannotFindClientParam ( SID );
7993 }
8094 if (param .getClientTunnelUrl () != null )
81- map .put ("consoleurl" , param .getClientTunnelUrl ());
95+ map .put (CONSOLE_URL , param .getClientTunnelUrl ());
8296 if (param .getClientTunnelSession () != null )
83- map .put ("sessionref" , param .getClientTunnelSession ());
97+ map .put (SESSION_REF , param .getClientTunnelSession ());
8498 if (param .getTicket () != null )
85- map .put ("ticket" , param .getTicket ());
99+ map .put (TICKET , param .getTicket ());
86100 if (param .getLocale () != null )
87- map .put ("locale" , param .getLocale ());
101+ map .put (LOCALE , param .getLocale ());
88102 if (param .getHypervHost () != null )
89- map .put ("hypervHost" , param .getHypervHost ());
103+ map .put (HYPERV_HOST , param .getHypervHost ());
90104 if (param .getUsername () != null )
91- map .put ("username" , param .getUsername ());
105+ map .put (USERNAME , param .getUsername ());
92106 if (param .getPassword () != null )
93- map .put ("password" , param .getPassword ());
107+ map .put (PASSWORD , param .getPassword ());
94108 } else {
95- s_logger .error ("Unable to decode token" );
109+ s_logger .error ("Unable to decode token due to null console proxy client param " );
96110 }
97111 } else {
98112 // we no longer accept information from parameter other than token
@@ -102,17 +116,21 @@ public static Map<String, String> getQueryMap(String query) {
102116 return map ;
103117 }
104118
119+ private static void logMessageIfCannotFindClientParam (String param ) {
120+ s_logger .error ("decode token. " + param + " info is not found!" );
121+ }
122+
105123 private static void guardUserInput (Map <String , String > map ) {
106- map .remove ("host" );
107- map .remove ("port" );
108- map .remove ("tag" );
109- map .remove ("sid" );
110- map .remove ("consoleurl" );
111- map .remove ("sessionref" );
112- map .remove ("ticket" );
113- map .remove ("locale" );
114- map .remove ("hypervHost" );
115- map .remove ("username" );
116- map .remove ("password" );
124+ map .remove (HOST );
125+ map .remove (PORT );
126+ map .remove (TAG );
127+ map .remove (SID );
128+ map .remove (CONSOLE_URL );
129+ map .remove (SESSION_REF );
130+ map .remove (TICKET );
131+ map .remove (LOCALE );
132+ map .remove (HYPERV_HOST );
133+ map .remove (USERNAME );
134+ map .remove (PASSWORD );
117135 }
118136}
0 commit comments