001: /*
002: * This file is part of DrFTPD, Distributed FTP Daemon.
003: *
004: * DrFTPD is free software; you can redistribute it and/or modify
005: * it under the terms of the GNU General Public License as published by
006: * the Free Software Foundation; either version 2 of the License, or
007: * (at your option) any later version.
008: *
009: * DrFTPD is distributed in the hope that it will be useful,
010: * but WITHOUT ANY WARRANTY; without even the implied warranty of
011: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
012: * GNU General Public License for more details.
013: *
014: * You should have received a copy of the GNU General Public License
015: * along with DrFTPD; if not, write to the Free Software
016: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
017: */
018: package org.drftpd.usermanager;
019:
020: import net.sf.drftpd.DuplicateElementException;
021:
022: import org.apache.log4j.BasicConfigurator;
023: import org.apache.log4j.Logger;
024: import org.drftpd.commands.UserManagement;
025: import org.drftpd.plugins.Trial;
026:
027: import java.io.IOException;
028:
029: import java.lang.reflect.Constructor;
030:
031: import java.util.Iterator;
032:
033: /**
034: * Usage: java net.sf.drftpd.master.usermanager.UserManagerConverter
035: * net.sf.drftpd.master.usermanager.glftpd.GlftpdUserManager
036: * net.sf.drftpd.master.usermanager.JSXUserManager
037: *
038: * @author mog
039: * @version $Id: UserManagerConverter.java 1003 2005-02-14 01:44:43Z zubov $
040: */
041: public class UserManagerConverter {
042: private static final Logger logger = Logger
043: .getLogger(UserManagerConverter.class);
044:
045: public static void convert(User from, User to)
046: throws UserFileException {
047: logger.debug("Converting " + from.getName());
048:
049: for (Iterator iter = from.getGroups().iterator(); iter
050: .hasNext();) {
051: try {
052: to.addSecondaryGroup((String) iter.next());
053: } catch (DuplicateElementException e) {
054: logger.warn("", e);
055: }
056: }
057:
058: to.getKeyedMap().setAllObjects(from.getKeyedMap());
059: to.addAllMasks(from.getHostMaskCollection());
060:
061: to.setCredits(from.getCredits());
062:
063: to.setDeleted(from.isDeleted());
064:
065: to.setGroup(from.getGroup());
066:
067: //to.getKeyedMap().setObject(UserManagement.LEECHSLOTS, from.getGroupLeechSlots());
068:
069: //to.setGroupSlots(from.getGroupLeechSlots());
070:
071: to.setIdleTime(from.getIdleTime());
072:
073: //to.setLastNuked(from.getLastNuked());
074: //to.putObject(Nuke.LASTNUKED, new Long(from
075: // .getObjectLong(Nuke.LASTNUKED)));
076:
077: to.setLastReset(from.getLastReset());
078:
079: //to.setMaxSimDownloads(from.getMaxSimDownloads());
080: //to.setMaxSimUploads(from.getMaxSimUploads());
081: //to.putObject(Nuke.NUKEDBYTES, new Long(from
082: // .getObjectLong(Nuke.NUKEDBYTES)));
083: if (from instanceof PlainTextPasswordUser) {
084: to
085: .setPassword(((PlainTextPasswordUser) from)
086: .getPassword());
087: } else if (from instanceof UnixPassword
088: && to instanceof UnixPassword) {
089: ((UnixPassword) to).setUnixPassword(((UnixPassword) from)
090: .getUnixPassword());
091: } else {
092: logger.warn("Don't know how to convert password from "
093: + from.getName());
094: }
095:
096: //to.putObject(UserManagement.RATIO, new
097: // Float(from.getObjectFloat(UserManagement.RATIO)));
098: //to.putObject(UserManagement.TAGLINE,
099: // from.getObjectString(UserManagement.TAGLINE));
100: //to.putObject(Nuke.NUKED, new Integer(from.getObjectInt(Nuke.NUKED)));
101: int[] periods = new int[] { Trial.PERIOD_ALL,
102: Trial.PERIOD_DAILY, Trial.PERIOD_MONTHLY,
103: Trial.PERIOD_WEEKLY };
104:
105: for (int i = 0; i < periods.length; i++) {
106: int period = periods[i];
107: to.setUploadedTimeForTrialPeriod(period, from
108: .getUploadedTimeForTrialPeriod(period));
109:
110: to.setDownloadedTimeForTrialPeriod(period, from
111: .getDownloadedTimeForTrialPeriod(period));
112:
113: to.setUploadedBytesForTrialPeriod(period, from
114: .getUploadedBytesForTrialPeriod(period));
115:
116: to.setDownloadedBytesForTrialPeriod(period, from
117: .getDownloadedBytesForTrialPeriod(period));
118:
119: to.setUploadedFilesForTrialPeriod(period, from
120: .getUploadedFilesForTrialPeriod(period));
121:
122: to.setDownloadedFilesForTrialPeriod(period, from
123: .getDownloadedFilesForTrialPeriod(period));
124: }
125:
126: to.commit();
127: }
128:
129: public static void main(String[] args)
130: throws InstantiationException, IllegalAccessException,
131: ClassNotFoundException, IOException, UserFileException {
132: BasicConfigurator.configure();
133:
134: if (args.length != 2) {
135: System.out
136: .println("arguments: <from usermanager class> <to usermanager class>");
137:
138: return;
139: }
140:
141: UserManager from = (UserManager) Class.forName(args[0])
142: .newInstance();
143: UserManager to;
144:
145: try {
146: Constructor c = Class.forName(args[1]).getConstructor(
147: new Class[] { boolean.class });
148: to = (UserManager) c
149: .newInstance(new Object[] { new Boolean(false) });
150: } catch (Exception e) {
151: throw new RuntimeException(e);
152: }
153:
154: logger.debug(from.getAllUsers());
155:
156: for (Iterator iter = from.getAllUsers().iterator(); iter
157: .hasNext();) {
158: User user = (User) iter.next();
159: convert(user, to.create(user.getName()));
160: }
161: }
162: }
|