📄 extern.h
字号:
#ifndef EXTERN_H_
#define EXTERN_H_
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <sys/wait.h>
#include <sys/msg.h>//消息
#include <sys/sem.h>//信号量
#include <sys/stat.h>//管道
#include <sys/shm.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <fcntl.h>
#include <pwd.h>
#include <shadow.h>
#include <grp.h>
#include <crypt.h>
#include <glob.h>
#include <dirent.h>//目录
#include <netdb.h>//网络信息
#include <pthread.h>
#include <signal.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <grp.h>
#include <pwd.h>
#include <time.h>
/*---------------------------------------------函数声明区----------------------------------------------*/
/*主函数*/
extern int Main_Fun();
/*读取配置信息*/
extern void Read_Conf();
/*去除右空格*/
extern void RTrim(char *ch);
/*去除左空格*/
extern void LTrim(char *ch);
/*初始化套接字并设置其地址*/
extern int Init_Socket(int sin_port, char *address);
/*名称套接字并创建套接字队列(服务器)*/
extern int Linten_Socket(int sockfd, int backlog);
/*接受连接*/
extern int Accept_Connect(int sockfd, struct sockaddr_in *address);
/*接受信息RECV()*/
extern int Recv_Message(int sockfd, char *buf, int len);
/*FTP最终状态返回的函数*/
extern void Ftp_State_Return(char *buf,int state);
/*获取文件目录详细信息*/
extern int List(char *buf, int len);
/*出错信息*/
extern int errlog(char *logfile,char *msg);
/*处理登录信息*/
extern void User_Login();
/*验证用户名和密码*/
extern int Check_User(char *name, char *password, int *uid, int *gid, char *dir, int state);
/*PORT模式,用户发IP和端口过来,进行相应的转换*/
int Get_Ip_Port(char *buf, char *ip, int *port);
/*FTP 控制*/
extern int Ftp_Ctrl(int argc, char **argv, int *startfun());
/*FTP 启动*/
extern int Ftp_Start(char *appname, int *startfun());
/*FTP 重启*/
extern int Ftp_Restart(char *appname, int *startfun());
/*FTP 停止*/
extern int Ftp_Stop(char *appname);
/*获取进程PID*/
extern int Get_Pid(char *appname,char *strpids,int bufflen);
/*转换IP*/
extern void Ip_Change(char *buf);
/*处理信号函数*/
extern void Handle_Signal(int sig_num);
/*信号处理的句柄注册*/
extern int Reg_Signal(void (*Handle_Signal)(int));
/*创建共享内存*/
extern void Init_Memory();
/*---------------------------------------------命令处理函数--------------------------------------------*/
extern int Cmd_USER(char *buf, char *send_msg);
extern int Cmd_PASS(char *passwd, char *send_msg);
extern int Cmd_SYST(char *buf, char *send_msg);
extern int Cmd_FEAT(char *buf, char *send_msg);
extern int Cmd_REST(char *buf, char *send_msg);
extern int Cmd_PWD(char *buf, char *send_msg);
extern int Cmd_TYPE(char *buf, char *send_msg);
extern int Cmd_PASV(char *buf, char *send_msg);
extern int Cmd_LIST(char *buf, char *send_msg);
extern int Cmd_QUIT(char *buf, char *send_msg);
extern int Cmd_MKD(char *buf, char *send_msg);
extern int Cmd_RMD(char *buf, char *send_msg);
extern int Cmd_CWD(char *buf, char *send_msg);
extern int Cmd_CDUP(char *buf, char *send_msg);
extern int Cmd_RNFR(char *buf, char *send_msg);
extern int Cmd_RNTO(char *buf, char *send_msg);
extern int Cmd_RETR(char *buf, char *send_msg);
extern int Cmd_STOR(char *buf, char *send_msg);
extern int Cmd_DELE(char *buf, char *send_msg);
extern int Cmd_APPE(char *buf, char *send_msg);
extern int Cmd_ABOR(char *buf, char *send_msg);
extern int Cmd_PORT(char *buf, char *send_msg);
extern int Cmd_NOOP(char *buf, char *send_msg);
extern int Cmd_HELP(char *buf, char *send_msg);
extern int Cmd_SIZE(char *buf, char *send_msg);
extern int Cmd_STAT(char *buf, char *send_msg);
/*----------------------------------------------全局变量区---------------------------------------------*/
extern int SOCKFD;//主套接字
extern int CMD_SOCKFD;//命令套接字
extern int LISTEN_SOCKFD;//监听套接字
extern int DATA_SOCKFD;//数据套接字
extern int UID;//用户ID
extern int GID;//组ID
extern long int OFFSET;
extern char USER[20];//用户名
extern char PASSWORD[20];//密码
extern char USER_DIR[256];//没个用户登录时的绝对路径
extern char ABSOLUTE_PATH[100];//绝对路径
extern char REL_PATH[100];//相对路径
extern char FILE_NAME[100];//要重命名的文件夹名称
extern int ENBALE_ANONYMOUS;//允许匿名登录状态
extern int MAX_UPLOAD_SPEED;//最大上传速度(KB/S)
extern int MIN_DOWNLOAD_SPEED;//最大下载速度(KB/S)
extern int TIME_OUT;//连接服务器超时时间(秒)
extern int ENABLE_USERLIST;//用户列表里面的用户是否有效
extern int PORT;//端口号
extern char IP[100];//ip地址
extern char ENABLE_LOGIN_USER[20][20];//保存可登录用户名2维数组
char newmsg[200];
/*创建共享内存的结构体*/
struct Share_Memory
{
long int TOTAL_UPLOAD;
long int TOTAL_DOWNLOAD;
};
extern int SHM_ID;//共享内存标识符
struct Share_Memory *share_memory;
/*----------------------------------------------宏定义区-----------------------------------------------*/
#define makelog(path, msg) ( \
memset(newmsg,0,sizeof(newmsg)), \
sprintf(newmsg, "[%d] [%s] [%s] [%s]", __LINE__, __FILE__, __TIME__, msg), \
errlog(path,newmsg) \
)
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -