📄 lib.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 + -