source: main/trunk/greenstone3/src/java/org/greenstone/gsdl3/util/GSParams.java@ 32361

Last change on this file since 32361 was 32361, checked in by kjdon, 6 years ago

added a new field to Param - sensitive. currently have default value, and save. if save is true, it will be saved into the tomcat session and passed through for each request. The request (with all its parameters) gets added into the page as pageRequest node. I have just noticed that password params etc are in here, so are in the page XML, and get into the javascript source - all params stored in gs.cgiParams. Don't want this so the new sensitive field is set to true for any params that we don't want to appear in the paramList in the response. sensitive is false by default.

  • Property svn:keywords set to Author Date Id Revision
File size: 8.3 KB
Line 
1/*
2 * GSParams.java
3 * Copyright (C) 2008 New Zealand Digital Library, http://www.nzdl.org
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 */
19package org.greenstone.gsdl3.util;
20
21import java.util.HashMap;
22
23/** keeps track of the servlet parameters, and their defaults */
24public class GSParams
25{
26
27 // cgi parameter names
28 public static final String ACTION = "a"; // the major type of action- eg query or browse or process
29 public static final String SUBACTION = "sa"; // subtype of action if we want different processing than the default
30 public static final String REQUEST_TYPE = "rt"; // whether the request is just to display the service form, or to actually do a request to the service
31 public static final String RESPONSE_ONLY = "ro"; // if == 1 do the request and pass back the response xml - no page formatting
32 public static final String OUTPUT = "o"; // if processing is to be done, what type of output - html/xml/other??
33 public static final String SERVICE = "s"; // the name of the service
34
35 public static final String UN = "un"; // username for authenticated-ping
36 public static final String PW = "pw"; // pwd for authenticated-ping
37
38 public static final String CLUSTER = "c"; // these two are the same
39 public static final String COLLECTION = "c";
40 public static final String COLLECTION_TYPE = "ct"; // collection type - mg, mgpp, lucene etc
41
42 public static final String LANGUAGE = "l";
43 public static final String DOCUMENT = "d";
44 public static final String DOCUMENT_TYPE = "dt";
45 public static final String START_PAGE = "startPage";
46 public static final String S_START_PAGE = "s1.startPage";
47 public static final String HREF = "href"; // url. might be an external url, or a relative one that needs translating
48 public static final String RELATIVE_LINK = "rl"; // whether the href url is relative to the collection or not.
49 public static final String EXTERNAL_LINK_TYPE = "el"; // for an external link, go direct to the page or frame it in the collection
50 public static final String PROCESS_ID = "pid"; // if a request wasn't completed, this identifies the request - used when asking for a status update
51
52 public static final String HTTP_HEADER_FIELDS = "hhf";
53 public static final String QUICK_SEARCH = "qs";
54
55 // internal configure args
56 public static final String SYSTEM_SUBSET = "ss";
57 public static final String SYSTEM_CLUSTER = "sc";
58 public static final String SYSTEM_MODULE_NAME = "sn";
59 public static final String SYSTEM_MODULE_TYPE = "st";
60
61 // used for filtering out a piece of the final page
62 public static final String EXCERPT_ID = "excerptid";
63 public static final String EXCERPT_TAG = "excerpttag";
64
65 public static final String INLINE_TEMPLATE = "ilt";
66 public static final String DISPLAY_METADATA = "dmd";
67 public static final String FILE_LOCATION = "fl";
68 public static final String DOC_EDIT = "docEdit";
69 public static final String AJAX_LOAD_BYPASS = "alb";
70
71 // document display args
72 public static final String EXPAND_DOCUMENT = "ed";
73 public static final String EXPAND_CONTENTS = "ec";
74 public static final String NO_TEXT = "noText";
75
76 //Administration
77 public static final String PASSWORD = "password";
78 public static final String S_PASSWORD = "s1.password";
79 public static final String S_NEW_PASSWORD = "s1.newPassword";
80 public static final String S_OLD_PASSWORD = "s1.oldPassword";
81 public static final String S_NEW_EMAIL="s1.newEmail";
82 public static final String S_NEW_USERNAME = "s1.newUsername";
83 public static final String S_PREV_USERNAME = "s1.prevUsername";
84
85 // Authentication
86 public static final String S_RECAPTCHA_RESPONSE = "s1.g-recaptcha-response";
87 public static final String S_USERNAME = "s1.username";
88 public static final String S_EMAIL = "s1.email";
89 //Facets
90 public static final String S_FACETS = "s1.facets";
91 public static final String S_FACETS_QUERIES = "s1.facetQueries";
92
93 // some standard arg values
94 public static final String SYSTEM_ACTION = "s";
95
96 // rss feeds
97 public static final String RSS_ACTION = "rss";
98
99 public static final String EXTERNAL_LINK_TYPE_DIRECT = "direct";
100 public static final String EXTERNAL_LINK_TYPE_FRAMED = "frame";
101
102 public static final String DEBUG = "debug";
103
104 protected HashMap<String, Param> param_map = null;
105
106 public GSParams()
107 {
108 this.param_map = new HashMap<String, Param>(30);
109
110 // add in all the standard params
111 addParameter(ACTION, false);
112 addParameter(SUBACTION, false);
113 addParameter(REQUEST_TYPE, false);
114 addParameter(RESPONSE_ONLY, false);
115 addParameter(CLUSTER, false); // we don't want to save cluster/collection
116 addParameter(LANGUAGE, true);
117 addParameter(DOCUMENT, true);
118 addParameter(DOCUMENT_TYPE, false);
119 addParameter(QUICK_SEARCH, false);
120 addParameter(START_PAGE, false);
121 addParameter(S_START_PAGE, false);
122 // should the following two just be in doc action??
123 addParameter(HREF, false);
124 addParameter(RELATIVE_LINK, false);
125 addParameter(OUTPUT, false);
126 addParameter(SERVICE, false);
127 addParameter(PROCESS_ID, true);
128 addParameter(SYSTEM_SUBSET, false);
129 addParameter(SYSTEM_CLUSTER, false);
130 addParameter(SYSTEM_MODULE_NAME, false);
131 addParameter(SYSTEM_MODULE_TYPE, false);
132 addParameter(INLINE_TEMPLATE, false);
133 addParameter(DISPLAY_METADATA, false);
134 addParameter(AJAX_LOAD_BYPASS, false);
135 addParameter(EXPAND_DOCUMENT, false);
136 addParameter(EXPAND_CONTENTS, false);
137 addParameter(NO_TEXT, false);
138 addParameter(DOC_EDIT, false);
139 addParameter(PASSWORD, false, true);
140 addParameter(S_PASSWORD, false, true);
141 addParameter(S_NEW_PASSWORD, false, true);
142 addParameter(S_OLD_PASSWORD, false, true);
143 addParameter(S_RECAPTCHA_RESPONSE, false, true);
144 addParameter(S_USERNAME, false);
145 addParameter(S_EMAIL, false);
146 addParameter(S_NEW_USERNAME, false);
147 addParameter(S_PREV_USERNAME, false);
148 addParameter(S_NEW_EMAIL, false);
149 addParameter(S_FACETS, false);
150 addParameter(S_FACETS_QUERIES, false);
151
152 addParameter(COLLECTION_TYPE, true);
153 addParameter(EXTERNAL_LINK_TYPE, false);
154 // filtering args must be specified each time
155 addParameter(EXCERPT_ID, false);
156 addParameter(EXCERPT_TAG, false);
157
158 addParameter(DEBUG, true);
159 }
160
161 public boolean addParameter(String name, boolean save)
162 {
163 return addParameter(name, "", save);
164 }
165
166 public boolean addParameter(String name, boolean save, boolean sensitive) {
167 if (this.param_map.containsKey(name))
168 {
169 // already there so could not add
170 return false;
171 }
172 this.param_map.put(name, new Param("", save, sensitive));
173 return true;
174 }
175 public boolean addParameter(String name, String default_value, boolean save)
176 {
177 if (this.param_map.containsKey(name))
178 {
179 // already there so could not add
180 return false;
181 }
182
183 this.param_map.put(name, new Param(default_value, save));
184 return true;
185 }
186
187 public boolean setParamDefault(String name, String default_value)
188 {
189 Param p = this.param_map.get(name);
190 if (p == null)
191 return false;
192 p.default_value = default_value;
193 return true;
194 }
195
196 public boolean shouldSave(String name)
197 {
198 // p. is used to store previous settings
199 if (name.startsWith("p.") || name.startsWith("md___"))
200 return false;
201 Param p = this.param_map.get(name);
202 if (p == null)
203 return true; // if things are not in here, always save.
204 return p.save;
205 }
206
207 public boolean isSensitive(String name) {
208 Param p = this.param_map.get(name);
209 if (p==null) {
210 return false;
211 }
212 return p.sensitive;
213 }
214
215 private class Param
216 {
217
218 public String default_value = null;
219 public boolean save = true;
220 public boolean sensitive = false;
221
222 public Param(String default_value, boolean save)
223 {
224 this.default_value = default_value;
225 this.save = save;
226 }
227
228 public Param(String default_value, boolean save, boolean sensitive) {
229 this.default_value = default_value;
230 this.save = save;
231 this.sensitive = sensitive;
232 }
233
234 }
235}
Note: See TracBrowser for help on using the repository browser.