Apache Server 内嵌 接MySQL数据库

主程序

	/**
		 * 启动日志
		 */
		PropertyConfigurator.configure("E://log4j.properties");
		/**
		 * FtpServerFactory
		 */
		FtpServerFactory serverFactory = new FtpServerFactory();
		/**
		 * 设置连接信息
		 * 如最大连接数,线程数等
		 */
		serverFactory.setConnectionConfig(new ConnectionConfigImp());
		ListenerFactory listenerFactory = new ListenerFactory();
		/**
		 * 设置端口
		 */
		listenerFactory.setPort(55533);
		/**
		 * 可以监测客户端登录等一些列操作
		 */
	   serverFactory.setFtplets(getFtplets());
	   /**
	    * 配置ssl
	    */
		listenerFactory.setSslConfiguration(getSSLConfigration());
		/**
		 * 这个方法我不知道什么意思
		 * 我觉得应该是要求必须有证书才能连接
		 */
		listenerFactory.setImplicitSsl(true);
		Listener createListener = listenerFactory.createListener();
		serverFactory.addListener("default", createListener);
		/**
		 * 不需要接数据库的用户方法
		 */
		BaseUser baseUser = new BaseUser();
		baseUser.setName("admin");
		baseUser.setPassword("admin");
		baseUser.setHomeDirectory("E://");
		List<Authority>list = new ArrayList<Authority>();
		/**
		 * 给用户添加写权限
		 */
		list.add(new WritePermission());
		baseUser.setAuthorities(list);
		/**
		 * 把用户添加到UuserManager
		 * 这里的UuserManager可以写很多个   可以在任意地方添加用户,并且添加完之后的用户立即生效
		 */
		serverFactory.getUserManager().save(baseUser);
		/**
		 * 如果需要接数据库,则执行一下代码
		 */
		/*
		*UserManager dbUserManagerSon = DbUserManagerSon.DbUserManagerSon();
		*serverFactory.setUserManager(dbUserManagerSon);
		*/
		FtpServer createServer = serverFactory.createServer();
		createServer.start();

方法


/***
	 * 
	 * @return
	 */
	private static Map<String, Ftplet> getFtplets() {
		Map<String, Ftplet> map = new HashMap<>();
		Ftplet ftplet = new Ftplet() {
			@Override
			public FtpletResult onDisconnect(FtpSession arg0) throws FtpException,IOException {
				logFactory.info("__________________________________________________________________onDisconnect____________________________________________________________________________________");
				return FtpletResult.DEFAULT;
			}
			
			@Override
			public FtpletResult onConnect(FtpSession arg0) throws FtpException, 	IOException {
				logFactory.info("__________________________________________________________________onConnect____________________________________________________________________________________");
				return FtpletResult.DEFAULT;
			}
			
			@Override
			public void init(FtpletContext arg0) throws FtpException {
				logFactory.info("__________________________________________________________________init____________________________________________________________________________________");
			}
			
			@Override
			public void destroy() {
				logFactory.info("__________________________________________________________________destroy____________________________________________________________________________________");
			}
			
			@Override
			public FtpletResult beforeCommand(FtpSession arg0, FtpRequest arg1)throws FtpException, IOException {
				logFactory.info("__________________________________________________________________beforeCommand____________________________________________________________________________________");
				
				logFactory.info(arg0.getUserArgument());
				logFactory.info(arg0.getClientAddress().toString());
				logFactory.info(arg0.getConnectionTime().toGMTString());
				logFactory.info(arg0.getDataType());
				logFactory.info(arg0.getLanguage());

				return FtpletResult.DEFAULT;
			}
			
			@Override
			public FtpletResult afterCommand(FtpSession arg0, FtpRequest arg1,FtpReply arg2) throws FtpException, IOException {
				logFactory.info("__________________________________________________________________afterCommand____________________________________________________________________________________");
				return FtpletResult.DEFAULT;
			}
		};
		map.put("miaFtplet",ftplet);
		return map;
	}
	/**
	 * getSSLConfigration
	 * @return SslConfiguration
	 */
	public static SslConfiguration getSSLConfigration(){
		
		SslConfigurationFactory ssl =new  SslConfigurationFactory();
		
		ssl.setKeystoreType("jks");
		
		ssl.setKeystoreFile(new  File("E://liuyunpeng.jks"));
		
		ssl.setKeyAlias("liuyunpeng");
		
		ssl.setKeystorePassword("123456");
		
		
		ssl.setClientAuthentication("true");
		
		SslConfiguration createSslConfiguration = ssl.createSslConfiguration();
		
		return createSslConfiguration;
	}
	
}
/**
 * USERMANGER接数据库配置信息
 * @author liuyunpeng
 *
 */
class DbUserManagerSon{
/***
 *这里sql语句是乱写的
 */
	private static String selectAllStmt = "SELECT USER_ID FROM FTP_USER";
	private static String selectUserStmt = "SELECT USER_ID,USER_PASSWORD,HOME_DIRECTORY,EBAVKEFLAG FROM FTP_USER WHERE USER_ID=USER_ID";
	private static  String updateUserStmt = "UPDATE FTP_USER SET USER_ID =USER_ID WHERE USER_ID=USER_ID";
	private static String deleteUserStmt = "DELETE FROM FTP_USER WHERE USER_ID = USER_ID";
	
	private static String insertUserStmt = "INSERT INTO FTP_USER";
	/*
	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
	 *   FTP_USER数据库所需要的字段	                                     *                                                   	                                                                                           	                                                                                           	                                                                                           
	 *  userid VARCHAR(64) NOT NULL PRIMARY KEY,       *
	 *  userpassword VARCHAR(64                                         *
	 *  homedirectory VARCHAR(128) NOT NULL,               *     
	 *  enableflag BOOLEAN DEFAULT TRUE,    				     *
	 *  writepermission BOOLEAN DEFAULT FALSE,            *
	 *  idletime INT DEFAULT 0,             						             *
	 *  uploadrate INT DEFAULT 0,             						     *
	 *  downloadrate INT DEFAULT 0,									 *
	 *  maxloginnumber INT DEFAULT 0,								 *
	 *  maxloginperip INT DEFAULT 0									 *
	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
	*/
	
	/**
	 * 
	 * @return
	 */
	public static UserManager  DbUserManagerSon(){
		DbUserManagerFactory dbUserManagerFactory = new DbUserManagerFactory();
		dbUserManagerFactory.setDataSource(getDataSource());
		dbUserManagerFactory.setSqlUserSelect(selectUserStmt);
		dbUserManagerFactory.setSqlUserSelectAll(selectAllStmt);
		dbUserManagerFactory.setSqlUserInsert(insertUserStmt);
		dbUserManagerFactory.setSqlUserUpdate(updateUserStmt);
		dbUserManagerFactory.setSqlUserDelete(deleteUserStmt);
		UserManager createUserManager = dbUserManagerFactory.createUserManager();
		return createUserManager;
	}
	/**
	 * 配置datasource
	 * @return
	 */
	public static DataSource getDataSource(){
		BasicDataSource basicDataSource = new BasicDataSource();
		basicDataSource.setDriverClassName("com.mysql.jdbc.Driver");
		basicDataSource.setUrl("jdbc:mysql://localhost/ftpserver");
		basicDataSource.setUsername("root");
		basicDataSource.setPassword("123456");
		return basicDataSource;
	}
}
/**
 * 连接信息配置
 * @author liuyunpeng
 *
 */
class ConnectionConfigImp implements ConnectionConfig{
	/**
	 * 不允许匿名用户登录
	 */
	public boolean isAnonymousLoginEnabled() {
		return false;
	}
	/***
	 * 设置最大线程
	 */
	public int getMaxThreads() {
		return 1000;
	}
	/**
	 * 设置最大登录
	 */
	public int getMaxLogins() {
		return 1000;
	}
	/**
	 * 设置登录失败次数
	 */
	public int getMaxLoginFailures() {
		return 5;
	}
	
	public int getMaxAnonymousLogins() {
		return 0;
	}
	/**
	 * 最多失败次数
	 */
	public int getLoginFailureDelay() {
		return 5;
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值