imported the MT snapshot of the GPL tftp-server for win32 from sourceforge. Minor changes such as formatting and renaming the files, totally untested except for building, will be used later to serve up ReactOS images to PXE boot

svn path=/trunk/; revision=40919
This commit is contained in:
Steven Edwards 2009-05-14 14:52:22 +00:00
parent 9e1d61edc1
commit 5a40435d8d
5 changed files with 2424 additions and 0 deletions

View file

@ -25,6 +25,9 @@
<directory name="telnetd">
<xi:include href="telnetd/telnetd.rbuild" />
</directory>
<directory name="tftpd">
<xi:include href="tftpd/tftpd.rbuild" />
</directory>
<directory name="umpnpmgr">
<xi:include href="umpnpmgr/umpnpmgr.rbuild" />
</directory>

View file

@ -0,0 +1,3 @@
This is a snapshot from the 1.6 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

@ -0,0 +1,161 @@
/**************************************************************************
* Copyright (C) 2005 by Achal Dhir *
* achaldhir@gmail.com *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
// TFTPServer.cpp
#ifdef _MSC_VER
#define strcasecmp _stricmp
#define _CRT_SECURE_NO_WARNINGS
#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "iphlpapi.lib")
#endif
//Constants
#define my_inet_addr inet_addr
#define MAX_SERVERS 8
//Structs
struct home
{
char alias[64];
char target[256];
};
struct tftpConnType
{
SOCKET sock;
sockaddr_in addr;
DWORD server;
WORD port;
};
struct acknowledgement
{
WORD opcode;
WORD block;
};
struct message
{
WORD opcode;
char buffer[514];
};
struct tftperror
{
WORD opcode;
WORD errorcode;
char errormessage[512];
};
struct packet
{
WORD opcode;
WORD block;
char buffer;
};
struct data12
{
DWORD rangeStart;
DWORD rangeEnd;
};
struct request
{
timeval tv;
fd_set readfds;
time_t expiry;
SOCKET sock;
SOCKET knock;
BYTE sockInd;
BYTE attempt;
char path[256];
FILE *file;
char *filename;
char *mode;
char *alias;
DWORD tsize;
DWORD fblock;
int bytesReady;
int bytesRecd;
int bytesRead[2];
packet* pkt[2];
sockaddr_in client;
socklen_t clientsize;
union
{
tftperror serverError;
message mesout;
acknowledgement acout;
};
union
{
tftperror clientError;
message mesin;
acknowledgement acin;
};
WORD blksize;
WORD timeout;
WORD block;
WORD tblock;
};
struct data2
{
WSADATA wsaData;
tftpConnType tftpConn[MAX_SERVERS];
DWORD servers[MAX_SERVERS];
WORD ports[MAX_SERVERS];
home homes[8];
FILE *logfile;
data12 hostRanges[32];
char fileRead;
char fileWrite;
char fileOverwrite;
int minport;
int maxport;
SOCKET maxFD;
BYTE logLevel;
};
struct data15
{
union
{
//DWORD ip;
unsigned ip:32;
BYTE octate[4];
};
};
//Functions
void runProg();
void processRequest(LPVOID lpParam);
char* myGetToken(char*, BYTE);
void init();
bool cleanReq(request*);
bool getSection(char*, char*, BYTE, char*);
bool isIP(char*s);
char* myLower(char*);
char* myUpper(char*);
char* IP2String(char*, DWORD);
void printWindowsError();
void logMess(request*, BYTE);
void logMess(char*, BYTE);

View file

@ -0,0 +1,12 @@
<module name="tftpd" type="win32cui" installbase="system32" installname="tftpd.exe" allowwarnings="true" unicode="no">
<include base="reactos"></include>
<include base="telnetd">..</include>
<library>ntdll</library>
<library>kernel32</library>
<library>advapi32</library>
<library>ws2_32</library>
<library>wine</library>
<file>tftpd.cpp</file>
</module>