mirror of
http://galexander.org/git/simplesshd.git
synced 2024-12-29 09:28:07 +00:00
stderr output should now hopefully go to /sdcard/ssh/dropbear.err instead
of the bit bucket
This commit is contained in:
parent
bfa3c99dc0
commit
447ffa0b8f
@ -1,7 +1,13 @@
|
|||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdio.h>
|
||||||
#include <jni.h>
|
#include <jni.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
|
||||||
|
const char *conf_path, *conf_shell, *conf_home;
|
||||||
|
|
||||||
/* XXX - do i need a function to generate host keys? DROPBEAR_DELAY_HOSTKEY */
|
/* XXX - do i need a function to generate host keys? DROPBEAR_DELAY_HOSTKEY */
|
||||||
/* XXX - a C-callable interface to get property strings from the java side (paths, etc) */
|
/* XXX - a C-callable interface to get property strings from the java side (paths, etc) */
|
||||||
@ -44,7 +50,7 @@ from_java_string(jobject s)
|
|||||||
const char *ret, *t;
|
const char *ret, *t;
|
||||||
t = (*env)->GetStringUTFChars(env, s, NULL);
|
t = (*env)->GetStringUTFChars(env, s, NULL);
|
||||||
if (!t) {
|
if (!t) {
|
||||||
return NULL;
|
return "";
|
||||||
}
|
}
|
||||||
ret = strdup(t);
|
ret = strdup(t);
|
||||||
(*env)->ReleaseStringUTFChars(env, s, t);
|
(*env)->ReleaseStringUTFChars(env, s, t);
|
||||||
@ -56,18 +62,28 @@ Java_org_galexander_sshd_SimpleSSHDService_start_1sshd(JNIEnv *env_,
|
|||||||
jint port, jobject jpath, jobject jshell, jobject jhome)
|
jint port, jobject jpath, jobject jshell, jobject jhome)
|
||||||
{
|
{
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
const char *path, *shell, *home;
|
|
||||||
|
|
||||||
if (!jni_init(env_)) {
|
if (!jni_init(env_)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
path = from_java_string(jpath);
|
conf_path = from_java_string(jpath);
|
||||||
shell = from_java_string(jshell);
|
conf_shell = from_java_string(jshell);
|
||||||
home = from_java_string(jhome);
|
conf_home = from_java_string(jhome);
|
||||||
|
|
||||||
pid = fork();
|
pid = fork();
|
||||||
if (pid == 0) {
|
if (pid == 0) {
|
||||||
char *argv[2] = { "sshd", NULL };
|
char *argv[2] = { "sshd", NULL };
|
||||||
|
char *logfn;
|
||||||
|
int logfd;
|
||||||
|
|
||||||
|
logfn = malloc(strlen(conf_path)+20);
|
||||||
|
sprintf(logfn, "%s/dropbear.err", conf_path);
|
||||||
|
unlink(logfn);
|
||||||
|
logfd = open(logfn, O_CREAT|O_WRONLY, 0666);
|
||||||
|
if (logfd != -1) {
|
||||||
|
/* replace stderr, so the output is preserved... */
|
||||||
|
dup2(logfd, 2);
|
||||||
|
}
|
||||||
dropbear_main(1, argv);
|
dropbear_main(1, argv);
|
||||||
} else {
|
} else {
|
||||||
(*env)->SetStaticIntField(env, cl_simplesshdservice,
|
(*env)->SetStaticIntField(env, cl_simplesshdservice,
|
||||||
|
Loading…
Reference in New Issue
Block a user