Skip to content

Instantly share code, notes, and snippets.

@yury
Created July 16, 2018 08:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yury/4875a9f86ea29c072e6ac340e8e67bcd to your computer and use it in GitHub Desktop.
Save yury/4875a9f86ea29c072e6ac340e8e67bcd to your computer and use it in GitHub Desktop.
connectors
- (void)connect:(ssh_channel)channel withFdIn:(dispatch_fd_t)fdIn fdOut:(dispatch_fd_t)fdOut fdErr:(dispatch_fd_t)fdErr {
_name = @"stdio";
_channel = channel;
ssh_session session = ssh_channel_get_session(_channel);
// stdin
_connector_in = ssh_connector_new(session);
ssh_connector_set_in_fd(_connector_in, dup(fdIn));
ssh_connector_set_out_channel(_connector_in, _channel, SSH_CONNECTOR_STDOUT);
// stdout
_connector_out = ssh_connector_new(session);
ssh_connector_set_in_channel(_connector_out, _channel, SSH_CONNECTOR_STDOUT);
ssh_connector_set_out_fd(_connector_out,dup(fdOut));
// stderr
_connector_err = ssh_connector_new(session);
ssh_connector_set_in_channel(_connector_err, _channel, SSH_CONNECTOR_STDERR);
ssh_connector_set_out_fd(_connector_err, dup(fdErr));
_cb = calloc(1, sizeof(struct ssh_channel_callbacks_struct));
_cb->userdata = (__bridge void *)self;
_cb->channel_eof_function = __channel_eof_cb;
_cb->channel_close_function = __channel_close_cb;
_cb->channel_exit_status_function = __channel_exit_status_cb;
ssh_callbacks_init(_cb);
ssh_add_channel_callbacks(channel, _cb);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment