1
0
mirror of https://git.libssh.org/projects/libssh.git synced 2025-07-31 00:03:07 +03:00

examples: Reformat ssh_server.c

Signed-off-by: Jakub Jelen <jjelen@redhat.com>
Reviewed-by: Sahana Prasad <sahana@redhat.com>
Reviewed-by: Eshan Kelkar <eshankelkar@galorithm.com>
This commit is contained in:
Jakub Jelen
2024-07-15 12:37:20 +02:00
committed by Sahana Prasad
parent a001e19882
commit 17a8a8b3c3

View File

@ -135,7 +135,9 @@ static struct argp_option options[] = {
};
/* Parse a single option. */
static error_t parse_opt (int key, char *arg, struct argp_state *state) {
static error_t
parse_opt(int key, char *arg, struct argp_state *state)
{
/* Get the input argument from argp_parse, which we
* know is a pointer to our arguments structure. */
ssh_bind sshbind = state->input;
@ -163,8 +165,7 @@ static error_t parse_opt (int key, char *arg, struct argp_state *state) {
strncpy(password, arg, sizeof(password) - 1);
break;
case 'v':
ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_LOG_VERBOSITY_STR,
"3");
ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_LOG_VERBOSITY_STR, "3");
break;
case ARGP_KEY_ARG:
if (state->arg_num >= 1) {
@ -188,7 +189,9 @@ static error_t parse_opt (int key, char *arg, struct argp_state *state) {
/* Our argp parser. */
static struct argp argp = {options, parse_opt, args_doc, doc, NULL, NULL, NULL};
#else
static int parse_opt(int argc, char **argv, ssh_bind sshbind) {
static int
parse_opt(int argc, char **argv, ssh_bind sshbind)
{
int no_default_keys = 0;
int rsa_already_set = 0;
int ecdsa_already_set = 0;
@ -289,8 +292,14 @@ struct session_data_struct {
int authenticated;
};
static int data_function(ssh_session session, ssh_channel channel, void *data,
uint32_t len, int is_stderr, void *userdata) {
static int
data_function(ssh_session session,
ssh_channel channel,
void *data,
uint32_t len,
int is_stderr,
void *userdata)
{
struct channel_data_struct *cdata = (struct channel_data_struct *)userdata;
(void)session;
@ -304,10 +313,18 @@ static int data_function(ssh_session session, ssh_channel channel, void *data,
return write(cdata->child_stdin, (char *)data, len);
}
static int pty_request(ssh_session session, ssh_channel channel,
const char *term, int cols, int rows, int py, int px,
void *userdata) {
static int
pty_request(ssh_session session,
ssh_channel channel,
const char *term,
int cols,
int rows,
int py,
int px,
void *userdata)
{
struct channel_data_struct *cdata = (struct channel_data_struct *)userdata;
int rc;
(void)session;
(void)channel;
@ -318,16 +335,27 @@ static int pty_request(ssh_session session, ssh_channel channel,
cdata->winsize->ws_xpixel = px;
cdata->winsize->ws_ypixel = py;
if (openpty(&cdata->pty_master, &cdata->pty_slave, NULL, NULL,
cdata->winsize) != 0) {
rc = openpty(&cdata->pty_master,
&cdata->pty_slave,
NULL,
NULL,
cdata->winsize);
if (rc != 0) {
fprintf(stderr, "Failed to open pty\n");
return SSH_ERROR;
}
return SSH_OK;
}
static int pty_resize(ssh_session session, ssh_channel channel, int cols,
int rows, int py, int px, void *userdata) {
static int
pty_resize(ssh_session session,
ssh_channel channel,
int cols,
int rows,
int py,
int px,
void *userdata)
{
struct channel_data_struct *cdata = (struct channel_data_struct *)userdata;
(void)session;
@ -345,9 +373,13 @@ static int pty_resize(ssh_session session, ssh_channel channel, int cols,
return SSH_ERROR;
}
static int exec_pty(const char *mode, const char *command,
struct channel_data_struct *cdata) {
switch(cdata->pid = fork()) {
static int
exec_pty(const char *mode,
const char *command,
struct channel_data_struct *cdata)
{
cdata->pid = fork();
switch (cdata->pid) {
case -1:
close(cdata->pty_master);
close(cdata->pty_slave);
@ -368,7 +400,9 @@ static int exec_pty(const char *mode, const char *command,
return SSH_OK;
}
static int exec_nopty(const char *command, struct channel_data_struct *cdata) {
static int
exec_nopty(const char *command, struct channel_data_struct *cdata)
{
int in[2], out[2], err[2];
/* Do the plumbing to be able to talk with the child process. */
@ -382,7 +416,8 @@ static int exec_nopty(const char *command, struct channel_data_struct *cdata) {
goto stderr_failed;
}
switch(cdata->pid = fork()) {
cdata->pid = fork();
switch (cdata->pid) {
case -1:
goto fork_failed;
case 0:
@ -424,11 +459,14 @@ stdin_failed:
return SSH_ERROR;
}
static int exec_request(ssh_session session, ssh_channel channel,
const char *command, void *userdata) {
static int
exec_request(ssh_session session,
ssh_channel channel,
const char *command,
void *userdata)
{
struct channel_data_struct *cdata = (struct channel_data_struct *)userdata;
(void)session;
(void)channel;
@ -442,8 +480,9 @@ static int exec_request(ssh_session session, ssh_channel channel,
return exec_nopty(command, cdata);
}
static int shell_request(ssh_session session, ssh_channel channel,
void *userdata) {
static int
shell_request(ssh_session session, ssh_channel channel, void *userdata)
{
struct channel_data_struct *cdata = (struct channel_data_struct *)userdata;
(void)session;
@ -460,8 +499,12 @@ static int shell_request(ssh_session session, ssh_channel channel,
return SSH_OK;
}
static int subsystem_request(ssh_session session, ssh_channel channel,
const char *subsystem, void *userdata) {
static int
subsystem_request(ssh_session session,
ssh_channel channel,
const char *subsystem,
void *userdata)
{
/* subsystem requests behave similarly to exec requests. */
if (strcmp(subsystem, "sftp") == 0) {
return exec_request(session, channel, SFTP_SERVER_PATH, userdata);
@ -469,8 +512,12 @@ static int subsystem_request(ssh_session session, ssh_channel channel,
return SSH_ERROR;
}
static int auth_password(ssh_session session, const char *user,
const char *pass, void *userdata) {
static int
auth_password(ssh_session session,
const char *user,
const char *pass,
void *userdata)
{
struct session_data_struct *sdata = (struct session_data_struct *)userdata;
(void)session;
@ -484,7 +531,8 @@ static int auth_password(ssh_session session, const char *user,
return SSH_AUTH_DENIED;
}
static int auth_publickey(ssh_session session,
static int
auth_publickey(ssh_session session,
const char *user,
struct ssh_key_struct *pubkey,
char signature_state,
@ -598,14 +646,18 @@ static int auth_publickey(ssh_session session,
return SSH_AUTH_DENIED;
}
static ssh_channel channel_open(ssh_session session, void *userdata) {
static ssh_channel
channel_open(ssh_session session, void *userdata)
{
struct session_data_struct *sdata = (struct session_data_struct *)userdata;
sdata->channel = ssh_channel_new(session);
return sdata->channel;
}
static int process_stdout(socket_t fd, int revents, void *userdata) {
static int
process_stdout(socket_t fd, int revents, void *userdata)
{
char buf[BUF_SIZE];
int n = -1;
ssh_channel channel = (ssh_channel)userdata;
@ -620,7 +672,9 @@ static int process_stdout(socket_t fd, int revents, void *userdata) {
return n;
}
static int process_stderr(socket_t fd, int revents, void *userdata) {
static int
process_stderr(socket_t fd, int revents, void *userdata)
{
char buf[BUF_SIZE];
int n = -1;
ssh_channel channel = (ssh_channel)userdata;
@ -635,7 +689,9 @@ static int process_stderr(socket_t fd, int revents, void *userdata) {
return n;
}
static void handle_session(ssh_event event, ssh_session session) {
static void
handle_session(ssh_event event, ssh_session session)
{
int n;
int rc = 0;
@ -782,12 +838,14 @@ static void handle_session(ssh_event event, ssh_session session) {
#ifdef WITH_FORK
/* SIGCHLD handler for cleaning up dead children. */
static void sigchld_handler(int signo) {
static void sigchld_handler(int signo)
{
(void)signo;
while (waitpid(-1, NULL, WNOHANG) > 0);
}
#else
static void *session_thread(void *arg) {
static void *session_thread(void *arg)
{
ssh_session session = arg;
ssh_event event;
@ -806,9 +864,10 @@ static void *session_thread(void *arg) {
}
#endif
int main(int argc, char **argv) {
ssh_bind sshbind;
ssh_session session;
int main(int argc, char **argv)
{
ssh_bind sshbind = NULL;
ssh_session session = NULL;
int rc;
#ifdef WITH_FORK
struct sigaction sa;
@ -846,7 +905,8 @@ int main(int argc, char **argv) {
}
#endif /* HAVE_ARGP_H */
if(ssh_bind_listen(sshbind) < 0) {
rc = ssh_bind_listen(sshbind);
if (rc < 0) {
fprintf(stderr, "%s\n", ssh_get_error(sshbind));
ssh_bind_free(sshbind);
ssh_finalize();
@ -861,11 +921,13 @@ int main(int argc, char **argv) {
}
/* Blocks until there is a new incoming connection. */
if(ssh_bind_accept(sshbind, session) != SSH_ERROR) {
rc = ssh_bind_accept(sshbind, session);
if (rc != SSH_ERROR) {
#ifdef WITH_FORK
ssh_event event;
switch(fork()) {
pid_t pid = fork();
switch (pid) {
case 0:
/* Remove the SIGCHLD handler inherited from parent. */
sa.sa_handler = SIG_DFL;