blob: 12e3f0935904ba2911c42a0a85845ae0bd735538 [file] [log] [blame]
#include<stdio.h>
#include<sys/socket.h>
#include<stdlib.h>
#include<string.h>
#include<strings.h>
#include<unistd.h>
#include<netinet/in.h>
#include<netdb.h>
#include<errno.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include "liblog/liblog.h"
#include "liblog/lynq_deflog.h"
#define SERV_PORT 21
#define MAXSIZE 1024
//#define MAXBUF 1024
#define FTP_FILE_TYPE_LEN 4
#define FTP_MAX_ASCII_LEN 1024
#define FTPSHMPATH "/"
#define FTPSHMID 'K'
int error;
char errorbuf[10];
#if 1
/*log error info */
#define FTP_NET_ERROR 31 //network
#define FTP_DNS_ERROR 32 //DNS
#define FTP_CONNECT_ERROR 33 //connect
#define FTP_TIMEROUT 34 //time out
#define FTP_SERVER_ERROR 35 //server
#define FTP_OPERATION_NOT_ALLOW 36 //operation not allow
#define FTP_REPLAY_ERROR 37 //replay
#define FTP_USER_ERROR 38 //user
#define FTP_PASSWORD_ERROR 39 //pwd
#define FTP_TYPE_ERROR 40 //type
#define FTP_REST_ERROR 41 //rest
#define FTP_PASSIVE_ERROR 42 //passive
#define FTP_ACTIVE_ERROR 43 //active
#define FTP_OPERATE_ERROR 44 //operate
#define FTP_UPLOAD_ERROR 45 //upload
#define FTP_DOWNLOAD_ERROR 46 //download
#define FTP_FILE_ACTION_ERROR 47 //action error
#define FTP_MANUAL_QUIT 48 //manual quit
#define FTP_ERROR_FLAG 49
#define FTP_SOCK_ERROR 50 //socket error
#define FTP_RCV_ERROR 51 //rcv error
#define FTP_SEND_ERROR 52 //send error
#define FTP_CLOSE_ERROR 53 //close error
#define FTP_READ_ERROR 54 //read error
#define FTP_WRITE_ERROR 55 //write error
#define FTP_LS_ERROR 55 //ls error
#endif
#if 1
/***********ftp return vauil******************/
#define FTP_100_INIT_WAIT_LAST_CMD 100
#define FTP_125_TRANSFER_START 125
#define FTP_150_OPEN_DATA_CONNECT 150
#define FTP_200_COMMAND_SUCCESSFUL 200
#define FTP_213_FILE_STATUS 213
#define FTP_220_SERVER_READY_FOR_NEW_USER 220
#define FTP_221_CLOSE_CONTROL_CONNECT 221
#define FTP_226_TRANSFER_COMPLATE 226
#define FTP_227_ENTRY_PASV_MODE 227
#define FTP_230_USER_LOGGED_IN 230
#define FTP_250_REQUEST_FILE_ACTION_OK 250
#define FTP_257_PATH_NAME 257
#define FTP_331_NAMEOK_PASS_REQUIRE 331
#define FTP_350_FILE_OPER_OK_WAIT_NEXT 350
#define FTP_421_CONTROL_LINK_SHUTDOWN 421
#define FTP_425_CANNOT_OPEN_DATA_CONNECT 425
#define FTP_500_COMMAND_ERROR 500
#define FTP_501_PARAMETER_ERROR 501
#define FTP_502_COMMAND_NOT_IMP 502
#define FTP_503_BAD_SEQUENCE_OF_CMD 503
#define FTP_530_CANNOT_LOG_IN 530
#define FTP_532_NEED_ACCOUNT 532
#define FTP_534_CANNOT_CONN_CAUSE_SSL 534
#define FTP_550_FILE_CANT_FIND 550
#endif
typedef struct ftp_socket_info
{
int id;
int index;
char protocol[10];
int session;
char action[10];
int control_sockfd;
int portnum;//port num 1~65535
char is_pasv_mode[225];//0:initiative 1:pasv
char file_type[FTP_FILE_TYPE_LEN+1];//type "A" or "I"
char put_opt[FTP_FILE_TYPE_LEN+1];// "APPE", "STOU", "STOR"
int rest; //xu chuan wei zhi;
char sevname[FTP_MAX_ASCII_LEN + 1];//addr :192.168.1.89;
char username[FTP_MAX_ASCII_LEN + 1];//user
char pw[FTP_MAX_ASCII_LEN + 1];//password
char getfilename[FTP_MAX_ASCII_LEN + 1];//get file name;
char getfilename_path[FTP_MAX_ASCII_LEN + 1];//get file path;
char putfilename[FTP_MAX_ASCII_LEN + 1];//put file name;
char putfilename_path[FTP_MAX_ASCII_LEN + 1];//put file path;
//char conmd[255];
char dir[1024];
char del_mkr_filename[1024];
char respond[1024];
int flag;
int flag1;
int modify_thread;
int add_thread;
}lynq_ftp_socker_info;
int control_sockfd;
int login_yes;
int f;
char putpathname[225];
char hoster[255];
struct sockaddr_in servaddr;
char rbuf[1024],rbuf1[1024],wbuf[1024],wbuf1[1024];
int ftpshm_id;
lynq_ftp_socker_info *FTP;
int uartfd;
int usbfd;
//char BUF[1024];
int lynq_ftp_put(int sck,char *pUploadFileName_s);
extern int lynq_ftp_login(lynq_ftp_socker_info *FTP);
extern void zeromery(char *a,int len);
extern char *itoa(int value, char *string, int radix);
extern void lynq_ftp_pwd(int control_sockfd);
extern int strtosrv(char *str);
extern void lynq_ftp_get(int sck, char *pDownloadFileName, int session);
extern void lynq_ftp_rest(int control_sockfd);
extern int cliopen(char *hoster, int port);
extern int lynq_ftp_download(lynq_ftp_socker_info* FTP);
extern int lynq_ftp_up(lynq_ftp_socker_info* FTP);
int lynq_ftp_ls(lynq_ftp_socker_info* FTP);
void lynq_ftp_cd(lynq_ftp_socker_info* FTP);
void lynq_ftp_creat_mkd(lynq_ftp_socker_info* FTP);
void lynq_ftp_delete_mkd(lynq_ftp_socker_info* FTP);
void ftp_list(int sockfd, int session);
void lynq_ftp_quit(lynq_ftp_socker_info* FTP);
void lynq_ftp_deletefile_mkd(lynq_ftp_socker_info* FTP);
extern void init(lynq_ftp_socker_info* FTP);
extern int lynq_ftpshm_create( void );
extern lynq_ftp_socker_info *ftpshm_act(int shmid);
extern void lynq_ftpshm_deact(lynq_ftp_socker_info *shm);
extern void lynq_ftpshm_del(int shmid);