Arkadiusz Patyk <a...@areq.eu.org> said:

> On 03 Oct 2003 01:25:54 +0200, Stefano Bracalenti
> <stefano.bracale...@prometeia.it> wrote:
> 
> On Thu, 2003-10-02 at 22:07, Arkadiusz Patyk wrote:
> > Thu Oct 02 22:00:10 2003 0: OpenVPN 1.5-beta9 Win32-MinGW [SSL] [LZO]
> > [MTU-DYNAMIC] built on Oct  1 2003
> > Thu Oct 02 22:00:10 2003 1: Sorry but I can't read a password from the
> > console because this operating system or C library doesn't support the
> > getpass() function
> > Thu Oct 02 22:00:10 2003 2: Exiting
> > 
> > ;-(
> > 
> > How can I  protect using password ?
> 
> You need the getpass() function. I use one from a libc windows
> porting.
> You can add something like this to win32.c:
> 
> ---
> 
> char *
> getpass (const char * prompt)
> {
>         static char input[256];
>         HANDLE in;
>         HANDLE err;
>         DWORD  count;
> 
>         in = GetStdHandle (STD_INPUT_HANDLE);
>         err = GetStdHandle (STD_ERROR_HANDLE);
> 
>         if (in == INVALID_HANDLE_VALUE || err == INVALID_HANDLE_VALUE)
>                 return NULL;
> 
>         if (WriteFile (err, prompt, strlen (prompt), &count, NULL))
>         {
>                 int istty = (GetFileType (in) == FILE_TYPE_CHAR);
>                 DWORD old_flags;
>                 int rc;
> 
>                 if (istty)
>                 {
>                         if (GetConsoleMode (in, &old_flags))
>                                 SetConsoleMode (in, ENABLE_LINE_INPUT
> |
> ENABLE_PROCESSED_INPUT);
>                         else
>                                 istty = 0;
>                 }
>                 rc = ReadFile (in, input, sizeof (input), &count,
> NULL);
>                 if (count >= 2 && input[count - 2] == '\r')
>                         input[count - 2] = '\0';
>                 else
>                 {
>                         char buf[256];
>                         while (ReadFile (in, buf, sizeof (buf),
> &count,
> NULL) > 0)
>                                 if (count >= 2 && buf[count - 2] ==
> '\r')
>                                         break;
>                 }
>                 WriteFile (err, "\r\n", 2, &count, NULL);
>                 if (istty)
>                         SetConsoleMode (in, old_flags);
>                 if (rc)
>                         return input;
>         }
> 
>         return NULL;
> }
> 
> ---
> 
> Also remember to uncomment or insert if missing "#define HAVE_GETPASS
> 1"
> in config-win32.h. Recompile and enjoy ;)
> 
> ==============--
> 
> Is it possible to include this feature in next version?

Yes, I will merge it for upcoming 1.5-beta10

James


Reply via email to