cmdtab.c
上传用户:sddyfurun
上传日期:2007-01-04
资源大小:525k
文件大小:9k
源码类别:

代理服务器

开发平台:

Unix_Linux

  1. /*
  2.  * Copyright (c) 1985, 1989 Regents of the University of California.
  3.  * All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms, with or without
  6.  * modification, are permitted provided that the following conditions
  7.  * are met:
  8.  * 1. Redistributions of source code must retain the above copyright
  9.  *    notice, this list of conditions and the following disclaimer.
  10.  * 2. Redistributions in binary form must reproduce the above copyright
  11.  *    notice, this list of conditions and the following disclaimer in the
  12.  *    documentation and/or other materials provided with the distribution.
  13.  * 3. All advertising materials mentioning features or use of this software
  14.  *    must display the following acknowledgement:
  15.  * This product includes software developed by the University of
  16.  * California, Berkeley and its contributors.
  17.  * 4. Neither the name of the University nor the names of its contributors
  18.  *    may be used to endorse or promote products derived from this software
  19.  *    without specific prior written permission.
  20.  *
  21.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  22.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  23.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  24.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  25.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  26.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  27.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  28.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  29.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  30.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  31.  * SUCH DAMAGE.
  32.  */
  33. #include "ftp_var.h"
  34. /*
  35.  * User FTP -- Command Tables.
  36.  */
  37. int setascii(), setbell(), setbinary(), setdebug(), setform();
  38. int setglob(), sethash(), setftpmode(), setport();
  39. int setprompt(), setstruct();
  40. int settenex(), settrace(), settype(), setverbose();
  41. int disconnect(), restart(), reget(), syst();
  42. int cd(), lcd(), delete(), mdelete(), user();
  43. int ls(), mls(), get(), mget(), help(), append(), put(), mput();
  44. int quit(), renamefile(), status();
  45. int quote(), rmthelp(), shell(), site();
  46. int pwd(), makedir(), removedir(), setcr();
  47. int account(), doproxy(), reset(), setcase(), setntrans(), setnmap();
  48. int setsunique(), setrunique(), cdup(), macdef();
  49. int sizecmd(), modtime(), newer(), rmtstatus();
  50. int do_chmod(), do_umask(), idletime();
  51. char accounthelp[] = "send account command to remote server";
  52. char appendhelp[] = "append to a file";
  53. char asciihelp[] = "set ascii transfer type";
  54. char beephelp[] = "beep when command completed";
  55. char binaryhelp[] = "set binary transfer type";
  56. char casehelp[] = "toggle mget upper/lower case id mapping";
  57. char cdhelp[] = "change remote working directory";
  58. char cduphelp[] =  "change remote working directory to parent directory";
  59. char chmodhelp[] = "change file permissions of remote file";
  60. char connecthelp[] = "connect to remote tftp";
  61. char crhelp[] = "toggle carriage return stripping on ascii gets";
  62. char deletehelp[] = "delete remote file";
  63. char debughelp[] = "toggle/set debugging mode";
  64. char dirhelp[] = "list contents of remote directory";
  65. char disconhelp[] = "terminate ftp session";
  66. char domachelp[] =  "execute macro";
  67. char formhelp[] = "set file transfer format";
  68. char globhelp[] = "toggle metacharacter expansion of local file names";
  69. char hashhelp[] = "toggle printing `#' for each buffer transferred";
  70. char helphelp[] = "print local help information";
  71. char idlehelp[] = "get (set) idle timer on remote side";
  72. char lcdhelp[] = "change local working directory";
  73. char lshelp[] = "list contents of remote directory";
  74. char macdefhelp[] =  "define a macro";
  75. char mdeletehelp[] = "delete multiple files";
  76. char mdirhelp[] = "list contents of multiple remote directories";
  77. char mgethelp[] = "get multiple files";
  78. char mkdirhelp[] = "make directory on the remote machine";
  79. char mlshelp[] = "list contents of multiple remote directories";
  80. char modtimehelp[] = "show last modification time of remote file";
  81. char modehelp[] = "set file transfer mode";
  82. char mputhelp[] = "send multiple files";
  83. char newerhelp[] = "get file if remote file is newer than local file ";
  84. char nlisthelp[] = "nlist contents of remote directory";
  85. char nmaphelp[] = "set templates for default file name mapping";
  86. char ntranshelp[] = "set translation table for default file name mapping";
  87. char porthelp[] = "toggle use of PORT cmd for each data connection";
  88. char prompthelp[] = "force interactive prompting on multiple commands";
  89. char proxyhelp[] = "issue command on alternate connection";
  90. char pwdhelp[] = "print working directory on remote machine";
  91. char quithelp[] = "terminate ftp session and exit";
  92. char quotehelp[] = "send arbitrary ftp command";
  93. char receivehelp[] = "receive file";
  94. char regethelp[] = "get file restarting at end of local file";
  95. char remotehelp[] = "get help from remote server";
  96. char renamehelp[] = "rename file";
  97. char restarthelp[]= "restart file transfer at bytecount";
  98. char rmdirhelp[] = "remove directory on the remote machine";
  99. char rmtstatushelp[]="show status of remote machine";
  100. char runiquehelp[] = "toggle store unique for local files";
  101. char resethelp[] = "clear queued command replies";
  102. char sendhelp[] = "send one file";
  103. char sitehelp[] = "send site specific command to remote servernttTry "rhelp site" or "site help" for more information";
  104. char shellhelp[] = "escape to the shell";
  105. char sizecmdhelp[] = "show size of remote file";
  106. char statushelp[] = "show current status";
  107. char structhelp[] = "set file transfer structure";
  108. char suniquehelp[] = "toggle store unique on remote machine";
  109. char systemhelp[] =  "show remote system type";
  110. char tenexhelp[] = "set tenex file transfer type";
  111. char tracehelp[] = "toggle packet tracing";
  112. char typehelp[] = "set file transfer type";
  113. char umaskhelp[] = "get (set) umask on remote side";
  114. char userhelp[] = "send new user information";
  115. char verbosehelp[] = "toggle verbose mode";
  116. struct cmd cmdtab[] = {
  117. { "!", shellhelp, 0, 0, 0, shell },
  118. { "$", domachelp, 1, 0, 0, (int (*)())domacro },
  119. { "account", accounthelp, 0, 1, 1, account},
  120. { "append", appendhelp, 1, 1, 1, put },
  121. { "ascii", asciihelp, 0, 1, 1, setascii },
  122. { "bell", beephelp, 0, 0, 0, setbell },
  123. { "binary", binaryhelp, 0, 1, 1, setbinary },
  124. { "bye", quithelp, 0, 0, 0, quit },
  125. { "case", casehelp, 0, 0, 1, setcase },
  126. { "cd", cdhelp, 0, 1, 1, cd },
  127. { "cdup", cduphelp, 0, 1, 1, cdup },
  128. { "chmod", chmodhelp, 0, 1, 1, do_chmod },
  129. { "close", disconhelp, 0, 1, 1, disconnect },
  130. { "cr", crhelp, 0, 0, 0, setcr },
  131. { "delete", deletehelp, 0, 1, 1, delete },
  132. { "debug", debughelp, 0, 0, 0, setdebug },
  133. { "dir", dirhelp, 1, 1, 1, ls },
  134. { "disconnect", disconhelp, 0, 1, 1, disconnect },
  135. { "form", formhelp, 0, 1, 1, setform },
  136. { "get", receivehelp, 1, 1, 1, get },
  137. { "glob", globhelp, 0, 0, 0, setglob },
  138. { "hash", hashhelp, 0, 0, 0, sethash },
  139. { "help", helphelp, 0, 0, 1, help },
  140. { "idle", idlehelp, 0, 1, 1, idletime },
  141. { "image", binaryhelp, 0, 1, 1, setbinary },
  142. { "lcd", lcdhelp, 0, 0, 0, lcd },
  143. { "ls", lshelp, 1, 1, 1, ls },
  144. { "macdef", macdefhelp, 0, 0, 0, macdef },
  145. { "mdelete", mdeletehelp, 1, 1, 1, mdelete },
  146. { "mdir", mdirhelp, 1, 1, 1, mls },
  147. { "mget", mgethelp, 1, 1, 1, mget },
  148. { "mkdir", mkdirhelp, 0, 1, 1, makedir },
  149. { "mls", mlshelp, 1, 1, 1, mls },
  150. { "mode", modehelp, 0, 1, 1, setftpmode },
  151. { "modtime", modtimehelp, 0, 1, 1, modtime },
  152. { "mput", mputhelp, 1, 1, 1, mput },
  153. { "newer", newerhelp, 1, 1, 1, newer },
  154. { "nmap", nmaphelp, 0, 0, 1, setnmap },
  155. { "nlist", nlisthelp, 1, 1, 1, ls },
  156. { "ntrans", ntranshelp, 0, 0, 1, setntrans },
  157. { "open", connecthelp, 0, 0, 1, (int (*)())setpeer },
  158. { "prompt", prompthelp, 0, 0, 0, setprompt },
  159. { "proxy", proxyhelp, 0, 0, 1, doproxy },
  160. { "sendport", porthelp, 0, 0, 0, setport },
  161. { "put", sendhelp, 1, 1, 1, put },
  162. { "pwd", pwdhelp, 0, 1, 1, pwd },
  163. { "quit", quithelp, 0, 0, 0, quit },
  164. { "quote", quotehelp, 1, 1, 1, quote },
  165. { "recv", receivehelp, 1, 1, 1, get },
  166. { "reget", regethelp, 1, 1, 1, reget },
  167. { "rstatus", rmtstatushelp, 0, 1, 1, rmtstatus },
  168. { "rhelp", remotehelp, 0, 1, 1, rmthelp },
  169. { "rename", renamehelp, 0, 1, 1, renamefile },
  170. { "reset", resethelp, 0, 1, 1, reset },
  171. { "restart", restarthelp, 1, 1, 1, restart },
  172. { "rmdir", rmdirhelp, 0, 1, 1, removedir },
  173. { "runique", runiquehelp, 0, 0, 1, setrunique },
  174. { "send", sendhelp, 1, 1, 1, put },
  175. { "site", sitehelp, 0, 1, 1, site },
  176. { "size", sizecmdhelp, 1, 1, 1, sizecmd },
  177. { "status", statushelp, 0, 0, 1, status },
  178. { "struct", structhelp, 0, 1, 1, setstruct },
  179. { "system", systemhelp, 0, 1, 1, syst },
  180. { "sunique", suniquehelp, 0, 0, 1, setsunique },
  181. { "tenex", tenexhelp, 0, 1, 1, settenex },
  182. { "trace", tracehelp, 0, 0, 0, settrace },
  183. { "type", typehelp, 0, 1, 1, settype },
  184. { "user", userhelp, 0, 1, 1, user },
  185. { "umask", umaskhelp, 0, 1, 1, do_umask },
  186. { "verbose", verbosehelp, 0, 0, 0, setverbose },
  187. { "?", helphelp, 0, 0, 1, help },
  188. { 0 },
  189. };
  190. int NCMDS = (sizeof (cmdtab) / sizeof (cmdtab[0])) - 1;