version 1.14, 2003/11/20 07:18:41 |
version 1.19, 2004/09/17 08:46:10 |
|
|
/* $OpenXM: OpenXM/src/kxx/oxmain.c,v 1.13 2003/11/18 11:08:27 takayama Exp $ */ |
/* $OpenXM: OpenXM/src/kxx/oxmain.c,v 1.18 2004/09/17 07:27:28 takayama Exp $ */ |
/* nullserver01 */ |
/* nullserver01 */ |
#include <stdio.h> |
#include <stdio.h> |
#include <fcntl.h> |
#include <fcntl.h> |
Line 36 int Do_not_use_control_stream_to_tell_no_server = 1; |
|
Line 36 int Do_not_use_control_stream_to_tell_no_server = 1; |
|
static void errorToStartEngine(void); |
static void errorToStartEngine(void); |
static int findOxServer(char *server); |
static int findOxServer(char *server); |
static void couldNotFind(char *s); |
static void couldNotFind(char *s); |
#if defined(__CYGWIN__) |
|
int errno; |
|
#endif |
|
/* gcc -v -c hoge.c */ |
/* gcc -v -c hoge.c */ |
|
|
|
void *sGC_malloc(int n) { |
|
return (void *)malloc(n); |
|
} |
|
|
main(int argc, char *argv[]) { |
main(int argc, char *argv[]) { |
int fd; |
int fd; |
int size; |
int size; |
Line 54 main(int argc, char *argv[]) { |
|
Line 55 main(int argc, char *argv[]) { |
|
extern int OpenedSocket; |
extern int OpenedSocket; |
char portfile[1024]; |
char portfile[1024]; |
char *pass = NULL; |
char *pass = NULL; |
|
char *passControl = NULL; |
|
char *passData = NULL; |
int result; |
int result; |
int sleepingTime = 0; |
int sleepingTime = 0; |
extern int OxTerminateMode; |
extern int OxTerminateMode; |
|
|
|
signal(SIGHUP,SIG_IGN); /* ignore x of xterm */ |
strcpy(sname,"localhost"); |
strcpy(sname,"localhost"); |
strcpy(ServerName,SERVERNAME); |
strcpy(ServerName,SERVERNAME); |
i = 1; |
i = 1; |
Line 99 main(int argc, char *argv[]) { |
|
Line 103 main(int argc, char *argv[]) { |
|
if (i<argc) { |
if (i<argc) { |
pass = argv[i]; |
pass = argv[i]; |
} |
} |
|
}else if (strcmp(argv[i],"-passData") == 0) { |
|
i++; |
|
if (i<argc) { |
|
passData = argv[i]; |
|
} |
|
}else if (strcmp(argv[i],"-passControl") == 0) { |
|
i++; |
|
if (i<argc) { |
|
passControl = argv[i]; |
|
} |
}else if (strcmp(argv[i],"-wait") == 0) { |
}else if (strcmp(argv[i],"-wait") == 0) { |
i++; |
i++; |
if (i<argc) { |
if (i<argc) { |
Line 125 main(int argc, char *argv[]) { |
|
Line 139 main(int argc, char *argv[]) { |
|
fprintf(stderr,"\nTrying to connect\n"); |
fprintf(stderr,"\nTrying to connect\n"); |
} |
} |
|
|
|
if ((pass != NULL) && (passData == NULL)) { |
|
passData = pass; |
|
} |
|
if ((pass != NULL) && (passControl == NULL)) { |
|
passControl = pass; |
|
} |
|
|
|
/* Decrypt passControl and passData, here. Lookup cryptmethod. */ |
|
|
if (reverse) { |
if (reverse) { |
/* The order is very important. */ |
/* The order is very important. */ |
fdControl = socketConnectWithPass(sname,portControl,pass); |
fdControl = socketConnectWithPass(sname,portControl,passControl); |
fdStream = socketConnectWithPass(sname,portStream,pass); |
fdStream = socketConnectWithPass(sname,portStream,passData); |
|
|
fprintf(stderr,"Connected: control = %d, data = %d.\n",fdControl,fdStream); |
fprintf(stderr,"Connected: control = %d, data = %d.\n",fdControl,fdStream); |
result = 0; |
result = 0; |
Line 194 main(int argc, char *argv[]) { |
|
Line 217 main(int argc, char *argv[]) { |
|
} |
} |
} |
} |
|
|
|
if (passControl != NULL) { |
|
char *s; int mm; |
|
fprintf(stderr,"passControl\n"); |
|
mm = strlen(passControl); |
|
s = (char *) malloc(mm+1); |
|
if (s == NULL) {fprintf(stderr,"No more memory.\n"); exit(1); } |
|
if (read(fdControl,s,mm+1) < 0) { |
|
fprintf(stderr,"Read error to read passControl\n"); sleep(5); exit(1); |
|
} |
|
s[mm] = 0; |
|
if (strcmp(s,passControl) != 0) { |
|
fprintf(stderr,"s=%s and passControl=%s do not match.\n",s,passControl); sleep(5); exit(1); |
|
} |
|
free(s); |
|
} |
|
if (passData != NULL) { |
|
char *s; int mm; |
|
mm = strlen(passData); |
|
fprintf(stderr,"passData\n"); |
|
s = (char *) malloc(mm+1); |
|
if (s == NULL) {fprintf(stderr,"No more memory.\n"); exit(1); } |
|
if (read(fdStream,s,mm+1) < 0) { |
|
fprintf(stderr,"Read error to read passData\n"); |
|
errorToStartEngine(); |
|
} |
|
if (strcmp(s,passData) != 0) { |
|
fprintf(stderr,"s=%s and passData=%s do not match.\n",s,passData); |
|
errorToStartEngine(); |
|
} |
|
free(s); |
|
} |
|
|
result = 0; |
result = 0; |
if (portControl != -1) { |
if (portControl != -1) { |
Line 222 static void errorToStartEngine(void) { |
|
Line 276 static void errorToStartEngine(void) { |
|
oxmainUsage() { |
oxmainUsage() { |
fprintf(stderr,"Usage: \n"); |
fprintf(stderr,"Usage: \n"); |
fprintf(stderr," ox [-ox serverprogram -host name -data portnum -control portnum -monitor]\n"); |
fprintf(stderr," ox [-ox serverprogram -host name -data portnum -control portnum -monitor]\n"); |
fprintf(stderr," [-insecure -portfile fname -reverse -pass xxxyyyzzz]"); |
fprintf(stderr," [-insecure -portfile fname -reverse -passControl xxxyyyzzz -passData pppqqqrrr]"); |
fprintf(stderr," [-finish]"); |
fprintf(stderr," [-finish]"); |
fprintf(stderr,"\n"); |
fprintf(stderr,"\n"); |
fprintf(stderr,"-reverse: ox server connects to the client.\n"); |
fprintf(stderr,"-reverse: ox server connects to the client.\n"); |
fprintf(stderr," The client must give a one time password to ox server to connect to the client with -pass option.\n"); |
fprintf(stderr," The client must give a one time password to ox server to connect to the client with -pass* option.\n"); |
fprintf(stderr," The one time password can be seen by ps command, so you must not use this one time password system on an untrustful host.\n"); |
fprintf(stderr," The one time password can be seen by ps command, so you must not use this one time password system on an untrustful host.\n"); |
fprintf(stderr," The one time password should be sent by a safe communication line like ssh and the ox server should be started by ssh. Do not use rsh\n"); |
fprintf(stderr," The one time password should be sent by a safe communication line like ssh and the ox server should be started by ssh. Do not use rsh\n"); |
|
fprintf(stderr," (The option -pass is obsolete.)\n"); |
fprintf(stderr," If -reverse is not given, the client connect to the ox server\n"); |
fprintf(stderr," If -reverse is not given, the client connect to the ox server\n"); |
fprintf(stderr," See OpenXM/src/SSkan/Doc/ox.sm1, /sm1connectr\n"); |
fprintf(stderr," See OpenXM/src/SSkan/Doc/ox.sm1, /sm1connectr\n"); |
fprintf(stderr,"-insecure : \n"); |
fprintf(stderr,"-insecure : \n"); |