//User_p.java //----------------------- //part of the AnomicHTTPD caching proxy //(C) by Michael Peter Christen; mc@anomic.de //first published on http://www.anomic.de //Frankfurt, Germany, 2004 // //This File is contributed by Alexander Schier //last major change: 30.09.2005 // //This program 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 2 of the License, or //(at your option) any later version. // //This program 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. // //You should have received a copy of the GNU General Public License //along with this program; if not, write to the Free Software //Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // //Using this software in any meaning (reading, learning, copying, compiling, //running) means that you agree that the Author(s) is (are) not responsible //for cost, loss of data or any harm that may be caused directly or indirectly //by usage of this softare or this documentation. The usage of this software //is on your own risk. The installation and usage (starting/running) of this //software may allow other people or application to access your computer and //any attached devices and is highly dependent on the configuration of the //software which must be done by the user of the software; the author(s) is //(are) also not responsible for proper configuration and usage of the //software, even if provoked by documentation provided together with //the software. // //Any changes to this file according to the GPL as documented in the file //gpl.txt aside this file in the shipment you received can be done to the //lines that follows this copyright notice here, but changes must not be //done inside the copyright notive above. A re-distribution must contain //the intact and unchanged copyright notice. //Contributions and changes to the program code must be marked as such. //You must compile this file with //javac -classpath .:../Classes Message.java //if the shell's current path is HTROOT import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import de.anomic.data.userDB; import de.anomic.http.httpHeader; import de.anomic.http.httpd; import de.anomic.kelondro.kelondroBase64Order; import de.anomic.plasma.plasmaSwitchboard; import de.anomic.server.serverCodings; import de.anomic.server.serverObjects; import de.anomic.server.serverSwitch; public class ConfigAccounts_p { public static serverObjects respond(httpHeader header, serverObjects post, serverSwitch env) { serverObjects prop = new serverObjects(); plasmaSwitchboard sb = plasmaSwitchboard.getSwitchboard(); userDB.Entry entry=null; // admin password boolean localhostAccess = sb.getConfigBool("adminAccountForLocalhost", false); if ((post != null) && (post.containsKey("setAdmin"))) { localhostAccess = post.get("access", "").equals("localhost"); String user = (post == null) ? "" : (String) post.get("adminuser", ""); String pw1 = (post == null) ? "" : (String) post.get("adminpw1", ""); String pw2 = (post == null) ? "" : (String) post.get("adminpw2", ""); sb.setConfig("adminAccountForLocalhost", localhostAccess); // if an localhost access is configured, check if a local password is given // if not, set a random password if (post != null && localhostAccess && env.getConfig(httpd.ADMIN_ACCOUNT_B64MD5, "").length() == 0) { // make a 'random' password env.setConfig(httpd.ADMIN_ACCOUNT_B64MD5, "0000" + serverCodings.encodeMD5Hex(System.getProperties().toString() + System.currentTimeMillis())); env.setConfig("adminAccount", ""); } // may be overwritten if new password is given if ((user.length() > 0) && (pw1.length() > 3) && (pw1.equals(pw2))) { // check passed. set account: env.setConfig(httpd.ADMIN_ACCOUNT_B64MD5, serverCodings.encodeMD5Hex(kelondroBase64Order.standardCoder.encodeString(user + ":" + pw1))); env.setConfig("adminAccount", ""); } } prop.put("localhost.checked", (localhostAccess) ? 1 : 0); prop.put("account.checked", (localhostAccess) ? 0 : 1); prop.put("statusPassword", localhostAccess ? "0" : "1"); prop.put("defaultUser", "admin"); //default values prop.put("current_user", "newuser"); prop.put("username", ""); prop.put("firstname", ""); prop.put("lastname", ""); prop.put("address", ""); prop.put("timelimit", ""); prop.put("timeused", ""); String[] rightNames=userDB.Entry.RIGHT_NAMES.split(","); String[] rights=userDB.Entry.RIGHT_TYPES.split(","); int i; for(i=0;i rightsSet=new HashMap(); for(i=0;i mem=new HashMap(); if( post.get("current_user").equals("newuser")){ //new user if(!pw1.equals("")){ //change only if set mem.put(userDB.Entry.MD5ENCODED_USERPWD_STRING, serverCodings.encodeMD5Hex(username+":"+pw1)); } mem.put(userDB.Entry.USER_FIRSTNAME, firstName); mem.put(userDB.Entry.USER_LASTNAME, lastName); mem.put(userDB.Entry.USER_ADDRESS, address); mem.put(userDB.Entry.TIME_LIMIT, timeLimit); mem.put(userDB.Entry.TIME_USED, timeUsed); for(i=0;i it = sb.userDB.iterator(true); int numUsers=0; while(it.hasNext()){ entry = it.next(); prop.putHTML("users_"+numUsers+"_user", entry.getUserName()); numUsers++; } prop.put("users", numUsers); // return rewrite properties return prop; } }