Exemplo n.º 1
0
bool MakeRunParamStringByID(std::list<string> & lrun, const string & entityID, string entityTplId="")
{
	string szRun(""), szDeviceType(entityTplId);
	MAPNODE mainnode;
	if(entityTplId.empty())
	{
		OBJECT objDevice = Cache_GetEntity(entityID);
		if(objDevice == INVALID_VALUE)
			return false;

		mainnode = GetEntityMainAttribNode(objDevice);
		if(mainnode == INVALID_VALUE)
			return false;
		szDeviceType.clear();
		if(!FindNodeValue(mainnode, "sv_devicetype", szDeviceType))
			return false;
	}

	map<string, string, less<string> > lsDeviceParam;
	OBJECT objDeviceTmp = Cache_GetEntityTemplet(szDeviceType);
	if(objDeviceTmp != INVALID_VALUE)
	{
		LISTITEM lsItem;
		if( FindETContrlFirst(objDeviceTmp, lsItem))
		{
			MAPNODE objNode;
			while( (objNode = FindNext(lsItem)) != INVALID_VALUE )
			{
				string szName (""), szRun ("");
				string szType ("");
				// 得到参数名称,是否是必要参数,以及数据类型
				FindNodeValue(objNode, "sv_name",	szName);
				FindNodeValue(objNode, "sv_run",	szRun);
				FindNodeValue(objNode, "sv_type",	szType);
				if(szRun == "true")
					lsDeviceParam[szName] = szType;
			}
		}
	}

	// 在当前设备中枚举每一个必要运行参数
	map<string, string, less<string> >::iterator lstItem;
	for(lstItem = lsDeviceParam.begin(); lstItem != lsDeviceParam.end(); lstItem ++)
	{
		string szValue ("");
		FindNodeValue(mainnode, (lstItem->first), szValue);
		if((lstItem->second).compare("password") == 0)
		{
			char szOutput[2048] = {0};
			Des des;
			if(des.Decrypt(szValue.c_str(), szOutput))
				szValue = szOutput;
		}
		//szValue = url_Encode(szValue.c_str());
		szRun = (lstItem->first) + "=" + szValue;
		lrun.push_back(szRun);
	}
	return true;
}
Exemplo n.º 2
0
BOOL AcceptPrintf(char * pidEventName)
{
	char **initialEnv = environ;
	SYSTEMTIME mytime;

	//read from register to obtain ECC web root path, usually:  c:\siteview\siteview ecc\fcg-bin
	std::string szPath = GetSiteViewRootPath();
	szPath += "\\data\\svdbconfig.ini";

	INIFile theINI = LoadIni(szPath.c_str());

	//set language code (English or Chinese)
	std::string szTSec = GetIniSetting(theINI, "svdb", "DefaultLanguage");
	szTSec += "_code";
	std::string m_code = GetIniSetting(theINI, "svdb", szTSec.c_str());

	//WriteLog("before accept");
	if(FCGI_Accept()>=0)
	{

		char  wcookie[256];
		char *qrystr;
		char  *p;
		int   nSvsid;
		

		//char szWrite[256];

		char ** myenviron;
		myenviron =FCGI_GetEnv();
	
		char myenviron1[4096]={0};

		
		for(int i=0 ;myenviron[i];++i)
		{
			strcpy(myenviron1,myenviron[i]);
			putenv(myenviron[i]);
		}

		//check if the remoteIP is allowed to log into the system
		std::string strAcceptIp;
		strAcceptIp = GetIniFileString("IPCheck","IPAddress","", "general.ini");
		int nIsChecked;
		nIsChecked = GetIniFileInt("IPCheck","isCheck",0, "general.ini");
		char *ca,*cb,*cc;
		char *szAcceptIp;
		int nSize;
		

		char *remoteip=NULL;
		remoteip = getenv("REMOTE_ADDR");
		OutputDebugString(remoteip);
		OutputDebugString("\n");
		
		bool bAccept =false;
		nSize = static_cast<int>(strAcceptIp.size());

		if( (nIsChecked==1)&&(nSize>0)&&(remoteip!=NULL) )
		{
			
			szAcceptIp = new char[nSize+1];
			memset(szAcceptIp,0,nSize);
			strcpy(szAcceptIp,strAcceptIp.c_str());
			
			//remoteip = "192.168.5.6";
			//remoteip = "127.0.0.1";
			if(strcmp(remoteip,"127.0.0.1")!=0)
			{
				ca =szAcceptIp;
				//cb =szAcceptIp;
				//cc =szAcceptIp;
				while(ca)
				{
					cb= strchr(ca,',');
					if(cb)
							*cb=0;
					cc= strchr(ca,'*');
					if(cc)
							*cc=0;
					if(strstr(remoteip,ca) !=NULL)
					{
						bAccept= true;
					}
					if(!cb||bAccept==true)
						break;
					if(cb)
						ca=cb+1;
				}

			}else bAccept= true;
			delete(szAcceptIp);
		}
		else bAccept =true;//no need to check IP

			
		//Get方式
		qrystr=getenv("HTTP_COOKIE");
		nSvsid =0;
		if(qrystr)
		{
			if(strlen(qrystr)>0)
			{
				sprintf(wcookie,"%s",qrystr);
				p=strstr(wcookie,"svsid=");
				if(p!=NULL)
				{
					sscanf(p,"svsid=%d",&nSvsid);
				}
			}
		}

		if(nSvsid==0)
			nSvsid =GetCurrentProcessId();
		//Post方式
		string strPost = FuncGetDataByPostMethod();
		
		WriteLog("poststring:\n");
		WriteLog(strPost.c_str());

		//取值 
#if 1
		CSVQueryString strQuery(strPost.c_str());
		string strAccountVlaue;
		string strPwdVlaue ;
		
		#ifdef ShanTou
			strAccountVlaue= strQuery.Get_KeyValue("Account");
			strPwdVlaue = strQuery.Get_KeyValue("Password");
			strIsEipVlaue = strQuery.Get_KeyValue("IsEip");
		#else
			strAccountVlaue= strQuery.Get_KeyValue("Account");
			strPwdVlaue = strQuery.Get_KeyValue("Password");
		#endif

#else
		string strAccountVlaue="admin";
		string strPwdVlaue  ="1111" ;
#endif
		
		string str = "";
		//验证
		char strUserId[20];
		if((bAccept==false) || !IsLogin(strAccountVlaue.c_str(), strPwdVlaue.c_str(),strUserId))
		{//用户名/密码认证失败
			//标准头
			printf("Content-type: text/html charset=gb2312 \r\n");
			printf("Content-Language: zh-CN\r\n");
			printf("Set-Cookie: svsid=%d\r\n" ,nSvsid   );
			printf("\r\n");			
			if(strIsEipVlaue == "true")
			{
				printf("User Account Or Passsword is Error!");
			}
			else
			{
				printf("nameerror");
			}

			return FALSE;

		}
		else //用户名/密码登陆成功
		{
			SafeDog pSafeDog;

			bool IsDogExit=false;
			if(pSafeDog.DogOnUsb(IsDogExit) == 0)
			{
				if(IsDogExit == true)
				{//加密狗认证失败
					TTime mStopTime;
					if(pSafeDog.GetStopTime(mStopTime) == 0 )
					{
						TTime mNowTime;
						mNowTime = TTime::GetCurrentTimeEx();	
						
						if(mStopTime < mNowTime)
						{//过期了
							//标准头
							printf("Content-type: text/html charset=gb2312 \r\n");
							printf("Content-Language: zh-CN\r\n");
							printf("Set-Cookie: svsid=%d\r\n" ,nSvsid   );
							printf("\r\n");

							if(strIsEipVlaue == "true")
							{
								printf("System Is OverDue!");
							}
							else
							{
								printf("sysout");
							}
							
							return FALSE;
						}
					}
					else
					{
						Des OneDes;
						char strDes[1024]={0};
						std::string strDataNum = GetIniFileString("license", "starttime", "",  "general.ini");
						if(strDataNum.size()>0)
						{
							if( OneDes.Decrypt(strDataNum.c_str(),strDes) )
							{
								strDataNum=strDes;
								if(!strDataNum.empty())
								{
									std::string LastData = GetIniFileString("license", "lasttime", "",  "general.ini");
									if(!LastData.empty())
									{
										if( OneDes.Decrypt(LastData.c_str(),strDes) )
										{
											LastData=strDes;
											TTime mStopTime(atoi(strDataNum.substr(0,4).c_str()),atoi(strDataNum.substr(5,2).c_str()),atoi(strDataNum.substr(8,2).c_str()),0,0,0);
											TTimeSpan AddData(atoi(LastData.c_str()),0,0,0);
											mStopTime += AddData;

											TTime mNowTime;
											mNowTime = TTime::GetCurrentTimeEx();	
											
											if(mStopTime < mNowTime)
											{
												//标准头
												printf("Content-type: text/html charset=gb2312 \r\n");
												printf("Content-Language: zh-CN\r\n");
												printf("Set-Cookie: svsid=%d\r\n" ,nSvsid   );
												printf("\r\n");
												if(strIsEipVlaue == "true")
												{
													printf("System Is OverDue!");
												}
												else
												{
													printf("sysout");
												}
												return FALSE;
											}
										}
									}
								}
							}		
						}
					}		
				}
				IsDogExit=false;
			}
			else
			{
				Des OneDes;
				char strDes[1024]={0};
				std::string strDataNum = GetIniFileString("license", "starttime", "",  "general.ini");

				if(strDataNum.size()>0)
				{
					if( OneDes.Decrypt(strDataNum.c_str(),strDes) )
					{
						strDataNum=strDes;
						if(!strDataNum.empty())
						{
							std::string LastData = GetIniFileString("license", "lasttime", "",  "general.ini");

							if(!LastData.empty())
							{
								if( OneDes.Decrypt(LastData.c_str(),strDes) )
								{
									LastData=strDes;
                                    int nYear = 0, nMonth = 0, nDay = 0, nHour = 0, nMin = 0, nSec = 0;
									sscanf(strDataNum.c_str(), "%d-%d-%d", &nYear, &nMonth, &nDay);
									char buf[100]={0};
									sprintf(buf,"year:%d,mouth:%d,day:%d\n",nYear,nMonth,nDay);

									TTime mStopTime(nYear, nMonth, nDay, 0,0,0);
								   
    							    TTimeSpan AddData(atoi(LastData.c_str()),0,0,0);
									mStopTime += AddData;

									TTime mNowTime;
									mNowTime = TTime::GetCurrentTimeEx();	
									
									if(mStopTime < mNowTime)
									{
										//标准头
										printf("Content-type: text/html charset=gb2312 \r\n");
										printf("Content-Language: zh-CN\r\n");
										printf("Set-Cookie: svsid=%d\r\n" ,nSvsid   );
										printf("\r\n");
										if(strIsEipVlaue == "true")
										{
											printf("System Is OverDue!");
										}
										else
										{
											printf("sysout");
										}
										return FALSE;
									}
								}
							}
						}
					}
				}
			}
			
			//登陆成功
			printf("Content-type: text/html\r\n");
			printf("Set-Cookie: svsid=%d\r\n" ,nSvsid );
			#ifdef IDC_Version			
				string strIdcUserId = GetIniFileString(strUserId, "IdcUserId", "", "idcuser.ini");	
				printf("Set-Cookie: idcuserid=%s\r\n" ,strIdcUserId.c_str());
			#endif	
			printf("Set-Cookie: userid=%s\r\n" ,strUserId);

			printf("\r\n");

			if(strIsEipVlaue == "true")
			{
				printf("<script type='text/javascript'>");
				printf("location.replace(\"/fcgi-bin/showhtm.cgi?nav.htm\")");
				printf("</script>");		
			}
			else
			{
				printf("true");
			}
			
		}

		FCGI_Finish();
		
		return TRUE;
	}
	else
	{
		return FALSE;
	}
}
Exemplo n.º 3
0
bool TryDecryptValue2(ForestMap & fmap, string section, string type, string & estr, bool isDecrypt)
{

	if(section.empty() || type.empty() )
		return false;

	std::set<string> encoded; 
	if(!prepareToDecryptValue(encoded,fmap,section,type,estr))
		return false;

	ForestMap::const_iterator mit= fmap.find(section);
	if(mit == fmap.end())
	{
		estr+=  "  cannot find section in fmap.  ";
		return false;
	}

	std::set<string>::iterator eit;
	string name,value,putin,strret;
	for(NodeData::const_iterator nit= mit->second.begin(); nit!=mit->second.end(); ++nit)
	{
		name= nit->first;
		value= nit->second;

		char temp1[50]={0};
		char temp2[50]={0};
		sprintf(temp1, "name = %s", name.c_str());
		myPrintLog(temp1);
		
		sprintf(temp2, "value = %s", value.c_str());
		myPrintLog(temp2);

		if(value.empty())
			continue;

		int signal(0);
		eit= encoded.find(name);
		if(eit!=encoded.end())
		{
			char temp3[50]={0};
			sprintf(temp3,"===isDecrypt = %d ===find name = %s", isDecrypt, name.c_str());
			myPrintLog(temp3);

			Des mydes;
			char out[2048]={0};
			if( isDecrypt && mydes.Decrypt( value.c_str(), out) )
			{
				myPrintLog("解密");
				strret=out; 
				char temp[50];
				sprintf(temp, "===解strret = %s", strret.c_str());
				myPrintLog(temp);
				PutReturnForestMap(fmap,section,name,strret);
			}
			if( !isDecrypt && mydes.Encrypt( value.c_str(), out) )
			{
				myPrintLog("加密");
				strret=out; 
				char temp[50];
				sprintf(temp, "===加strret = %s", strret.c_str());
				myPrintLog(temp);
				PutReturnForestMap(fmap,section,name,strret);
			}
		}
	}		

	return true;
}
Exemplo n.º 4
0
//验证用户
bool IsLogin(string strAccount, string strPwd,char* strUserId)
{
	OutputDebugString("IsLogin");
	OutputDebugString("\n");

	WriteLog("IsLogin");
	WriteLog("\n");
	//去空格
	strAccount.erase(strAccount.begin(),strAccount.begin() + strAccount.find_first_not_of('+'));
	strAccount.erase(strAccount.begin(),strAccount.begin() + strAccount.find_first_not_of(' '));
	strAccount.erase(strAccount.begin() + strAccount.find_last_not_of('+') + 1,strAccount.end());
	strAccount.erase(strAccount.begin() + strAccount.find_last_not_of(' ') + 1,strAccount.end());
	
	//转换成小写
	transform(strAccount.begin(),strAccount.end(),strAccount.begin(),(int(*)(int))tolower);	

	if(strAccount == "" && strPwd == "")
		return false;

	std::list<string> keylist;
	std::list<string>::iterator keyitem;
	string strUserName, strUserPwd;
	bool bExist = false;
	//从ini获取用户列表
	#ifdef IDC_Version
		if(GetIniFileSections(keylist, "idcuser.ini"))
	#else
		if(GetIniFileSections(keylist, "user.ini"))
	#endif
	{
		//从ini初始化用户列表
		for(keyitem = keylist.begin(); keyitem != keylist.end(); keyitem ++)	
		{
			//从ini读数据			
			#ifdef IDC_Version
				strUserName = GetIniFileString((*keyitem), "LoginName", "", "idcuser.ini");
			#else
				strUserName = GetIniFileString((*keyitem), "LoginName", "", "user.ini");
			#endif

			
			//转换成小写
			transform(strUserName.begin(),strUserName.end(),strUserName.begin(),(int(*)(int))tolower);
			#ifdef IDC_Version
				strUserPwd = GetIniFileString((*keyitem), "Password", "", "idcuser.ini");	
			#else
				strUserPwd = GetIniFileString((*keyitem), "Password", "", "user.ini");	
			#endif
			
			Des mydes;
			char dechar[1024]={0};
			if(strPwd.size()>0)
			{
				mydes.Decrypt(strUserPwd.c_str(),dechar);
				strUserPwd =  dechar;
			}
			
		//汕头版本 用MD5解密strUserPwd
		#ifdef ShanTou
			if(strIsEipVlaue == "true")
			{

				//OutputDebugString(strUserPwd.c_str());	
				//OutputDebugString("\n");
				
				WriteLog(strUserPwd.c_str());	
				WriteLog("\n");
				
				string strTmpPwd = strUserPwd;
				//strTmpPwd = "test";

				int ilen = strTmpPwd.length();
				unsigned char output[16];
				MD5(output, (const unsigned char *)strTmpPwd.c_str(), ilen);
				
				strUserPwd = "";

				//strPwd = output;			
				//strUserPwd.append((char*)output);
				//OutputDebugString((char*)output);

				char tmpbuf[2];
				for(int i =0; i< 16;i++)
				{
					sprintf(tmpbuf, "%02x", output[i]);										
					//WriteLog((char*)tmpbuf);
					strUserPwd.append((char*)tmpbuf);
				}			
				
				for(int i=0;i<strUserPwd.length();i++)
				{
					strUserPwd[i]=toupper(strUserPwd[i]);
				}
				//OutputDebugString(strUserPwd.c_str());
				//OutputDebugString("\n");
				WriteLog(strUserPwd.c_str());	
				WriteLog("\n");

			}
			else
			{
			
			}				
			if(strUserName == strAccount && strUserPwd == strPwd)
		#else
			if(strUserName == strAccount && strUserPwd == strPwd)
		#endif
			{
				//是否禁用?...
			#ifdef IDC_Version
				int nIsUse = GetIniFileInt((*keyitem), "nIsUse", -1, "idcuser.ini");
			#else
				int nIsUse = GetIniFileInt((*keyitem), "nIsUse", -1, "user.ini");
			#endif
				
				if(nIsUse == -1)
				{
					//禁用
					bExist = false;
				}
				else
				{
					//可用
					bExist = true;
					sprintf(strUserId,"%s",keyitem->c_str());
					//strUserId=keyitem->c_str();
				}

				//bExist = true;
				break;
			}
		}
	}

	return bExist;	
}