Miniftp 项目学习笔记(五)用户登录的验证

本文介绍了在Miniftp项目中如何实现FTP服务器的用户登录验证,包括处理do_user和do_pass函数,使用getspnam和crypt函数进行密码加密比较,并展示了相关代码实现和编译过程。
摘要由CSDN通过智能技术生成

 

用客户端登录服务器:

连接一下我们暂时实现的miniftpd,看看效果:

首先,启动miniftpd:./miniftpd

 连接miniftpd:

接下来实现它,与协议相关的模块都是在ftpproto.c中完成的,目前的代码如下:

#include"ftpproto.h"
#include"sysutil.h"
#include "str.h"

void handle_child(session_t *sess)
{
	writen(sess->ctrl_fd, "220 (miniftp 0.1)\r\n", strlen("220 (miniftp 0.1)\r\n"));
	int ret;
	while(1)
	{
		memset(sess->cmdline, 0, sizeof(sess->cmdline));
		memset(sess->cmd, 0, sizeof(sess->cmd));
		memset(sess->arg, 0, sizeof(sess->arg));

		ret = readline(sess->ctrl_fd, sess->cmdline, MAX_COMMAND_LINE);
		if (ret == -1)
		{
			ERR_EXIT("readline");
		}	
		else if (ret == 0)
			exit(EXIT_SUCCESS);

			
		printf("cmdline=[%s]\n", sess->cmdline);
		//去除/r/n
		str_trim_crlf(sess->cmdline);
		printf("cmdline=[%s]\n", sess->cmdline);
		//解析FTP命令与参数
		str_split(sess->cmdline, sess->cmd, sess->arg, ' ');
		printf("cmd=[%s] arg=[%s]\n", sess->cmd, sess->arg);
		//将命令转换成大写
		str_upper(sess->cmd);
		//处理FTP命令
	}
}

 在上面的模块中,连接miniftpd后,进行的相关操作为:

1、打印出第一条响应:220 (miniftp 0.1)

2、不断读取命令行参数

3、去除去除/r/n

4、解析FTP命令与参数

5、将命令转换成大写

6、处理FTP命令

 

接下来,我们来处理FTP命令,主要实现do_user和do_pass函数:

由于这两个函数只用于ftpproto模块,因此,我们将其声明为static:

#include "ftpproto.h"
#include "sysutil.h"
#include "str.h"

static void do_user(session_t *sess);
static void do_pass(session_t *sess);

void handle_child(session_t *sess)
{
    writen(sess->ctrl_fd, "220 (miniftpd 0.1)\r\n", strlen("220 (miniftpd 0.1)\r\n"));
    int ret;
    while (1)
    {
        memset(sess->cmdline, 0, sizeof(sess->cmdline));
        memset(sess->cmd, 0, sizeof(sess->cmd));
        memset(sess->arg, 0, sizeof(sess->arg));
        ret = readline(sess->ctrl_fd, sess->cmdline, MAX_COMMAND_LINE);
        if (ret == -1)
            ERR_EXIT("readline");
        else if (ret == 0)
            exit(EXIT_SUCCESS);

        printf("cmdline=[%s]\n", sess->cmdline);
        // 去除\r\n
        str_trim_crlf(sess->cmdline);
        printf("cmdline=[%s]\n", sess->cmdline);
        // 解析FTP命令与参数
        str_split(sess->cmdline, sess->cmd, sess->arg, '
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: FTP服务器,又称为File Transfer Protocol Server,是网络上的一种文件传输协议,主要用于将文件从一个网络地址传输到另一个网络地址。其中,FTP Server指的是运行FTP协议的服务器,它负责接受来自客户端的请求,并按照FTP协议的规定进行响应。 FTP服务器有着广泛的应用,其中最常见的是Web服务器中的FTP服务器。FTP服务器可以提供文件上传和下载服务,主要用于网站的文件发布、备份和存储等。此外,FTP服务器还可以用于文件的共享、远程控制、安装程序等多种应用场景。 在工作中,我们可能需要使用一些迷你FTP服务器,以方便我们进行一些文件的传输和共享。所谓迷你FTP服务器,指的是一些小型的FTP服务器软件,它们具有简单易用的操作界面和快速高效的文件传输速度,适用于小型团队和个人使用。 与传统的FTP服务器相比,迷你FTP服务器不仅功能强大,而且占用资源较少,使得它们得以在性能不足的电脑上运行。此外,迷你FTP服务器还可以方便地进行设置和配置,以满足用户的个性化需求。 总的来说,迷你FTP服务器是一种实用的工具,它为用户提供了一种快速、安全、高效的文件传输和共享方式,值得我们在工作和生活中多加利用。 ### 回答2: FTP服务器也就是File Transfer Protocol服务器,是一种可以实现文件传输的服务器,可以提供文件上传、下载和管理等功能。FTP服务器分为大型和迷你类两种,其中迷你FTP服务器由于其轻量、易用、便携等特性,成为了广泛应用的一种FTP服务器。 迷你FTP服务器具有简单易用的特点,可以轻松搭建FTP服务器并实现文件的上传和下载。其操作简单,用户只需创建FTP用户账号,指定其访问目录,就可以实现上传下载管理等功能。同时,迷你FTP服务器的便携性也是其具有优秀特性之一,它可以在不同计算机上使用,只需将软件安装在u盘或移动硬盘中,便携性大大提高了其使用的便利性。 迷你FTP服务器还具有可扩展性和高度可定制性。FTP服务器可以通过插件等方式来扩展其功能,并可以通过调整参数和配置来实现自定义的功能和使用方式。这样,用户就可以根据自己的需求进行定制化,提高FTP服务器的作用和效率。 总而言之,迷你FTP服务器是一种轻量级FTP服务器,具有简单易用、便携性、可扩展性和高度可定制性等优点。对于需要上传、下载和管理文件的小型组织或个人用户而言,迷你FTP服务器是一个不错的选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值