* Update TFTPD Server. Initial patch by Kudratov Olimjon with some changes by me.
CORE-8620 #resolve #comment Committed in r64714 with some changes.

svn path=/trunk/; revision=64714
This commit is contained in:
Amine Khaldi 2014-10-13 11:03:35 +00:00
parent 3ed526868f
commit cc3b98c999
4 changed files with 780 additions and 360 deletions

View file

@ -1,7 +1,4 @@
add_executable(tftpd tftpd.cpp)
target_link_libraries(tftpd wine)
set_module_type(tftpd win32cui)
add_importlibs(tftpd advapi32 ws2_32 msvcrt kernel32 ntdll)
add_importlibs(tftpd advapi32 ws2_32 iphlpapi msvcrt kernel32)

View file

@ -1,3 +1,3 @@
This is a snapshot from the 1.6 release of tftp-server for win32 from sourceforge.
This is a snapshot from the 1.64 release of tftp-server for win32 from sourceforge.
http://tftp-server.sourceforge.net

File diff suppressed because it is too large Load diff

View file

@ -18,6 +18,9 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
// TFTPServer.cpp
#define MYBYTE unsigned char
#define MYWORD unsigned short
#define MYDWORD unsigned int
#ifdef _MSC_VER
#define strcasecmp _stricmp
@ -41,40 +44,42 @@ struct tftpConnType
{
SOCKET sock;
sockaddr_in addr;
DWORD server;
WORD port;
MYDWORD server;
MYWORD port;
bool loaded;
bool ready;
};
struct acknowledgement
{
WORD opcode;
WORD block;
MYWORD opcode;
MYWORD block;
};
struct message
{
WORD opcode;
MYWORD opcode;
char buffer[514];
};
struct tftperror
{
WORD opcode;
WORD errorcode;
MYWORD opcode;
MYWORD errorcode;
char errormessage[512];
};
struct packet
{
WORD opcode;
WORD block;
MYWORD opcode;
MYWORD block;
char buffer;
};
struct data12
{
DWORD rangeStart;
DWORD rangeEnd;
MYDWORD rangeStart;
MYDWORD rangeEnd;
};
struct request
@ -84,15 +89,15 @@ struct request
time_t expiry;
SOCKET sock;
SOCKET knock;
BYTE sockInd;
BYTE attempt;
MYBYTE sockInd;
MYBYTE attempt;
char path[256];
FILE *file;
char *filename;
char *mode;
char *alias;
DWORD tsize;
DWORD fblock;
MYDWORD tsize;
MYDWORD fblock;
int bytesReady;
int bytesRecd;
int bytesRead[2];
@ -111,18 +116,27 @@ struct request
message mesin;
acknowledgement acin;
};
WORD blksize;
WORD timeout;
WORD block;
WORD tblock;
MYWORD blksize;
MYWORD timeout;
MYWORD block;
MYWORD tblock;
};
struct data1
{
tftpConnType tftpConn[MAX_SERVERS];
MYDWORD allServers[MAX_SERVERS];
MYDWORD staticServers[MAX_SERVERS];
MYDWORD listenServers[MAX_SERVERS];
MYWORD listenPorts[MAX_SERVERS];
SOCKET maxFD;
bool ready;
bool busy;
};
struct data2
{
WSADATA wsaData;
tftpConnType tftpConn[MAX_SERVERS];
DWORD servers[MAX_SERVERS];
WORD ports[MAX_SERVERS];
home homes[8];
FILE *logfile;
data12 hostRanges[32];
@ -131,31 +145,40 @@ struct data2
char fileOverwrite;
int minport;
int maxport;
SOCKET maxFD;
BYTE logLevel;
MYDWORD failureCount;
MYBYTE logLevel;
bool ifspecified;
};
struct data15
{
union
{
//DWORD ip;
//MYDWORD ip;
unsigned ip:32;
BYTE octate[4];
MYBYTE octate[4];
};
};
//Functions
void runProg(void);
bool detectChange();
void closeConn();
void getInterfaces(data1*);
void runProg();
void processRequest(LPVOID lpParam);
char* myGetToken(char*, BYTE);
void init(void);
char* myGetToken(char*, MYBYTE);
char* myTrim(char*, char*);
void init(void*);
bool cleanReq(request*);
bool getSection(const char*, char*, BYTE, char*);
bool addServer(MYDWORD*, MYDWORD);
FILE* openSection(const char*, MYBYTE, char*);
char* readSection(char*, FILE*);
bool getSection(const char*, char*, MYBYTE, char*);
bool isIP(char*s);
char* myLower(char*);
char* myUpper(char*);
char* IP2String(char*, DWORD);
void printWindowsError(void);
void logMess(request*, BYTE);
void logMess(char*, BYTE);
char* IP2String(char*, MYDWORD);
MYDWORD* findServer(MYDWORD*, MYDWORD);
void printWindowsError();
void logMess(request*, MYBYTE);
void logMess(char*, MYBYTE);