WARNING: This is (still) a BETA Version !!! Use at own risk !!! Hello, This is Release 0.564 of YFtp. Look at the end of this file to see what's new. YFtp is a graphical FTP-Client. Some of its features include: - Yftp now supports term ! (in a seperate binary release, see below !) - filesize in the browser. - a persistent directory cache, that lasts between sessions - automatic reconnect after lost connection - reget !! - directories and README's have higher priority than filetransfers (filetransfers are interrupted, when these have to be transferred) - U can set a default dir for every ftphost (e.g. /pub/next) - Only directories that have been modified are retransferred, when the cache times out. - NEW: A Services menu entry !! For example, if Jolly writes in comp.sys.next.announce about his new toy: "This program can be found on ftp.informatik.uni-muenchen.de in /pub/comp/platforms/next/Tools/workspace/FastConsole.0.02.NIH.bs.tar.gz " just: - select that line - choose from the menu Services->Yftp->Get and Yftp will login to that host, get the file and you can try it out :) - several other nice stuff, which is too small to mention here Changes since 0.447 - Processes Panel shows the queue of transfers - Kill Button to Abort the current transfer - "ask for password" option when doubleclicking host Bugs fixed since 0.447 - crashes when downloading many files at once - NLST failed - rereading large directories caused it to crash - crash when "timeout (900 seconds): closing control connection." Some of the non-features (or not-yet-features) are: - interrupting filetransfers sometimes doesn't work (hell knows why) - Still no nice preferences. - Still no 'put file' How to use: After you start the program, you see a list of default ftphosts. You can add hosts to the list, remove and rename them, and, most important, login to them :) (You can login to as many hosts as you want at the same time, but if you login to the same host more than once, the display isn't updated correctly. Have to fix that. And please, don't start Yftp twice ! You may corrupt your cache and configuration data if you do) Clicking login brings up a login panel. Here you can enter the userid and password, you want to use for the ftp transfer. Password is entered invisible. Or you can just use the default setting, which is "ftp" for the username, and "yourusername@" for the password. You can also change the default login for this host. Please remember, that the default password you set is stored unencrypted on disk, which is generally not a good idea. The password you enter for login (not the dafult) isn't stored anywhere. (at least, that's what I tell you :) If you don't trust me, look at the source) After this you get a window with a big browser in it. In the statusline, you will probably see something like "Connecting to xxx.xxx.xxx.xxx". After Yftp has connected to the ftpserver and logged in successfully, it transfers the root directory and displays it. You can now browse through the whole directory structure of the server. Every directory is only transferred once, and then put into the cache. There are three different arrows that indicate directories: thin black : you have never visited this directory before, it will be transferred, when you select it. normal NeXT arrow : this dir is already in the cache, nothing will be transferred, when you click on it. double arrow : this dir is already in the cache, but probably out of date, so it will be retransferred when clicked. In addition there can be two icons in front of every file. The gray square one means, this file is in the queue of those to be transferred, and the round one means, this file is new or has changed (after a cache refresh). This is very useful with the 2_WEEKS_NEW directory on peanuts :) If you doubleclick a file, it will be copied to the local harddisk, and "open"ed afterwards. If you select one or more files, and then press GET, the files will only be copied, but not opened. If you doubleclick directories, they will be transferred, whether they are in the cache or not. Directories (and files with README in its name) have generally priority over normal files. When a filetransfer is in progress, and directory should be listed, the transfer is interrupted, and resumed afterwards. MainMenu: "set local path" allows you to choose a local directory, where the ftp files are saved. "set remote path" remembers the current remote working directory, so when you later connect to that same host again, you will end up in the same directory. Other odd stuff: When the connection somehow breaks, or is lost, YFtp tries to reconnect and resume the filetransfer. (up to three times) The double arrow (for directories) actually represents two cache states. It appears after the cache date for the directory times out (which is defined by UPDATETIMEOUT in FtpDirectory.m and is currently set to three hours) This doesn't mean, that the whole directory is retransferred every three hours ! First the modification date of the remote dir is compared to the one in the cache, and only when they differ, its acually transferred. (because the modification date is only accurate to the minute, it can happen, that you miss modifications that appeared directly after you transferred the directory. If you think this happened, you can manually retransfer it. In any case, a directory is automatically retransferred after 2 weeks (FORCEDUPDATETIMEOUT)). Services and such: When you use the Services Get command, Yftp tries to find out what file and hostname you want in the following way: First it tries the kind used by WWW, URL like "ftp://ftp.next.com/pub/NextAnswers", then it tries the old form most people use, like "ftp.uu.net:/pub/linux" and then it looks for filename and hostname seperately just somewhere in the text. Dont rely on Yftp to figure out for you what you want, select as few text as possible, the parser is actually very stupid and creates funny hostnames, when presented with too strange texts. Term: If you want term support, you either have to recompile the application with term enabled (see below) or email me. It's not compiled in anymore, because most people don't need it, and it makes the distribution a lot bigger. I have been told, It_Just_Works(TM). It shouldn't break anything for people who don't have term. But I have seen some strange crashes, and I don't know why. I assume term isn't threadsafe, but I don't know about it. The term people didn't answer my question till now, so if anybody would like to investigate this any further, I would appreciate it. Compilation: The newest version of Yftp can always be found on ftp.cis.uni-muenchen.de:/pub/yoda/. If you want to compile Yftp for yourself, you need MiscKit and term(optional) installed. MiscKit is available on: cs.orst.edu:/pub/next/sources/objects/MiscKit1.2.6.tar.gz sonata.cc.purdue.edu:/pub/next/submissions/MiscKit1.2.6.tar.gz ftp.et.byu.edu:/pub/next/misckit/MiscKit1.2.6.tar.gz ftp.informatik.uni-muenchen.de: /pub/comp/platforms/next/Developer/objc/misckit/MiscKit1.2.6.s.tar.gz or whatever version is the newest. Yftp now uses term. If you want to compile with term, you have to change two things: - define TERM in FtpSubThread.m - add the libtermnet.a library to the project. Thanks to (in no specific order): Scott Hess for DirPanel Jayson Adams for NiftyMatrix NeXT for making this wonderful black computer and then dropping it somebody unknown on the net for the icon Trey Matteson(NeXT) for the Graph example Gatorftp for making me want to write this program Gene Roddenberry for Star Trek Jolly and other people on the net for suggestions and help Don Yacktman and all the other people for MiscKit (esp. MiscCircularSlider) soon H. Scott Roy for IconKit :-) My Mother for being there And all other intelligent lifeforms in the galaxy (are there any ?) And: If you have any comments, suggestions, bug reports, or unused 100$ bills flying around, they are greatly appreciated !! Have fun, and may the force be with you ! yoda@cis.uni-muenchen.de (Marc Guenther) --------- CHANGES LOG: 1.2.94 - I received my first remote directory listing !!! :) 15.2 - can transfer files now 16.2 - added cache - added HostPanel 17.2 - added LoginPanel 18.2 - added DefaultLoginPanel - NiftyMatrix now works 23.2 - added setting of localpath 24.2 - added default localpath 25.2 - added alphachannel to icons 26.2 - multiple slections now work 27.2 - cleaned up socket code, now reconnects, when connection closes - transferred files are shown 28.2 First RELEASE 0.150 12.3 minor bug fixes: - localpath wasnt saved correctly (forgot to rename all the variables after doing a copy paste :) - now doing ls -FLLL instead of ls -F to resolve symbolic links in the ftpserver (there are 3 L's coz peanuts is using a modified ls that resolves only directories, but not files. This is the behaviour I would need on all servers !!) 20.3 minor bug fixes: - didnt reconnect when getting a directory - crashed, when a file became a directory on the server --> RELEASE 0.157 19.8 (Uh, has been a long time, eh :) - Now has a progress indicator (finally) - And you now can see the filesize (but only AFTER you started transferring the file, heh) :( - uses MiscKit (thanx Don and all you out there) - minor bug fixes - Now has a Get Button (which doesnt open the retrieved file, and allows to retrieve more than one file at once) - for debugging: "clear cache" only cleans the directory cache, "purge cache" also removes the configuration and hosts. 2.9.94 (0.212) - READMEs also interrupt filetransfer (not only directories) - filetransfer progress also shown in app icon - DO doesnt loose messages any more (that was a easy one :) - window positions are saved - regets after lost connection 3.9.94 (0.243) - directories are only reget, if the date and time changed. (VERY USEFUL :) 5.9.94 (0.273) - filenames with dashes '-' in it didn't work (due to a bug in Nexts PDO stuff). - added a writing cache panel - added panel to save a file under a different name, if its already exists. 7.9.94 (0.295) - code changes to add services (lex, cd to unknown directories) 8.9.94 - services work !!!!! At least with the examples I tried :) I dont know, if the lex parser does what its supposed to do. - This whole program needs a majer code cleanup ! 11.9.94 - added FORCEDUPDATETIMEOUT -> RELEASE 0.340 19.9.94 - bug fixes: - STAT is only used when implemented - app crashed, when connection was closed directly after login (cs.orst.edu) -> RELEASE 0.351 20.9.94 - app deactivates itself, when "open"ing files 22.9 - SIZE not implemented error gone, progressView now shows "unknown" -> RELEASE 0.355 30.9-25.10 - bugfix: after interrupting filetransfer file was replaced instead of reget - added parser for ls -l !!! - filesize now shown in the browser - function to convert 123456 -> 123K - configuration file now has a version number - can now read old configuration files (from .157 and .355) - browserCell display was sometimes corrupt - cache timeout handled more intelligent (set from the parent directory listing) - rename/remove host now works 29.10 - added term support (difficult :) - added default directory cache 10.11 - Suggestion menu entry 11.11 - checking and statusline of directories was a total mess. 12.11 - added reading of GatorFTP configuration :) - progressView only updated every 150ms 13.11 - doubleclicking a host will login directly - browser deosn't JUMP anymore !!!! (I hate NXBrowser !) - global Preferences 16.11 - browser now behaves like the Workspace browser !! (after hours and hours of hacking......this was awful !!!) 27.11 - small bugfixes - now compiling with MiscKit 1.2.8 and term 2.2.8 - RELEASE 0.447 7.4.95 - changes in FtpSubThread.m: - TYPE and CWD only done when needed - removed "illegal stat" warnings - much nicer getLineFromSocket routine (but probably doesn't work correctly) - PDO messages not send all the time anymore (only send every half second, should reduce CPU time while transferring files) - added queuewindow (thanx to Peter Lount) 24.6.95 - compiling wth MiscKit 1.5.0 - quad fat, but without term compiled in - service now recongizes hosts only 1.12.95 - NLST failed bugfix - doesn't crash when downloading lots of files at once - too short filenames were skipped - removed checking of directory status (which caused directories to be read twice sometimes) - changed appiconsize for NS4.0 - Gator menu entry - appIcon correctly displayed - progressview correctly displayed - file::/... recognized (like ftp://...) - nicer display of filesizes in browser - crash when fetching large directories - option to prompt for password, when doubleclicking host - Kill button in Processes panel - disconnect by closing window (not very nice, though) - lot of nibfile changes (thanx to Carlos Salinas) - filesize to the right of filename - fixed crash when "remote server closed connection"