[NFSD] [TELNET] Remove the hardcoded directory paths C:\ReactOS

CORE-14747
This commit is contained in:
Katayama Hirofumi MZ 2018-08-23 02:40:11 +09:00 committed by Pierre Schweitzer
parent 86b915ef84
commit b8e98c4e66
4 changed files with 64 additions and 7 deletions

View file

@ -74,8 +74,10 @@ struct idmap_lookup {
}; };
#ifndef __REACTOS__
/* configuration */ /* configuration */
static const char CONFIG_FILENAME[] = "C:\\ReactOS\\System32\\drivers\\etc\\ms-nfs41-idmap.conf"; static const char CONFIG_FILENAME[] = "C:\\ReactOS\\System32\\drivers\\etc\\ms-nfs41-idmap.conf";
#endif
struct idmap_config { struct idmap_config {
/* ldap server information */ /* ldap server information */
@ -361,6 +363,9 @@ static int config_init(
struct idmap_config *config) struct idmap_config *config)
{ {
int status; int status;
#ifdef __REACTOS__
char config_path[MAX_PATH];
#endif
/* load default values */ /* load default values */
status = config_defaults(config); status = config_defaults(config);
@ -369,10 +374,29 @@ static int config_init(
goto out; goto out;
} }
#ifdef __REACTOS__
if (GetSystemDirectoryA(config_path, ARRAYSIZE(config_path)))
{
StringCchCatA(config_path, ARRAYSIZE(config_path), "\\drivers\\etc\\ms-nfs41-idmap.conf");
}
else
{
StringCchCopyA(config_path, ARRAYSIZE(config_path), "C:\\ReactOS\\system32\\drivers\\etc\\ms-nfs41-idmap.conf");
}
#endif
/* load configuration from file */ /* load configuration from file */
#ifdef __REACTOS__
status = config_load(config, config_path);
#else
status = config_load(config, CONFIG_FILENAME); status = config_load(config, CONFIG_FILENAME);
#endif
if (status) { if (status) {
#ifdef __REACTOS__
eprintf("config_load('%s') failed with %d\n", config_path, status);
#else
eprintf("config_load('%s') failed with %d\n", CONFIG_FILENAME, status); eprintf("config_load('%s') failed with %d\n", CONFIG_FILENAME, status);
#endif
goto out; goto out;
} }
out: out:

View file

@ -23,6 +23,9 @@
#include <process.h> #include <process.h>
#include <tchar.h> #include <tchar.h>
#include <stdio.h> #include <stdio.h>
#ifdef __REACTOS__
#include <strsafe.h>
#endif
#include <devioctl.h> #include <devioctl.h>
#include <lmcons.h> /* UNLEN for GetUserName() */ #include <lmcons.h> /* UNLEN for GetUserName() */
@ -38,7 +41,9 @@
#define MAX_NUM_THREADS 128 #define MAX_NUM_THREADS 128
DWORD NFS41D_VERSION = 0; DWORD NFS41D_VERSION = 0;
#ifndef __REACTOS__
static const char FILE_NETCONFIG[] = "C:\\ReactOS\\System32\\drivers\\etc\\netconfig"; static const char FILE_NETCONFIG[] = "C:\\ReactOS\\System32\\drivers\\etc\\netconfig";
#endif
/* Globals */ /* Globals */
char localdomain_name[NFS41_HOSTNAME_LEN]; char localdomain_name[NFS41_HOSTNAME_LEN];
@ -163,10 +168,29 @@ typedef struct _nfsd_args {
static bool_t check_for_files() static bool_t check_for_files()
{ {
FILE *fd; FILE *fd;
#ifdef __REACTOS__
char config_path[MAX_PATH];
if (GetSystemDirectoryA(config_path, ARRAYSIZE(config_path)))
{
StringCchCatA(config_path, ARRAYSIZE(config_path), "\\drivers\\etc\\netconfig");
}
else
{
StringCchCopyA(config_path, ARRAYSIZE(config_path), "C:\\ReactOS\\system32\\drivers\\etc\\netconfig");
}
fd = fopen(config_path, "r");
#else
fd = fopen(FILE_NETCONFIG, "r"); fd = fopen(FILE_NETCONFIG, "r");
#endif
if (fd == NULL) { if (fd == NULL) {
#ifdef __REACTOS__
fprintf(stderr,"nfsd() failed to open file '%s'\n", config_path);
#else
fprintf(stderr,"nfsd() failed to open file '%s'\n", FILE_NETCONFIG); fprintf(stderr,"nfsd() failed to open file '%s'\n", FILE_NETCONFIG);
#endif
return FALSE; return FALSE;
} }
fclose(fd); fclose(fd);

View file

@ -367,12 +367,20 @@ static void RunShell(client_t *client)
STARTUPINFO si; STARTUPINFO si;
PROCESS_INFORMATION piProcInfo; PROCESS_INFORMATION piProcInfo;
SECURITY_ATTRIBUTES saAttr; SECURITY_ATTRIBUTES saAttr;
char cmd_path[MAX_PATH];
if (!GetEnvironmentVariableA("COMSPEC", cmd_path, ARRAYSIZE(cmd_path)))
{
if (GetSystemDirectoryA(cmd_path, ARRAYSIZE(cmd_path)))
{
StringCchCatA(cmd_path, ARRAYSIZE(cmd_path), "\\cmd.exe");
}
else
{
StringCchCopyA(cmd_path, ARRAYSIZE(cmd_path), "C:\\ReactOS\\system32\\cmd.exe");
}
}
const char *name = "c:\\reactos\\system32\\cmd.exe";
const char *cmd = NULL;
//const char *name = "d:\\cygwin\\bin\\bash.exe";
//const char *cmd = "d:\\cygwin\\bin\\bash.exe --login -i";
saAttr.nLength = sizeof(SECURITY_ATTRIBUTES); saAttr.nLength = sizeof(SECURITY_ATTRIBUTES);
saAttr.bInheritHandle = TRUE; saAttr.bInheritHandle = TRUE;
saAttr.lpSecurityDescriptor = NULL; saAttr.lpSecurityDescriptor = NULL;
@ -406,8 +414,8 @@ static void RunShell(client_t *client)
//si.dwFlags |= STARTF_USESHOWWINDOW; //si.dwFlags |= STARTF_USESHOWWINDOW;
//si.wShowWindow = SW_SHOW; //si.wShowWindow = SW_SHOW;
if (!CreateProcess((LPSTR) name, // executable module if (!CreateProcess(cmd_path, // executable module
(LPSTR) cmd, // command line NULL, // command line
NULL, // process security attributes NULL, // process security attributes
NULL, // primary thread security attributes NULL, // primary thread security attributes
TRUE, // handles are inherited TRUE, // handles are inherited

View file

@ -9,6 +9,7 @@
#include <wincon.h> #include <wincon.h>
#define _INC_WINDOWS #define _INC_WINDOWS
#include <winsock2.h> #include <winsock2.h>
#include <strsafe.h>
/* /*
** macro definitions ** macro definitions