- Timestamp:
- 2019-05-03T21:46:42+12:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/GS2Construct.java
r32892 r33045 23 23 import java.io.FileWriter; 24 24 import java.io.Serializable; 25 import java.io.UnsupportedEncodingException; 26 import java.net.URLEncoder; 27 import java.nio.charset.StandardCharsets; 25 28 import java.util.Collections; 26 29 import java.util.Iterator; … … 746 749 747 750 Element param_list = (Element) GSXML.getChildByTagName(request, GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER); 751 752 //GSXML.elementToLogAsString("### Extracted param_list: ", param_list, true); 753 //GSXML.elementToLogAsUnicodeDebugString("### DEBUG Extracted param_list: ", param_list, true); 754 748 755 HashMap<String, Serializable> params = GSXML.extractParams(param_list, false); 749 756 … … 838 845 String paramvalue = (String) entry.getValue(); 839 846 840 querystring.append(paramname + "=" + paramvalue); 847 // And need to ensure that special characters won't get clobbered on Windows by perl/CGI.pm (https://www.nntp.perl.org/group/perl.perl5.porters/2016/10/msg240120.html), 848 // URL encode the query_string, as at https://stackoverflow.com/questions/10786042/java-url-encoding-of-query-string-parameters 849 850 // perl/CGI.pm doesn't like us URL encoding the entire query string such as the equal sign between each paramName and paramValue. 851 // So we URL encode each paramValue separately, which is done in GS2Construct.java::runCommand() 852 querystring.append(paramname + "=" + urlEncodeValue(paramname, paramvalue)); 841 853 if (i.hasNext()) { 842 854 querystring.append("&"); … … 882 894 //************************ 883 895 896 private String urlEncodeValue(String paramName, String paramVal) { 897 String oldParamVal = paramVal; 898 try{ 899 paramVal = URLEncoder.encode(paramVal, StandardCharsets.UTF_8.name()); 900 } catch(UnsupportedEncodingException uee) { 901 logger.warn("**** Unable to encode query_string param " + paramName + " in UTF-8, so attempting to continue with its unencoded value."); // don't output param value to log, in case of sensitive data? 902 paramVal = oldParamVal; 903 } 904 return paramVal; 905 } 906 884 907 /** parse the collect directory and return a list of collection names */ 885 908 protected String[] getCollectionList()
Note:
See TracChangeset
for help on using the changeset viewer.