mirror of
https://github.com/reactos/reactos.git
synced 2025-07-01 10:21:21 +00:00
[TFTPD]
* 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:
parent
3ed526868f
commit
cc3b98c999
4 changed files with 780 additions and 360 deletions
|
@ -1,7 +1,4 @@
|
||||||
|
|
||||||
add_executable(tftpd tftpd.cpp)
|
add_executable(tftpd tftpd.cpp)
|
||||||
|
|
||||||
target_link_libraries(tftpd wine)
|
|
||||||
|
|
||||||
set_module_type(tftpd win32cui)
|
set_module_type(tftpd win32cui)
|
||||||
add_importlibs(tftpd advapi32 ws2_32 msvcrt kernel32 ntdll)
|
add_importlibs(tftpd advapi32 ws2_32 iphlpapi msvcrt kernel32)
|
||||||
|
|
|
@ -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
|
http://tftp-server.sourceforge.net
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -18,6 +18,9 @@
|
||||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
// TFTPServer.cpp
|
// TFTPServer.cpp
|
||||||
|
#define MYBYTE unsigned char
|
||||||
|
#define MYWORD unsigned short
|
||||||
|
#define MYDWORD unsigned int
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
#define strcasecmp _stricmp
|
#define strcasecmp _stricmp
|
||||||
|
@ -41,40 +44,42 @@ struct tftpConnType
|
||||||
{
|
{
|
||||||
SOCKET sock;
|
SOCKET sock;
|
||||||
sockaddr_in addr;
|
sockaddr_in addr;
|
||||||
DWORD server;
|
MYDWORD server;
|
||||||
WORD port;
|
MYWORD port;
|
||||||
|
bool loaded;
|
||||||
|
bool ready;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct acknowledgement
|
struct acknowledgement
|
||||||
{
|
{
|
||||||
WORD opcode;
|
MYWORD opcode;
|
||||||
WORD block;
|
MYWORD block;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct message
|
struct message
|
||||||
{
|
{
|
||||||
WORD opcode;
|
MYWORD opcode;
|
||||||
char buffer[514];
|
char buffer[514];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct tftperror
|
struct tftperror
|
||||||
{
|
{
|
||||||
WORD opcode;
|
MYWORD opcode;
|
||||||
WORD errorcode;
|
MYWORD errorcode;
|
||||||
char errormessage[512];
|
char errormessage[512];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct packet
|
struct packet
|
||||||
{
|
{
|
||||||
WORD opcode;
|
MYWORD opcode;
|
||||||
WORD block;
|
MYWORD block;
|
||||||
char buffer;
|
char buffer;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct data12
|
struct data12
|
||||||
{
|
{
|
||||||
DWORD rangeStart;
|
MYDWORD rangeStart;
|
||||||
DWORD rangeEnd;
|
MYDWORD rangeEnd;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct request
|
struct request
|
||||||
|
@ -84,15 +89,15 @@ struct request
|
||||||
time_t expiry;
|
time_t expiry;
|
||||||
SOCKET sock;
|
SOCKET sock;
|
||||||
SOCKET knock;
|
SOCKET knock;
|
||||||
BYTE sockInd;
|
MYBYTE sockInd;
|
||||||
BYTE attempt;
|
MYBYTE attempt;
|
||||||
char path[256];
|
char path[256];
|
||||||
FILE *file;
|
FILE *file;
|
||||||
char *filename;
|
char *filename;
|
||||||
char *mode;
|
char *mode;
|
||||||
char *alias;
|
char *alias;
|
||||||
DWORD tsize;
|
MYDWORD tsize;
|
||||||
DWORD fblock;
|
MYDWORD fblock;
|
||||||
int bytesReady;
|
int bytesReady;
|
||||||
int bytesRecd;
|
int bytesRecd;
|
||||||
int bytesRead[2];
|
int bytesRead[2];
|
||||||
|
@ -111,18 +116,27 @@ struct request
|
||||||
message mesin;
|
message mesin;
|
||||||
acknowledgement acin;
|
acknowledgement acin;
|
||||||
};
|
};
|
||||||
WORD blksize;
|
MYWORD blksize;
|
||||||
WORD timeout;
|
MYWORD timeout;
|
||||||
WORD block;
|
MYWORD block;
|
||||||
WORD tblock;
|
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
|
struct data2
|
||||||
{
|
{
|
||||||
WSADATA wsaData;
|
WSADATA wsaData;
|
||||||
tftpConnType tftpConn[MAX_SERVERS];
|
|
||||||
DWORD servers[MAX_SERVERS];
|
|
||||||
WORD ports[MAX_SERVERS];
|
|
||||||
home homes[8];
|
home homes[8];
|
||||||
FILE *logfile;
|
FILE *logfile;
|
||||||
data12 hostRanges[32];
|
data12 hostRanges[32];
|
||||||
|
@ -131,31 +145,40 @@ struct data2
|
||||||
char fileOverwrite;
|
char fileOverwrite;
|
||||||
int minport;
|
int minport;
|
||||||
int maxport;
|
int maxport;
|
||||||
SOCKET maxFD;
|
MYDWORD failureCount;
|
||||||
BYTE logLevel;
|
MYBYTE logLevel;
|
||||||
|
bool ifspecified;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct data15
|
struct data15
|
||||||
{
|
{
|
||||||
union
|
union
|
||||||
{
|
{
|
||||||
//DWORD ip;
|
//MYDWORD ip;
|
||||||
unsigned ip:32;
|
unsigned ip:32;
|
||||||
BYTE octate[4];
|
MYBYTE octate[4];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
//Functions
|
//Functions
|
||||||
void runProg(void);
|
bool detectChange();
|
||||||
|
void closeConn();
|
||||||
|
void getInterfaces(data1*);
|
||||||
|
void runProg();
|
||||||
void processRequest(LPVOID lpParam);
|
void processRequest(LPVOID lpParam);
|
||||||
char* myGetToken(char*, BYTE);
|
char* myGetToken(char*, MYBYTE);
|
||||||
void init(void);
|
char* myTrim(char*, char*);
|
||||||
|
void init(void*);
|
||||||
bool cleanReq(request*);
|
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);
|
bool isIP(char*s);
|
||||||
char* myLower(char*);
|
char* myLower(char*);
|
||||||
char* myUpper(char*);
|
char* myUpper(char*);
|
||||||
char* IP2String(char*, DWORD);
|
char* IP2String(char*, MYDWORD);
|
||||||
void printWindowsError(void);
|
MYDWORD* findServer(MYDWORD*, MYDWORD);
|
||||||
void logMess(request*, BYTE);
|
void printWindowsError();
|
||||||
void logMess(char*, BYTE);
|
void logMess(request*, MYBYTE);
|
||||||
|
void logMess(char*, MYBYTE);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue