mirror of https://github.com/cy384/ssheven.git
move debugging string conversion to new header, extend with OT evs
This commit is contained in:
parent
96fa6dc1d0
commit
46e6675afe
|
@ -0,0 +1,192 @@
|
||||||
|
// handy debugging string conversions
|
||||||
|
|
||||||
|
// convert libssh2 errors into strings
|
||||||
|
const char* libssh2_error_string(int i)
|
||||||
|
{
|
||||||
|
switch (i)
|
||||||
|
{
|
||||||
|
case LIBSSH2_ERROR_NONE:
|
||||||
|
return "no error (LIBSSH2_ERROR_NONE)";
|
||||||
|
case LIBSSH2_ERROR_BANNER_RECV:
|
||||||
|
return "LIBSSH2_ERROR_BANNER_RECV";
|
||||||
|
case LIBSSH2_ERROR_BANNER_SEND:
|
||||||
|
return "LIBSSH2_ERROR_BANNER_SEND";
|
||||||
|
case LIBSSH2_ERROR_INVALID_MAC:
|
||||||
|
return "LIBSSH2_ERROR_INVALID_MAC";
|
||||||
|
case LIBSSH2_ERROR_KEX_FAILURE:
|
||||||
|
return "LIBSSH2_ERROR_KEX_FAILURE";
|
||||||
|
case LIBSSH2_ERROR_ALLOC:
|
||||||
|
return "LIBSSH2_ERROR_ALLOC";
|
||||||
|
case LIBSSH2_ERROR_SOCKET_SEND:
|
||||||
|
return "LIBSSH2_ERROR_SOCKET_SEND";
|
||||||
|
case LIBSSH2_ERROR_KEY_EXCHANGE_FAILURE:
|
||||||
|
return "LIBSSH2_ERROR_KEY_EXCHANGE_FAILURE";
|
||||||
|
case LIBSSH2_ERROR_TIMEOUT:
|
||||||
|
return "LIBSSH2_ERROR_TIMEOUT";
|
||||||
|
case LIBSSH2_ERROR_HOSTKEY_INIT:
|
||||||
|
return "LIBSSH2_ERROR_HOSTKEY_INIT";
|
||||||
|
case LIBSSH2_ERROR_HOSTKEY_SIGN:
|
||||||
|
return "LIBSSH2_ERROR_HOSTKEY_SIGN";
|
||||||
|
case LIBSSH2_ERROR_DECRYPT:
|
||||||
|
return "LIBSSH2_ERROR_DECRYPT";
|
||||||
|
case LIBSSH2_ERROR_SOCKET_DISCONNECT:
|
||||||
|
return "LIBSSH2_ERROR_SOCKET_DISCONNECT";
|
||||||
|
case LIBSSH2_ERROR_PROTO:
|
||||||
|
return "LIBSSH2_ERROR_PROTO";
|
||||||
|
case LIBSSH2_ERROR_PASSWORD_EXPIRED:
|
||||||
|
return "LIBSSH2_ERROR_PASSWORD_EXPIRED";
|
||||||
|
case LIBSSH2_ERROR_FILE:
|
||||||
|
return "LIBSSH2_ERROR_FILE";
|
||||||
|
case LIBSSH2_ERROR_METHOD_NONE:
|
||||||
|
return "LIBSSH2_ERROR_METHOD_NONE";
|
||||||
|
case LIBSSH2_ERROR_AUTHENTICATION_FAILED:
|
||||||
|
return "LIBSSHLIBSSH2_ERROR_AUTHENTICATION_FAILED2_ERROR_NONE";
|
||||||
|
case LIBSSH2_ERROR_PUBLICKEY_UNVERIFIED:
|
||||||
|
return "LIBSSH2_ERROR_PUBLICKEY_UNVERIFIED";
|
||||||
|
case LIBSSH2_ERROR_CHANNEL_OUTOFORDER:
|
||||||
|
return "LIBSSH2_ERROR_CHANNEL_OUTOFORDER";
|
||||||
|
case LIBSSH2_ERROR_CHANNEL_FAILURE:
|
||||||
|
return "LIBSSH2_ERROR_CHANNEL_FAILURE";
|
||||||
|
case LIBSSH2_ERROR_CHANNEL_REQUEST_DENIED:
|
||||||
|
return "LIBSSH2_ERROR_CHANNEL_REQUEST_DENIED";
|
||||||
|
case LIBSSH2_ERROR_CHANNEL_UNKNOWN:
|
||||||
|
return "LIBSSH2_ERROR_CHANNEL_UNKNOWN";
|
||||||
|
case LIBSSH2_ERROR_CHANNEL_WINDOW_EXCEEDED:
|
||||||
|
return "LIBSSH2_ERROR_CHANNEL_WINDOW_EXCEEDED";
|
||||||
|
case LIBSSH2_ERROR_CHANNEL_PACKET_EXCEEDED:
|
||||||
|
return "LIBSSH2_ERROR_CHANNEL_PACKET_EXCEEDED";
|
||||||
|
case LIBSSH2_ERROR_CHANNEL_CLOSED:
|
||||||
|
return "LIBSSH2_ERROR_CHANNEL_CLOSED";
|
||||||
|
case LIBSSH2_ERROR_CHANNEL_EOF_SENT:
|
||||||
|
return "LIBSSH2_ERROR_CHANNEL_EOF_SENT";
|
||||||
|
case LIBSSH2_ERROR_SCP_PROTOCOL:
|
||||||
|
return "LIBSSH2_ERROR_SCP_PROTOCOL";
|
||||||
|
case LIBSSH2_ERROR_ZLIB:
|
||||||
|
return "LIBSSH2_ERROR_ZLIB";
|
||||||
|
case LIBSSH2_ERROR_SOCKET_TIMEOUT:
|
||||||
|
return "LIBSSH2_ERROR_SOCKET_TIMEOUT";
|
||||||
|
case LIBSSH2_ERROR_SFTP_PROTOCOL:
|
||||||
|
return "LIBSSH2_ERROR_SFTP_PROTOCOL";
|
||||||
|
case LIBSSH2_ERROR_REQUEST_DENIED:
|
||||||
|
return "LIBSSH2_ERROR_REQUEST_DENIED";
|
||||||
|
case LIBSSH2_ERROR_METHOD_NOT_SUPPORTED:
|
||||||
|
return "LIBSSH2_ERROR_METHOD_NOT_SUPPORTED";
|
||||||
|
case LIBSSH2_ERROR_INVAL:
|
||||||
|
return "LIBSSH2_ERROR_INVAL";
|
||||||
|
case LIBSSH2_ERROR_INVALID_POLL_TYPE:
|
||||||
|
return "LIBSSH2_ERROR_INVALID_POLL_TYPE";
|
||||||
|
case LIBSSH2_ERROR_PUBLICKEY_PROTOCOL:
|
||||||
|
return "LIBSSH2_ERROR_PUBLICKEY_PROTOCOL";
|
||||||
|
case LIBSSH2_ERROR_EAGAIN:
|
||||||
|
return "LIBSSH2_ERROR_EAGAIN";
|
||||||
|
case LIBSSH2_ERROR_BUFFER_TOO_SMALL:
|
||||||
|
return "LIBSSH2_ERROR_BUFFER_TOO_SMALL";
|
||||||
|
case LIBSSH2_ERROR_BAD_USE:
|
||||||
|
return "LIBSSH2_ERROR_BAD_USE";
|
||||||
|
case LIBSSH2_ERROR_COMPRESS:
|
||||||
|
return "LIBSSH2_ERROR_COMPRESS";
|
||||||
|
case LIBSSH2_ERROR_OUT_OF_BOUNDARY:
|
||||||
|
return "LIBSSH2_ERROR_OUT_OF_BOUNDARY";
|
||||||
|
case LIBSSH2_ERROR_AGENT_PROTOCOL:
|
||||||
|
return "LIBSSH2_ERROR_SOCKET_RECV";
|
||||||
|
case LIBSSH2_ERROR_SOCKET_RECV:
|
||||||
|
return "LIBSSH2_ERROR_ENCRYPT";
|
||||||
|
case LIBSSH2_ERROR_ENCRYPT:
|
||||||
|
return "LIBSSH2_ERROR_ENCRYPT";
|
||||||
|
case LIBSSH2_ERROR_BAD_SOCKET:
|
||||||
|
return "LIBSSH2_ERROR_BAD_SOCKET";
|
||||||
|
case LIBSSH2_ERROR_KNOWN_HOSTS:
|
||||||
|
return "LIBSSH2_ERROR_KNOWN_HOSTS";
|
||||||
|
case LIBSSH2_ERROR_CHANNEL_WINDOW_FULL:
|
||||||
|
return "LIBSSH2_ERROR_CHANNEL_WINDOW_FULL";
|
||||||
|
case LIBSSH2_ERROR_KEYFILE_AUTH_FAILED:
|
||||||
|
return "LIBSSH2_ERROR_KEYFILE_AUTH_FAILED";
|
||||||
|
|
||||||
|
default:
|
||||||
|
return "LIBSSH2 unknown error number";
|
||||||
|
}
|
||||||
|
|
||||||
|
return "libssh2_error_string should never return from here";
|
||||||
|
}
|
||||||
|
|
||||||
|
// convert OT event types into strings
|
||||||
|
const char* OT_event_string(int i)
|
||||||
|
{
|
||||||
|
switch (i)
|
||||||
|
{
|
||||||
|
case T_LISTEN:
|
||||||
|
return "T_LISTEN";
|
||||||
|
case T_CONNECT:
|
||||||
|
return "T_CONNECT";
|
||||||
|
case T_DATA:
|
||||||
|
return "T_DATA";
|
||||||
|
case T_EXDATA:
|
||||||
|
return "T_EXDATA";
|
||||||
|
case T_DISCONNECT:
|
||||||
|
return "T_DISCONNECT";
|
||||||
|
case T_ERROR:
|
||||||
|
return "T_ERROR";
|
||||||
|
case T_UDERR:
|
||||||
|
return "T_UDERR";
|
||||||
|
case T_ORDREL:
|
||||||
|
return "T_ORDREL";
|
||||||
|
case T_GODATA:
|
||||||
|
return "T_GODATA";
|
||||||
|
case T_GOEXDATA:
|
||||||
|
return "T_GOEXDATA";
|
||||||
|
case T_REQUEST:
|
||||||
|
return "T_REQUEST";
|
||||||
|
case T_REPLY:
|
||||||
|
return "T_REPLY";
|
||||||
|
case T_PASSCON:
|
||||||
|
return "T_PASSCON";
|
||||||
|
case T_RESET:
|
||||||
|
return "T_RESET";
|
||||||
|
case T_BINDCOMPLETE:
|
||||||
|
return "T_BINDCOMPLETE";
|
||||||
|
case T_UNBINDCOMPLETE:
|
||||||
|
return "T_UNBINDCOMPLETE";
|
||||||
|
case T_ACCEPTCOMPLETE:
|
||||||
|
return "T_ACCEPTCOMPLETE";
|
||||||
|
case T_REPLYCOMPLETE:
|
||||||
|
return "T_REPLYCOMPLETE";
|
||||||
|
case T_DISCONNECTCOMPLETE:
|
||||||
|
return "T_DISCONNECTCOMPLETE";
|
||||||
|
case T_OPTMGMTCOMPLETE:
|
||||||
|
return "T_OPTMGMTCOMPLETE";
|
||||||
|
case T_OPENCOMPLETE:
|
||||||
|
return "T_OPENCOMPLETE";
|
||||||
|
case T_GETPROTADDRCOMPLETE:
|
||||||
|
return "T_GETPROTADDRCOMPLETE";
|
||||||
|
case T_RESOLVEADDRCOMPLETE:
|
||||||
|
return "T_RESOLVEADDRCOMPLETE";
|
||||||
|
case T_GETINFOCOMPLETE:
|
||||||
|
return "T_GETINFOCOMPLETE";
|
||||||
|
case T_SYNCCOMPLETE:
|
||||||
|
return "T_SYNCCOMPLETE";
|
||||||
|
case T_MEMORYRELEASED:
|
||||||
|
return "T_MEMORYRELEASED";
|
||||||
|
case T_REGNAMECOMPLETE:
|
||||||
|
return "T_REGNAMECOMPLETE";
|
||||||
|
case T_DELNAMECOMPLETE:
|
||||||
|
return "T_DELNAMECOMPLETE";
|
||||||
|
case T_LKUPNAMECOMPLETE:
|
||||||
|
return "T_LKUPNAMECOMPLETE";
|
||||||
|
case T_LKUPNAMERESULT:
|
||||||
|
return "T_LKUPNAMERESULT";
|
||||||
|
case kOTProviderIsDisconnected:
|
||||||
|
return "kOTProviderIsDisconnected";
|
||||||
|
case kOTSyncIdleEvent:
|
||||||
|
return "kOTSyncIdleEvent";
|
||||||
|
case kOTProviderIsReconnected:
|
||||||
|
return "kOTProviderIsReconnected";
|
||||||
|
case kOTProviderWillClose:
|
||||||
|
return "kOTProviderWillClose";
|
||||||
|
case kOTProviderIsClosed:
|
||||||
|
return "kOTProviderIsClosed";
|
||||||
|
default:
|
||||||
|
return "unknown OT event type";
|
||||||
|
}
|
||||||
|
|
||||||
|
return "OTLook_string should never return from here";
|
||||||
|
}
|
115
ssheven.c
115
ssheven.c
|
@ -18,120 +18,17 @@
|
||||||
// libssh2
|
// libssh2
|
||||||
#include <libssh2.h>
|
#include <libssh2.h>
|
||||||
|
|
||||||
|
// functions to convert error and status codes to strings
|
||||||
|
#include "ssheven-debug.h"
|
||||||
|
|
||||||
|
#define SSHEVEN_VERSION "0.0.0"
|
||||||
|
|
||||||
// network buffer size
|
// network buffer size
|
||||||
enum { buffer_size = 4096 };
|
enum { buffer_size = 4096 };
|
||||||
|
|
||||||
// text input buffer size
|
// text input buffer size
|
||||||
enum { input_buffer_size = 128 };
|
enum { input_buffer_size = 128 };
|
||||||
|
|
||||||
const char* libssh2_error_string(int i)
|
|
||||||
{
|
|
||||||
switch (i)
|
|
||||||
{
|
|
||||||
case LIBSSH2_ERROR_NONE:
|
|
||||||
return "no error (LIBSSH2_ERROR_NONE)";
|
|
||||||
case LIBSSH2_ERROR_BANNER_RECV:
|
|
||||||
return "LIBSSH2_ERROR_BANNER_RECV";
|
|
||||||
case LIBSSH2_ERROR_BANNER_SEND:
|
|
||||||
return "LIBSSH2_ERROR_BANNER_SEND";
|
|
||||||
case LIBSSH2_ERROR_INVALID_MAC:
|
|
||||||
return "LIBSSH2_ERROR_INVALID_MAC";
|
|
||||||
case LIBSSH2_ERROR_KEX_FAILURE:
|
|
||||||
return "LIBSSH2_ERROR_KEX_FAILURE";
|
|
||||||
case LIBSSH2_ERROR_ALLOC:
|
|
||||||
return "LIBSSH2_ERROR_ALLOC";
|
|
||||||
case LIBSSH2_ERROR_SOCKET_SEND:
|
|
||||||
return "LIBSSH2_ERROR_SOCKET_SEND";
|
|
||||||
case LIBSSH2_ERROR_KEY_EXCHANGE_FAILURE:
|
|
||||||
return "LIBSSH2_ERROR_KEY_EXCHANGE_FAILURE";
|
|
||||||
case LIBSSH2_ERROR_TIMEOUT:
|
|
||||||
return "LIBSSH2_ERROR_TIMEOUT";
|
|
||||||
case LIBSSH2_ERROR_HOSTKEY_INIT:
|
|
||||||
return "LIBSSH2_ERROR_HOSTKEY_INIT";
|
|
||||||
case LIBSSH2_ERROR_HOSTKEY_SIGN:
|
|
||||||
return "LIBSSH2_ERROR_HOSTKEY_SIGN";
|
|
||||||
case LIBSSH2_ERROR_DECRYPT:
|
|
||||||
return "LIBSSH2_ERROR_DECRYPT";
|
|
||||||
case LIBSSH2_ERROR_SOCKET_DISCONNECT:
|
|
||||||
return "LIBSSH2_ERROR_SOCKET_DISCONNECT";
|
|
||||||
case LIBSSH2_ERROR_PROTO:
|
|
||||||
return "LIBSSH2_ERROR_PROTO";
|
|
||||||
case LIBSSH2_ERROR_PASSWORD_EXPIRED:
|
|
||||||
return "LIBSSH2_ERROR_PASSWORD_EXPIRED";
|
|
||||||
case LIBSSH2_ERROR_FILE:
|
|
||||||
return "LIBSSH2_ERROR_FILE";
|
|
||||||
case LIBSSH2_ERROR_METHOD_NONE:
|
|
||||||
return "LIBSSH2_ERROR_METHOD_NONE";
|
|
||||||
case LIBSSH2_ERROR_AUTHENTICATION_FAILED:
|
|
||||||
return "LIBSSHLIBSSH2_ERROR_AUTHENTICATION_FAILED2_ERROR_NONE";
|
|
||||||
case LIBSSH2_ERROR_PUBLICKEY_UNVERIFIED:
|
|
||||||
return "LIBSSH2_ERROR_PUBLICKEY_UNVERIFIED";
|
|
||||||
case LIBSSH2_ERROR_CHANNEL_OUTOFORDER:
|
|
||||||
return "LIBSSH2_ERROR_CHANNEL_OUTOFORDER";
|
|
||||||
case LIBSSH2_ERROR_CHANNEL_FAILURE:
|
|
||||||
return "LIBSSH2_ERROR_CHANNEL_FAILURE";
|
|
||||||
case LIBSSH2_ERROR_CHANNEL_REQUEST_DENIED:
|
|
||||||
return "LIBSSH2_ERROR_CHANNEL_REQUEST_DENIED";
|
|
||||||
case LIBSSH2_ERROR_CHANNEL_UNKNOWN:
|
|
||||||
return "LIBSSH2_ERROR_CHANNEL_UNKNOWN";
|
|
||||||
case LIBSSH2_ERROR_CHANNEL_WINDOW_EXCEEDED:
|
|
||||||
return "LIBSSH2_ERROR_CHANNEL_WINDOW_EXCEEDED";
|
|
||||||
case LIBSSH2_ERROR_CHANNEL_PACKET_EXCEEDED:
|
|
||||||
return "LIBSSH2_ERROR_CHANNEL_PACKET_EXCEEDED";
|
|
||||||
case LIBSSH2_ERROR_CHANNEL_CLOSED:
|
|
||||||
return "LIBSSH2_ERROR_CHANNEL_CLOSED";
|
|
||||||
case LIBSSH2_ERROR_CHANNEL_EOF_SENT:
|
|
||||||
return "LIBSSH2_ERROR_CHANNEL_EOF_SENT";
|
|
||||||
case LIBSSH2_ERROR_SCP_PROTOCOL:
|
|
||||||
return "LIBSSH2_ERROR_SCP_PROTOCOL";
|
|
||||||
case LIBSSH2_ERROR_ZLIB:
|
|
||||||
return "LIBSSH2_ERROR_ZLIB";
|
|
||||||
case LIBSSH2_ERROR_SOCKET_TIMEOUT:
|
|
||||||
return "LIBSSH2_ERROR_SOCKET_TIMEOUT";
|
|
||||||
case LIBSSH2_ERROR_SFTP_PROTOCOL:
|
|
||||||
return "LIBSSH2_ERROR_SFTP_PROTOCOL";
|
|
||||||
case LIBSSH2_ERROR_REQUEST_DENIED:
|
|
||||||
return "LIBSSH2_ERROR_REQUEST_DENIED";
|
|
||||||
case LIBSSH2_ERROR_METHOD_NOT_SUPPORTED:
|
|
||||||
return "LIBSSH2_ERROR_METHOD_NOT_SUPPORTED";
|
|
||||||
case LIBSSH2_ERROR_INVAL:
|
|
||||||
return "LIBSSH2_ERROR_INVAL";
|
|
||||||
case LIBSSH2_ERROR_INVALID_POLL_TYPE:
|
|
||||||
return "LIBSSH2_ERROR_INVALID_POLL_TYPE";
|
|
||||||
case LIBSSH2_ERROR_PUBLICKEY_PROTOCOL:
|
|
||||||
return "LIBSSH2_ERROR_PUBLICKEY_PROTOCOL";
|
|
||||||
case LIBSSH2_ERROR_EAGAIN:
|
|
||||||
return "LIBSSH2_ERROR_EAGAIN";
|
|
||||||
case LIBSSH2_ERROR_BUFFER_TOO_SMALL:
|
|
||||||
return "LIBSSH2_ERROR_BUFFER_TOO_SMALL";
|
|
||||||
case LIBSSH2_ERROR_BAD_USE:
|
|
||||||
return "LIBSSH2_ERROR_BAD_USE";
|
|
||||||
case LIBSSH2_ERROR_COMPRESS:
|
|
||||||
return "LIBSSH2_ERROR_COMPRESS";
|
|
||||||
case LIBSSH2_ERROR_OUT_OF_BOUNDARY:
|
|
||||||
return "LIBSSH2_ERROR_OUT_OF_BOUNDARY";
|
|
||||||
case LIBSSH2_ERROR_AGENT_PROTOCOL:
|
|
||||||
return "LIBSSH2_ERROR_SOCKET_RECV";
|
|
||||||
case LIBSSH2_ERROR_SOCKET_RECV:
|
|
||||||
return "LIBSSH2_ERROR_ENCRYPT";
|
|
||||||
case LIBSSH2_ERROR_ENCRYPT:
|
|
||||||
return "LIBSSH2_ERROR_ENCRYPT";
|
|
||||||
case LIBSSH2_ERROR_BAD_SOCKET:
|
|
||||||
return "LIBSSH2_ERROR_BAD_SOCKET";
|
|
||||||
case LIBSSH2_ERROR_KNOWN_HOSTS:
|
|
||||||
return "LIBSSH2_ERROR_KNOWN_HOSTS";
|
|
||||||
case LIBSSH2_ERROR_CHANNEL_WINDOW_FULL:
|
|
||||||
return "LIBSSH2_ERROR_CHANNEL_WINDOW_FULL";
|
|
||||||
case LIBSSH2_ERROR_KEYFILE_AUTH_FAILED:
|
|
||||||
return "LIBSSH2_ERROR_KEYFILE_AUTH_FAILED";
|
|
||||||
|
|
||||||
default:
|
|
||||||
return "unknown error number";
|
|
||||||
}
|
|
||||||
|
|
||||||
return "should never return from here?";
|
|
||||||
}
|
|
||||||
|
|
||||||
// event handler to yield whenever we're blocked
|
// event handler to yield whenever we're blocked
|
||||||
static pascal void yield_notifier(void* contextPtr, OTEventCode code, OTResult result, void* cookie)
|
static pascal void yield_notifier(void* contextPtr, OTEventCode code, OTResult result, void* cookie)
|
||||||
{
|
{
|
||||||
|
@ -304,7 +201,7 @@ int main(int argc, char** argv)
|
||||||
printf("WARNING: this is a prototype with a bad RNG and no host key checks,"
|
printf("WARNING: this is a prototype with a bad RNG and no host key checks,"
|
||||||
" do not use over untrusted networks or with untrusted SSH servers!\n\n");
|
" do not use over untrusted networks or with untrusted SSH servers!\n\n");
|
||||||
|
|
||||||
printf("ssheven by cy384 version 0.0.0\n\n");
|
printf("ssheven by cy384 version " SSHEVEN_VERSION "\n\n");
|
||||||
|
|
||||||
printf("enter a host:port >"); fflush(stdout);
|
printf("enter a host:port >"); fflush(stdout);
|
||||||
get_line(hostname);
|
get_line(hostname);
|
||||||
|
|
Loading…
Reference in New Issue