📄 miniftp.c
字号:
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<signal.h>
#include "miniFTP.h"
#include "file_operation.h"
#include "symbol_table.h"
#include "ftp_operation.h"
//static int SYS_LOG_TAG = 0 ;
int OPEN_LOG_ENABLE = 0 ;
struct run_env run_env;
struct user_env user_env;
static void __daemon_init(void) ;
static void _init_user_env(void);
int main(void){
char errbuf[MINIFTP_ERRBUF_SIZE] ;
int rtv = CONFIG_FILE_OK ;
int open_log = openLogFile() ;
if(open_log != SUCCESS){
openlog("Miniftp", LOG_PID, LOG_USER) ;
syslog(LOG_LOCAL1, "cannot open log file: %m") ;
}else{
OPEN_LOG_ENABLE = 1 ;
}
//check the config file.
if((rtv = read_configure( errbuf)) != CONFIG_FILE_OK){
printf("cannot read configure : %s\n",errbuf) ;
exit(rtv) ;
}
#ifndef DEBUG
//__daemon_init();
#endif
_init_user_env() ;
start_ftp_server() ;
if(open_log != SUCCESS){
closelog() ;
}
return 0 ;
}
static void __daemon_init(){
pid_t pid ;
int tindex = 0 ;
int tmp = FILE_OPERATION_OK ;
if((pid = fork()) == -1){
perror("first fork error.") ;
write_log("fork error", 0);
exit(errno);
}else if(pid){ // parent process
exit(0) ;
}
if(setsid() < 0){
perror("setsid error.") ;
write_log("setsid error.", 0) ;
exit(errno) ;
}
signal(SIGHUP,SIG_IGN) ;
if((pid = fork()) == -1){
perror("second fork error") ;
write_log("second fork error", 0);
exit(errno) ;
}else if(pid){
exit(0) ; //the first child terminates
}
if(chroot("/") == -1){
perror("chroot error.") ;
write_log("chroot error.", 0) ;
exit(errno) ;
}
if((tmp = chdir(run_env.ftp_dir)) == -1){
perror("chdir error.") ;
write_log("chdir error", 0) ;
exit(errno) ;
}
umask(0) ;
for(; tindex < MAXFD; tindex++){
r_close(tindex) ;
}
}
static void _init_user_env(void){
user_env.login_in = FALSE ;
strcpy(user_env.user_name,"") ;
user_env.user_id = 0 ;
user_env.client_ip = NULL ;
user_env.client_data_port = 0 ;
user_env.login_time = 0 ;
user_env.last_operation_time = 0 ;
user_env.enable_upload = TRUE ;
strcpy(user_env.current_path,"/") ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -