⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lib.cpp

📁 VC编写的VPN拨号软件源码 搜索了好久才找到
💻 CPP
字号:
#include "stdafx.h"
#include "iostream.h"
#include <ras.h>
#include <raserror.h>
#include "rasabsLay.h"

#define MAX_LOADSTRING 100

#define RASET_PHONE      1 // Phone lines: modem, ISDN, X.25, etc
#define RASET_VPN        2 // Virtual private network
#define RASET_DIRECT     3 // Direct connect: serial, parallel
#define RASET_INTERNET   4 // BaseCamp internet
#define RASET_BROADHAND  5 // Broadband

#define VS_DEFAULT   0 // default (PPTP for now)
#define VS_PPTONLY   1 // Only PPTP is attempted.
#define VS_PPTPFIRST 2 // PPTP is tried first.
#define VS_L2TPONLY  3 // Only L2TP is attempted.
#define VS_L2TPFIRST 4 // L2TP is tried first.

extern "C" __declspec(dllexport) int PASCAL add(int a, int b)
{ 
	return a+b;
}

bool Create_VPN_Connection = false; //Careat VPN successfully or not

inline void InitRASIP (RASIPADDR& rasIP)
{
		rasIP.a	=0;
		rasIP.b =0;
		rasIP.c =0;
		rasIP.d =0;
}

extern "C" __declspec(dllexport) int PASCAL createConn(char *lpszDialupName, char *lpszIPAddress)
{   CRas        ras;
	RASENTRY	rasEntry;
	char        strName[50];//="宽带在线";

	strcpy (strName, lpszDialupName);

	//if(ras.RasValidateEntryName(NULL, strName)!=ERROR_SUCCESS)
	//{
	//	PostQuitMessage(0);
	//}

	DWORD			lpcb	=	0;
	DWORD			lpcDevices;	
	RASDEVINFO*		lpRasDevInfo;
	RASDEVINFO		rasdevinfo; 
	
	RasEnumDevices(NULL, &lpcb, &lpcDevices);
	lpRasDevInfo = (LPRASDEVINFO) GlobalAlloc(GPTR, lpcb);
	lpRasDevInfo->dwSize = sizeof(RASDEVINFO);
	RasEnumDevices(lpRasDevInfo, &lpcb, &lpcDevices);
	strcpy (rasdevinfo.szDeviceName, lpRasDevInfo->szDeviceName);
	strcpy (rasdevinfo.szDeviceType, lpRasDevInfo->szDeviceType);

	rasEntry.dwSize				= sizeof (RASENTRY);
	//rasEntry.dwfOptions			= RASEO_RemoteDefaultGateway | RASEO_SpecificNameServers;
	//rasEntry.dwfOptions         = RASEO_RequireMsEncryptedPw | RASEO_RequireDataEncryption;
	rasEntry.dwAlternateOffset	= 0;
	rasEntry.dwCountryID		= 86;
	rasEntry.dwCountryCode		= 86;
//	rasEntry.dwDialExtraPercent = 75;
//	rasEntry.dwDialExtraSampleSeconds = 120;
//	rasEntry.dwDialMode         = 1;
	rasEntry.dwfNetProtocols = 4;
	rasEntry.dwfOptions = 1024262928;
//	rasEntry.dwfOptions2 = 367;
	rasEntry.dwFramingProtocol = 1;
//	rasEntry.dwHangUpExtraPercent = 10;
//	rasEntry.dwHangUpExtraSampleSeconds = 120;
//	rasEntry.dwRedialCount = 3;
//	rasEntry.dwRedialPause = 60;
//	rasEntry.dwType = RASET_VPN;

	rasEntry.dwFrameSize		= 0;
	rasEntry.dwfNetProtocols	= RASNP_Ip;		// TCP/IP
	rasEntry.dwFramingProtocol	= RASFP_Ppp;	//PPP
	rasEntry.dwChannels			= 0;
	rasEntry.dwReserved1		= 0;
	rasEntry.dwReserved2		= 0;	

	// Strings
	strcpy (rasEntry.szAreaCode, " ");
	strcpy (rasEntry.szScript, "");
	strcpy (rasEntry.szAutodialDll, "");
	strcpy (rasEntry.szAutodialFunc, "");
	strcpy (rasEntry.szX25PadType, "");
	strcpy (rasEntry.szX25Address, "");
	strcpy (rasEntry.szX25Facilities, "");
	strcpy (rasEntry.szX25UserData, "");
	//strcpy (rasEntry.szDeviceType, rasdevinfo.szDeviceType );
	//strcpy (rasEntry.szDeviceName, rasdevinfo.szDeviceName);
	strcpy (rasEntry.szDeviceName,"WAN 微型端口 (L2TP)");
	strcpy (rasEntry.szDeviceType, "vpn");	
	strcpy (rasEntry.szLocalPhoneNumber,lpszIPAddress);// "60.190.168.108");//服务器地址或域名
	strcpy (rasEntry.szDeviceType, "vpn");	
	strcpy (rasEntry.szDeviceType, "vpn");	

//	rasEntry.dwVpnStrategy = VS_DEFAULT;     //vpn类型
//	rasEntry.dwEncryptionType = ET_OPTIONAL; //数据加密类型    

	// IP addresses
	InitRASIP (rasEntry.ipaddr);
	InitRASIP (rasEntry.ipaddrDns);
	InitRASIP (rasEntry.ipaddrDnsAlt);
	InitRASIP (rasEntry.ipaddrWins);
	InitRASIP (rasEntry.ipaddrWinsAlt);

	//Create Entry
    DWORD			dwError;
	
	dwError = ras.RasSetEntryProperties (NULL, strName, &rasEntry, sizeof (RASENTRY), NULL, NULL);
	if (dwError == 0) 
	{
		RASDIALPARAMS	dialParm;
		dialParm.dwSize = sizeof (RASDIALPARAMS);

		strcpy (dialParm.szEntryName, strName);
		strcpy (dialParm.szPhoneNumber, "");
		strcpy (dialParm.szCallbackNumber,"");
		strcpy (dialParm.szUserName,"");
		strcpy (dialParm.szPassword,"");
		strcpy (dialParm.szDomain, "");
		dwError = ras.RasSetEntryDialParams(NULL, &dialParm,FALSE);
	
		//dwError = ras.RasSetCredentials(NULL, strName, &rasEntry, 0);
		if (dwError == 0)
			Create_VPN_Connection = true;
	}
	return dwError;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -