mirror of
https://github.com/wiiu-env/ftpiiu_plugin.git
synced 2024-11-17 10:19:23 +01:00
Add some advanced logging
This commit is contained in:
parent
c763e2d52f
commit
6d042c525a
9
delog.py
Executable file
9
delog.py
Executable file
@ -0,0 +1,9 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import re
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
regex = re.compile('\x1b\[[0-9]*;[0-9]*H')
|
||||||
|
for line in sys.stdin:
|
||||||
|
print(regex.sub('', line).strip())
|
@ -33,4 +33,7 @@ void console_set_status(const char *fmt, ...);
|
|||||||
__attribute__((format(printf,1,2)))
|
__attribute__((format(printf,1,2)))
|
||||||
void console_print(const char *fmt, ...);
|
void console_print(const char *fmt, ...);
|
||||||
|
|
||||||
|
__attribute__((format(printf,1,2)))
|
||||||
|
void debug_print(const char *fmt, ...);
|
||||||
|
|
||||||
void console_render(void);
|
void console_render(void);
|
||||||
|
@ -12,6 +12,9 @@
|
|||||||
static PrintConsole status_console;
|
static PrintConsole status_console;
|
||||||
static PrintConsole main_console;
|
static PrintConsole main_console;
|
||||||
static PrintConsole tcp_console;
|
static PrintConsole tcp_console;
|
||||||
|
#if ENABLE_LOGGING
|
||||||
|
static bool disable_logging = false;
|
||||||
|
#endif
|
||||||
|
|
||||||
/*! initialize console subsystem */
|
/*! initialize console subsystem */
|
||||||
void
|
void
|
||||||
@ -61,11 +64,29 @@ console_print(const char *fmt, ...)
|
|||||||
va_start(ap, fmt);
|
va_start(ap, fmt);
|
||||||
vprintf(fmt, ap);
|
vprintf(fmt, ap);
|
||||||
#ifdef ENABLE_LOGGING
|
#ifdef ENABLE_LOGGING
|
||||||
|
if(!disable_logging)
|
||||||
vfprintf(stderr, fmt, ap);
|
vfprintf(stderr, fmt, ap);
|
||||||
#endif
|
#endif
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*! print debug message
|
||||||
|
*
|
||||||
|
* @param[in] fmt format string
|
||||||
|
* @param[in] ... format arguments
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
debug_print(const char *fmt, ...)
|
||||||
|
{
|
||||||
|
#ifdef ENABLE_LOGGING
|
||||||
|
va_list ap;
|
||||||
|
|
||||||
|
va_start(ap, fmt);
|
||||||
|
vfprintf(stderr, fmt, ap);
|
||||||
|
va_end(ap);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/*! print tcp tables */
|
/*! print tcp tables */
|
||||||
static void
|
static void
|
||||||
print_tcp_table(void)
|
print_tcp_table(void)
|
||||||
@ -75,6 +96,10 @@ print_tcp_table(void)
|
|||||||
size_t i;
|
size_t i;
|
||||||
int rc, lines = 0;
|
int rc, lines = 0;
|
||||||
|
|
||||||
|
#ifdef ENABLE_LOGGING
|
||||||
|
disable_logging = true;
|
||||||
|
#endif
|
||||||
|
|
||||||
consoleSelect(&tcp_console);
|
consoleSelect(&tcp_console);
|
||||||
console_print("\x1b[0;0H\x1b[K");
|
console_print("\x1b[0;0H\x1b[K");
|
||||||
optlen = sizeof(tcp_entries);
|
optlen = sizeof(tcp_entries);
|
||||||
@ -148,6 +173,10 @@ print_tcp_table(void)
|
|||||||
console_print("\x1b[2J");
|
console_print("\x1b[2J");
|
||||||
|
|
||||||
consoleSelect(&main_console);
|
consoleSelect(&main_console);
|
||||||
|
|
||||||
|
#ifdef ENABLE_LOGGING
|
||||||
|
disable_logging = false;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! draw console to screen */
|
/*! draw console to screen */
|
||||||
@ -190,6 +219,17 @@ console_print(const char *fmt, ...)
|
|||||||
va_end(ap);
|
va_end(ap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
debug_print(const char *fmt, ...)
|
||||||
|
{
|
||||||
|
#ifdef ENABLE_LOGGING
|
||||||
|
va_list ap;
|
||||||
|
va_start(ap, fmt);
|
||||||
|
vfprintf(stderr, fmt, ap);
|
||||||
|
va_end(ap);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
void console_render(void)
|
void console_render(void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
48
source/ftp.c
48
source/ftp.c
@ -968,8 +968,11 @@ ftp_session_new(int listen_fd)
|
|||||||
/* send initiator response */
|
/* send initiator response */
|
||||||
rc = ftp_send_response(session, 220, "Hello!\r\n");
|
rc = ftp_send_response(session, 220, "Hello!\r\n");
|
||||||
if(rc <= 0)
|
if(rc <= 0)
|
||||||
|
{
|
||||||
|
debug_print("failed to send initiator response\n");
|
||||||
ftp_session_destroy(session);
|
ftp_session_destroy(session);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*! accept PASV connection for ftp session
|
/*! accept PASV connection for ftp session
|
||||||
*
|
*
|
||||||
@ -1175,6 +1178,7 @@ ftp_session_read_command(ftp_session_t *session,
|
|||||||
if(rc == 0)
|
if(rc == 0)
|
||||||
{
|
{
|
||||||
/* peer closed connection */
|
/* peer closed connection */
|
||||||
|
debug_print("peer closed connection\n");
|
||||||
ftp_session_close_cmd(session);
|
ftp_session_close_cmd(session);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1386,7 +1390,10 @@ ftp_session_poll(ftp_session_t *session)
|
|||||||
|
|
||||||
/* we need to read a new command */
|
/* we need to read a new command */
|
||||||
if(pollinfo[0].revents & (POLLERR|POLLHUP))
|
if(pollinfo[0].revents & (POLLERR|POLLHUP))
|
||||||
|
{
|
||||||
|
debug_print("cmd revents=0x%x\n", pollinfo[0].revents);
|
||||||
ftp_session_close_cmd(session);
|
ftp_session_close_cmd(session);
|
||||||
|
}
|
||||||
else if(pollinfo[0].revents & (POLLIN | POLLPRI))
|
else if(pollinfo[0].revents & (POLLIN | POLLPRI))
|
||||||
ftp_session_read_command(session, pollinfo[0].revents);
|
ftp_session_read_command(session, pollinfo[0].revents);
|
||||||
}
|
}
|
||||||
@ -1449,6 +1456,7 @@ ftp_session_poll(ftp_session_t *session)
|
|||||||
return session->next;
|
return session->next;
|
||||||
|
|
||||||
/* disconnected from peer; destroy it and return next session */
|
/* disconnected from peer; destroy it and return next session */
|
||||||
|
debug_print("disconnected from peer\n");
|
||||||
return ftp_session_destroy(session);
|
return ftp_session_destroy(session);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1504,6 +1512,9 @@ update_status(void)
|
|||||||
{
|
{
|
||||||
#ifdef _3DS
|
#ifdef _3DS
|
||||||
console_set_status("\n" GREEN STATUS_STRING " "
|
console_set_status("\n" GREEN STATUS_STRING " "
|
||||||
|
#ifdef ENABLE_LOGGING
|
||||||
|
"DEBUG "
|
||||||
|
#endif
|
||||||
CYAN "%s:%u" RESET,
|
CYAN "%s:%u" RESET,
|
||||||
inet_ntoa(serv_addr.sin_addr),
|
inet_ntoa(serv_addr.sin_addr),
|
||||||
ntohs(serv_addr.sin_port));
|
ntohs(serv_addr.sin_port));
|
||||||
@ -1528,6 +1539,9 @@ update_status(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
console_set_status(GREEN STATUS_STRING " "
|
console_set_status(GREEN STATUS_STRING " "
|
||||||
|
#ifdef ENABLE_LOGGING
|
||||||
|
"DEBUG "
|
||||||
|
#endif
|
||||||
YELLOW "IP:" CYAN "%s "
|
YELLOW "IP:" CYAN "%s "
|
||||||
YELLOW "Port:" CYAN "%u"
|
YELLOW "Port:" CYAN "%u"
|
||||||
RESET,
|
RESET,
|
||||||
@ -1623,23 +1637,6 @@ ftp_init(void)
|
|||||||
|
|
||||||
console_print(GREEN "Ready!\n" RESET);
|
console_print(GREEN "Ready!\n" RESET);
|
||||||
|
|
||||||
#ifdef ENABLE_LOGGING
|
|
||||||
/* open log file */
|
|
||||||
FILE *fp = freopen("/ftpd.log", "wb", stderr);
|
|
||||||
if(fp == NULL)
|
|
||||||
{
|
|
||||||
console_print(RED "freopen: 0x%08X\n" RESET, errno);
|
|
||||||
goto log_fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* truncate log file */
|
|
||||||
if(ftruncate(fileno(fp), 0) != 0)
|
|
||||||
{
|
|
||||||
console_print(RED "ftruncate: 0x%08X\n" RESET, errno);
|
|
||||||
goto ftruncate_fail;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* allocate buffer for SOC service */
|
/* allocate buffer for SOC service */
|
||||||
SOCU_buffer = (u32*)memalign(SOCU_ALIGN, SOCU_BUFFERSIZE);
|
SOCU_buffer = (u32*)memalign(SOCU_ALIGN, SOCU_BUFFERSIZE);
|
||||||
if(SOCU_buffer == NULL)
|
if(SOCU_buffer == NULL)
|
||||||
@ -1722,13 +1719,6 @@ soc_fail:
|
|||||||
SOCU_buffer = NULL;
|
SOCU_buffer = NULL;
|
||||||
|
|
||||||
memalign_fail:
|
memalign_fail:
|
||||||
#ifdef ENABLE_LOGGING
|
|
||||||
ftruncate_fail:
|
|
||||||
if(fclose(stderr) != 0)
|
|
||||||
console_print(RED "fclose: 0x%08X\n" RESET, errno);
|
|
||||||
|
|
||||||
log_fail:
|
|
||||||
#endif
|
|
||||||
return -1;
|
return -1;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -1741,6 +1731,8 @@ ftp_exit(void)
|
|||||||
Result ret;
|
Result ret;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
debug_print("exiting ftp server\n");
|
||||||
|
|
||||||
/* clean up all sessions */
|
/* clean up all sessions */
|
||||||
while(sessions != NULL)
|
while(sessions != NULL)
|
||||||
ftp_session_destroy(sessions);
|
ftp_session_destroy(sessions);
|
||||||
@ -1761,14 +1753,6 @@ ftp_exit(void)
|
|||||||
console_print(RED "socExit: 0x%08X\n" RESET, (unsigned int)ret);
|
console_print(RED "socExit: 0x%08X\n" RESET, (unsigned int)ret);
|
||||||
free(SOCU_buffer);
|
free(SOCU_buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef ENABLE_LOGGING
|
|
||||||
/* close log file */
|
|
||||||
if(fclose(stderr) != 0)
|
|
||||||
console_print(RED "fclose: 0x%08X\n" RESET, errno);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
|
#include <errno.h>
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
#ifdef _3DS
|
#ifdef _3DS
|
||||||
#include <3ds.h>
|
#include <3ds.h>
|
||||||
#endif
|
#endif
|
||||||
@ -78,7 +80,33 @@ main(int argc,
|
|||||||
|
|
||||||
/* initialize console subsystem */
|
/* initialize console subsystem */
|
||||||
console_init();
|
console_init();
|
||||||
console_set_status("\n" GREEN STATUS_STRING RESET);
|
|
||||||
|
#ifdef ENABLE_LOGGING
|
||||||
|
/* open log file */
|
||||||
|
#ifdef _3DS
|
||||||
|
FILE *fp = freopen("/ftpd.log", "wb", stderr);
|
||||||
|
#else
|
||||||
|
FILE *fp = freopen("ftpd.log", "wb", stderr);
|
||||||
|
#endif
|
||||||
|
if(fp == NULL)
|
||||||
|
{
|
||||||
|
console_print(RED "freopen: 0x%08X\n" RESET, errno);
|
||||||
|
goto log_fail;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* truncate log file */
|
||||||
|
if(ftruncate(fileno(fp), 0) != 0)
|
||||||
|
{
|
||||||
|
console_print(RED "ftruncate: 0x%08X\n" RESET, errno);
|
||||||
|
goto log_fail;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
console_set_status("\n" GREEN STATUS_STRING
|
||||||
|
#ifdef ENABLE_LOGGING
|
||||||
|
" DEBUG"
|
||||||
|
#endif
|
||||||
|
RESET);
|
||||||
|
|
||||||
while(status == LOOP_RESTART)
|
while(status == LOOP_RESTART)
|
||||||
{
|
{
|
||||||
@ -97,6 +125,15 @@ main(int argc,
|
|||||||
|
|
||||||
#ifdef _3DS
|
#ifdef _3DS
|
||||||
console_print("Press B to exit\n");
|
console_print("Press B to exit\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef ENABLE_LOGGING
|
||||||
|
log_fail:
|
||||||
|
if(fclose(stderr) != 0)
|
||||||
|
console_print(RED "fclose(%d): 0x%08X\n" RESET, fileno(stderr), errno);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _3DS
|
||||||
loop(wait_for_b);
|
loop(wait_for_b);
|
||||||
|
|
||||||
/* deinitialize 3DS services */
|
/* deinitialize 3DS services */
|
||||||
|
Loading…
Reference in New Issue
Block a user