ftpd.scm: corrected typo; ftpd.scm.doc: doc for ftpd.scm
This commit is contained in:
		
							parent
							
								
									3cc5d8c837
								
							
						
					
					
						commit
						a741498c59
					
				|  | @ -0,0 +1,178 @@ | |||
| This file documents how to use the ftp-daemon ftpd | ||||
| 
 | ||||
| USAGE | ||||
| ----- | ||||
| 
 | ||||
| Usage as a stand-alone daemon: | ||||
| 
 | ||||
| Start the daemon in a scsh (or with a script, see below) using | ||||
| 
 | ||||
| ,config ,load modules.scm | ||||
| ,open ftpd | ||||
| (ftpd <anonymous-home> [<port>]) | ||||
| 
 | ||||
| (confirm open's question for opening the ftpd-structure) | ||||
| where <anonymous-home> is the root-directory of the ftp-server and | ||||
| <port> the port the server is listening to. Usage of relative paths in | ||||
| <anonymous-home> is not encouraged. <port> defaults to 21. | ||||
| 
 | ||||
| For example | ||||
| 
 | ||||
| (ftpd (cwd) 8080) | ||||
| 
 | ||||
| starts the server with the current directory as anonymous home and | ||||
| listening to port 8080. | ||||
| 
 | ||||
| 
 | ||||
| Usage with the collaboration of a daemon like inetd: | ||||
| 
 | ||||
| Instead of FTPD, inetd uses FTPD-INETD, for example: | ||||
| 
 | ||||
| (ftpd-inetd (cwd)) | ||||
| 
 | ||||
| starts the server with the current directory as anonymous home and | ||||
| handling the connection (given from inetd) through the current input- | ||||
| and output-ports. | ||||
| 
 | ||||
| 
 | ||||
| Example | ||||
| 
 | ||||
| This is how archive.informatik.uni-tuebingen.de is called at the | ||||
| university of Tuebingen: | ||||
| 
 | ||||
| #!/bin/sh | ||||
| /afs/informatik.uni-tuebingen.de/rs_aix43/scsh-0.6-alpha/bin/scsh <<EOF | ||||
| ,batch on | ||||
| ,config ,load modules.scm | ||||
| ,open ftpd | ||||
| ,open threads | ||||
| (define (archive-ftpd args) | ||||
|   (with-syslog-destination | ||||
|    #f | ||||
|    #f | ||||
|    (syslog-facility local0) | ||||
|    #f | ||||
|    (lambda () | ||||
|      (ftpd "/afs/informatik.uni-tuebingen.de/data/archive/")))) | ||||
| (dump-scsh-program archive-ftpd "archive-ftpd.image") | ||||
| ;; (dump-scsh "archive-ftpd.image") | ||||
| EOF | ||||
| 
 | ||||
| Note, that the options for the syslog are set via With | ||||
| WITH-SYSLOG-DESTINATION, a scsh-command. Here, the syslog-facility is | ||||
| set to local0. See man syslog for further details on syslog. | ||||
| 
 | ||||
| 
 | ||||
| SUPPORTED COMMANDS | ||||
| ------------------ | ||||
| 
 | ||||
| 
 | ||||
| ftpd supports following commands according to RFC 959: | ||||
| 
 | ||||
| ABOR - abort connection | ||||
| CDUP - move to parent directory | ||||
| CWD  - move to specified directory (relative paths may be used) | ||||
| DELE - delete file | ||||
| LIST - list files in current directory (long format) | ||||
| MDTM - deliver modification time of a regular file | ||||
| MKD  - make directory | ||||
| MODE - change mode (only stream mode (S) is supported) | ||||
| NLST - list files in current directory (short format) | ||||
| NOOP - do nothing | ||||
| PASS - read in passphrase | ||||
| PASV - change to passive mode | ||||
| PORT - change connection port | ||||
| PWD  - return name of working directory (print working directory) | ||||
| QUIT - quit session | ||||
| RETR - return file (GET) | ||||
| RMD  - remove directory | ||||
| RNFR - read in the name of a file to be renamed (use RNTO next) | ||||
| RNTO - rename file mentioned before in a RNFR command | ||||
| SIZE - return size of a regular file | ||||
| STOR - store file (PUT) | ||||
| STRU - change structure to transfer files | ||||
|        (only the file structure is supported) | ||||
| SYST - return system type | ||||
| TYPE - change type (supported types: A = ascii mode, I, L8 = 8-bit | ||||
|        binary  mode) | ||||
| USER - login user (only anonymous logins allowed, use "anonymous" or | ||||
|        "ftp" as user name) | ||||
| 
 | ||||
| 
 | ||||
| SYSLOG-MESSAGES | ||||
| --------------- | ||||
| 
 | ||||
| ftpd outputs a lot of syslog-messages. A syslog-message looks like | ||||
| this: | ||||
| 
 | ||||
| Jul 24 18:34:52 axl ftpd: (thread 21) anonymous user login (230) | ||||
| 
 | ||||
| The log gives you following informations (including those delivered by | ||||
| the syslog-daemon): | ||||
| 
 | ||||
| * the date and time the log was made (here: Jul 24 18:34:52) | ||||
| * the machine the log was made on (here: axl) | ||||
| * the program, that output the log (ftpd) | ||||
| * the thread the message concerns (here thread 21) | ||||
|   Each connection is linked with a thread, that handles the commands | ||||
|   of this connection. When the thread is created, there is a log | ||||
|   containing the remote address and the thread number, so in future  | ||||
|   logs the thread number labels the connection. As at any given time  | ||||
|   the thread number is unique, this is a bijection. (Note that the  | ||||
|   thread numbers are not unique over a period of time). | ||||
| * the log message (here: notification about an anonymous user login) | ||||
| * the reply code returned by ftpd, if any (here: 230) | ||||
| 
 | ||||
| 
 | ||||
| The Syslog-levels used: | ||||
| ----------------------- | ||||
| 
 | ||||
| 
 | ||||
| Overview: | ||||
| 
 | ||||
| 
 | ||||
| As NOTICE are logged: | ||||
| 
 | ||||
| * messages concerning CONNECTIONS | ||||
| * the execution of the STOR command | ||||
| * internal errors | ||||
| * unix errors | ||||
| * reaching of actually unreachable case branches | ||||
| 
 | ||||
| 
 | ||||
| As INFO are logged: | ||||
| 
 | ||||
| * messages concerning all OTHER COMMANDS, including the RETR command | ||||
| 
 | ||||
| 
 | ||||
| As DEBUG are logged: | ||||
| 
 | ||||
| * all other messages, including debug messages | ||||
| 
 | ||||
| 
 | ||||
| Details: | ||||
| 
 | ||||
| Messages concerning connections (establishing connection, connection | ||||
| refused, closing connection due to timeout, etc.) are logged at | ||||
| notice-level.  | ||||
| 
 | ||||
| The success of the STOR-command (PUT, i.e. somebody is putting | ||||
| something on your server via ftp) is also logged at notice-level. In | ||||
| fact, the log is made before the storing is started actually. | ||||
| 
 | ||||
| Internal errors, unix errors and the reaching of unreachable | ||||
| case-branches are also logged at notice-level. | ||||
| 
 | ||||
| Messages concerning all other commands including the RETR-command | ||||
| (GET) are logged at info-level. | ||||
| 
 | ||||
| All other messages including debugging-informations are logged at | ||||
| debug-level. If you want to debug ftpd, put all the messages in one | ||||
| single file, since the debug-messages may refer to messages of other | ||||
| levels. | ||||
| 
 | ||||
| Success (as long as interesting) and failure of commands are logged at | ||||
| info-level, except the success of the STOR-command, that is logged at | ||||
| notice-level (as mentioned above). | ||||
| 
 | ||||
| 
 | ||||
							
								
								
									
										11
									
								
								ftpd.scm
								
								
								
								
							
							
						
						
									
										11
									
								
								ftpd.scm
								
								
								
								
							|  | @ -16,11 +16,8 @@ | |||
| ; - GET-command: ftpd reports "Can't open FILENAME for reading" if | ||||
| ;   file actually doesn't exist. This is confusing. Reporting | ||||
| ;   "FILENAME does not exist" is much better. | ||||
| ; - logging:  | ||||
| ;   * improve syslog-levels (too much debug-messages?)   | ||||
| ;   * improve perfomance (values are often calculated twice: first | ||||
| ;     time for logging, second time for reporting | ||||
| ; BRNR: STOPPED at 836 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| (define-record session | ||||
|   control-input-port | ||||
|  | @ -658,7 +655,7 @@ | |||
|     (register-reply! 500 | ||||
| 		     "No arguments.  Not to worry---I'd ignore them anyway.")) | ||||
|    ((string-ci=? "F" arg) | ||||
|     (log (syslog-level info) "(still) using file structure to tranfser files (200)") | ||||
|     (log (syslog-level info) "(still) using file structure to transfer files (200)") | ||||
|     (register-reply! 200 "Using file structure to transfer files.")) | ||||
|    (else | ||||
|     (log (syslog-level info) "file structure ~S is not supported (504)" arg) | ||||
|  | @ -1147,7 +1144,7 @@ | |||
| 
 | ||||
| ; Version | ||||
| 
 | ||||
| (define *ftpd-version* "$Revision: 1.24 $") | ||||
| (define *ftpd-version* "$Revision: 1.25 $") | ||||
| 
 | ||||
| (define (copy-port->port-binary input-port output-port) | ||||
|   (let ((buffer (make-string *window-size*))) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 interp
						interp