/*
* Copyright 2015 the original author or authors.
* @https://github.com/scouter-project/scouter
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package scouter.xtra.http;
import scouter.agent.Logger;
import scouter.util.HashUtil;
import scouter.util.Hexa32;
import scouter.util.KeyGen;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class UseridUtil {
private static final String SCOUTE_R = "SCOUTER";
public static long getUserid(HttpServletRequest req, HttpServletResponse res) {
try {
String cookie = req.getHeader("Cookie");
if (cookie != null) {
int x1 = cookie.indexOf(SCOUTE_R);
if (x1 >= 0) {
String value = null;
int x2 = cookie.indexOf(';', x1);
if (x2 > 0) {
value = cookie.substring(x1 + SCOUTE_R.length() + 1, x2);
} else {
value = cookie.substring(x1 + SCOUTE_R.length() + 1);
}
try {
return Hexa32.toLong32(value);
} catch (Throwable th) {
}
}
}
Cookie c = new Cookie(SCOUTE_R, Hexa32.toString32(KeyGen.next()));
c.setMaxAge(Integer.MAX_VALUE);
res.addCookie(c);
} catch (Throwable t) {
Logger.println("A153", t.toString());
}
return 0;
}
public static long getUseridCustom(HttpServletRequest req, HttpServletResponse res, String key) {
if (key == null || key.length() == 0)
return 0;
try {
String cookie = req.getHeader("Cookie");
if (cookie != null) {
int x1 = cookie.indexOf(key);
if (x1 >= 0) {
String value = null;
int x2 = cookie.indexOf(';', x1);
if (x2 > 0) {
value = cookie.substring(x1 + key.length() + 1, x2);
} else {
value = cookie.substring(x1 + key.length() + 1);
}
if (value != null) {
return HashUtil.hash(value);
}
}
}
} catch (Throwable t) {
Logger.println("A154", t.toString());
}
return 0;
}
public static long getUseridFromHeader(HttpServletRequest req, HttpServletResponse res, String key) {
if (key == null || key.length() == 0)
return 0;
try {
String headerValue = req.getHeader(key);
if (headerValue != null) {
return HashUtil.hash(headerValue);
}
} catch (Throwable t) {
Logger.println("A155", t.toString());
}
return 0;
}
}