Vxworks ftp server

农诚
2023-12-01

#include “loginLib.h”

shellLoginInstall (loginPrompt, NULL);

         loginDefaultEncrypt(g_ConfigData.adminUsr.usrPwd, pw);

         loginUserAdd(g_ConfigData.adminUsr.usrName, pw);

//        loginUserShow();

//        loginUserDelete("system","acce.com");

//        loginUserShow();

//      taskDelay(50);



1.1 加载ftp server
project的下选择network components->network protocols-> network filesystems->Ftp server选项即可加载ftp server服务。此选项定义INCLUDE_FTP_SERVER使得系统启动时调用ftpdInit00)来加载ftp server
加载ftp server后,可以通过ioDefPathSet()来设定缺省的IO路径,例如目标机的tffs设备名为tffs0,设定ioDefPathSet“/tffs0/”);这样当登录到ftp server后就可以查看目标机tffs0上的内容了。
1.2
权限设定
如果希望进行权限设定,则需要选择network components->network protocols-> network filesystems->Ftp server securiy选项,并在network components->network protocols-> network applications下选择rlogin/telnet password protection选项,然后在选项中设定用户登录名和密码即可。也可以在程序中通过    loginUserAdd()来增加新的用户
注意:loginUserAdd使用的密码不是明码,而是经过加密的密码。用户可以调用loginDefaultEncrypt()来得到换算后的密码,例如,如果你要添加用户guest,密码123456789 :
char pw[256];
loginDefaultEncrypt("123456789",pw);
得到pw = “SRSQQeQccc”
调用loginUserAdd("guest","SRSQQeQccc");就可以了。
登陆时使用
    user:guest
    pw:123456789
<host/hostOS/bin>下也提供了一个工具vxencrypt,执行它可以计算加密后的密码:
vxencrypt
please enter password: flintstone
encrypted password is ScebRezb9c
用户也可以调用
void loginEncryptInstall
(
    FUNCPTR rtn, /* function pointer to encryption routine */
    int     var  /* argument to the encryption routine (unused) */
)
来安装自己的密码生成程序,其中用户自定义密码生成程序rtn必须符合下列格式:
STATUS encryptRoutine
(
    char *password,               /* string to encrypt    */
    char *encryptedPassword       /* resulting encryption */
)
1.3
使用一个更好的ftp server
T2.0.2
中的ftp server只提供了很少的功能,通过安装SPR79795 DOSFS2包,在<target/unsupported/src/netwrs>提供了一个ftpdlib.c源文件,我们可以加载该文件来生成一个功能更强大的ftp server。并且通过修改源码我们可以更方便的定制自己的ftp server
首先我们需要从原来的库文件中卸载老的ftpdLib.o,以ColdFire 5272为例:
arcf  -d  <tornado>/target/lib/libMCF5200gnuvx.a ftpdLib.o
此处需要注意模块名称的大小写。
在成功移除ftpdLib.o后,通过修改makefile
MACH_EXTRA = ftpdLib.o
ftpdlib.c 引入到工程中;也可以不修改makefile,编译新的ftpdLib.o后把它重新加入到原来的库文件中。
arcf  –r  <tornado>/target/lib/libMCF5200gnuvx.a ftpdLib.o

  ar的命令详见参见文档GNU Toolkit User's Guide中的The GNU Binary Utilities

但这个文件关于guest的权限设置还有几处错误需要修改:
ftpdSessionAdd()中989行处:
   if(defaultHomeDir[0] == EOS )
   ioDefPathGet (pSlot->curDirName);
  else
   strcpy( defaultHomeDir, pSlot->curDirName);

改为:
  if(defaultHomeDir[0] == EOS )
ioDefPathGet (pSlot->curDirName);
  else
   strcpy( pSlot->curDirName,defaultHomeDir);
并增加guestHomeDir初始设置:
/* add */
if (guestHomeDir[0]==EOS)
   strcpy(guestHomeDir, pSlot->curDirName);

ftpPathAccessVerify()中1091行处应增加对whrerpath是否为空的判断:
/* add */
    if (*where==EOS || *path==EOS) goto deny;
    
ftpdWorkTask()1411行处如果有权限设定则处理,否则按照guest处理,程序中缺少“else”
改为:
if ( pLoginVrfyFunc != (FUNCPTR)NULL )
{
  ……
}
else if( guestHomeDir[0] != EOS )
{
   ……

 类似资料:

相关阅读

相关文章

相关问答