Andre,

Take a look at service-win32/openvpnserv.c -- this code shows how to do a
CreateProcess with redirected standard handles.

James

Andre Morisse <a...@application-factory.de> said:

> Hello together
> 
> at the moment I just trying to build up a GUI Interface for Windows to OVPN
> for easier use. The target is to build a GUI that handle a connect-up to a
> OVPN Server without showing the user all the status information and really
> confusing status outputs for "normal" user.
> Short said: Only a button connect, a field to enter a passphrase for the
> rsa key and a status indicator if connect or not.
> 
> I already programmed the GUI interface based in a system that loads the
> OVPN and starts it with the appropiate config file and redirecting the
> STDInput and STDOutput Handles to named pipes instead of a console.
> With this, the GUI ist able to read from and write to the console
> like a user, all to do is to interpret the status messages and send,
> for example, the passphrase if requested as keyboard-input.
> 
> At least, I should announce that, to get this work, I had to make minor
> changes to the io.c file and commented out the check if it is a running
> windows nt service, because redirecting the inputs&outputs is a thing
> a windows nt service would do, too. With this changes, I recompiled the
> ovpn (btw. version 1.5.0).
> 
> Now the following problem:
> When starting the rebuild version from console, everything works fine
> like it should, asking for passphrase, connecting and so on. The VPN
> connection is full usable (this was tested).
> 
> When connecting with the changed STDInput und STDOutput Params, it
> runs to, ask for the passphrase, which is send by the GUI programm and
> accepted by OVPN, runs further and loads everything like it is in console
> und stops at the message where it say "Local IP: ip:undefined" and
> "Server IP: ip:port". (This can be seen at the screenshots, too).
> 
> My question is: someone a idea why ovpn stops working when running with
> the redirected Input und Outputs (to a pipe for another programm instead
> to the pipe of the console) at the point where it should connect ?
> 
> Another idea is to start it in console, but pass the passphrase for the key
> when calling up by a command-line parameter as entered by the user in a input
> field in the gui interface and checking of a ovpn connection is established
> if there is a Task of the openvpn.exe File running in the system (really bad,
> i know - but this would work ;-)
> Anyone already done a modification for passing the passphrase by commandline
> instead of entering it at the console window and could give me some
> information about what to modify ?
> 
> At least, I have two screenshots of the modified ovpn running at console:
> http://www.a-fa.de/am/ovpn/console_screenshot.gif
> 
> and running at the gui with the redirected pipes:
> http://www.a-fa.de/am/ovpn/gui_screenshot.gif
> 
> both times with the same config and the same key.
> 
> thanks for any help or information!
> 
> with greetings
> Andre
> 
> 
> The following is just informational:
> 
> The redirecting of the named pipes it done by the STARTUPINFO Structure of
> Windows used by the CreateProcess API Command:
> 
> typedef struct _STARTUPINFO { // si  
>     DWORD   cb; 
>     LPTSTR  lpReserved; 
>     LPTSTR  lpDesktop; 
>     LPTSTR  lpTitle; 
>     DWORD   dwX; 
>     DWORD   dwY; 
>     DWORD   dwXSize; 
>     DWORD   dwYSize; 
>     DWORD   dwXCountChars; 
>     DWORD   dwYCountChars; 
>     DWORD   dwFillAttribute; 
>     DWORD   dwFlags; 
>     WORD    wShowWindow; 
>     WORD    cbReserved2; 
>     LPBYTE  lpReserved2; 
>     HANDLE  hStdInput;   <--- there you can give pipes at windows
>     HANDLE  hStdOutput;  <--- there you give the pipes at windows
>     HANDLE  hStdError;   <--- there you give the pipes at windows
> 
> } STARTUPINFO, *LPSTARTUPINFO; 
> 
> and with this it is called, where you can give an STARTUPINFO to Windows
> 
> BOOL CreateProcess(
> 
>     LPCTSTR lpApplicationName, // pointer to name of executable module 
>     LPTSTR lpCommandLine, // pointer to command line string
>     LPSECURITY_ATTRIBUTES lpProcessAttributes,
>       // pointer to process security attributes 
>     LPSECURITY_ATTRIBUTES lpThreadAttributes,
>       // pointer to thread security attributes 
>     BOOL bInheritHandles, // handle inheritance flag 
>     DWORD dwCreationFlags, // creation flags 
>     LPVOID lpEnvironment, // pointer to new environment block 
>     LPCTSTR lpCurrentDirectory, // pointer to current directory name 
>     LPSTARTUPINFO lpStartupInfo, // pointer to STARTUPINFO 
>     LPPROCESS_INFORMATION lpProcessInformation
>       // pointer to PROCESS_INFORMATION
>    );
> 
> 
> 
> 
> -------------------------------------------------------
> This SF.Net email is sponsored by: IBM Linux Tutorials
> Free Linux tutorial presented by Daniel Robbins, President and CEO of
> GenToo technologies. Learn everything from fundamentals to system
> administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
> _______________________________________________
> Openvpn-devel mailing list
> Openvpn-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/openvpn-devel
> 



-- 




Reply via email to