引用 Vxworks ftp server

本文介绍了如何在嵌入式项目中配置FTP服务,包括加载FTP服务器组件、设定权限及使用改进版FTP服务器的方法。

http://yhj200403090225.blog.163.com/blog/static/9708302009102552130874/

1.1 加载ftp server

project 的下选择 network components->network protocols-> network filesystems->Ftp server 选项即可加载 ftp server 服务。此选项定义 INCLUDE_FTP_SERVER  使得系统启动时调用 ftpdInit 0 0 )来加载 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 行处应增加对 whrer path 是否为空的判断:
/* add */
    if (*where==EOS || *path==EOS) goto deny;
    
 ftpdWorkTask ()   1411 行处如果有权限设定则处理,否则按照 guest 处理,程序中缺少 “else”
改为:
if ( pLoginVrfyFunc != (FUNCPTR)NULL )
{
  ……
}
else if( guestHomeDir[0] != EOS )
{
   ……
### 关于VxWorks系统中FTP服务器的配置与使用 在VxWorks操作系统中,FTP服务器的功能可以通过特定的任务和服务来实现。以下是有关如何配置和使用VxWorks中的FTP服务器的相关信息。 #### 配置FTP服务器 为了使FTP服务能够在VxWorks环境中运行,需要完成以下几个方面的设置: 1. **加载必要的库和支持模块** 在构建VxWorks映像时,需确保包含了支持FTP功能所需的组件。这通常涉及在网络驱动程序的基础上加入`ftpdTask()`函数的支持[^5]。通过此函数可初始化并启动FTP服务器任务。 2. **网络接口初始化** 正确初始化网络接口对于FTP服务器至关重要。可以利用`tNetIfConfigUp()`或其他相关API来激活指定网卡设备,并验证其连通状态正常[^6]。 3. **设定工作参数** FTP服务器的具体行为可通过调整一系列宏定义控制,比如最大并发连接数、根目录路径等。这些选项类似于之前提到过的TCP/IP示例头文件(tcpExample.h)中的常量声明方式[^7]。 4. **安全性和权限管理** 考虑到嵌入式环境下的特殊需求,在启用FTP服务的同时也应重视安全性问题。例如限制访问范围仅限内部局域网内的IP地址段;或者根据实际应用场景决定是否允许匿名登录等功能特性[^8]。 #### 使用FTP服务器 一旦完成了上述配置步骤之后,则可以根据具体项目要求进一步操作已部署好的FTP Server实例: - 启动ftp守护进程:`spawnShellCmd("ftpd &");` - 测试客户端能否成功建立会话连接以及上传下载测试文件。 需要注意的是,在某些情况下可能会遇到错误消息提示如“The target system is not initialized yet.”等问题解决方案已经在其他文档中有提及过相应处理办法[^9]。 ```c // Example code snippet showing how to start ftp daemon within VxWorks shell script. #include <stdio.h> #include "vxWorks.h" #include "taskLib.h" void main(){ printf("Starting FTP Daemon...\n"); spawnShellCmd("ftpd &"); } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值