Repository navigation
Expand file tree
/
Copy pathEnableModuleBlock.java
More file actions
132 lines (123 loc) · 4.67 KB
/
Copy pathEnableModuleBlock.java
File metadata and controls
132 lines (123 loc) · 4.67 KB
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
package servlets.admin.moduleManagement;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
import utils.ShepherdLogManager;
import utils.Validate;
import utils.ModuleBlock;
import dbProcs.Getter;
/**
* Class to manage interaction of an optional blocking module. This is used to prevent users from getting ahead of themselfs. By deafult this is not enabled
* <br/><br/>
* This file is part of the Security Shepherd Project.
*
* The Security Shepherd project is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.<br/>
*
* The Security Shepherd project is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.<br/>
*
* You should have received a copy of the GNU General Public License
* along with the Security Shepherd project. If not, see <http://www.gnu.org/licenses/>.
* @author Mark Denihan
*
*/
public class EnableModuleBlock extends HttpServlet
{
private static final long serialVersionUID = 1L;
private static org.apache.log4j.Logger log = Logger.getLogger(EnableModuleBlock.class);
/**
* Used to set a limit to the progress a player can make in a CTF environment
* @param moduleId The identifier of the module that is locked, preventing the user from continuing in the game
*/
public void doPost (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
//Setting IpAddress To Log and taking header for original IP if forwarded from proxy
ShepherdLogManager.setRequestIp(request.getRemoteAddr(), request.getHeader("X-Forwarded-For"));
log.debug("&&& servlets.module.StopHere &&&");
PrintWriter out = response.getWriter();
out.print(getServletInfo());
HttpSession ses = request.getSession(true);
Cookie tokenCookie = Validate.getToken(request.getCookies());
Object tokenParmeter = request.getParameter("csrfToken");
if(Validate.validateAdminSession(ses, tokenCookie, tokenParmeter))
{
ShepherdLogManager.setRequestIp(request.getRemoteAddr(), request.getHeader("X-Forwarded-For"), ses.getAttribute("userName").toString());
if(Validate.validateTokens(tokenCookie, tokenParmeter))
{
boolean notNull = false;
String storedResult = null;
try
{
String applicationRoot = getServletContext().getRealPath("");
log.debug("Getting Parameters");
String moduleId = (String)request.getParameter("moduleId");;
log.debug("moduleId = " + moduleId.toString());
String blockedMessage = Validate.validateParameter(request.getParameter("blockedMessage"), 500);
String message = new String();
if(blockedMessage.isEmpty())
message = "Ask your administrator when these modules will be made available";
else
{
log.debug("Custom Message Detected");
message = blockedMessage;
}
log.debug("Blocked Message = " + message);
//Validation
notNull = (moduleId != null);
if(notNull)
{
storedResult = Getter.getModuleResult(applicationRoot, moduleId);
}
if(notNull && storedResult != null)
{
//Data is good, Module exists! Store it as the Blocking module. Storing the message as well to show
ModuleBlock.blockerId = moduleId;
ModuleBlock.setMessage(message);
ModuleBlock.blockerEnabled = true;
log.debug("Blocker Enabled on module ");
out.write("<h3 class='title'>Block Enabled</h3><p>The block has been enabled successfully</p>");
}
else
{
//Validation Error Responses
if(!notNull)
{
log.error("Null values detected");
}
else if(storedResult == null)
{
log.error("Module not found");
}
out.write("<h3 class='title'>Error</h3><p>Invalid data recieved</p>");
}
}
catch (Exception e)
{
log.error("StopHere Error: " + e.toString());
}
}
else
{
log.debug("CSRF Tokens did not match");
}
}
else
{
log.error("Invalid Session Detected");
out.write("css/images/loggedOutSheep.jpg");
}
log.debug("&&& END StopHere &&&");
}
}