|
|
|
@ -41,9 +41,8 @@ import net.yacy.cora.protocol.RequestHeader;
|
|
|
|
|
import net.yacy.kelondro.order.Base64Order;
|
|
|
|
|
import net.yacy.kelondro.order.Digest;
|
|
|
|
|
import net.yacy.kelondro.util.Formatter;
|
|
|
|
|
|
|
|
|
|
import de.anomic.http.server.HTTPDemon;
|
|
|
|
|
import de.anomic.http.server.HTTPDProxyHandler;
|
|
|
|
|
import de.anomic.http.server.HTTPDemon;
|
|
|
|
|
import de.anomic.search.Switchboard;
|
|
|
|
|
import de.anomic.search.SwitchboardConstants;
|
|
|
|
|
import de.anomic.server.serverCore;
|
|
|
|
@ -55,24 +54,24 @@ import de.anomic.yacy.yacySeed;
|
|
|
|
|
import de.anomic.yacy.yacySeedUploader;
|
|
|
|
|
|
|
|
|
|
public class SettingsAck_p {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static boolean nothingChanged = false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static serverObjects respond(final RequestHeader header, final serverObjects post, final serverSwitch env) {
|
|
|
|
|
// return variable that accumulates replacements
|
|
|
|
|
final serverObjects prop = new serverObjects();
|
|
|
|
|
final Switchboard sb = (Switchboard) env;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// get referer for backlink
|
|
|
|
|
final MultiProtocolURI referer = header.referer();
|
|
|
|
|
prop.put("referer", (referer == null) ? "Settings_p.html" : referer.toNormalform(true, true));
|
|
|
|
|
prop.put("referer", (referer == null) ? "Settings_p.html" : referer.toNormalform(true, true));
|
|
|
|
|
//if (post == null) System.out.println("POST: NULL"); else System.out.println("POST: " + post.toString());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (post == null) {
|
|
|
|
|
prop.put("info", "1");//no information submitted
|
|
|
|
|
return prop;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// admin password
|
|
|
|
|
if (post.containsKey("adminaccount")) {
|
|
|
|
|
// read and process data
|
|
|
|
@ -99,11 +98,11 @@ public class SettingsAck_p {
|
|
|
|
|
prop.putHTML("info_user", user);
|
|
|
|
|
return prop;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// proxy password
|
|
|
|
|
if (post.containsKey("proxyaccount")) {
|
|
|
|
|
/*
|
|
|
|
|
/*
|
|
|
|
|
* set new port
|
|
|
|
|
*/
|
|
|
|
|
final String port = post.get("port");
|
|
|
|
@ -117,10 +116,10 @@ public class SettingsAck_p {
|
|
|
|
|
prop.put("info_restart", "1");
|
|
|
|
|
prop.put("info_restart_ip",(hostName.equals("0.0.0.0"))? "localhost" : hostName);
|
|
|
|
|
prop.put("info_restart_port", theNewAddress.getPort());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
env.setConfig("port", port);
|
|
|
|
|
|
|
|
|
|
theServerCore.reconnect(5000);
|
|
|
|
|
|
|
|
|
|
theServerCore.reconnect(5000);
|
|
|
|
|
} catch (final SocketException e) {
|
|
|
|
|
prop.put("info", "26");
|
|
|
|
|
return prop;
|
|
|
|
@ -128,12 +127,12 @@ public class SettingsAck_p {
|
|
|
|
|
} else {
|
|
|
|
|
prop.put("info_restart", "0");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// read and process data
|
|
|
|
|
String filter = (post.get("proxyfilter")).trim();
|
|
|
|
|
final boolean useProxyAccounts = post.containsKey("use_proxyaccounts") && post.get("use_proxyaccounts").equals("on");
|
|
|
|
|
// do checks
|
|
|
|
|
if ((filter == null) || (!post.containsKey("use_proxyaccounts"))) {
|
|
|
|
|
if (filter == null) {
|
|
|
|
|
prop.put("info", "1");//error with submitted information
|
|
|
|
|
return prop;
|
|
|
|
|
}
|
|
|
|
@ -145,14 +144,14 @@ public class SettingsAck_p {
|
|
|
|
|
prop.put("info", 3);//pw check failed
|
|
|
|
|
return prop;
|
|
|
|
|
}*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (filter.length() == 0) filter = "*";
|
|
|
|
|
else if (!filter.equals("*")){
|
|
|
|
|
// testing proxy filter
|
|
|
|
|
// testing proxy filter
|
|
|
|
|
int patternCount = 0;
|
|
|
|
|
String patternStr = null;
|
|
|
|
|
try {
|
|
|
|
|
final StringTokenizer st = new StringTokenizer(filter,",");
|
|
|
|
|
final StringTokenizer st = new StringTokenizer(filter,",");
|
|
|
|
|
while (st.hasMoreTokens()) {
|
|
|
|
|
patternCount++;
|
|
|
|
|
patternStr = st.nextToken();
|
|
|
|
@ -167,7 +166,7 @@ public class SettingsAck_p {
|
|
|
|
|
return prop;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// check passed. set account:
|
|
|
|
|
env.setConfig("proxyClient", filter);
|
|
|
|
|
env.setConfig("use_proxyAccounts", useProxyAccounts);
|
|
|
|
@ -181,32 +180,32 @@ public class SettingsAck_p {
|
|
|
|
|
}
|
|
|
|
|
return prop;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// http networking
|
|
|
|
|
if (post.containsKey("httpNetworking")) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// set transparent proxy flag
|
|
|
|
|
HTTPDProxyHandler.isTransparentProxy = post.containsKey("isTransparentProxy");
|
|
|
|
|
env.setConfig("isTransparentProxy", HTTPDProxyHandler.isTransparentProxy);
|
|
|
|
|
prop.put("info_isTransparentProxy", HTTPDProxyHandler.isTransparentProxy ? "on" : "off");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// setting the keep alive property
|
|
|
|
|
HTTPDemon.keepAliveSupport = post.containsKey("connectionKeepAliveSupport");
|
|
|
|
|
env.setConfig("connectionKeepAliveSupport", HTTPDemon.keepAliveSupport);
|
|
|
|
|
prop.put("info_connectionKeepAliveSupport", HTTPDemon.keepAliveSupport ? "on" : "off");
|
|
|
|
|
|
|
|
|
|
prop.put("info_connectionKeepAliveSupport", HTTPDemon.keepAliveSupport ? "on" : "off");
|
|
|
|
|
|
|
|
|
|
// setting via header property
|
|
|
|
|
env.setConfig("proxy.sendViaHeader", post.containsKey("proxy.sendViaHeader"));
|
|
|
|
|
prop.put("info_proxy.sendViaHeader", post.containsKey("proxy.sendViaHeader")? "on" : "off");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// setting X-Forwarded-for header property
|
|
|
|
|
env.setConfig("proxy.sendXForwardedForHeader", post.containsKey("proxy.sendXForwardedForHeader"));
|
|
|
|
|
prop.put("info_proxy.sendXForwardedForHeader", post.containsKey("proxy.sendXForwardedForHeader")? "on" : "off");
|
|
|
|
|
|
|
|
|
|
prop.put("info_proxy.sendXForwardedForHeader", post.containsKey("proxy.sendXForwardedForHeader")? "on" : "off");
|
|
|
|
|
|
|
|
|
|
prop.put("info", "20");
|
|
|
|
|
return prop;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// server access
|
|
|
|
|
if (post.containsKey("serveraccount")) {
|
|
|
|
|
|
|
|
|
@ -250,7 +249,7 @@ public class SettingsAck_p {
|
|
|
|
|
}*/
|
|
|
|
|
if (filter.length() == 0) filter = "*";
|
|
|
|
|
else if (!filter.equals("*")){
|
|
|
|
|
// testing proxy filter
|
|
|
|
|
// testing proxy filter
|
|
|
|
|
int patternCount = 0;
|
|
|
|
|
String patternStr = null;
|
|
|
|
|
try {
|
|
|
|
@ -268,35 +267,35 @@ public class SettingsAck_p {
|
|
|
|
|
prop.putHTML("info_pattern", patternStr);
|
|
|
|
|
return prop;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// check passed. set account:
|
|
|
|
|
env.setConfig("serverClient", filter);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
prop.put("info", "8");//server access filter updated
|
|
|
|
|
//prop.put("info_user", user);
|
|
|
|
|
prop.putHTML("info_filter", filter);
|
|
|
|
|
return prop;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (post.containsKey("proxysettings")) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* ====================================================================
|
|
|
|
|
* Reading out the remote proxy settings
|
|
|
|
|
* Reading out the remote proxy settings
|
|
|
|
|
* ==================================================================== */
|
|
|
|
|
final boolean useRemoteProxy = post.containsKey("remoteProxyUse");
|
|
|
|
|
final boolean useRemoteProxy4Yacy = post.containsKey("remoteProxyUse4Yacy");
|
|
|
|
|
final boolean useRemoteProxy4SSL = post.containsKey("remoteProxyUse4SSL");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
final String remoteProxyHost = post.get("remoteProxyHost", "");
|
|
|
|
|
final int remoteProxyPort = post.getInt("remoteProxyPort", 3128);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
final String remoteProxyUser = post.get("remoteProxyUser", "");
|
|
|
|
|
final String remoteProxyPwd = post.get("remoteProxyPwd", "");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
final String remoteProxyNoProxyStr = post.get("remoteProxyNoProxy", "");
|
|
|
|
|
//String[] remoteProxyNoProxyPatterns = remoteProxyNoProxyStr.split(",");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* ====================================================================
|
|
|
|
|
* Storing settings into config file
|
|
|
|
|
* ==================================================================== */
|
|
|
|
@ -308,20 +307,20 @@ public class SettingsAck_p {
|
|
|
|
|
env.setConfig("remoteProxyUse", useRemoteProxy);
|
|
|
|
|
env.setConfig("remoteProxyUse4Yacy", useRemoteProxy4Yacy);
|
|
|
|
|
env.setConfig("remoteProxyUse4SSL", useRemoteProxy4SSL);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* ====================================================================
|
|
|
|
|
* Enabling settings
|
|
|
|
|
* ==================================================================== */
|
|
|
|
|
sb.initRemoteProxy();
|
|
|
|
|
|
|
|
|
|
sb.initRemoteProxy();
|
|
|
|
|
|
|
|
|
|
prop.put("info", "15"); // The remote-proxy setting has been changed
|
|
|
|
|
return prop;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (post.containsKey("seedUploadRetry")) {
|
|
|
|
|
String error;
|
|
|
|
|
if ((error = yacyCore.saveSeedList(sb)) == null) {
|
|
|
|
|
// trying to upload the seed-list file
|
|
|
|
|
// trying to upload the seed-list file
|
|
|
|
|
prop.put("info", "13");
|
|
|
|
|
prop.put("info_success", "1");
|
|
|
|
|
} else {
|
|
|
|
@ -331,24 +330,24 @@ public class SettingsAck_p {
|
|
|
|
|
}
|
|
|
|
|
return prop;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (post.containsKey("seedSettings")) {
|
|
|
|
|
// get the currently used uploading method
|
|
|
|
|
final String oldSeedUploadMethod = env.getConfig("seedUploadMethod","none");
|
|
|
|
|
final String newSeedUploadMethod = post.get("seedUploadMethod");
|
|
|
|
|
final String oldSeedURLStr = sb.peers.mySeed().get(yacySeed.SEEDLISTURL, "");
|
|
|
|
|
final String newSeedURLStr = post.get("seedURL");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
final boolean seedUrlChanged = !oldSeedURLStr.equals(newSeedURLStr);
|
|
|
|
|
boolean uploadMethodChanged = !oldSeedUploadMethod.equals(newSeedUploadMethod);
|
|
|
|
|
if (uploadMethodChanged) {
|
|
|
|
|
uploadMethodChanged = yacyCore.changeSeedUploadMethod(newSeedUploadMethod);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (seedUrlChanged || uploadMethodChanged) {
|
|
|
|
|
env.setConfig("seedUploadMethod", newSeedUploadMethod);
|
|
|
|
|
sb.peers.mySeed().put(yacySeed.SEEDLISTURL, newSeedURLStr);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// try an upload
|
|
|
|
|
String error;
|
|
|
|
|
if ((error = yacyCore.saveSeedList(sb)) == null) {
|
|
|
|
@ -365,41 +364,41 @@ public class SettingsAck_p {
|
|
|
|
|
return prop;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Loop through the available seed uploaders to see if the
|
|
|
|
|
* configuration of one of them has changed
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Loop through the available seed uploaders to see if the
|
|
|
|
|
* configuration of one of them has changed
|
|
|
|
|
*/
|
|
|
|
|
final HashMap<String, String> uploaders = yacyCore.getSeedUploadMethods();
|
|
|
|
|
final Iterator<String> uploaderKeys = uploaders.keySet().iterator();
|
|
|
|
|
while (uploaderKeys.hasNext()) {
|
|
|
|
|
// get the uploader module name
|
|
|
|
|
final String uploaderName = uploaderKeys.next();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// determining if the user has reconfigured the settings of this uploader
|
|
|
|
|
if (post.containsKey("seed" + uploaderName + "Settings")) {
|
|
|
|
|
nothingChanged = true;
|
|
|
|
|
final yacySeedUploader theUploader = yacyCore.getSeedUploader(uploaderName);
|
|
|
|
|
final String[] configOptions = theUploader.getConfigurationOptions();
|
|
|
|
|
if (configOptions != null) {
|
|
|
|
|
for (int i=0; i<configOptions.length; i++) {
|
|
|
|
|
final String newSettings = post.get(configOptions[i],"");
|
|
|
|
|
final String oldSettings = env.getConfig(configOptions[i],"");
|
|
|
|
|
for (final String configOption : configOptions) {
|
|
|
|
|
final String newSettings = post.get(configOption,"");
|
|
|
|
|
final String oldSettings = env.getConfig(configOption,"");
|
|
|
|
|
// bitwise AND with boolean is same as logic AND
|
|
|
|
|
nothingChanged &= newSettings.equals(oldSettings);
|
|
|
|
|
nothingChanged &= newSettings.equals(oldSettings);
|
|
|
|
|
if (!nothingChanged) {
|
|
|
|
|
env.setConfig(configOptions[i],newSettings);
|
|
|
|
|
env.setConfig(configOption,newSettings);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (!nothingChanged) {
|
|
|
|
|
// if the seed upload method is equal to the seed uploader whose settings
|
|
|
|
|
// were changed, we now try to upload the seed list with the new settings
|
|
|
|
|
if (env.getConfig("seedUploadMethod","none").equalsIgnoreCase(uploaderName)) {
|
|
|
|
|
String error;
|
|
|
|
|
if ((error = yacyCore.saveSeedList(sb)) == null) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// we have successfully uploaded the seed file
|
|
|
|
|
prop.put("info", "13");
|
|
|
|
|
prop.put("info_success", "1");
|
|
|
|
@ -407,8 +406,8 @@ public class SettingsAck_p {
|
|
|
|
|
// if uploading failed we print out an error message
|
|
|
|
|
prop.put("info", "14");
|
|
|
|
|
prop.putHTML("info_errormsg",error.replaceAll("\n","<br>"));
|
|
|
|
|
env.setConfig("seedUploadMethod","none");
|
|
|
|
|
}
|
|
|
|
|
env.setConfig("seedUploadMethod","none");
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
prop.put("info", "13");
|
|
|
|
|
prop.put("info_success", "0");
|
|
|
|
@ -418,9 +417,9 @@ public class SettingsAck_p {
|
|
|
|
|
prop.put("info_success", "0");
|
|
|
|
|
}
|
|
|
|
|
return prop;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Message forwarding configuration
|
|
|
|
|
*/
|
|
|
|
@ -428,22 +427,22 @@ public class SettingsAck_p {
|
|
|
|
|
env.setConfig("msgForwardingEnabled", post.containsKey("msgForwardingEnabled"));
|
|
|
|
|
env.setConfig("msgForwardingCmd", post.get("msgForwardingCmd"));
|
|
|
|
|
env.setConfig("msgForwardingTo", post.get("msgForwardingTo"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
prop.put("info", "21");
|
|
|
|
|
prop.put("info_msgForwardingEnabled", post.containsKey("msgForwardingEnabled") ? "on" : "off");
|
|
|
|
|
prop.putHTML("info_msgForwardingCmd", post.get("msgForwardingCmd"));
|
|
|
|
|
prop.putHTML("info_msgForwardingTo", post.get("msgForwardingTo"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return prop;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Crawler settings
|
|
|
|
|
if (post.containsKey("crawlerSettings")) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// get Crawler Timeout
|
|
|
|
|
String timeoutStr = post.get("crawler.clientTimeout");
|
|
|
|
|
if (timeoutStr==null||timeoutStr.length()==0) timeoutStr = "10000";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int crawlerTimeout;
|
|
|
|
|
try {
|
|
|
|
|
crawlerTimeout = Integer.parseInt(timeoutStr);
|
|
|
|
@ -454,11 +453,11 @@ public class SettingsAck_p {
|
|
|
|
|
prop.putHTML("info_crawler.clientTimeout",post.get("crawler.clientTimeout"));
|
|
|
|
|
return prop;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// get maximum http file size
|
|
|
|
|
String maxSizeStr = post.get("crawler.http.maxFileSize");
|
|
|
|
|
if (maxSizeStr==null||maxSizeStr.length()==0) maxSizeStr = "-1";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
long maxHttpSize;
|
|
|
|
|
try {
|
|
|
|
|
maxHttpSize = Integer.parseInt(maxSizeStr);
|
|
|
|
@ -471,11 +470,11 @@ public class SettingsAck_p {
|
|
|
|
|
prop.putHTML("info_crawler.http.maxFileSize",post.get("crawler.http.maxFileSize"));
|
|
|
|
|
return prop;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// get maximum ftp file size
|
|
|
|
|
maxSizeStr = post.get("crawler.ftp.maxFileSize");
|
|
|
|
|
if (maxSizeStr==null||maxSizeStr.length()==0) maxSizeStr = "-1";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
long maxFtpSize;
|
|
|
|
|
try {
|
|
|
|
|
maxFtpSize = Integer.parseInt(maxSizeStr);
|
|
|
|
@ -484,11 +483,11 @@ public class SettingsAck_p {
|
|
|
|
|
prop.put("info", "31");
|
|
|
|
|
prop.putHTML("info_crawler.ftp.maxFileSize",post.get("crawler.ftp.maxFileSize"));
|
|
|
|
|
return prop;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
maxSizeStr = post.get("crawler.smb.maxFileSize");
|
|
|
|
|
if (maxSizeStr==null||maxSizeStr.length()==0) maxSizeStr = "-1";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
long maxSmbSize;
|
|
|
|
|
try {
|
|
|
|
|
maxSmbSize = Integer.parseInt(maxSizeStr);
|
|
|
|
@ -497,11 +496,11 @@ public class SettingsAck_p {
|
|
|
|
|
prop.put("info", "31");
|
|
|
|
|
prop.putHTML("info_crawler.smb.maxFileSize",post.get("crawler.smb.maxFileSize"));
|
|
|
|
|
return prop;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
maxSizeStr = post.get("crawler.file.maxFileSize");
|
|
|
|
|
if (maxSizeStr==null||maxSizeStr.length()==0) maxSizeStr = "-1";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
long maxFileSize;
|
|
|
|
|
try {
|
|
|
|
|
maxFileSize = Integer.parseInt(maxSizeStr);
|
|
|
|
@ -510,8 +509,8 @@ public class SettingsAck_p {
|
|
|
|
|
prop.put("info", "31");
|
|
|
|
|
prop.putHTML("info_crawler.file.maxFileSize",post.get("crawler.file.maxFileSize"));
|
|
|
|
|
return prop;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// everything is ok
|
|
|
|
|
prop.put("info_crawler.clientTimeout",(crawlerTimeout==0) ? "0" :yacyPeerActions.formatInterval(crawlerTimeout));
|
|
|
|
|
prop.put("info_crawler.http.maxFileSize",(maxHttpSize==-1)? "-1":Formatter.bytesToString(maxHttpSize));
|
|
|
|
@ -521,11 +520,11 @@ public class SettingsAck_p {
|
|
|
|
|
prop.put("info", "28");
|
|
|
|
|
return prop;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// nothing made
|
|
|
|
|
prop.put("info", "1");//no information submitted
|
|
|
|
|
return prop;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|