Subversion Repository Public Repository

litesoft

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package org.litesoft.ddt;

import org.litesoft.useragent.UserAgentFormFactorDeterminer;
import org.litesoft.useragent.UserAgentFormFactorDeterminerImpl;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class IndexHtmlGenerator {
    public static final String FRONT_TO_TITLE = "<!DOCTYPE html><html lang='en' height='100%'>\n<head>\n<meta charset='UTF-8'/>\n<title>";
    public static final String TITLE_TO_HEADER_SEP = "</title>\n<script type='text/javascript' src='CookieSupport.js'></script>\n</head>\n<body height='100%'>\n<h1>--- ";
    public static final String HEADER_TO_JS_SEP = " ---</h1>\n<div id='insertHere' height='100%'></div>\n<script type='text/javascript' src='";
    public static final String JS_TO_END = ".js'></script>\n</body>\n</html>";

    private static final UserAgentFormFactorDeterminer UAFFD = new UserAgentFormFactorDeterminerImpl();

    public void respond(String pPath, HttpServletRequest pRequest, HttpServletResponse pResponse) throws ServletException, IOException {
        pResponse.setHeader("Cache-Control", "no-cache no-store must-revalidate");
        pResponse.setHeader("Pragma", "no-cache"); // HTTP/1.0
        pResponse.setDateHeader("Expires", 86400000); // January 2, 1970

        String zDeviceToken = getCookie(pRequest, "DeviceToken");
        if (zDeviceToken != null) {
            reply(pResponse, "LimitedMode");
            return;
        }
        String zUserAuthToken = getCookie(pRequest, "UserAuthToken");
        if (zUserAuthToken != null) {
            reply(pResponse, "FullMode");
            int zShutDown = hasCookie(pRequest, "Restart", "ShutDown");
            if (zShutDown > -1) {
                Shutdown.Instance.get().request(zShutDown);
            }
            return;
        }
        String zUserAgent = pRequest.getHeader("user-agent");
        System.out.println("User Agent: " + zUserAgent);
        reply(pResponse, "Login" + UAFFD.determine(zUserAgent));
    }

    private void reply(HttpServletResponse pResponse, String pWhat) throws IOException {
        pResponse.setContentType("text/html");
        pResponse.getWriter().println(FRONT_TO_TITLE + pWhat + TITLE_TO_HEADER_SEP + pWhat + HEADER_TO_JS_SEP + pWhat + JS_TO_END);
    }

    private static int hasCookie(HttpServletRequest pRequest, String... pCookieNames) {
        if (pCookieNames != null) {
            for (int i = 0; i < pCookieNames.length; i++) {
                if (null != getCookie(pRequest, pCookieNames[i])) {
                    return i;
                }
            }
        }
        return -1;
    }

    private static String getCookie(HttpServletRequest pRequest, String pName) {
        Cookie[] zCookies = pRequest.getCookies();
        if (zCookies != null) {
            for (Cookie zCookie : zCookies) {
                if (zCookie.getName().equals(pName)) {
                    return zCookie.getValue();
                }
            }
        }
        return null;
    }
}

Commits for litesoft/trunk/DeviceDesktopTest/src/org/litesoft/ddt/IndexHtmlGenerator.java

Diff revisions: vs.
Revision Author Commited Message
922 Diff Diff GeorgeS picture GeorgeS Tue 18 Feb, 2014 16:18:01 +0000

Mini App ready for packaging...

920 GeorgeS picture GeorgeS Sun 16 Feb, 2014 19:06:51 +0000

DDT w/ Jetty