龙空技术网

Springboot整合Apache Ftpserver拓展功能及业务讲解(三)

青锋爱编程 358

前言:

眼前姐妹们对“apacheserver源代码分析”大约比较关心,你们都想要了解一些“apacheserver源代码分析”的相关资讯。那么小编在网摘上网罗了一些关于“apacheserver源代码分析””的相关文章,希望各位老铁们能喜欢,同学们一起来学习一下吧!

今日分享

每天分享技术实战干货,技术在于积累和收藏,希望可以帮助到您,同时也希望获得您的支持和关注。

架构开源地址:

springboot整合Ftpserver

参考上篇文章:Springboot整合Apache Ftpserver实现文件服务器源码搭建(二)

拓展功能一(密码验证器)用户密码验证

默认配置中,我们使用的用户密码是明文加密模式。

# 明文dbUserManagerFactory.setPasswordEncryptor(new ClearTextPasswordEncryptor()); # Md5dbUserManagerFactory.setPasswordEncryptor(new Md5PasswordEncryptor());# 自定义HashdbUserManagerFactory.setPasswordEncryptor(new MyPasswordEncryptor()); 
自定义MyPasswordEncryptor加密器增加bcrypt依赖
<dependency>  <groupId>at.favre.lib</groupId>  <artifactId>bcrypt</artifactId>  <version>0.9.0</version></dependency>
新建MyPasswordEncryptor类
package com.qingfeng.ftpserver.config;/*** @author Administrator* @version 1.0.0* @ProjectName finder-module-ftpserver* @Description TODO* @createTime 2022年04月21日 09:34:00*/import at.favre.lib.crypto.bcrypt.BCrypt;import org.apache.ftpserver.usermanager.PasswordEncryptor;import java.security.NoSuchAlgorithmException;public class MyPasswordEncryptor implements PasswordEncryptor {    public MyPasswordEncryptor() {    }        public String encrypt(String password) {        String bcryptString = BCrypt.with(BCrypt.Version.VERSION_2Y).hashToString(10, password.toCharArray());        System.out.println(bcryptString);        return bcryptString;    }        public boolean matches(String passwordToCheck, String storedPassword) {        System.out.println("--------------matches-------------");        System.out.println(passwordToCheck);        System.out.println(storedPassword);        if (storedPassword == null) {            throw new NullPointerException("storedPassword can not be null");        } else if (passwordToCheck == null) {            throw new NullPointerException("passwordToCheck can not be null");        } else {            BCrypt.Result result = BCrypt.verifyer().verify(passwordToCheck.toCharArray(), storedPassword);            //            return this.encrypt(passwordToCheck).equalsIgnoreCase(storedPassword);            return result.verified;        }    }            public static void main(String[] args) throws NoSuchAlgorithmException {        String bcryptString = BCrypt.with(BCrypt.Version.VERSION_2Y).hashToString(10, "123456".toCharArray());        System.out.println(bcryptString);    }}
拓展功能二(文件类型验证)
	@Override	public FtpletResult onUploadStart(FtpSession session, FtpRequest request) throws FtpException, IOException {		// 获取上传文件的上传路径		String path = session.getUser().getHomeDirectory();		//校验文件夹路径是否存在		viladateDir(path);				// 获取上传用户		String name = session.getUser().getName();		// 获取上传文件名		String filename = request.getArgument();		logger.info("用户:'{}',上传文件到目录:'{}',文件名称为:'{},状态:开始上传~'", name, path, filename);		System.out.println("用户:'" + name + "',上传文件到目录:'" + path + "',文件名称为:'" + filename + "',状态:开始上传~");		session.write(new DefaultFtpReply(550, "附件格式不正确!"));		return super.onUploadStart(session, request);	}

标签: #apacheserver源代码分析 #springapacheftp #apache网站ftp服务器配置