nshlib: Add login argument to nsh_session for controling the login process

Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
This commit is contained in:
Xiang Xiao 2020-04-18 23:53:32 +08:00 committed by patacongo
parent 7b4d34e352
commit 9ab5e2ff45
6 changed files with 43 additions and 37 deletions

View File

@ -860,7 +860,7 @@ int nsh_loginscript(FAR struct nsh_vtbl_s *vtbl);
/* Basic session and message handling */ /* Basic session and message handling */
struct console_stdio_s; struct console_stdio_s;
int nsh_session(FAR struct console_stdio_s *pstate); int nsh_session(FAR struct console_stdio_s *pstate, bool login);
int nsh_parse(FAR struct nsh_vtbl_s *vtbl, char *cmdline); int nsh_parse(FAR struct nsh_vtbl_s *vtbl, char *cmdline);
/**************************************************************************** /****************************************************************************

View File

@ -317,7 +317,7 @@ int nsh_consolemain(int argc, char *argv[])
/* Execute the session */ /* Execute the session */
nsh_session(pstate); nsh_session(pstate, true);
/* We lost the connection. Wait for the keyboard to /* We lost the connection. Wait for the keyboard to
* be re-connected. * be re-connected.

View File

@ -106,7 +106,7 @@ int nsh_consolemain(int argc, char *argv[])
/* Execute the session */ /* Execute the session */
ret = nsh_session(pstate); ret = nsh_session(pstate, true);
/* Exit upon return */ /* Exit upon return */

View File

@ -79,7 +79,7 @@
* *
****************************************************************************/ ****************************************************************************/
int nsh_session(FAR struct console_stdio_s *pstate) int nsh_session(FAR struct console_stdio_s *pstate, bool login)
{ {
FAR struct nsh_vtbl_s *vtbl; FAR struct nsh_vtbl_s *vtbl;
int ret; int ret;
@ -87,41 +87,44 @@ int nsh_session(FAR struct console_stdio_s *pstate)
DEBUGASSERT(pstate); DEBUGASSERT(pstate);
vtbl = &pstate->cn_vtbl; vtbl = &pstate->cn_vtbl;
#ifdef CONFIG_NSH_CONSOLE_LOGIN if (login)
/* Login User and Password Check */
if (nsh_login(pstate) != OK)
{ {
nsh_exit(vtbl, 1); #ifdef CONFIG_NSH_CONSOLE_LOGIN
return -1; /* nsh_exit does not return */ /* Login User and Password Check */
}
if (nsh_login(pstate) != OK)
{
nsh_exit(vtbl, 1);
return -1; /* nsh_exit does not return */
}
#endif /* CONFIG_NSH_CONSOLE_LOGIN */ #endif /* CONFIG_NSH_CONSOLE_LOGIN */
/* Present a greeting and possibly a Message of the Day (MOTD) */ /* Present a greeting and possibly a Message of the Day (MOTD) */
fputs(g_nshgreeting, pstate->cn_outstream); fputs(g_nshgreeting, pstate->cn_outstream);
#ifdef CONFIG_NSH_MOTD #ifdef CONFIG_NSH_MOTD
#ifdef CONFIG_NSH_PLATFORM_MOTD #ifdef CONFIG_NSH_PLATFORM_MOTD
/* Output the platform message of the day */ /* Output the platform message of the day */
platform_motd(vtbl->iobuffer, IOBUFFERSIZE); platform_motd(vtbl->iobuffer, IOBUFFERSIZE);
fprintf(pstate->cn_outstream, "%s\n", vtbl->iobuffer); fprintf(pstate->cn_outstream, "%s\n", vtbl->iobuffer);
#else #else
/* Output the fixed message of the day */ /* Output the fixed message of the day */
fprintf(pstate->cn_outstream, "%s\n", g_nshmotd); fprintf(pstate->cn_outstream, "%s\n", g_nshmotd);
#endif #endif
#endif #endif
fflush(pstate->cn_outstream); fflush(pstate->cn_outstream);
/* Execute the login script */ /* Execute the login script */
#ifdef CONFIG_NSH_ROMFSRC #ifdef CONFIG_NSH_ROMFSRC
nsh_loginscript(vtbl); nsh_loginscript(vtbl);
#endif #endif
}
/* Then enter the command line parsing loop */ /* Then enter the command line parsing loop */

View File

@ -76,7 +76,7 @@
* *
****************************************************************************/ ****************************************************************************/
int nsh_session(FAR struct console_stdio_s *pstate) int nsh_session(FAR struct console_stdio_s *pstate, bool login)
{ {
FAR struct nsh_vtbl_s *vtbl; FAR struct nsh_vtbl_s *vtbl;
int ret; int ret;
@ -84,34 +84,37 @@ int nsh_session(FAR struct console_stdio_s *pstate)
DEBUGASSERT(pstate); DEBUGASSERT(pstate);
vtbl = &pstate->cn_vtbl; vtbl = &pstate->cn_vtbl;
#ifdef CONFIG_NSH_CONSOLE_LOGIN if (login)
/* Login User and Password Check */
if (nsh_stdlogin(pstate) != OK)
{ {
nsh_exit(vtbl, 1); #ifdef CONFIG_NSH_CONSOLE_LOGIN
return -1; /* nsh_exit does not return */ /* Login User and Password Check */
}
if (nsh_stdlogin(pstate) != OK)
{
nsh_exit(vtbl, 1);
return -1; /* nsh_exit does not return */
}
#endif /* CONFIG_NSH_CONSOLE_LOGIN */ #endif /* CONFIG_NSH_CONSOLE_LOGIN */
/* Present a greeting and possibly a Message of the Day (MOTD) */ /* Present a greeting and possibly a Message of the Day (MOTD) */
printf("%s", g_nshgreeting); printf("%s", g_nshgreeting);
#ifdef CONFIG_NSH_MOTD #ifdef CONFIG_NSH_MOTD
# ifdef CONFIG_NSH_PLATFORM_MOTD # ifdef CONFIG_NSH_PLATFORM_MOTD
/* Output the platform message of the day */ /* Output the platform message of the day */
platform_motd(vtbl->iobuffer, IOBUFFERSIZE); platform_motd(vtbl->iobuffer, IOBUFFERSIZE);
printf("%s\n", vtbl->iobuffer); printf("%s\n", vtbl->iobuffer);
# else # else
/* Output the fixed message of the day */ /* Output the fixed message of the day */
printf("%s\n", g_nshmotd); printf("%s\n", g_nshmotd);
# endif # endif
#endif #endif
}
/* Then enter the command line parsing loop */ /* Then enter the command line parsing loop */

View File

@ -339,7 +339,7 @@ int nsh_consolemain(int argc, char *argv[])
/* Execute the session */ /* Execute the session */
nsh_session(pstate); nsh_session(pstate, true);
/* Switch to /dev/null because we probably no longer have a /* Switch to /dev/null because we probably no longer have a
* valid console device. * valid console device.