mirror of
https://github.com/PowerShell/Win32-OpenSSH.git
synced 2025-07-21 13:04:57 +02:00
sftp-server is now functional
This commit is contained in:
parent
5a47bedd44
commit
83cad11f62
@ -38,6 +38,10 @@ main(int argc, char **argv)
|
|||||||
{
|
{
|
||||||
struct passwd *user_pw;
|
struct passwd *user_pw;
|
||||||
|
|
||||||
|
#ifdef WIN32_FIXME
|
||||||
|
w32posix_initialize();
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Ensure that fds 0, 1 and 2 are open or directed to /dev/null */
|
/* Ensure that fds 0, 1 and 2 are open or directed to /dev/null */
|
||||||
sanitise_stdfd();
|
sanitise_stdfd();
|
||||||
|
|
||||||
|
@ -2012,27 +2012,6 @@ sftp_server_main(int argc, char **argv, struct passwd *user_pw)
|
|||||||
|
|
||||||
log_init(__progname, log_level, log_facility, log_stderr);
|
log_init(__progname, log_level, log_facility, log_stderr);
|
||||||
|
|
||||||
/*
|
|
||||||
* Initialize Win32 I/O wrapper.
|
|
||||||
*/
|
|
||||||
|
|
||||||
//WSHELPinitialize();
|
|
||||||
|
|
||||||
{
|
|
||||||
WSADATA wsaData;
|
|
||||||
|
|
||||||
if (WSAStartup(MAKEWORD(2, 2), &wsaData))
|
|
||||||
{
|
|
||||||
fatal("ERROR: Cannot initialize WinSock DLL.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// allocate_standard_descriptor(STDIN_FILENO);
|
|
||||||
// allocate_standard_descriptor(STDOUT_FILENO);
|
|
||||||
// allocate_standard_descriptor(STDERR_FILENO);
|
|
||||||
|
|
||||||
// sfd_start = 3;
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
__progname = ssh_get_progname(argv[0]);
|
__progname = ssh_get_progname(argv[0]);
|
||||||
@ -2143,22 +2122,9 @@ sftp_server_main(int argc, char **argv, struct passwd *user_pw)
|
|||||||
in = STDIN_FILENO;
|
in = STDIN_FILENO;
|
||||||
out = STDOUT_FILENO;
|
out = STDOUT_FILENO;
|
||||||
|
|
||||||
#ifdef WIN32_FIXME
|
|
||||||
//in = GetStdHandle(STD_INPUT_HANDLE);
|
|
||||||
//out = GetStdHandle(STD_OUTPUT_HANDLE);
|
|
||||||
//setmode(in, O_BINARY);
|
|
||||||
//setmode(out, O_BINARY);
|
|
||||||
in = STDIN_FILENO;
|
|
||||||
out = STDOUT_FILENO;
|
|
||||||
_setmode(in,O_BINARY); // avoid CrLf translations of text mode
|
|
||||||
_setmode(out,O_BINARY); // avoid CrLf translation
|
|
||||||
|
|
||||||
HANDLE in_handle = (HANDLE) _get_osfhandle (in);
|
|
||||||
#else
|
|
||||||
#ifdef HAVE_CYGWIN
|
#ifdef HAVE_CYGWIN
|
||||||
setmode(in, O_BINARY);
|
setmode(in, O_BINARY);
|
||||||
setmode(out, O_BINARY);
|
setmode(out, O_BINARY);
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
max = 0;
|
max = 0;
|
||||||
@ -2189,7 +2155,6 @@ sftp_server_main(int argc, char **argv, struct passwd *user_pw)
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
#ifndef WIN32_FIXME
|
|
||||||
|
|
||||||
memset(rset, 0, set_size);
|
memset(rset, 0, set_size);
|
||||||
memset(wset, 0, set_size);
|
memset(wset, 0, set_size);
|
||||||
@ -2206,65 +2171,6 @@ sftp_server_main(int argc, char **argv, struct passwd *user_pw)
|
|||||||
else if (r != SSH_ERR_NO_BUFFER_SPACE)
|
else if (r != SSH_ERR_NO_BUFFER_SPACE)
|
||||||
fatal("%s: sshbuf_check_reserve failed: %s",
|
fatal("%s: sshbuf_check_reserve failed: %s",
|
||||||
__func__, ssh_err(r));
|
__func__, ssh_err(r));
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WIN32_FIXME
|
|
||||||
|
|
||||||
int select_read = 0;
|
|
||||||
if ((r = sshbuf_check_reserve(iqueue, sizeof(buf))) == 0 &&
|
|
||||||
(r = sshbuf_check_reserve(oqueue,
|
|
||||||
SFTP_MAX_MSG_LENGTH)) == 0)
|
|
||||||
select_read = 1;
|
|
||||||
else if (r != SSH_ERR_NO_BUFFER_SPACE)
|
|
||||||
fatal("%s: sshbuf_check_reserve failed: %s",
|
|
||||||
__func__, ssh_err(r));
|
|
||||||
|
|
||||||
#endif
|
|
||||||
/* send oqueue to stdout */
|
|
||||||
// olen = sshbuf_len(oqueue);
|
|
||||||
//
|
|
||||||
// if (olen > 0) {
|
|
||||||
// len = _write(out, sshbuf_ptr(oqueue), olen);
|
|
||||||
// if (len < 0) {
|
|
||||||
// error("write: %s", strerror(errno));
|
|
||||||
// sftp_server_cleanup_exit(1);
|
|
||||||
// } else if ((r = sshbuf_consume(oqueue, len)) != 0) {
|
|
||||||
// fatal("%s: buffer error: %s",
|
|
||||||
// __func__, ssh_err(r));
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// /* copy stdin to iqueue */
|
|
||||||
// if ( select_read ) {
|
|
||||||
// if ( readsomemore || ( sshbuf_len(iqueue) <= 0)) {
|
|
||||||
// len = _read(in, buf, sizeof buf);
|
|
||||||
// if (len == 0) {
|
|
||||||
// debug("read eof");
|
|
||||||
// sftp_server_cleanup_exit(0);
|
|
||||||
// } else if (len < 0) {
|
|
||||||
// error("read: %s", strerror(errno));
|
|
||||||
// sftp_server_cleanup_exit(1);
|
|
||||||
// } else if ((r = sshbuf_put(iqueue, buf, len)) != 0) {
|
|
||||||
// fatal("%s: buffer error: %s",
|
|
||||||
// __func__, ssh_err(r));
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// /*
|
|
||||||
// * Process requests from client if we can fit the results
|
|
||||||
// * into the output buffer, otherwise stop processing input
|
|
||||||
// * and let the output queue drain.
|
|
||||||
// */
|
|
||||||
// r = sshbuf_check_reserve(oqueue, SFTP_MAX_MSG_LENGTH);
|
|
||||||
// if (r == 0)
|
|
||||||
// process();
|
|
||||||
// else if (r != SSH_ERR_NO_BUFFER_SPACE)
|
|
||||||
// fatal("%s: sshbuf_check_reserve: %s",
|
|
||||||
// __func__, ssh_err(r));
|
|
||||||
// }
|
|
||||||
//#else /* WIN32_FIXME */
|
|
||||||
|
|
||||||
olen = sshbuf_len(oqueue);
|
olen = sshbuf_len(oqueue);
|
||||||
if (olen > 0)
|
if (olen > 0)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user