📄 public.h
字号:
/*
基础公共函数 - 头文件
*/
#ifndef PUBLIC_H_
#define PUBLIC_H_
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <dirent.h>
#include <sys/time.h>
#include <time.h>
#include<stdio.h>
#include<stdlib.h>
#include<signal.h>
#include<fcntl.h>
#include<netdb.h>
#include<sys/param.h>
#include<sys/stat.h>
#include<errno.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <errno.h>
#include<unistd.h>
#include<sys/types.h>
#include<stdlib.h>
#include<stdio.h>
#include <linux/limits.h>
#include <signal.h>
#include <limits.h>
#include<unistd.h>
#include<pwd.h>
#include<shadow.h>
#include<string.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include <fcntl.h>
#include <netdb.h>
#include <sys/stat.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <arpa/inet.h>
#include <net/if_arp.h>
#include <net/if.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#define MAX_BUFF_LEN 1024
#define SHORT_STR_LEN 256
#define MAX_CONNECT_COUNT 10
#define FTP_DATACONN 150
#define FTP_NOOPOK 200
#define FTP_TYPEOK 200
#define FTP_PORTOK 200
#define FTP_EPRTOK 200
#define FTP_UMASKOK 200
#define FTP_CHMODOK 200
#define FTP_EPSVALLOK 200
#define FTP_STRUOK 200
#define FTP_MODEOK 200
#define FTP_PBSZOK 200
#define FTP_PROTOK 200
#define FTP_ALLOOK 202
#define FTP_FEAT 211
#define FTP_STATOK 211
#define FTP_SIZEOK 213
#define FTP_MDTMOK 213
#define FTP_STATFILE_OK 213
#define FTP_SITEHELP 214
#define FTP_HELP 214
#define FTP_SYSTOK 215
#define FTP_GREET 220
#define FTP_GOODBYE 221
#define FTP_ABOR_NOCONN 225
#define FTP_TRANSFEROK 226
#define FTP_ABOROK 226
#define FTP_PASVOK 227
#define FTP_EPSVOK 229
#define FTP_LOGINOK 230
#define FTP_AUTHOK 234
#define FTP_CWDOK 250
#define FTP_RMDIROK 250
#define FTP_DELEOK 250
#define FTP_RENAMEOK 250
#define FTP_PWDOK 257
#define FTP_MKDIROK 257
#define FTP_GIVEPWORD 331
#define FTP_RESTOK 350
#define FTP_RNFROK 350
#define FTP_IDLE_TIMEOUT 421
#define FTP_DATA_TIMEOUT 421
#define FTP_TOO_MANY_USERS 421
#define FTP_IP_LIMIT 421
#define FTP_IP_DENY 421
#define FTP_TLS_FAIL 421
#define FTP_BADSENDCONN 425
#define FTP_BADSENDNET 426
#define FTP_BADSENDFILE 451
#define FTP_BADCMD 500
#define FTP_BADOPTS 501
#define FTP_COMMANDNOTIMPL 502
#define FTP_NEEDUSER 503
#define FTP_NEEDRNFR 503
#define FTP_BADPBSZ 503
#define FTP_BADPROT 503
#define FTP_BADSTRU 504
#define FTP_BADMODE 504
#define FTP_BADAUTH 504
#define FTP_NOSUCHPROT 504
#define FTP_NEEDENCRYPT 521
#define FTP_EPSVBAD 522
#define FTP_DATATLSBAD 522
#define FTP_LOGINERR 530
#define FTP_NOHANDLEPROT 536
#define FTP_FILEFAIL 550
#define FTP_NOPERM 550
#define FTP_UPLOADFAIL 553
// ftp 全局变量
typedef struct ftp_global_var
{
int CtrSockfd; // 控制链接套接口
int DataSockfd; // 数据链接套接口
int IsLogin; // 是否已经登入
char username[80]; // 用户名
char pass[20]; // 密码
int isanonymous;
char currpath[PATH_MAX]; // 当前路径
char rootpath[100]; // 根目录
char homepath[100]; // 家目录
int uid; // 用户ID
int gid; // 组ID
char datacon_ip[16]; // 数据连接Ip
int datacon_port; // 数据连接端口
int IsPasv; // 是否时被动
int IsPort;
//主动模式
int port_mode_sockfd;
char port_ip[16]; // ip
int port_port; // 端口
// 被动模式
int pasv_mode_sockfd;
char transmode;
// 旧、新文件名
char oldpathname[100];
char newpathname[100];
//是否追加
int isappe;
//
long endseek;
//
int istrans;
}FtpGlobalVar;
// ftp配置文件 结构体 定义
typedef struct ftp_struct_config
{
char service_name[30]; // 服务名
int ctrl_connect_port; // 控制链接端口
int anonymous_enable; // 是否允许匿名用户
int connect_from_port_20; // 主动模式 数据连接端口
int local_enable; // 本地用户登入
int write_enable; // 是否允许写操作
int local_umask; // 上传文件掩码
int anon_upload_enable; // 是否允许上传文件
int anon_mkdir_write_enable; // 是否允许创建目录
int idle_session_timeout; // 控制连接超时情况
int data_connection_timeout; // 数据连接超时情况
}FtpConfig;
extern FtpGlobalVar ftp_global_var;
extern FtpConfig ftp_config;
// 读写
int read_loop(int sockfd,void * buf ,int size);
int write_loop(int sockfd,void * buf ,int size);
int readline(int fd, char* buf, int maxlen);
int recv_peek(int fd, void* buf, int len);
// 文件拷贝
int getfile(int argc,char ** argv);
int sendfile();
void trap(int n);
int Login();
// 输入到文件里面
int inputfile(char * filename,char * msg);
// 共享内存方面
// 共享内存
//extern void * pshare_memory;
extern struct shared_count * pshm;
struct shared_count
{
long upload_count; // 上传个数
long download_count; // 下载个数
long upload_bytes; // 上传字节总数
long download_bytes; // 下载个数
};
#endif /* PUBLIC.H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -