<%@ page language="java" import="java.security.*" %> <% //! Tradetracker Redirect-Page. // Set domain name on which the redirect-page runs, WITHOUT "www.". String domainName = ""; // Set the P3P compact policy. response.setHeader("P3P", "CP=\"ALL PUR DSP CUR ADMi DEVi CONi OUR COR IND\""); // Define parameters. String campaignID = ""; String materialID = ""; String affiliateID = ""; String redirectURL = ""; String reference = ""; Boolean canRedirect = true; // Set parameters. if (request.getParameter("campaignID") != null) { campaignID = request.getParameter("campaignID"); materialID = request.getParameter("materialID") == null ? "" : request.getParameter("materialID"); affiliateID = request.getParameter("affiliateID") == null ? "" : request.getParameter("affiliateID"); redirectURL = request.getParameter("redirectURL") == null ? "" : request.getParameter("redirectURL"); } else if (request.getParameter("tt") != null) { String[] trackingData = request.getParameter("tt").split("_"); campaignID = trackingData.length >= 1 ? trackingData[0] : ""; materialID = trackingData.length >= 2 ? trackingData[1] : ""; affiliateID = trackingData.length >= 3 ? trackingData[2] : ""; reference = trackingData.length >= 4 ? trackingData[3] : ""; redirectURL = request.getParameter("r") == null ? "" : request.getParameter("r"); } else canRedirect = false; if (canRedirect) { // Calculate MD5 checksum. MessageDigest md = MessageDigest.getInstance("MD5"); String MD5String = "CHK_" + campaignID + "::" + materialID + "::" + affiliateID + "::" + reference; byte[] ba_md5string = MD5String.getBytes(); byte[] ba_md5string_encoded = md.digest(ba_md5string); StringBuffer sb = new StringBuffer(); for (int i = 0; i < ba_md5string_encoded.length; ++i) sb.append(Integer.toHexString((ba_md5string_encoded[i] & 0xFF) | 0x100) . substring(1, 3)); String MD5Checksum = sb.toString(); // Calculate unix time stamp. long timeStamp = System.currentTimeMillis() / 1000; // Set session/cookie arguments. String cookieName = "TT2_" + campaignID; String cookieValue = materialID + "::" + affiliateID + "::" + reference + "::" + MD5Checksum + "::" + timeStamp; // Create tracking cookie. Cookie trackingCookie = new Cookie(cookieName, cookieValue); trackingCookie.setMaxAge(60 * 60 * 24 * 365); trackingCookie.setPath("/"); if (domainName != "") trackingCookie.setDomain("." + domainName); response.addCookie(trackingCookie); // Set session data. session.setAttribute(cookieName, cookieValue); // Set track-back URL. String trackBackURL = "http://tc.tradetracker.net/?c=" + campaignID + "&m=" + materialID + "&a=" + affiliateID + "&r=" + java.net.URLEncoder.encode(reference) + "&u=" + java.net.URLEncoder.encode(redirectURL); // Redirect to TradeTracker. response.setStatus(301); response.setHeader("Location", trackBackURL); } %>