mirror of
https://git.libssh.org/projects/libssh.git
synced 2025-08-07 08:02:55 +03:00
Reformat the test sftpserver
Signed-off-by: Jakub Jelen <jjelen@redhat.com> Reviewed-by: Andreas Schneider <asn@cryptomilk.org> Reviewed-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com>
This commit is contained in:
@@ -412,7 +412,8 @@ static int readdir_long_name(char* z_file_name, struct stat* z_st, char* z_long_
|
||||
return SSH_OK;
|
||||
}
|
||||
|
||||
static int process_open(sftp_client_message client_msg) {
|
||||
static int process_open(sftp_client_message client_msg)
|
||||
{
|
||||
int ret = SSH_OK;
|
||||
const char *filename = sftp_client_message_get_filename(client_msg);
|
||||
uint32_t msg_flag = sftp_client_message_get_flags(client_msg);
|
||||
@@ -421,6 +422,8 @@ static int process_open(sftp_client_message client_msg) {
|
||||
int handle_ind = -1;
|
||||
int status;
|
||||
|
||||
SSH_LOG(SSH_LOG_PROTOCOL, "try to open file: %s", filename);
|
||||
|
||||
if (( (msg_flag&(uint32_t)SSH_FXF_READ) == SSH_FXF_READ) &&
|
||||
( (msg_flag&(uint32_t)SSH_FXF_WRITE) == SSH_FXF_WRITE)) {
|
||||
file_flag = O_RDWR; //file must exist
|
||||
@@ -439,7 +442,7 @@ static int process_open(sftp_client_message client_msg) {
|
||||
fd = open(filename, file_flag, 0600);
|
||||
if (fd == -1) {
|
||||
status = unix_errno_to_ssh_stat(errno);
|
||||
printf("error open file with error: %d\n", errno);
|
||||
SSH_LOG(SSH_LOG_PROTOCOL, "error open file with error: %d", errno);
|
||||
sftp_reply_status(client_msg, status, "Write error");
|
||||
ret = SSH_ERROR;
|
||||
return ret;
|
||||
@@ -454,23 +457,29 @@ static int process_open(sftp_client_message client_msg) {
|
||||
ret = SSH_OK;
|
||||
} else {
|
||||
close(fd);
|
||||
printf("opening file failed");
|
||||
SSH_LOG(SSH_LOG_PROTOCOL, "opening file failed", errno);
|
||||
sftp_reply_status(client_msg, SSH_FX_FAILURE, "No handle available");
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int process_read(sftp_client_message client_msg) {
|
||||
static int process_read(sftp_client_message client_msg)
|
||||
{
|
||||
int ret = SSH_OK;
|
||||
struct sftp_handle *client_handle = (struct sftp_handle*)sftp_handle(client_msg->sftp, client_msg->handle);
|
||||
struct sftp_handle *client_handle;
|
||||
uint32_t readn;
|
||||
int fd;
|
||||
char *buffer;
|
||||
int rv;
|
||||
|
||||
client_handle = (struct sftp_handle*)sftp_handle(client_msg->sftp,
|
||||
client_msg->handle);
|
||||
|
||||
SSH_LOG(SSH_LOG_PROTOCOL, "try to read a file from handle");
|
||||
|
||||
if (client_handle == NULL || client_handle->session_id != client_msg->sftp) {
|
||||
printf("get wrong handle from msg\n");
|
||||
SSH_LOG(SSH_LOG_PROTOCOL, "got wrong handle from msg");
|
||||
sftp_reply_status(client_msg, SSH_FX_FAILURE, NULL);
|
||||
return SSH_ERROR;
|
||||
}
|
||||
@@ -479,14 +488,15 @@ static int process_read(sftp_client_message client_msg) {
|
||||
|
||||
if (fd < 0) {
|
||||
sftp_reply_status(client_msg, SSH_FX_INVALID_HANDLE, NULL);
|
||||
printf("error reading file fd: %d\n", fd);
|
||||
SSH_LOG(SSH_LOG_PROTOCOL, "error reading file fd: %d", fd);
|
||||
ret = SSH_ERROR;
|
||||
return ret;
|
||||
}
|
||||
rv = lseek(fd, client_msg->offset, SEEK_SET);
|
||||
if (rv == -1) {
|
||||
sftp_reply_status(client_msg, SSH_FX_FAILURE, NULL);
|
||||
printf("error seeking file fd: %d at offset: %ld\n", fd, client_msg->offset);
|
||||
SSH_LOG(SSH_LOG_PROTOCOL, "error seeking file fd: %d at offset: %ld",
|
||||
fd, client_msg->offset);
|
||||
ret = SSH_ERROR;
|
||||
return ret;
|
||||
}
|
||||
@@ -500,22 +510,28 @@ static int process_read(sftp_client_message client_msg) {
|
||||
sftp_reply_status(client_msg, SSH_FX_EOF, "EOF encountered");
|
||||
} else {
|
||||
sftp_reply_status(client_msg, SSH_FX_FAILURE, NULL);
|
||||
printf("read file error!\n");
|
||||
SSH_LOG(SSH_LOG_PROTOCOL, "read file error!");
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int process_write(sftp_client_message client_msg) {
|
||||
static int process_write(sftp_client_message client_msg)
|
||||
{
|
||||
int ret = SSH_OK;
|
||||
struct sftp_handle *client_handle = (struct sftp_handle*)sftp_handle(client_msg->sftp, client_msg->handle);
|
||||
struct sftp_handle *client_handle;
|
||||
uint32_t writen;
|
||||
int fd;
|
||||
const char *msg_data;
|
||||
uint32_t len;
|
||||
int rv;
|
||||
|
||||
client_handle = (struct sftp_handle*)sftp_handle(client_msg->sftp,
|
||||
client_msg->handle);
|
||||
|
||||
SSH_LOG(SSH_LOG_PROTOCOL, "try to write a file from handle");
|
||||
|
||||
if (client_handle == NULL || client_handle->session_id != client_msg->sftp) {
|
||||
printf("get wrong handle from msg\n");
|
||||
SSH_LOG(SSH_LOG_PROTOCOL, "got wrong handle from msg");
|
||||
sftp_reply_status(client_msg, SSH_FX_FAILURE, NULL);
|
||||
return SSH_ERROR;
|
||||
}
|
||||
@@ -524,7 +540,7 @@ static int process_write(sftp_client_message client_msg) {
|
||||
|
||||
if (fd < 0) {
|
||||
sftp_reply_status(client_msg, SSH_FX_INVALID_HANDLE, NULL);
|
||||
printf("write file fd error!\n");
|
||||
SSH_LOG(SSH_LOG_PROTOCOL, "write file fd error!");
|
||||
ret = SSH_ERROR;
|
||||
return ret;
|
||||
}
|
||||
@@ -535,7 +551,8 @@ static int process_write(sftp_client_message client_msg) {
|
||||
rv = lseek(fd, client_msg->offset, SEEK_SET);
|
||||
if (rv == -1) {
|
||||
sftp_reply_status(client_msg, SSH_FX_FAILURE, NULL);
|
||||
printf("error seeking file at offset: %ld\n", client_msg->offset);
|
||||
SSH_LOG(SSH_LOG_PROTOCOL, "error seeking file at offset: %ld\n",
|
||||
client_msg->offset);
|
||||
}
|
||||
writen = write(fd, msg_data, len);
|
||||
if(writen == len) {
|
||||
@@ -547,9 +564,15 @@ static int process_write(sftp_client_message client_msg) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int process_close(sftp_client_message client_msg) {
|
||||
static int process_close(sftp_client_message client_msg)
|
||||
{
|
||||
int ret = SSH_OK;
|
||||
struct sftp_handle *client_handle = (struct sftp_handle*)sftp_handle(client_msg->sftp, client_msg->handle);
|
||||
struct sftp_handle *client_handle;
|
||||
|
||||
client_handle = (struct sftp_handle*)sftp_handle(client_msg->sftp,
|
||||
client_msg->handle);
|
||||
|
||||
SSH_LOG(SSH_LOG_PROTOCOL, "try to close handle");
|
||||
|
||||
if (client_handle == NULL) {
|
||||
printf("get wrong handle from msg\n");
|
||||
@@ -561,19 +584,22 @@ static int process_close(sftp_client_message client_msg) {
|
||||
reinit_single_handle(client_handle);
|
||||
sftp_reply_status(client_msg, SSH_FX_OK, NULL);
|
||||
} else {
|
||||
printf("closing file failed\n");
|
||||
SSH_LOG(SSH_LOG_PROTOCOL, "closing file failed");
|
||||
sftp_reply_status(client_msg, SSH_FX_BAD_MESSAGE, "Invalid handle");
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int process_opendir(sftp_client_message client_msg) {
|
||||
static int process_opendir(sftp_client_message client_msg)
|
||||
{
|
||||
int ret = SSH_OK;
|
||||
DIR *dir = NULL;
|
||||
const char *dir_name = sftp_client_message_get_filename(client_msg);
|
||||
int handle_ind = -1;
|
||||
|
||||
SSH_LOG(SSH_LOG_PROTOCOL, "try to open dir: %s", dir_name);
|
||||
|
||||
dir = opendir(dir_name);
|
||||
if (dir == NULL) {
|
||||
sftp_reply_status(client_msg, SSH_FX_NO_SUCH_FILE, "No such directory");
|
||||
@@ -740,7 +766,8 @@ static int process_lstat(sftp_client_message client_msg) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int process_readlink(sftp_client_message client_msg) {
|
||||
static int process_readlink(sftp_client_message client_msg)
|
||||
{
|
||||
int ret = SSH_OK;
|
||||
const char *filename = sftp_client_message_get_filename(client_msg);
|
||||
char buf[PATH_MAX];
|
||||
@@ -753,11 +780,13 @@ static int process_readlink(sftp_client_message client_msg) {
|
||||
return SSH_ERROR;
|
||||
}
|
||||
|
||||
SSH_LOG(SSH_LOG_PROTOCOL, "read link : %s", filename);
|
||||
|
||||
len = readlink(filename, buf, sizeof(buf) - 1);
|
||||
if (len < 0) {
|
||||
printf("read link error with reason: %d\n", errno);
|
||||
status = unix_errno_to_ssh_stat(errno);
|
||||
err_msg = ssh_str_error(status);
|
||||
SSH_LOG(SSH_LOG_PROTOCOL, "read link error with reason: %s", err_msg);
|
||||
sftp_reply_status(client_msg, status, err_msg);
|
||||
ret = SSH_ERROR;
|
||||
} else {
|
||||
@@ -768,13 +797,16 @@ static int process_readlink(sftp_client_message client_msg) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int process_symlink(sftp_client_message client_msg) {
|
||||
static int process_symlink(sftp_client_message client_msg)
|
||||
{
|
||||
int ret = SSH_OK;
|
||||
const char *destpath = sftp_client_message_get_filename(client_msg);
|
||||
const char *srcpath = ssh_string_get_char(client_msg->data);
|
||||
int status = SSH_FX_OK;
|
||||
int rv;
|
||||
// printf("try to create link with src: %s and dest: %s \n", srcpath, destpath);
|
||||
|
||||
SSH_LOG(SSH_LOG_PROTOCOL, "try to create link with src: %s and dest: %s",
|
||||
srcpath, destpath);
|
||||
|
||||
if (srcpath == NULL || destpath == NULL) {
|
||||
sftp_reply_status(client_msg, SSH_FX_NO_SUCH_FILE, "File name error");
|
||||
@@ -785,7 +817,9 @@ static int process_symlink(sftp_client_message client_msg) {
|
||||
if (rv < 0) {
|
||||
status = unix_errno_to_ssh_stat(errno);
|
||||
printf("error symlink with error: %d\n", errno);
|
||||
sftp_reply_status(client_msg, status, "Write error");
|
||||
SSH_LOG(SSH_LOG_PROTOCOL, "error symlink with error: %s\n",
|
||||
strerror(errno));
|
||||
sftp_reply_status(client_msg, status, strerror(errno));
|
||||
ret = SSH_ERROR;
|
||||
} else {
|
||||
sftp_reply_status(client_msg, SSH_FX_OK, "write success");
|
||||
@@ -794,15 +828,19 @@ static int process_symlink(sftp_client_message client_msg) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int process_remove(sftp_client_message client_msg) {
|
||||
static int process_remove(sftp_client_message client_msg)
|
||||
{
|
||||
int ret = SSH_OK;
|
||||
const char *filename = sftp_client_message_get_filename(client_msg);
|
||||
int rv;
|
||||
int status = SSH_FX_OK;
|
||||
|
||||
SSH_LOG(SSH_LOG_PROTOCOL, "try to remove: %s ", filename);
|
||||
|
||||
rv = unlink(filename);
|
||||
if (rv < 0) {
|
||||
printf("unlink error with reason: %d\n", errno);
|
||||
SSH_LOG(SSH_LOG_PROTOCOL, "unlink error with reason: %s ",
|
||||
strerror(errno));
|
||||
status = unix_errno_to_ssh_stat(errno);
|
||||
ret = SSH_ERROR;
|
||||
}
|
||||
|
Reference in New Issue
Block a user