Filewatcher File Search
FTP Search
  
Directory (beta)
  
Content Search (beta)
   
pkg://jftp-1.42-2jpp.src.rpm:2618723/j-ftp-1.42.tar.gz  info  downloads

j-ftp/0002755000175000017500000000000010026323546012635 5ustar  cdemoncdemon00000000000000j-ftp/CVS/0002755000175000017500000000000007637407734013310 5ustar  cdemoncdemon00000000000000j-ftp/CVS/Root0000755000175000017500000000006507500136441014137 0ustar  cdemoncdemon00000000000000:ext:cdemon@cvs.j-ftp.sourceforge.net:/cvsroot/j-ftp
j-ftp/CVS/Repository0000755000175000017500000000000607500136441015366 0ustar  cdemoncdemon00000000000000j-ftp
j-ftp/CVS/Entries0000755000175000017500000000045407637407734014650 0ustar  cdemoncdemon00000000000000/LICENSE/1.1/Fri Feb  8 22:33:48 2002//
D/doc////
D/src////
/run.bat/1.1/Wed Mar 19 08:13:33 2003//
/run/1.2/Fri Mar 21 00:01:32 2003//
/build.xml/1.30/Fri Mar 21 14:42:37 2003//
/CHANGELOG/1.68/Sun Mar 23 19:38:16 2003//
/TODO/1.56/Sun Mar 23 19:32:52 2003//
/readme/1.62/Sun Mar 23 19:30:33 2003//
j-ftp/doc/0002755000175000017500000000000007755451107013414 5ustar  cdemoncdemon00000000000000j-ftp/doc/CVS/0002755000175000017500000000000007636122456014047 5ustar  cdemoncdemon00000000000000j-ftp/doc/CVS/Root0000755000175000017500000000006507500136442014705 0ustar  cdemoncdemon00000000000000:ext:cdemon@cvs.j-ftp.sourceforge.net:/cvsroot/j-ftp
j-ftp/doc/CVS/Repository0000755000175000017500000000001207500136442016131 0ustar  cdemoncdemon00000000000000j-ftp/doc
j-ftp/doc/CVS/Entries0000755000175000017500000000027307636122456015406 0ustar  cdemoncdemon00000000000000/api-use.txt/1.1/Sun Feb 17 17:49:16 2002//
/Grapher.java/1.1/Sun Mar  9 16:07:43 2003//
/FtpDownload.java/1.8/Wed Mar 12 20:15:57 2003//
/FtpUpload.java/1.8/Wed Mar 12 20:16:02 2003//
D
j-ftp/doc/javadoc/0002755000175000017500000000000007642541704015021 5ustar  cdemoncdemon00000000000000j-ftp/doc/FtpDownload.java0000755000175000017500000000722207651744217016506 0ustar  cdemoncdemon00000000000000import net.sf.jftp.net.ConnectionHandler;
import net.sf.jftp.net.ConnectionListener;
import net.sf.jftp.net.DataConnection;
import net.sf.jftp.net.FtpConnection;
import net.sf.jftp.net.BasicConnection;
import net.sf.jftp.util.Log;
import net.sf.jftp.util.Logger;
import net.sf.jftp.config.Settings;

import java.io.*;

// this class download a file via anonymous ftp and shows output.
//
// if you want to use the api in a more complex way, please do at least take a look at the
// FtpConnection, FtpTransfer, ConnectionHandler, DirPanel (blockedTransfer, transfer)
// and ConnectionListener sourcecode.
public class FtpDownload implements Logger, ConnectionListener
{

 // is the connection established?
 private boolean isThere = false;

 // connection pool, not necessary but you should take a look at this class
 // if you want to use multiple event based ftp transfers.
 private ConnectionHandler handler = new ConnectionHandler();

//creates a FtpConnection and downloads a file
 public FtpDownload(String host, String file)
 {
 	// register app as Logger, debug() and debugRaw below are from now on called by
	// FtpConnection
 	Log.setLogger(this);

	// create a FtpConnection - note that it does *not* connect instantly
 	FtpConnection con = new FtpConnection(host);

	// set updatelistener, interface methods are below
	con.addConnectionListener(this);

	// set handler
	con.setConnectionHandler(handler);

	// connect and login. this is from where connectionFailed() may be called for example
	con.login("anonymous","no@no.no");

	// login calls connectionInitialized() below which sets isThere to true
	while(!isThere)
	{
		try { Thread.sleep(10); }
		catch(Exception ex) { ex.printStackTrace(); }
	}

	// download the file - this method blocks until the download has finished
	// if you want non-blocking, multithreaded io, just use
	//
	// con.handleDownload(file);
	//
	// which spawns a new thread for the download
	con.download(file);
 }

 // download welcome.msg from sourceforge or any other given file
 public static void main(String argv[])
 {
 	if(argv.length < 2)
	{
		FtpDownload f = new FtpDownload("upload.sourceforge.net", "/welcome.msg");
	}
	else
	{
		FtpDownload f = new FtpDownload(argv[0], argv[1]);
	}
 }

// ------------------ needed by ConnectionListener interface -----------------

// called if the remote directory has changed
 public void updateRemoteDirectory(BasicConnection con)
 {
 	System.out.println("new path is: " + con.getPWD());
 }

 // called if a connection has been established
 public void connectionInitialized(BasicConnection con)
 {
  	isThere = true;
 }
 
 // called every few kb by DataConnection during the trnsfer (interval can be changed in Settings)
 public void updateProgress(String file, String type, long bytes) {}

 // called if connection fails
 public void connectionFailed(BasicConnection con, String why) {System.out.println("connection failed!");}

 // up- or download has finished
 public void actionFinished(BasicConnection con) {}


 // ------------ needed by Logger interface  --------------

    // main log method
    public void debug(String msg) {System.out.println(msg);}

    // rarely used
    public void debugRaw(String msg) {System.out.print(msg);}

    // methods below are not used yet.

    	public void debug(String msg, Throwable throwable) {}

    	public void warn(String msg) {}

    	public void warn(String msg, Throwable throwable) {}

    	public void error(String msg) {}

    	public void error(String msg, Throwable throwable) {}

   	 public void info(String msg) {}

    	public void info(String msg, Throwable throwable) {}

    	public void fatal(String msg) {}

    	public void fatal(String msg, Throwable throwable) {}

}
j-ftp/doc/api-use.txt0000755000175000017500000000033707433766434015531 0ustar  cdemoncdemon00000000000000--- Standalone-usage ---

If you want to use the JFtp-api without the gui app,
take a look at FtpDownload.java.
It's easy to understand, but if you have any questions
feel free to ask at j-ftp-devel@lists.sourceforge.net


j-ftp/doc/FtpUpload.java0000755000175000017500000000417207651744301016156 0ustar  cdemoncdemon00000000000000import net.sf.jftp.net.ConnectionHandler;
import net.sf.jftp.net.ConnectionListener;
import net.sf.jftp.net.DataConnection;
import net.sf.jftp.net.FtpConnection;
import net.sf.jftp.net.BasicConnection;
import net.sf.jftp.util.Log;
import net.sf.jftp.util.Logger;
import net.sf.jftp.config.Settings;

import java.io.*;

/**
* See FtpDownload.java for comments.
*/
public class FtpUpload implements Logger, ConnectionListener
{

 private boolean isThere = false;

 private ConnectionHandler handler = new ConnectionHandler();

 public FtpUpload(String host, String dir, String file)
 {
 	Log.setLogger(this);

 	FtpConnection con = new FtpConnection(host);

	con.addConnectionListener(this);

	con.setConnectionHandler(handler);

	con.login("anonymous","no@no.no");

	while(!isThere)
	{
		try { Thread.sleep(10); }
		catch(Exception ex) { ex.printStackTrace(); }
	}

	con.chdir(dir);

	con.upload(file);
 }

 public static void main(String argv[])
 {
    if(argv.length == 3)
    { 
	    FtpUpload f = new FtpUpload(argv[0], argv[2], argv[1]); 
    }
    else 
    {
     FtpUpload g = 
	    new FtpUpload("upload.sourceforge.net", "/incoming", "test.txt");
    }
}


 public void updateRemoteDirectory(BasicConnection con)
 {
 	System.out.println("new path is: " + con.getPWD());
 }
 
 public void connectionInitialized(BasicConnection con)
 {
  	isThere = true;
 }
 
 public void updateProgress(String file, String type, long bytes) {}
 
 public void connectionFailed(BasicConnection con, String why) {System.out.println("connection failed!");}

 public void actionFinished(BasicConnection con) {}

    public void debug(String msg) {System.out.println(msg);}

     public void debugRaw(String msg) {System.out.print(msg);}

    public void debug(String msg, Throwable throwable) {}

    public void warn(String msg) {}

    public void warn(String msg, Throwable throwable) {}

    public void error(String msg) {}

    public void error(String msg, Throwable throwable) {}

    public void info(String msg) {}

    public void info(String msg, Throwable throwable) {}

    public void fatal(String msg) {}

    public void fatal(String msg, Throwable throwable) {}

}
j-ftp/doc/nfsinfo0000644000175000017500000000346207656177152015011 0ustar  cdemoncdemon00000000000000

		 NFS information



NFS support is provided by the Sun WebNFS API, finally i was able to get it running in combination
with my linux box at home.

NFS URLs are a little bit tricky, depending on the type of the NFS version you want to use you have
to use some custom extensions of the url parser.

This is what the devolopers of the WebNFS API write in their javadoc:

"This is just a dumb URL parser class.
I wrote it because I got fed up with the JDK URL class calling NFS URL's "invalid" simply because the Handler wasn't installed.
This URL parser also handles undocumented testing options inserted in the URL in the port field.
The following sequence of option letters may appear before or after the port number, or alone if the port number is not given.
vn - NFS version, e.g. "v3" u - Force UDP - normally TCP is preferred t - Force TDP - don't fall back to UDP m - Force Mount protocol.
Normally public filehandle is preferred Option ordering is not important. Example: nfs://server:123v2um/path Use port 123 with NFS
v2 over UDP and Mount protocol nfs://server:m/path Use default port, prefer V3/TCP but use Mount protocol."


------------ COMPATIBILITY ---------------


Server type: NFS2
Test system: linux universal nfsd 2.2beta47

TESTED: nfs://server:v2m/tmp       - nfs2, tcp with udp fallback, use mount
SHOULD: nfs://server:v2tm/tmp    - nfs2, force tcp, use mount
SHOULD: nfs://server:v2um/tmp   - nfs2, force udp, use mount



Server type: NFS3
Test system: none

UNKNOWN: nfs://server:v3m/tmp     - nfs3, tcp with udp fallback, use mount
UNKNOWN: nfs://server:v3tm/tmp    - nfs3, force tcp, use mount
UNKNOWN: nfs://server:v3um/tmp   - nfs3, force udp, use mount



Server type: WebNFS
Test system: none

UNKNOWN: nfs://server:v3/tmp     - may support webnfs
UNKNOWN: nfs://server/tmp          - may support webnfs




j-ftp/doc/Grapher.java0000755000175000017500000001223107632663317015651 0ustar  cdemoncdemon00000000000000import java.io.*;
import java.net.*;
import java.util.*;
import java.awt.*;
import javax.swing.*;

public class Grapher extends Canvas
{

public String files[] = new String[] {"JFtp.java", "LoadSet.java","EventCollector.java", "EventProcessor.java", "FtpEvent.java","DirCellRenderer.java","DirPanel.java",
"Displayer.java","HostChooser.java","HostList.java","Properties.java","Updater.java","GUIDefaults.java","HPasswordField.java",
"DataConnection.java","FtpClient.java","FtpConnection.java","FtpConstants.java","FtpServerSocket.java","FtpURLConnection.java",
"FtpURLStreamHandler.java","JConnection.java","LocalIO.java","Log.java","Log4JLogger.java","Logger.java","SystemLogger.java",
"CommandLine.java","SaveSet.java","Settings.java","Acceptor.java","Event.java","EventHandler.java","FtpEventConstants.java",
"FtpEventHandler.java","AutoRemover.java","Creator.java","DirCanvas.java","DirEntry.java","DirLister.java","DownloadList.java",
"LoadPanel.java","PathChanger.java","RemoteCommand.java","Remover.java","RemoverQuery.java","ResumeDialog.java",
"StatusCanvas.java","StatusPanel.java","Template.java","HFrame.java","HImage.java","HImageButton.java","HPanel.java",
"HTextField.java","ConnectionHandler.java","ConnectionListener.java","FtpServer.java","Transfer.java","StringUtils.java" };

public String prefix =  "/home/cdemon/JFtp/j-ftp/src/java/net/sf/jftp/";
public String[] paths = new String[] { prefix, prefix+"gui/", prefix+"net/", prefix+"util/", prefix+"config/", prefix+"gui/framework",
								   prefix+"event/" };

public Hashtable table = new Hashtable();
public Hashtable pool = new Hashtable();

public static int width = 800;
public static int height = 600;

public Grapher()
{
 setSize(width,height);

 try
 {
	for(int i=0; i<files.length; i++)
	{
		File f = getFile(files[i]);

		if(f != null && f.exists())
		{
			for(int j=0; j<files.length; j++)
			{
				int x = countRelations(f, files[j]);
				if(x > 0) table.put(files[i] + ":" +files[j].substring(0, files[j].indexOf(".java")),  new String(""+x));
			}
		}
	}

 show();
 repaint();
 }
 catch(Exception ex)
 {
 	ex.printStackTrace();
 }
}

public void paint(Graphics g)
{
	// init
	g.setColor(Color.white);
	g.fillRect(0,0,getSize().width, getSize().height);
	g.setColor(Color.blue);
	g.setFont(new Font("serif", Font.BOLD, 14));

	// points
 	Random r = new Random();

	for(int i=0; i<files.length; i++)
	{
		while(true)
		{
			int x = r.nextInt(width-200);
			int y = r.nextInt(height-20);
			if(y<30) y=30;

			if(check(x, y))
			{
				//System.out.println("adding: " + files[i]);
				String tmp = files[i].substring(0,files[i].indexOf(".java"));
				Point p = new Point(x, y);
				pool.put(tmp, p);

				linkPoints(g, p);

				//g.drawString(tmp, x, y);

				break;
			}
		}
	}

	g.setColor(Color.blue);

	for(int i=0; i<files.length; i++)
	{
		String tmp = files[i].substring(0,files[i].indexOf(".java"));
		Point p2 = (Point) pool.get(tmp);
		if(p2 == null) continue;
		//g.setColor(new Color(255,180,180));
		//g.fillRect((int)  p2.getX(), (int)  p2.getY()-12, 80,  15);
		//g.setColor(Color.blue);
		g.drawString(tmp, (int)  p2.getX(), (int)  p2.getY());
	}

}

public void linkPoints(Graphics g, Point p)
{
	// fill

	Enumeration k = table.keys();
	Enumeration e = table.elements();
	String xk = null;
	String file = null;
	String link = null;

	while(k.hasMoreElements())
	{
		xk = (String) k.nextElement();
		int x = Integer.parseInt((String)e.nextElement());

		file = xk.substring(0, xk.indexOf(":"));
		file = file.substring(0,file.indexOf(".java"));
		link = xk.substring( xk.indexOf(":")+1);

		//System.out.println("<" + file + "> " + "(" + link + ")" + " - " + x);
		Point x2 = (Point) pool.get(file);
		if(x2 == null) continue;

		if(x > 0)
		{
			//for(int y=0; y<x; y++)
			//{
				int color = 255 - x*10 +40;
				if(color < 0) color=0;
				if(color > 255) color = 255;

				g.setColor(new Color(color,color,color));
				if(color < 255) g.drawLine(((int)p.getX()+20),((int)p.getY()+15),((int)x2.getX()+20),((int)x2.getY()+15));
			//}
		}

	}
}


public boolean check(int x, int y)
{
	Enumeration e = pool.elements();
	Point d = null;
	int a;
	int b;

	while(e.hasMoreElements())
	{
		d = (Point) e.nextElement();
		a = (int) d.getX();
		b = (int) d.getY();

		if(a > x-100 && a < x+100) {
			if(b > y-20 && b < y +20)
			{
				return false;
			}
		}
	}

	return true;
}

public int countRelations(File f, String what) throws IOException
{
	int x = 0;
	String tmp;
	what = what.substring(0, what.indexOf(".java"));

  	URL url = f.toURL();
	DataInputStream in = new DataInputStream(new BufferedInputStream(url.openStream()));

	while(true)
	{
		tmp = in.readLine();
		//System.out.println(f.getAbsolutePath() + ": " + tmp + ": " +what);
		if(tmp == null) break;
		if(tmp.indexOf(what) >= 0) x++;
	}

	in.close();

	return x;
}

public File getFile(String name)
{
	for(int i=0; i<paths.length; i++)
	{
		File f = new File(paths[i]+name);
		if(f.exists()) return f;
	}

	return null;
}

public static void main(String argv[])
{
	Grapher g = new Grapher();
	JFrame j = new JFrame();
	j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	j.getContentPane().setLayout(new BorderLayout(5,5));
	j.setSize(width+10,height+25);
	j.getContentPane().add("Center",g);
	j.show();
}

}
j-ftp/doc/applet.html0000644000175000017500000000037507755451737015603 0ustar  cdemoncdemon00000000000000<html>

<body>

<h3>JFtp should start soon...</h3>
<p>Watch your java console log if the application does not start correctly.</p>
<br><br>

<applet code="net.sf.jftp.JFtpApplet" archive="../build/jars/jftp.jar">
	Sorry, no java found
</applet>

</html>j-ftp/CHANGELOG0000755000175000017500000007047010026136765014065 0ustar  cdemoncdemon00000000000000- 1.42-pre6	D. another (final?) OS/2 parser fix - thx to Mark Hale for debugging! :)
- 1.42-pre6	D. fixed two minor command line ftp url bugs
- 1.42-pre5	D. re-enabled background image and added new image (created using
		   madonion's (kasten.m@gmx.de) StrangeAttractor image generation code)
- 1.42-pre5	D. more OS/2 parsing fixes
- 1.42-pre4	D. added log-flushing background thread
- 1.42-pre4	D. initial OS/2 FTP parsing support (bug 891346, needs testing)
- 1.42-pre4	D. added compatibility LIST support option to HostChooser (needed for OS/2) 
- 1.42-pre3	D. disabled background image per default
- 1.42-pre3	D. changed default window size to 840x640
- 1.42-pre3	D. changed default theme to metouiae
- 1.42-pre3	D. fixed StatusPanel appearance bug when switching to metouia
- 1.42-pre2	D. initial (readonly) WebDAV support using the slide webdav API -
		   downloading and browsing using the (unauthenticated) testserver works,
		   but there is much work left. 
- 1.42-pre1	D. added field to specify a WINS server IP to SMBHostChooser
		   as an attempt to fix SMB problems (bug 799534)
		   you may need it to access hosts on different subnets where
		   broadcast fails
- 1.42-pre1	D. fixed bug 741640, JConnection closes sockets now
- 1.42-pre1	D. added method to change the default "LIST -laL" command to
		   the advanced options (test for bug 891346)
- 1.42-pre1	D. added new advanced options menu item
- 1.42-pre1	J. fixed password parsing bug (bug 866724) 

- 1.41-pre1	D. improved http recursive download utility
- 1.41-pre1	D. changed http tools to use internal frames
- 1.41-pre1	D. minor readme updates
- 1.41-pre1	D. improved internal frame management
- 1.41-pre1	D. added close button to local and remote connection frames which appear
		   when more than one tab is open - clicking on it closes the current
		   active tab (the fsconnections and the frame itself can not be closed) 
- 1.41-pre1	D. added SMBHostChooser broadcast ip field and added small insets 
- 1.41-pre1	D. removed SMB "sortLs: trying" debug message

- 1.40-pre6	D. enabled new symlink removal code for FilesystemConnection
- 1.40-pre6	D. added SFTP port option
- 1.40-pre6	J.  added SMB connection remembering fix
- 1.40-pre5	D. attempt to fix a local parsing bug for solaris
- 1.40-pre4	J.  added connection remembering functionality to menubar
- 1.40-pre4	J.  refactored *HostChooser classes
- 1.40-pre4	J.  added missing tooltips to queue and download manager
- 1.40-pre3	D. added getTransferStatus-method to FtpTransfer
- 1.40-pre2	D. disabled upload resuming by default (may lead to corrupted files otherwise occasionally)
- 1.40-pre2	D. merged with recent ftp api code, FtpTransfer can store with different name now
- 1.40-pre1	D. added applet-support - try using doc/applet.html

- 1.39-pre1	D. completely disabled symlink removal. this fixes at least some (mine)
		    and hopefully all of the reported dataloss bugs. even though i still don't know
		    how file deletion can start itself on an appcrash the deletion of symlinks
		    pointing to other directories leads to the deletion of those. what happened to me
		    is that a symlink in a directory i wanted to delete pointed to my
		    homedir and i lost half of my personal data, including the latest prerelease
		    sourcecode. i'll release this version now as a bugfix-only release.
		    if you encounter any dataloss bugs with this version, please report them
		    immediately.
- 1.39-pre1	D. added Herve's build.xml properties bugfix

- 1.38-pre5	D. removed virus infected file "RPC*.exe" from the build directory.
			    note that this file got there while i was using it as a test file for transfers while
			    implementing local connections. unfortunately, until the local paths were fixed for the
			    connections some of the test files were transfered in the build directory which i didn't notice.
			    NOTE: This file was *never* executed by the code and should not have been there!
- 1.38-pre5	D. applied Jake's keyboard shortcuts and AppMenuBar improvements
- 1.38-pre5	D. fixed a *harmless* SFTP recursive deletion bug while investigating a bug report.
			    somebody reported sftp would have deleted his root and /usr/local dirs and,
			    if anybody has noticed the deletion of *any* file which was not previously selected to be deleted,
			    please tell us *immediately*. i did not find any harmful code and received no other bug report yet.
- 1.38-pre5	D. fixed new ftp connection bug introduced in pre-4
- 1.38-pre4	D. improved insomniac client
- 1.38-pre4	D. tabs are no longer created if a login failed
- 1.38-pre3	D. added ability to start up as insomniac client
- 1.38-pre2	D. added insomniac threading and downloadmanager support
- 1.38-pre2	D. new connection dialog is now longer modal
- 1.38-pre1	D. initial insomniac support

- 1.37-pre5	D. updated readme
- 1.37-pre5	D. improved sftp, nfs and smb connection linking support
- 1.37-pre4	D. added upload(String file, InputStream in) and getDownloadInputStream(String file) to BasicConnection
- 1.37-pre4	D. more connection linking work
- 1.37-pre3	D. fixed file deletion abort bug where ui stays locked
- 1.37-pre3	D. fixed desktop background resize bug (bug 809992)
- 1.37-pre3	D. fixed ftp multi line answer parsing bug
- 1.37-pre2	D. attempt to fix smb problems (bug 799534)
- 1.37-pre2	D. fixed some disconnects when creating new connections
- 1.37-pre2	D. ftp connections can now transfer files between each other, too
- 1.37-pre1	D. inital: ftpconnections can now be in the local tab, too (does only work with remote file connection yet)
- 1.37-pre1	D. added methods to upload from / download to InputStreams to the ftp API

- 1.36-pre2	D. added file view (local only) and properties to popup menu.
- 1.36-pre2	D. added popup menus for local and remote dir entries
- 1.36-pre2	D. proxy options and url contents are now displayed in internal frames
- 1.36-pre2	D. improved desktop background (uses j-ftp/src/images/back.jpg, can be turned off in view menu)
- 1.36-pre2	D. added multiple parallel remote connection support
- 1.36-pre1	D. applied walluck's theme-listing bugfix for metuoia theme
- 1.36-pre1	D. applied walluck's signjar build.xml patch

- 1.35-pre5	D. updated j2ssh api to v0.2.5
- 1.35-pre5	D. applied walluck's theme-bugfix patches
- 1.35-pre5	D. applied walluck's .jftp-directory path patch
- 1.35-pre4	D. fixed ftp wrong login nullpointer exception
- 1.35-pre3	D. fixed ftp recursive deletion bug
- 1.35-pre2	D. merged api changes
- 1.35-api		D. added ability to get/abort the last spawned transfer
- 1.35-pre1	D. initial upload resuming support (enabled per default)

- 1.34pre3	D. initial socks proxy support
- 1.34pre3	D. added jeffdahl's FtpConnection.rename method
- 1.34pre2	D. fixed a SFTP directory transfer bug
- 1.34pre1	D. updated jcifs SMB api to v0.7.11

- 1.33pre2	D. api-backport: fixed upload under different name, ist now upload(String file, String realName)
- 1.33pre2	D. api-backport: added exists()-method in FtpConnection
- 1.33pre1	D. improved the connection chooser to show a busy cursor while connecting (request 737502)
- 1.33pre1	D. fixed ui bug for host, user and pass textfield in ftp hostchooser
- 1.33pre1	D. added anonymous login checkbox for ftp (request 737482)
- 1.33pre1	D. added more tooltips (request 741624)

- 1.32pre2	D. added new "metouia" theme - check it out, it's really nice!
- 1.32pre2	D. added multithreading and enhanced download tool url parsing
- 1.32pre2	D. fixed connection problems for download tool
- 1.32pre1	D. initial HTTP recursive download support

- 1.31		D. merged api changes with the main source tree
- 1.31-api	        D. added/improved return codes for up/download/remove methods, BasicConnection interface changes
- 1.31-api		D. improved documentation code, some code cleanups
- 1.31-api		D. fixed a log4j initialisation bug
- 1.31-api		D. improved ftp api javadoc, especially for the FtpConnection class
- 1.31-api		D. created a separate commercial branch of the ftp api for a customer

- 1.30pre3	D. made bottom toolbar non-floatable (bug 741635)
- 1.30pre2	DP. DownloadQueue does no longer reconnect if the next file is on the same server
- 1.30pre2	DP. removed some obsolete debug messages
- 1.30pre1	D. fixed crash on filezilla ftp server response code parsing for mkdir command

- 1.29pre1	D. improved interface guessing for smb connections and changed the JTextField to a JComboBox
- 1.29pre1	DP. daniele's download queue system has landed (!)

- 1.28pre4	D. changed Displayer to use a JInternalFrame in most cases
- 1.28pre4	D. made downloadDir() private, use download()/handleDownload() for both files and dirs now if you embed the api
- 1.28pre4	D. fixed filesize for uploads
- 1.28pre3	D. changed buttons to standard ones
- 1.28pre2	D. improved raw tcp/ip connection tool a little bit
- 1.28pre2	D. fixed SFTP directory removal bug
- 1.28pre2	D. fixed a SFTP connection bug which caused the directory listing not to be displayed after connect
- 1.28pre2	D. applied patch for standalone/dispose mode
- 1.28pre2	D. fixed raw QUIT command bug
- 1.28pre2	D. moved status bar to the bottom of the frame
- 1.28pre2	D. more nfs support work
- 1.28pre2	D. debug messages from log are now in console debug, too
- 1.28pre1	D. added initial NFS support using sun webnfs api

- 1.27pre3	D. added raw tcp/ip connection tool
- 1.27pre3	D. added visit homepage menu option
- 1.27pre3	D. updated readme
- 1.27pre3	D. added small html browser and download tool (using html 3.2 compatible JEditorPane)
- 1.27pre3	D. fixed unix parser bug (used backup parser for first line if ls output sends a total x info and failed)
- 1.27pre3	D. fixed name parsing for files containing spaces
- 1.27pre3	D. address bar opens a connection window now if a ftp url represents a directory
- 1.27pre2	D. added background image to desktop (replace src/images/stdback.gif and recompile for a custom image)
- 1.27pre1	D. added new address bar to directly download urls using the standard java api
- 1.27pre1	D. added http download tool and implemented initial downloadmanager functionality
- 1.27pre1	D. added some  more keyboard shortcuts

- 1.26pre3	D. enhanced GUI, added a desktop, internal frames and customizeable toolbars
- 1.26pre2	D. made remote filesize listing safer
- 1.26pre2	DP. added ftp port field bugfix (is also saved now)
- 1.26pre1	D. added notes for use of the ftp api in commercial applications

- 1.25pre2	D. fixed windows server support
- 1.25pre2	D. added detailed debug console messages for parsing of directory listing
- 1.25pre1	D. ftp resume and overwrite now follow thread spawning rules, too
- 1.25pre1	D. log can now be disabled
- 1.25pre1	D. added debug mode and messages
- 1.25pre1	D. ensure logging on important events

- 1.24pre2	D. fixed documentation code and added comments
- 1.24pre1	D. improved ui responsiveness and removed log spamming
- 1.24pre1	D. removed some obsolete mode calls and dir refreshes for better performance

------------------------------------------------------------------------------------------------------

- 1.23pre4	D. fixed ftp link parsing bug
- 1.23pre4	D. remote filesystem dir does work now if a connection has failed to login before
- 1.23pre4	D. window no longer disappears if ftp login failes
- 1.23pre4	D. app no longer asks for each file to delete
- 1.23pre4	D. fixed no dir refresh bug for SMB, SFTP threaded transfers
- 1.23pre4	D. changed gui refresh code a little bit again
- 1.23pre4	D. added .iso icon extension
- 1.23pre3	D. added multithreading options for SMB and SFTP to the JMenuBar
- 1.23pre2	D. removed obslote awt stuff for SFTP authentication
- 1.23pre2	D. SMB and SFTP are now multithreaded, too
- 1.23pre1	D. changed SMB error message if master not found

------------------------------------------------------------------------------------------------------

- 1.22	D. use space to cycle between local and remote dir
- 1.22	D. implemented remote file viewing
- 1.22	D. cursor is now busy when refreshing directories
- 1.22	D. enter does now open a selected directory
- 1.22	D. try to fix a windows/dos ftp parsing bug
- 1.22	D. fixed classloader bug bug for UIManager
- 1.22	D. show path change dialog the connection:path label is clicked
- 1.22	D. added dialog to confirm deletion of files and option in the menu
- 1.22	D. added Kunststoff theme and made it default - looks quite nice!
- 1.22	D. try to fix a loop forever bug on SMB connections for people with firewalls quietly dropping connections
- 1.22	D. fixed link parsing bug for ftp directory listings (tru64 bug)
- 1.22	D. changed the backgroundcolor of some components
- 1.22	D. changed font to Arial for most components
- 1.22	D. fixed NullPointer for remoteDir, too

- 1.21	D. fixed file specific downloadmanager icons
- 1.21	D. fixed a NullPointer when when deleting the last listed file
- 1.21	D. safe menu options are now saved
- 1.21	D. added menu options to change the look and feel
- 1.21	D. clear log with alt-1 now
- 1.21	D. doubleclick now opens html, rtf and plain files in a JEditorPane instead of transferring them (local dir only)
- 1.21	D. made Transfer an interface
- 1.21	D. fixed an ui refresh bug
- 1.21	D. made FilesystemConnection show transfers in the downloadmanager, too

- 1.20	D. remove some debug messages
- 1.20	D. stripped down included j2ssh version
- 1.20	D. selected files are now reselected if the listing has not changed but was refreshed
- 1.20	D. fixed NullPointers for resume, pause and stop on other connections than ftp
- 1.20	D. implemented filesizes and parts of permissions permissions for SFTp connections
- 1.20	D. SFTP connect bugfix

- 1.19	D. fixed some SFTP bugs and added debug messages, improved performance
- 1.19	D. fixed an ArrayIndexOutOfBoundsException in the downloadmanager
- 1.19	D. improved ui refreshing
- 1.19	D. stripped down included log4j version
- 1.19	D. added initial SFTP support

- 1.18	D. SMB connections do now use the download manager, too
- 1.18	D. changed display style for SMB connections
- 1.18	D. ftp specific buttons are now hidden for other connections
- 1.18	D. fixed chdir-bug, no longer entering denied directories in SMB and file connections
- 1.18	D. added multiple interface support for SMB connections
- 1.18	D. fixed SMB authentication support

- 1.17	D. removing classes dir per default to save space
- 1.17	D. added "clear log" to menu
- 1.17	D. improved performance of log display JTextArea
- 1.17	D. added debugRaw for Logger to support "fake" progress bars in log JTextArea
- 1.17	D. blocking for file and SMB io
- 1.17	D. fixed ".ls_out" transfer not hidden on windows
- 1.17	D. disable remote commands for non-ftp connections
- 1.17	D. added LAN browsing feature for SmbConnection
- 1.17	D. added full SMB (windows share) support (using jcifs.samba.org api)
- 1.17	D. fixed possible cdup() api bug

- 1.16	D. added icons for the downloadmanager
- 1.16	D. added status animation and did some ui polishing
- 1.16	D. implemented local to local directory transfer
- 1.16	D. remove obsolete pwd updates
- 1.16	D. fixed a parsing bug in StringUtils.isRelative()
- 1.16	D. changed labels to show current type of connection
- 1.16	D. added disconnect option so you can toggle between ftp- and fsconnections
- 1.16	D. added JMenuBar to have more space to add functionality
- 1.16	D. made the app 40px higher per default and changed icon arrangement a little bit
- 1.16	D. moved remote listing and transfer type to RemoteDir

- 1.15	D. added version information to window title
- 1.15	D. made windows version stable, too
- 1.15	GD. added enhanced run.bat and updated readme file
- 1.15	D. fixed a possible ls output parsing problem
- 1.15	D. java web start support

- 1.14	D. listing message is hidden now
- 1.14	D. moved AutoRemover functionality into local/remote dirs
- 1.14	D. fixed local remove selected bug on multiple selected files
- 1.14	D. fixed documentation code

- 1.13	D. fixed ZipEntry bug on no permission
- 1.13	D. fixed refresh spamming and NullPointers
- 1.13	D. fixed NullPointer when copy is called without a file selected
- 1.13	D. move more methods to util/StringUtils.java
- 1.13 	D. app has now 2 local dirs at startup
- 1.13	D. no need to establish a connection at startup anymore
- 1.13	D. local dir(s) are now using a FilesystemConnection for io
- 1.13	D. made an interface BasicConnection to replace FtpConnection and allow other connection types

- 1.12	D. disabled update feature per default (stalls too often)
- 1.12	D. added copy method to local dir
- 1.12	D. added ability to create zipfiles in local dir
- 1.12	D. changed icon type and arrangement for local and remote Dir
- 1.12	D. the first transfer is selected per default again
- 1.12	D. deleting of paused transfers is now possible again
- 1.12	D. changed refresh code and fixed ui glitches in the downloadmanager
- 1.12	D. added ConnectionListener localDir
- 1.12	D. FtpConnection does now support multiple ConnectionListeners
- 1.12	D. use default dir checkbox is now remembered, too.
- 1.12	D. made downloadmanager a little bit bigger
- 1.12	D. changed filesize type to long, added filesize for uploads
- 1.12	D. some gui code cleanups and reorganisation
- 1.12	D. split up DirPanel in LocalDir and RemoteDir

- 1.11	D. changed downloadmanager from JTextArea to nicer looking JList
- 1.11	D. event handling is now separate from the downloadmanager
- 1.11	D. added debug messages for update check, to see if the client stalls (happens occasionately)
- 1.11	D. fixed connection remove problem when transferring directories
- 1.11	D. added  Grapher.java (just a toy, but it could be modified to show how classes interact)

- 1.10	D. added actionFinished() to ConnectionListener
- 1.10 	D. fixed no local refresh on download bug
- 1.10	D. more api cleanups
- 1.10	D. directory transfers can now be stopped
- 1.10	D. directory  transfers are now shown a a single item in downloadmanager

- 1.09	D. fixed download manager pause, resume and delete bugs
- 1.09	D. beginning to change everything not needed by other classes to private access
- 1.09	D. implemented better bidirectional communication between application and connection
- 1.09 	D. ConnectionHandler is no longer static, so a handler per connection can be used
- 1.09	D. FtpConnection does event triggering directly now an no longer via ConnectionHandler

- 1.08	D. tried to fix ui NullPointer bugs (please look for them in the console and report them)
- 1.08	D. fixed remote directory creation bug (affected windows only)

- 1.07	D. fixed client crash bug when doing something while a connection was starting
- 1.07	D. updated TODO and documentation code
- 1.07	D. fixed icon for .tgz files
- 1.07	D. fixed some remote directory refreshing bugs
- 1.07	D. fixed local windows pathname recognition

- 1.06	D. cleaned up the tranfer handling code in FtpConnection
- 1.06	D. added multithread support for directories, too
- 1.06	D. some DownloadManager fixes
- 1.06 	D. fixed local directory refresh bug
- 1.06	D. single files are now uploaded multithreaded, too

- 1.05	D. fixed relative path name recognition for FtpConnection.upload() and FtpConnection.download()
- 1.05	D. changed offending debug message in FtpConnection and message in DataConnection

- 1.04	D. applied loen's remote directory deletion bugfix
- 1.04	D. fixed documentation code and added FtpUpload.java
- 1.04	D. added auto-update-download-routine (please check manually from time to time, it might be buggy)

- 1.03	D. add smart download routine - files smaller than Settings.smallSize (100kb default)  are now downloaded without a new connection
- 1.03	D. downloadmanager no longer refuses to resume downloads after queue is full (paused item included)
- 1.03	D. fixed some bugs for pause, resume and delete (sometimes wrong items were selected)
- 1.03	D. client no longer hangs when queueing more than 1 item
- 1.03	D. writable files are colored now, too
- 1.03 	D. to be able to view selections now the font is colored, not the background
- 1.03	D. fixed window location bug (window was moved some pixels after each restart)

- 1.02	D. added delay for DownloadList.updateList to increase performance and prevent bugs
- 1.02	D. fixed client crash when no permission to upload is granted
- 1.02	D. changed finished to failed for failed transfers
- 1.02	D. removing directories is fixed now
- 1.02	D. made some dirty bugfixes to prevent DirPanel NullPointers

- 1.01	D. fixed transfer multiple selected files bug (again)
- 1.01	D. fixed non-closeable info-window bug

- 1.00	D. made new connection and type toggle no longer work while app is blocked to prevent bugs
- 1.00	D. window size and position are now remembered correctly when closing via exit button
- 1.00	D. added "background reconnection" mode - if a server is busy the user can select to hide the windows and infinitely try to relogin
- 1.00	D. added console-message if property file is not found

- 1.0pre4	D. recursive download blocks again to prevent errors with local path change
- 1.0pre4	D. auto-reconnect to servers which are full - turn off Settings.reconnect if you don't like this
- 1.0pre4	D. fixed another DirPanel-NullPointer
- 1.0pre4	D. filesizes are now correct after changing cwd, too

- 1.0pre3	D. fixed possible crash on delete of queued items
- 1.0pre3	D. users can't try to download a single file twice a time any more
- 1.0pre3	D. fixed transferred byte count when resuming
- 1.0pre3	D. fixed ArrayIndexOutOfBoundsException when doing a cd ..
- 1.0pre3	D. implemented pause and resume in downloadmanager
- 1.0pre3	D. fixed put instead of get message when resuming

- 1.0pre2	D. disabled safeMode pre default, this should bring a small performance improvement (view readme)
- 1.0pre2	D. fixed some ui-nullpointers in DirPanel
- 1.0pre2	D. minor documentation updates
- 1.0pre2	D. disabled autoresuming in the api to prevent bugs (this does not affect the gui client, see 3.3 in the readme)
- 1.0pre2	D. fixed resuming bug reported by sandy - existing files are not auto-resumed any more to prevent resuming the wrong
			     file, added ResumeDialog class which asks for the desired action if a file does already exist
- 1.0pre2	D. renamed FtpConnection.setRemotePath() to chdir(), unparsed chdir is now chdirRaw()

- 1.0pre1 	D. add log window if a connection fails
- 1.0pre1 	D. fixed a few JConnection/FtpConnection NullPointers
- 1.0pre1	D. split DirPanel and made it extend a base class TransferComponent
- 1.0pre1  	D. cleaned DirPanel a little bit
- 1.0pre1 	S. if multiple files were selected only the first was downloaded due to DirPanel refresh, fixed now
- 1.0pre1 	S. fixed HostChooser-UI bug

- 0.99 	D. fixed example code and added build target "compiledoc"

- 0.98 	D. added queuing instead of blocking for multithreaded mode
- 0.98 	D. updated readme
- 0.98 	D. changed "cancel transfer" to just close the socket
- 0.98 	D. simplified clear and selection-method of downloadmanager
- 0.98 	D. made getPasvPort() like the rfc wants it
- 0.98 	D. made multiple parallel downloads default
- 0.98 	D. fixed url-support
- 0.98 	G. starts to add sftp support

- 0.97 	D. added rotate-method to toglle downloads
- 0.97 	D. moved clear downloads button into new created download toolbar
- 0.97 	D. downloads can now be cancelled in threaded mode

- 0.96 D. added some delays to prevent ui-nullpointers - very strange bugs
- 0.96 D. added command output window
- 0.96 D. changed queueing code and merged it with threading support
- 0.96 D. fixed serious multiple download bug
- 0.96 G. improved commandline client

- 0.95 D. added active mode fallback for servers not implementing pasv mode
- 0.95 D. added type L 8 mode to switching method
- 0.95 D. increased socket timeout
- 0.95 D. fixed bug which prevented the properties to be saved
- 0.95 D. added download output

- 0.94 D. added experimental multithreading support
- 0.94 D. local permissions are now colored, too
- 0.94 D. fixed a ls -laL parsing bug

- 0.93 D. support for VMS servers (directory listing style)
- 0.93 D. files the user has no permissions to download are marked red now
- 0.93 D. links are now resolved correctly
- 0.93 D. cleaned up the listing methods a little bit

- 0.92 D. small ui improvements for Creator, PathChanger and RemoteCommand
- 0.92 D. user can now change transfer mode
- 0.92 D. it is now possible to descend into directories represented by links
- 0.92 D. improved link detection
- 0.92 D. no longer freezes on a permission denied response

- 0.91 D. hitting enter in JPasswordField connects to server now
- 0.91 D. made some gui improvements
- 0.91 D. made passive ftp default again
- 0.91 D. fixed serious timeout bug in DataConnection

- 0.90 D. removed experimental status of active ftp

- 0.89 G. print out ftp commands being executed
- 0.89 G. initial checkin of simple ftp server (implements LANG rfc 2640)
- 0.89 G. fix JSplitPane to work better under Java 1.4

- 0.88 D. client may exit if no connection is wanted
- 0.88 B. gui improvements
- 0.88 B. clients no longer hangs after successful PORT cmd

- 0.87 D. made local setPath no longer get obsolete remote pwd
- 0.87 D. use JFileChooser for local directory changing
- 0.87 D. do remoteUpdate after remoteCmd
- 0.87 D. made size-logging timebased, doing better progress output
- 0.87 D. gathering better information about transferred bytes now
- 0.87 D. improved IO for uploading
- 0.87 D. fixed missing filesize-update for non-resumed downloads
- 0.87 D. made ui refresh while up/downloading

- 0.86 D. changed FtpConnection.up/download to be blocking, some
	  servers didn't work if commands were sent while a DataConnection
	  was open... (affected only downloads which took > a few seconds)

- 0.85 D. client does not open HostChooser again if login fails
- 0.85 D. login() in FtpConnection now returns a status message
- 0.85 D. added bashscript run for task below
- 0.85 D. jar can now take an URL as argument and launches this immediately
- 0.85 R. userdata is now in $HOME
- 0.85 R. improved FtpConnection
- 0.85 G. getOsType now uses SYST
- 0.85 G. added FtpURLConnection

- 0.84 D. changed LayoutManager for DirPanel, resizes now better
- 0.84 D. fixed refresh-problem
- 0.84 D. files are now sorted alphabetically in DirPanel
- 0.84 D. (re)implemented filesizes in ListModel
- 0.84 D. added image for cmdButton in DirPanel
- 0.84 D. set ftpPasvMode default to false (active mode testing)

- 0.83 D. fixed active mode ftp and added checkbox + property
- 0.83 D. some cleanups and documentation
- 0.83 D. created GUIDefaults, core api now no longer needs X
- 0.83 D. put localPath in FtpConnection
- 0.83 D. more net layer restructuring, can now be used standalone
- 0.83 D. moved control options to FtpConnection instead of Resource
- 0.83 D. restructuring of the net layer, introducing ConnectionHandler
- 0.83 T. added a new and nicer hostlist
- 0.83 D. fixed small setLocation() bug, changed JSplitPane sizes
- 0.83 G. config values can now be stored in a property file
- 0.83 G. reimplemented second JSplitPane
- 0.83 G. remember last window size and location

- 0.82 D. Displayer shows now the top of the file, not the end
- 0.82 D. reimplemented StatusCanvas
- 0.82 D. app now disconnects on exit or new connection
- 0.82 D. added "use default dirs" option to hostchooser
- 0.82 D. fixed nullpointerexception due to mousewheel-scrolling in dirpanel
- 0.82 D. speed improvement on file deletion
- 0.82 D. fixed paths for files in jar-file as Paul suggested
- 0.82 P. added invokeLater() jesktop-bugfix
- 0.82 D. fixed JSplitPane-resize-bug
- 0.82 D. do link parsing when deleting files, too
- 0.82 D. fixed delete selected bug
- 0.82 G. added JSplitPane
- 0.82 G. remembers window size

- 0.81 D. single delete button now removes all selected files/dirs
- 0.81 D. failed download no longer leaves a 0 byte file
- 0.81 D. FtpConnection can now use server-default as startup dir
- 0.81 D. put 2 options from net/Resource in config/Settings, minor cleanups
- 0.81 G. speed improvements for icon loading
- 0.81 G. io-improvements
- 0.81 G. buffersize in Settings, File.seperator is now used
- 0.81 D. removed jesktop-frimble.jar from cvs
- 0.81 D. put string methods from net/Resource to util/StringUtils
- 0.81 D. packaging (net.sf.jftp.*;)
- 0.81 D. (re)enabled hostlist on clean builds
- 0.81 D. changed default build to "jars", deprecation off
- 0.81 D. added real changelog
- 0.81 P. now using cvs
- 0.81 P. now using ant as build method

- 0.80 D. parse symlinks correctly if downloading
- 0.80 D. ability to view remote dir listings
- 0.80 D. fixed recursive permission denied bug

- 0.79 D. fixed relayout while loading
- 0.79 D. give output on console while loading
- 0.79 D. fixed nasty upload-bug

- 0.78 D. fixed nasty mp3-icon-crash bug
- 0.78 D. gui is now 100% swing
- 0.78 D. dataconnection uses now separate thread correctly

- 0.77 D. fixed some gui-bugs
- 0.77 D. jesktop-compatibility
- 0.77 D. uses now jar-file, getResource-updates
j-ftp/LICENSE0000755000175000017500000004325407431051114013646 0ustar  cdemoncdemon00000000000000                    GNU GENERAL PUBLIC LICENSE
                       Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.)  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.

  We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

  Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

  The precise terms and conditions for copying, distribution and
modification follow.

                    GNU GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.  The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language.  (Hereinafter, translation is included without limitation in
the term "modification".)  Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.

  1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.

You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.

  2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.

    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute the program under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if the Program itself is interactive but
    does not normally print such an announcement, your work based on
    the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable.  However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.

If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.

  5. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Program or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

  7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all.  For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded.  In such case, this License incorporates
the limitation as if written in the body of this License.

  9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

Each version is given a distinguishing version number.  If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation.  If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.

  10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission.  For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this.  Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.

                            NO WARRANTY

  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.

  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    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


Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:

    Gnomovision version 69, Copyright (C) year  name of author
    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary.  Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
  `Gnomovision' (which makes passes at compilers) written by James Hacker.

  <signature of Ty Coon>, 1 April 1989
  Ty Coon, President of Vice

This General Public License does not permit incorporating your program into
proprietary programs.  If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library.  If this is what you want to do, use the GNU Library General
Public License instead of this License.
j-ftp/TODO0000755000175000017500000000646610024132147013333 0ustar  cdemoncdemon00000000000000H		- bugs and feature requests submitted on sourceforge
		  (work still in progress, i won't list all of them here, but they aren't forgotten)

H		- implement timestamping to make up/download resuming safe

H		- reimplement symlink deletion support in a safe way for remote connections
		  (can't think of a safe way for ftp, yet)

HA		- make hostlist remeber the last few connections and make it work for other connection types
		  (a new interface is needed which can be extended or even adapts itself to handle diffent
		  connection informations - jake's working on that)

HF		- add ftp mget support (1 vote)
		  (i looked at it and it is an interesting feature)

H		- further enhance the GUI
		  (add rollover icons, more/custom background images, add more themes/skinlf to support other themes,
		  use more JInternalFrames where possible, make them use desktop layers, too,
		  add more functionality to the popup menus)

H		- add parameter checks for the api
		  (all given parameters for up/download/remove etc. should be plain files or dirs,
		  no relative or absolutet paths, so do a chdir before doing anything if you use the api
		  and want to be on the safe side)

M 		- popup for upload resuming

MB		- fix SFTP symlink support (1 vote)

M 		- improve NFS support
		  (mutithreading is not implemented yet
		  and it does not work with some servers - need debug info first)

MF		- enhance local and implement remote JFileChooser (1 vote)
		  (not that easy, i have to find a way to extend JFileChooser or
		  to write a new class)

MF		- add ssh shell to sftp connection
		  (i would find it useful to have a shell, too... maybe a third-party shell with telnet option, too...)

MU		- enhance downloadmanager support for SMB and SFTP and URL types
		  (it depends on the protocol if features  like resuming and multiple conenctions are supported.
		  some apis do not support resuming for example, for others it is imho not so important to have
		  it so i do not implement it until somebody needs it - SMB for example, because most connections
		  will be fast (lan) connections)

L		- enable all supported protocols on the address bar
		  (open urls ending with a / in the remote window, done for http/ftp)

LB		- remove log4j warning messages on ssh host key verifications connection
		  (j2ssh, initialize or delete log4j)




------------------------------------------------------------------------------------------------------

H	- high priority
M	- medium priority
L	- low priority

W	- lots of work
F	- future, not assigned yet
A	- already assigned

U	- not sure if, how or in what kind of way this will happen

C	- critical bug
B	- normal bug

--------------------------------------	Notes	------------------------------------------------


- the server you want to open is not yet supported? just fill out a feature request a we will see what we can do
- group permissions are not checked, it's possible that a file the user has access to is marked incorrect in very rare cases.
  you are able to download the file even if it's marked red in such a case, of course. if one or more hardlinks in a directory are
  missing this may cause the permissions not to be displayed due to malformed ls output, too
- Kunststoff is listed twice sometimes (seems not to be my fault)
- check windows-server-code (downloads.viaarena.com), VMS-server-code (rf1.cuis.edu)


j-ftp/build.xml0000755000175000017500000002105607755206615014477 0ustar  cdemoncdemon00000000000000<project name="J-FTP" default="jars" basedir=".">

  <!-- Load any local properties -->
  <property file="${user.home}/.ant.properties"/> 
  <property file="local.properties"/>

<!-- ========== Compiler Defaults ========================================= -->

  <!-- CVSROOT used by cruise control can checkout source code -->
  <property name="cvs.repository" value=":pserver:anonymous@cvs.j-ftp.sourceforge.net:/cvsroot/j-ftp"/>

  <!-- CVS Project for cruise control to check out --> 
  <property name="cvs.package" value="j-ftp"/>

  <!-- Should Java compilations set the 'debug' compiler option? -->
  <property name="compile.debug"           value="true"/>

  <!-- Should Java compilations set the 'deprecation' compiler option? -->
  <property name="compile.deprecation"     value="false"/>

  <!-- Should Java compilations set the 'optimize' compiler option? -->
  <property name="compile.optimize"        value="true"/>

  <!-- define this in local.properties to set it to a different value -->
  <property name="jftp.version"            value="0.00"/>

  <property name="junit.lib"               value="lib"/>
  <property name="junit.jar"               value="${junit.lib}/junit.jar"/>
  <property name="log4j.lib"               value="lib"/>
  <property name="log4j.jar"               value="${log4j.lib}/log4j.jar"/>

  <!-- Construct compile classpath -->
  <path id="compile.classpath">
    <pathelement location="build/classes"/>
    <pathelement location="${log4j.jar}"/>
    <pathelement location="lib/"/>
    <fileset dir="lib">
        <include name="*.jar"/>
    </fileset>
  </path>

    <!-- Construct doc compile classpath -->
  <path id="compile.docclasspath">
    <pathelement location="build/jars/jftp.jar"/>
    <pathelement location="${log4j.jar}"/>
    <pathelement location="lib/"/>
    <fileset dir="lib">
        <include name="*.jar"/>
    </fileset>
  </path>

<!-- ========== Executable Targets ======================================== -->

  <target name="prepare" depends="detect" description="Prepare build directory">
    <mkdir dir="build"/>
    <mkdir dir="doc"/>
    <mkdir dir="doc/javadoc"/>
    <mkdir dir="build/classes"/>
    <mkdir dir="build/jars"/>
  </target>

  <target name="compile" depends="prepare" description="Compile shareable components">
    <javac  srcdir="src/java"
           destdir="build/classes"
             debug="${compile.debug}"
       deprecation="${compile.deprecation}"
          optimize="${compile.optimize}">
      <classpath refid="compile.classpath"/>
      <exclude name="**/Log4JLogger.java" unless="log4j.present"/>
  </javac>
      <copy todir="build/classes">
      <fileset dir="lib">
        <include name="**/*"/>
      </fileset>
      </copy>
  </target>
  
  <target name="panel" depends="prepare" description="Compile Custom">
    <javac  srcdir="src/java/net/sf/jftp/gui"
           destdir="build/classes"
             debug="${compile.debug}"
       deprecation="${compile.deprecation}"
          optimize="${compile.optimize}">
      <classpath refid="compile.classpath"/>
      <include name="**/LocalDir.java"/>
  </javac>       
  </target>
  
  <target name="compiledoc" depends="prepare" description="Compile doc components">
    <javac  srcdir="doc/"
           destdir="build/classes"
             debug="${compile.debug}"
       deprecation="${compile.deprecation}"
          optimize="${compile.optimize}">
      <classpath refid="compile.docclasspath"/>
      <exclude name="**/Log4JLogger.java" unless="log4j.present"/>
    </javac>       
  </target>

  <target name="javadoc" description="Generate JavaDoc" depends="prepare">
    <javadoc packagenames="net.sf.jftp.*" sourcepath="src/java"
            defaultexcludes="yes" destdir="doc/javadoc" author="true"
            version="true" windowtitle="JFtp"/>
  </target>

  <target name="run" description="Run the JFTP Command" depends="compile,jars">
      <!-- this will execute the jtfp program in the build directory
      I figured this would be best because we could execute from the
      classes or the jar and still get our host list -->
    <java dir="build" jar="build/jars/jftp.jar" fork="true"/>
  </target>

  <target name="clean" description="Clean build and distribution directories">
    <!-- Delete the two directories for compiled code
        the cfg settings are in the build/cfg directory
        so they won't be lost -->
    <delete dir="build/jars"/>
    <delete dir="build/classes"/>
  </target>

  <target name="jars" depends="compile" description="Create Executable Jar">
    <jar compress="true" jarfile="build/jars/jftp.jar"
            basedir="build/classes"
            manifest="src/meta-inf/manifest.mf">
      <zipfileset dir="src/images/" prefix="images">
        <include name="**"/>
      </zipfileset>
      <zipfileset dir="." prefix="docs">
        <include name="readme"/>
        <include name="CHANGELOG"/>
        <include name="TODO"/>
        <include name="doc/nfsinfo"/>
      </zipfileset>
      <zipfileset dir="src/xml/" prefix="JESKTOP-INF">
        <include name="*.xml"/>
      </zipfileset>
      <zipfileset dir="src/resources/">
        <include name="*.properties"/>
      </zipfileset>
    </jar>
  </target>

  <target name="signjar">
    <signjar alias="cdemon" jar="build/jars/jftp.jar"
     keystore="../cdemon" storepass="keytool!"/>
    <delete dir="build/classes"/>
  </target>
  
  <!-- Completely build all dists -->
  <target name="dist" depends="jars, signjar" description="Generates J-Ftp downloadables">
    <mkdir dir="dist"/>

    <copy todir="dist">
      <fileset dir="build/jars">
        <include name="*.jar"/>
      </fileset>
    </copy>

    <patternset id="jftp.source">
       <include name="src/**"/>
       <include name="lib/*"/>
       <include name="build.xml"/>
       <include name="readme"/>
    </patternset>

    <zip zipfile="dist/jftp-${jftp.version}-src.zip">
      <fileset dir=".">
        <patternset refid="jftp.source"/> 
      </fileset>
    </zip>         

    <tar longfile="gnu" tarfile="dist/jftp-${jftp.version}-src.tar" >
      <tarfileset dir="." username="jftp" group="jftp">
        <patternset refid="jftp.source"/> 
      </tarfileset>
    </tar>

    <gzip zipfile="dist/jftp-${jftp.version}-src.tar.gz"
          src="dist/jftp-${jftp.version}-src.tar"/>
    <delete file="dist/jftp-${jftp.version}-src.tar"/>
  </target>

  <target name="detect" depends="detect.display"
   description="Display configuration and conditional compilation flags">
  </target>

  <target name="detect.display">
    <available property="log4j.present" classname="org.apache.log4j.Category" classpath="${log4j.jar}" />
    <available property="junit.present" classname="junit.framework.TestCase" classpath="${junit.jar}" />
    <echo message="+-------------------------------------------------------" />
    <echo message="| Build environment for ${ant.project.name} ${jftp.version}" />
    <echo message="| " />
    <echo message="| Note: " />
    <echo message="|   If ${property.name} is displayed for a library " />
    <echo message="|   instead of 'true', that library is not present." />
    <echo message="+-------------------------------------------------------" />
    <echo message="" />
    <echo message="Environment:" />
    <echo message="  Java home                     ${java.home}" />
    <echo message="  Java version                  ${ant.java.version}" />
    <echo message="  Ant version                   ${ant.version}" />
    <echo message="  Compiler type                 ${build.compiler}" />
    <echo message="" />
    <echo message="Build options:" />
    <echo message="  Generate debugging info       ${compile.debug}" />
    <echo message="  Display deprecation info      ${compile.deprecation}" />
    <echo message="  Optimize                      ${compile.optimize}" />
    <echo message="" />
    <echo message="Optional libraries:" />
    <echo message="  JUnit                         ${junit.present}" />
    <echo message="  Log4J                         ${log4j.present}" />
    <echo message="" />
    <echo message="Library locations:" />
    <echo message="  JUnit jar                     ${junit.jar}" />
    <echo message="  Log4J jar                     ${log4j.jar}" />
  </target>

<!-- ========== Cruise Control (Continuous Integration) tasks ============= -->
  <target name="checkout" description="Update package from CVS">
    <cvs cvsroot="${cvs.repository}" package="${cvs.package}" dest=".."/>
  </target>

  <target name="masterbuild" depends="checkout, compile, jars, javadoc" description="Cruise control master build"/>

  <target name="cleanbuild" depends="clean, masterbuild" description="Cruise control clean build"/>
</project>
j-ftp/readme0000755000175000017500000003025110026323533014013 0ustar  cdemoncdemon00000000000000Last update: 03/18/2004 15:00 CET  --- >1.42<

--------------------------------------------------------------------------------

>>>	Contents	<<<

1. Setup
	1.1	How do i run JFtp?
	1.2 	What about compiling?
	1.3	Updates
	1.4	Compatibility
	1.5.	Why do you use so many other APIs?
	1.6	What is this Kunststoff theme?

2. Features
	2.1	General features
	2.2	Multiple parallel downloads
	2.3	You do not support the ??? command!
	2.4	SMB specific info

3. Tweaking / Bugs
	3.1	Changing options in Settings.java
	3.2	I found a bug!
	3.3	I see no icons!
	3.4.	Tips and tricks

4. The team
	4.1 	Wo is involved in this project?
	4.2	Submitting patches
	4.3	Hompage

5. API License
	5.1	Using the API in your own applications
	5.2	Use in commercial products
	5.3. Why money? Why don't you use a BSD style license?

--------------------------------------------------------------------------------

			         --- NOTICE ---

	Enhanced versions are released quickly after coding, so please report
	bugs to j-ftp-devel@lists.sourceforge.net if you encounter them... :)

--------------------------------------------------------------------------------

1.1 How do i run JFtp?

	Unpack the .tar.gz to a java conform path (no exclamation mark, tab etc)

        To start JFtp just call "run" (*nix) or "run.bat" (Windows/DOS).
	Alternatively type "java -jar jftp.jar" in build/jars/

	You can also add a command-line url, for example:
		java -jar jftp.jar "anonymous:test@ftp://ftp.kernel.org/pub"
	or	run.bat "anonymous:test@ftp://ftp.kernel.org/pub"

1.2 What about compiling?

	JFtp is already compiled if you have downloaded it in a .tar.gz. 
	Recompile using "ant clean" and "ant" in j-ftp/ - of course you'll 
	need the ant tools installed.
	
1.3 Updates

	If we have important changes we usually release immendiately. Sometimes 
	we release a few versions a week, sometimes the developement stalls for 
	some time. Anyway, our cvsroot is
	CVSROOT=:pserver:anonymous@cvs.j-ftp.sourceforge.net:/cvsroot/j-ftp

	NOTE: CVS is no longer used atm. This is because i can handle applying
	patches much better this way. If there is need for CVS i'll set it up again,
	but for the moment please get release-sources or mail me if you want to
	get my current prerelease code.

	Binary prereleases are usually available via Java Web Start.

	If you found a critical bug, please mail it (see 3.2 for instructions).
	We'll try to fix it asap.
	
1.4 Compatibility

	JFtp should work with all platforms. However, i'm not able to test it 
	under different platforms often, so it may run less stable there than with linux.

1.5  Embedded APIs

	All APIs used by JFtp that are not written by myself and the other project members
	have a free (GPL/LGPL) license. These include:

	- jcifs for the SMB protocol, very nice API.

	- j2ssh for SFTP, a rather big but very good API.

	- webnfs for NFS, downloaded from Sun Microsystems, it took me a while to get things working
	              because there was just a small subset of NFS info in the javadoc and not that much demos.
		      But the API itselfs rocks, too - it is fast, stable and more than just a NFS API, but a
		      replacement for the File class with network support.

1.5	The Kunststoff theme...

	...is licensed under the LGPL and comes from http://www.incors.org/
	Much better even than swing in my opinion... :)
	
--------------------------------------------------------------------------------
	
2.1 General features

	JFtp is a multi-platform, multi-protocol network browser.

	It started as a ftp client with its own api and has grown to support
	file, ftp, smb, http, sftp, nfs and raw tcp/ip connections using standard or 3rd-party apis.

	Some words about the ftp features:

	It can up- and download directories recursively, resume ftp up- and downloads automatically, has a
	download manager and a nice swing ui. Active and passive mode ftp are supported and the parsing
	of the directory listings is very robust. You can also ftp mutithreaded, which means that you can browse
	the server and transfer files/dirs at the same time (see "Multiple parallel transfers" below).

2.2 Multiple parallel transfers

	Use multiple connections parallel to save time, for example if a server
	has a bandwith limit. If a server allows only one connection at a time 
	you'll have to uncheck "Multiple Conenctions", though. You can increase 
	the number of parallel connections manually when initiating a 
	connection. Passive ftp is recommended because multiple connections do 
	not work with active ftp. 

2.3 You do not support the ??? command!
	
	Use "Execute remote command" if you have to use commands not implemented
	directly in JFtp, such as changing permissions of files. If it would 
	make sense to add support directly, send a mail to the mailing list 
	and/or write a feature request on our sourceforge-site. :-)

2.4 SMB specific info

	Note that if you have multiple network cards and get an error messag containing MSBROWSE
	when browsing the lan this probably happens because the wrong adapter is chosen.
	You have to temporaryly disable the other card and restart to use this feature atm, since the is no fix yet.

--------------------------------------------------------------------------------
	
3.1 Changing options in Settings.java

        If you want to activate some other options just edit src/Settings.java
        and recompile using "ant" in j-ftp/ - get the latest version from cvs:
        CVSROOT=:pserver:anonymous@cvs.j-ftp.sourceforge.net:/cvsroot/j-ftp

	Notes: There are some interesting options you can manually tweak in
	Settings.java.	You need to recompile, of course...

	>>> uiRefresh
		 minimal amount of time between ui refreshes caused by JFtp.log().
		 500 milliseconds seem like a safe default, but if you recompile you
		 probably want to play with this.

	>>> enableMultiThreading
		uses different threads and connections so you can browse the 
		server while up- and/or downloading (single files, not 
		directories). Does not work on servers with a limit of 
		connections per user, but for servers supporting it you should 
		set this to true (can be set via gui, too).
	
	>>> noUploadMultiThreading 
		do not use different connections for uploads.

	>>> maxConnections
		use up to this many connections to up- and download.
	
	>>> smallSize
		if file is smaller than this it will be downloaded using the 
		normal control connection, this results in a faster transfer 
		blocking, but most times even faster than the initial blocking 
		when forking a download.
	
	>>> smallSizeUp
		same as above for uploads.
	
	>>> enableResuming
		false for the API (overwrite default), overridden to true by
		JFtp.

	>>> enableUploadResuming
		default: true
	
	>>> askToResume
		change this to false if you don't want any messages, but note 
		that if you have an older but smaller file you probably don't 
		want it to be autoresumed

	>>> connectionTimeout
		timeout for a connection to a server, default should be ok.
	
	>>> hideStatus
		if true some unimportant messages are hidden, default is false.
	
	>>> cachePass
		set this to false if you do not want your passwords to be saved.
	
	>>> safeMode
		sends some NOOPs to clear buffers, should be obsolete.
	
	>>> autoUpdate
		checks for new versions, but might not work sometimes.
	
	>>> defaultFtpPasvMode
		leave this true if you do not need active FTP. Passive FTP is 
		more firewall-friedly, and if it is not supported by the server 
		switches the app automatically.
	
	>>> bufferSize
		every n bytes recieved data is written on disk and a 
		statusmessage is sent to the downloadmanager. If you set this 
		too high and have a slow connection you'll get outdated status 
		in the downloadmanager, if you set it too low you'll waste 
		cpu power.

	>>> refreshDelay
		time in milliseconds bettween downloadmanager UI refreshes. 
		Increase this if the JList flickers often (default 500).

3.2 I found a bug!

	We need your help to improve JFtp. We cannot test every type of server 
	around with every option turned on/off every time we do a release. So 
	if you find an error, please mail me (hansmann.d@debitel.net) and/or the
	mailing list (j-ftp-devel@lists.sourceforge.net) and tell us about it. 
	Please include the server ip you we're trying to access and the 
	stacktrace of the exception (if you got one). 
	Please visit the sourceforge project page and fill out a bug report, too. 


3.3 I see no icons!

	If the application starts, but you cannot see any icons, you probably
	installed JFtp in a path that is not java conform. Remove all special
	characters like exclamation mark, tab, etc. and try again.

3.4 Tips and tricks

	- Check the shortcuts already present, if you are annoyed by log messages
	   and finished transfers. Just press "Alt-1" and "Alt-2" to clear log and
	   download manager.

	- Check the address bar. If you put a FTP-URL pointing to a file it will be downloaded
	   instantly using the (minimalistic) Java FTP protocol implementation, mostly because I want
	   to have an alternative if some code is broken in the API.
	   If a URL pointing to a directory is given it will be opened in a remote window using
	   the JFtp API.

	- Check the queueing system. It resumes aborted downloads automatically and does work really
	  good if you want to download huge files without haveing to check wheter they have been aborted by the
	  server every ten minutes. Tip: Add files to the queue, disconnect and then start the queued downloads
	  if the server does not support multiple connections.

--------------------------------------------------------------------------------

4.1 Wo is involved in this project?

        People involved:
        - David Hansmann <mailto:hansmann.d@debitel.net>
	
	- Jake Kasprzak <jolt@radioheart.com>
        - Ron Broberg <mailto:ronbroberg@yahoo.com>
        - Paul Hammant <mailto:Paul_Hammant@yahoo.com>
        - Gary Wong
        - Ricardo Kustner
        - Bas Cancrinus <mailto:bas@cipherware.com>
        - Daniele Panozzo <mailto:daniele@panozzo.191.it>
        - Sandy McGuffog <mailto:mcguffog@ieee.org>
        - Leon Stringer

        Icons:
        - Copyright(C) 1998 by Dean S. Jones
        - Source: jfa.javalobby.com
        - Author: dean@gallant.com


4.2 Submitting patches

	If you are using JFtp and are able to fix bugs you find yourself, please
	consider to do this. A patch is applied quickly, and often i am not able
	to even find the bugs reported. If you want  you can have a cvs access
	and modify whatever you want. This is a free project... but if you contribute code
	to the FTP API you have to accept that i may sell commercial licenses / support for it.

	And yes, the project will remain GPL/open source!


4.3 Homepage

	Visit us at

	http://j-ftp.sourceforge.net -> Homepage, Java Web Start link

	http://www.sourceforge.net/projects/j-ftp -> Sourceforge project page

--------------------------------------------------------------------------------


5.1 Using the API in your own applications

	You can use the API in your own applications. Simply add jftp.jar to
	your classpath and import the packages net.sf.jftp.net, .util and
	.config and use the FtpConnection class to transfer files.

	Note that the license is GPL per default, but I may grant you a less restrictive
	license (see below).

	Take a look at doc/FtpDownload.java. Please note that resuming is
	*disabled* per default (in the api) and local files are overwritten if
	they exist. This behaviour is necessary since there is no proof the part
	of the file is equal to the remote file. You can change
	Setting.enableResuming to enable it, but you need to check the files
	manually (if they are smaller than the remote file).

	If you want to use advanced features of the API, such as progress
	updates for example, you'll have to read the source (it's very difficult
	to maintain a lot of documentation code if you still change to API, so
	there's not much doc) or to mail us your questions.


5.2	Commercial use of the FTP API

	The JFtp API is GPL, if you want to get another license, please contact me
	via mail or the mailing list. This will cost you money, but you'll get support, bugfixes
	and new features implemented if you want. There is already a commerical API package
	which is threatened more conservatively and much smaller in size.


		Have a lot of fun...

		David Hansmann, JFtp project maintainer
		hansmann.d@debitel.net



j-ftp/run0000755000175000017500000000020407636453134013373 0ustar  cdemoncdemon00000000000000#!/bin/bash

dir=`dirname $0`
cd $dir/build

if test -z "$1" ; then
	java -jar jars/jftp.jar
else
	java -jar jars/jftp.jar "$1"
fi

j-ftp/lib/0002755000175000017500000000000007705242060013404 5ustar  cdemoncdemon00000000000000j-ftp/lib/CVS/0002755000175000017500000000000007636636373014060 5ustar  cdemoncdemon00000000000000j-ftp/lib/CVS/Root0000755000175000017500000000006507636636373014730 0ustar  cdemoncdemon00000000000000:ext:cdemon@cvs.j-ftp.sourceforge.net:/cvsroot/j-ftp
j-ftp/lib/CVS/Repository0000755000175000017500000000001207636636373016154 0ustar  cdemoncdemon00000000000000j-ftp/lib
j-ftp/lib/CVS/Entries0000755000175000017500000000000207636636373015405 0ustar  cdemoncdemon00000000000000D
j-ftp/lib/jcifs/0002755000175000017500000000000007705242031014500 5ustar  cdemoncdemon00000000000000j-ftp/lib/jcifs/netbios/0002755000175000017500000000000007705242031016143 5ustar  cdemoncdemon00000000000000j-ftp/lib/jcifs/netbios/NbtAddress$CacheEntry.class0000644000175000017500000000117507705242031023237 0ustar  cdemoncdemon00000000000000-!
			hostNameLjcifs/netbios/Name;addressLjcifs/netbios/NbtAddress;
expirationJ<init>2(Ljcifs/netbios/Name;Ljcifs/netbios/NbtAddress;J)VCodeLineNumberTableLocalVariableTablethis
CacheEntryInnerClasses%Ljcifs/netbios/NbtAddress$CacheEntry;
SourceFileNbtAddress.java
	
 #jcifs/netbios/NbtAddress$CacheEntryjava/lang/Object()Vjcifs/netbios/NbtAddress0	

l**+*,*!	*	

j-ftp/lib/jcifs/netbios/NbtAddress.class0000644000175000017500000002456307705242031021233 0ustar  cdemoncdemon00000000000000-	

	
U

U		
		,		Y
	,


Y		



,
	
U
h
U
h	






,
 
!"
#	$
%
&
Y'
()
7*+
7,
,-	,./0
7
1
2
h*	3	4	5	6	7	8	9	:	;	,<	=>
?
@
A
7BC	DE
U*F
GHI
Y*J	YK
LM
GN
OPQ
RS@oT
UV
CacheEntryInnerClassesANY_HOSTS_NAMELjava/lang/String;
ConstantValueWMASTER_BROWSER_NAMEXSMBSERVER_NAMEB_NODEIP_NODEM_NODEH_NODEDEFAULT_CACHE_POLICYFOREVERcachePolicyaddressCacheLjava/util/Hashtable;lookupTableunknownNameLjcifs/netbios/Name;unknownAddressLjcifs/netbios/NbtAddress;unknownMacAddress[Bclient!Ljcifs/netbios/NameServiceClient;	localhosthostNameaddressnodeType	groupNameZisBeingDeletedisInConflictisActiveisPermanentisDataFromNodeStatus
macAddress
calledNamecacheAddress1(Ljcifs/netbios/Name;Ljcifs/netbios/NbtAddress;)VCodeLineNumberTableLocalVariableTableaddr
expirationJ2(Ljcifs/netbios/Name;Ljcifs/netbios/NbtAddress;J)Ventry%Ljcifs/netbios/NbtAddress$CacheEntry;cacheAddressArray([Ljcifs/netbios/NbtAddress;)Vaddrsjcifs/netbios/NbtAddress;igetCachedAddress0(Ljcifs/netbios/Name;)Ljcifs/netbios/NbtAddress;doNameQueryF(Ljcifs/netbios/Name;Ljava/net/InetAddress;)Ljcifs/netbios/NbtAddress;namesvrLjava/net/InetAddress;uheLjava/net/UnknownHostException;
ExceptionscheckLookupTable((Ljcifs/netbios/Name;)Ljava/lang/Object;objLjava/lang/Object;e Ljava/lang/InterruptedException;updateLookupTable(Ljcifs/netbios/Name;)VgetLocalHost()Ljcifs/netbios/NbtAddress;	getByName.(Ljava/lang/String;)Ljcifs/netbios/NbtAddress;hostA(Ljava/lang/String;ILjava/lang/String;)Ljcifs/netbios/NbtAddress;typescopeW(Ljava/lang/String;ILjava/lang/String;Ljava/net/InetAddress;)Ljcifs/netbios/NbtAddress;IPhitDotsdata[CcCbgetAllByAddress/(Ljava/lang/String;)[Ljcifs/netbios/NbtAddress;B(Ljava/lang/String;ILjava/lang/String;)[Ljcifs/netbios/NbtAddress;7(Ljcifs/netbios/NbtAddress;)[Ljcifs/netbios/NbtAddress;<init>(Ljcifs/netbios/Name;IZI)Vthis (Ljcifs/netbios/Name;IZIZZZZ[B)VfirstCalledName()Ljava/lang/String;lendotsnextCalledName	checkData()VcheckNodeStatusDataisGroupAddress()ZgetNodeType()I
getMacAddress()[BgetHostName
getAddressgetInetAddress()Ljava/net/InetAddress;getHostAddressgetNameTypehashCodeequals(Ljava/lang/Object;)ZtoString<clinit>localInetAddress
localHostname	localName
SourceFileNbtAddress.javasYZ[\]#jcifs/netbios/NbtAddress$CacheEntry^_name service address cache`abcsdefsjcifs/netbios/NbtAddressjava/net/UnknownHostExceptionghijava/lang/InterruptedExceptionj]klmnopqrjcifs/netbios/Namestu.vwxjava/lang/StringBufferno name with type 0xyz{|l with no scope with scope 
 for host ssll*SMBSERVER     }y~/java/util/Hashtablejcifs.netbios.cachePolicyjcifs/netbios/NameServiceClient0.0.0.0jcifs.netbios.hostnameJCIFS_jcifs.netbios.scopejava/lang/Object*__MSBROWSE__java/lang/SystemcurrentTimeMillis()Jget&(Ljava/lang/Object;)Ljava/lang/Object;put8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;jcifs/netbios/LogprintAddressCache*(Ljava/lang/String;Ljava/util/Hashtable;)VhexCodebaddrjava/net/InetAddresssrcHashCode(Ljava/lang/String;)VcontainsKeywaitremove	notifyAlljava/lang/StringlengthcharAt(I)Cjava/lang/CharacterisDigit(C)Z((Ljava/lang/String;ILjava/lang/String;)VtoCharArray()[CendsWith(Ljava/lang/String;)Z
getNodeStatusappend,(Ljava/lang/String;)Ljava/lang/StringBuffer;
toHexChars(I)Ljava/lang/String;*(Ljava/lang/String;)Ljava/net/InetAddress;(I)Ljava/lang/StringBuffer;jcifs/ConfiggetInt(Ljava/lang/String;I)IladdrgetProperty8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;java/lang/Mathrandom()D1hklmnolmpqlmNrsmtusmvwsmxysmz{sm|}sm~sssl$|&AhaA*+ % &&\:²*:Y*+ 	:*
W+ 
ç:SS2 ,9?EM[*\\\2(@ha@N-6T*2:+Y*2*2	:*2
W*2*
-ç
:-%F%+=BWj	s
y
*(cs=<KL+²*M,,,	M,
,N+-:+DD"13DK+
}*+
L*+
+*M,>*YM2*+M#NM::*,*,Y*,9BH9SS>"
#%$&)(--9/B0H1M2S3b4h8o9{;*}})TI
eM,²* **
WN,-!N* ,ç
:,*L+N-²**
W-ç
:-+%("88N\\:ABCDH%I)F3L?MDNHONPWQcT eD!)
aL+²*#W$+çM+,WXYZ[	%e	1*&tl	F*,' lsl	
*
*()**+,Y*,--.66*/:6460
9,Y*,--.6	B0
9,Y*,--.	
h`0d6	46.	,Y*,--.x	`6d*01,Y*,--.Y23r),/5;BP_besf
lsl,s/s58sBbms		4
*&4
l	H
*,&4 
l
s
l	w*5L+6+LY7Y89:*;:*<*<(=7Y8>:*<:?:@:*A:? wh*B*+*C*D*E	4ss
=*B*+*C*D*E*F*G*H*I*	J*K2%	&'()*%++,1-7.</f
===s==s=====	**LM*M*+WY><*M(=*M/:**NM)4.	4+ʧ*	*NM*MB79=>%?.@1A;CADDFRGUHX@mKyLO4Ms%EsNs.<*M*L*NMm*MN_*5L*+=+2 
+2L+*K*M*L	M*M*M*M psJSTU Y(Z4[9\G]Q[Z`\acehfphsiyj|lo*(Q6&stB*2*4W
?
*K*4W
7	*O*D
	7	*O*E
	7	*P*F
	7	*P*G
	7	*P*H
	7	*P*I
	7	*P*J
	]*O	L*A*L
?L+*C|~T+*C|~T+*C|~T+*C~T+"1	=
?;2*AQ{Q7Y8*C|~R0:*C|~R0:*C|~R0:*C|~R?Q2*'/*C2S+++C*C<K!7Y8*:S:*A:?E!YTYTYTYTYTYTTUYVUYVWXYYZ,Y[-2Y232Y2	
W\K*]KN^_L+
+(D*`N7Y8a:-3~Rb:-3~Rb:cdk;:?L,Y+f_-MY,*Tg%,%R)3=GUe
4~l"<j
ij-ftp/lib/jcifs/netbios/Name.class000064400017