亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? chwinfo.cpp

?? Windows上的MUD客戶端程序
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/*----------------------------------------------------------------------------
                        _                              _ _       
        /\             | |                            | (_)      
       /  \   _ __   __| |_ __ ___  _ __ ___   ___  __| |_  __ _ 
      / /\ \ | '_ \ / _` | '__/ _ \| '_ ` _ \ / _ \/ _` | |/ _` |
     / ____ \| | | | (_| | | | (_) | | | | | |  __/ (_| | | (_| |
    /_/    \_\_| |_|\__,_|_|  \___/|_| |_| |_|\___|\__,_|_|\__,_|

    The contents of this file are subject to the Andromedia Public
	License Version 1.0 (the "License"); you may not use this file
	except in compliance with the License. You may obtain a copy of
	the License at http://www.andromedia.com/APL/

    Software distributed under the License is distributed on an
	"AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
	implied. See the License for the specific language governing
	rights and limitations under the License.

    The Original Code is Pueblo client code, released November 4, 1998.

    The Initial Developer of the Original Code is Andromedia Incorporated.
	Portions created by Andromedia are Copyright (C) 1998 Andromedia
	Incorporated.  All Rights Reserved.

	Andromedia Incorporated                         415.365.6700
	818 Mission Street - 2nd Floor                  415.365.6701 fax
	San Francisco, CA 94103

    Contributor(s):
	--------------------------------------------------------------------------
	   Chaco team:  Dan Greening, Glenn Crocker, Jim Doubek,
	                Coyote Lussier, Pritham Shetty.

					Wrote and designed original codebase.

------------------------------------------------------------------------------

	Contains the implementation of the ChWorldInfo class.

----------------------------------------------------------------------------*/

// $Header: /home/cvs/chaco/modules/client/msw/ChWorld/ChWInfo.cpp,v 2.25 1996/09/30 19:50:07 pritham Exp $


#include "headers.h"

#include <fstream.h>
#include <ChCore.h>

#include "ChSCWiz.h"
#include "ChWInfo.h"

#if defined( CH_UNIX )

	#include <stdlib.h>

#elif defined( CH_MSW )

	#include <fstream.h>
	#include <ddeml.h>

#if !defined(CH_PUEBLO_PLUGIN)
#include "resource.h"
#else
#include "vwrres.h"
#endif

#endif	// defined( CH_MSW )



/*----------------------------------------------------------------------------
	ChWorldInfo constants
----------------------------------------------------------------------------*/

#define NAME_KEY			"Name"
#define HOST_KEY			"Host"
#define ADDR_KEY			"Addr"
#define PORT_KEY			"Port"
#define TYPE_KEY			"Type"
#define LOGIN_KEY			"Login"
#define LOGIN_KEY_CONNECT		"connect"
#define DESC_KEY			"Desc"
#define USERNAME_KEY		"User"
#define PASSWORD_KEY		"Password"
#define HOMEPAGE_KEY		"HomePage"

#define ADDR_LEN			11				// Length of nn.nn.nn.nn

#define PROGRAM_PATH_LEN	256
#define SHORTCUT_ICON_IDX	1


#define COMMENT_PREFIX		'#'
#define TAG_DELIMITER		'='

#define TAG_SERVER			"server"
#define TAG_PORT			"port"
#define TAG_USERNAME		"username"
#define TAG_PASSWORD		"password"
#define TAG_WORLDNAME		"worldname"
#define TAG_WORLDSERVER		"worldserver"
#define TAG_WORLDPORT		"worldport"
#define TAG_WORLDPORT_DEF		4201
#define TAG_WORLDTYPE		"worldtype"
#define TAG_LOGINTYPE		"logintype"
#define TAG_LOGINTYPE_CONNECT	"connect"
#define TAG_WORLDUSERNAME	"worldusername"
#define TAG_WORLDPASSWORD	"worldpassword"

#if defined( CH_PUEBLO_PLUGIN )
#define TAG_WORLD_LIST		"worldlist"
#define TAG_WORLD_DISCONNECT "worldquit"
#endif




/*----------------------------------------------------------------------------
	ChWorldInfo class
----------------------------------------------------------------------------*/

ChWorldInfo::ChWorldInfo( const string& strCommand ) :
			m_boolValid( false ),
			m_type( otherType ),
			m_loginType( variableLogin ),
			m_sPort( 0 )
{
	string		strTemp = strCommand;

	while (GetKey( strTemp ))
	{
	}
											/* If we still haven't read in an
												explicit login type, then
												try to figure out the login
												type from the server type */
	if (variableLogin == m_loginType)
	{
		m_loginType = m_type.GetLoginType();
	}
											/* If we still don't know, then
												try username/password */
	if (variableLogin == m_loginType)
	{
		m_loginType = unamePwLogin;
	}
}


ChWorldInfo::ChWorldInfo(  const string& strName, const string& strDesc,
							const string& strHost, chint16 sPort,
							const ChWorldType& type, ChLoginType login,
							const string& strUsername,
							const string& strPassword,
							const string& strHomePage ) :
			m_strName( strName ),
			m_strDesc( strDesc ),
			m_type( type ),
			m_loginType( login ),
			m_strHost( strHost ),
			m_sPort( sPort ),
			m_strUsername( strUsername ),
			m_strPassword( strPassword ),
			m_strHomePage( strHomePage )
{
	Validate();
}


ChWorldInfo::ChWorldInfo(  const string& strName, const string& strDesc,
						const string& strHost, const string& strAddr,
						chint16 sPort, const ChWorldType& type,
						ChLoginType login, const string& strUsername,
						const string& strPassword,
						const string& strHomePage ) :
			m_strName( strName ),
			m_strDesc( strDesc ),
			m_type( type ),
			m_loginType( login ),
			m_strHost( strHost ),
			m_strAddr( strAddr ),
			m_sPort( sPort ),
			m_strUsername( strUsername ),
			m_strPassword( strPassword ),
			m_strHomePage( strPassword )
{
	Validate();
}

ChWorldInfo::ChWorldInfo( ifstream& ifile ) :

			m_boolValid( false ),
			m_type( otherType ),
			m_loginType( variableLogin ),
			m_sPort( 0 )
{

   	// Read the file and set all the variables
	if (ifile.is_open())
	{

		if ( FindTag( ifile, TAG_WORLDSERVER, m_strHost ) && !m_strHost.IsEmpty() )
		{
			if (FindTag( ifile, TAG_WORLDPORT, m_sPort ) && (0 == m_sPort))
			{
				m_sPort = TAG_WORLDPORT_DEF;
			}

			FindTag( ifile, TAG_WORLDNAME, m_strName );
			FindTag( ifile, TAG_WORLDUSERNAME, m_strUsername );
			FindTag( ifile, TAG_WORLDPASSWORD, m_strPassword );

#if defined( CH_PUEBLO_PLUGIN )
			FindTag( ifile, TAG_WORLD_LIST, m_strHomePage );
			FindTag( ifile, TAG_WORLD_DISCONNECT, m_strOnDisconnect );
#endif

			string	strType;
			if (FindTag( ifile, TAG_WORLDTYPE, strType ))
			{
				m_type.Set( strType );
			}
			else
			{
				m_type.Set( otherType );
			}

			string		strLoginType;
			m_loginType = variableLogin;
			if (FindTag( ifile, TAG_LOGINTYPE, strLoginType ))
			{
				if (strLoginType.CompareNoCase( TAG_LOGINTYPE_CONNECT ))
				{
					m_loginType = m_type.GetLoginType();
				}
				else
				{
					m_loginType = connectLogin;
				}
			}

			if (variableLogin == m_loginType)
			{							// Default to un/pw login

				m_loginType = unamePwLogin;
			}
		}
	}

	if (variableLogin == m_loginType)
	{
		m_loginType = m_type.GetLoginType();
	}
											/* If we still don't know, then
												try username/password */
	if (variableLogin == m_loginType)
	{
		m_loginType = unamePwLogin;
	}

	Validate();
}



void ChWorldInfo::Stringize( string& strWorld )
{
	string		strTemp;

	if (GetName().GetLength())
	{
		strTemp = GetName();
		Escape( strTemp );

		strWorld = "/" NAME_KEY "={";
		strWorld += strTemp;
		strWorld += "}";
	}

	if (GetHost().GetLength())
	{
		strTemp = GetHost();
		Escape( strTemp );

		strWorld += "/" HOST_KEY "={";
		strWorld += strTemp;
		strWorld += "}";
	}

	if (m_strAddr.GetLength())
	{
		strTemp = m_strAddr;
		Escape( strTemp );

		strWorld += "/" ADDR_KEY "={";
		strWorld += strTemp;
		strWorld += "}";
	}

	if (GetPort() > 0)
	{
		char	buffer[10];

		sprintf( buffer, "%d", (int)GetPort() );
		strTemp = buffer;
		Escape( strTemp );

		strWorld += "/" PORT_KEY "={";
		strWorld += strTemp;
		strWorld += "}";
	}

	if (GetType() != otherType)
	{
		strTemp = GetType().GetName();
		Escape( strTemp );

		strWorld += "/" TYPE_KEY "={";
		strWorld += strTemp;
		strWorld += "}";
	}

	if (GetLoginType() == connectLogin)
	{
		strTemp = LOGIN_KEY_CONNECT;
		Escape( strTemp );

		strWorld += "/" LOGIN_KEY "={";
		strWorld += strTemp;
		strWorld += "}";
	}

	if (GetUsername().GetLength())
	{
		strTemp = GetUsername();
		Escape( strTemp );

		strWorld += "/" USERNAME_KEY "={";
		strWorld += strTemp;
		strWorld += "}";
	}

	if (GetPassword().GetLength())
	{
		string		strPassword = GetPassword();

		ChUtil::EncryptString( strPassword, true, '/' );
		strTemp = strPassword;
		Escape( strTemp );

		strWorld += "/" PASSWORD_KEY "={";
		strWorld += strTemp;
		strWorld += "}";
	}

	if (GetHomePage().GetLength())
	{
		strTemp = GetHomePage();
		Escape( strTemp );

		strWorld += "/" HOMEPAGE_KEY "={";
		strWorld += strTemp;
		strWorld += "}";
	}

	if (GetDesc().GetLength())
	{
		strTemp = GetDesc();
		Escape( strTemp );

		strWorld += "/" DESC_KEY "={";
		strWorld += strTemp;
		strWorld += "}";
	}
}


void ChWorldInfo::CreateShortcut( ChCore* pCore  )
{
	#if defined( CH_MSW )
	{
		CreateWindowsShortcut( pCore );
	}
	#else
	{
		TRACE( "Don't know how to create shortcut for this platform!\n" );
	}
	#endif	// defined( CH_MSW )
}


void ChWorldInfo::Set( const string& strDesc, const string& strHost,
						chint16 sPort, const ChWorldType& type,
						ChLoginType login, const string& strUsername,
						const string& strPassword, const string& strHomePage )
{
	ASSERT( sPort != 0 );

	m_strDesc = strDesc;
	m_strHost = strHost;
	m_sPort = sPort;
	m_type = type;
	m_loginType = login;
	m_strUsername = strUsername;
	m_strPassword = strPassword;
	m_strHomePage = strHomePage;
}


void ChWorldInfo::Set( const string& strDesc, const string& strHost,
						const string& strAddr, chint16 sPort,
						const ChWorldType& type, ChLoginType login,
						const string& strUsername, const string& strPassword,
						const string& strHomePage )
{
	Set( strDesc, strHost, sPort, type, login, strUsername, strPassword,
			strHomePage );

	if (strAddr.GetLength() == ADDR_LEN)
	{
		m_strAddr = strAddr;
	}
}


/*----------------------------------------------------------------------------
	ChWorldInfo protected methods
----------------------------------------------------------------------------*/

bool ChWorldInfo::GetKey( string& strCommand )
{
	if (0 == strCommand.GetLength())
	{
		return false;
	}

	const char*	pstrCommand = strCommand;
	string		strKey;
	string		strValue;

	while (*pstrCommand && (*pstrCommand != '/'))
	{
		pstrCommand++;
	}

	if (*pstrCommand == '/')
	{
		pstrCommand++;
											/* We found a slash, now find the
												equal sign */

		while (*pstrCommand && (*pstrCommand != '='))
		{
			strKey += *pstrCommand;
			pstrCommand++;
		}

		if (*pstrCommand == '=')
		{
			bool	boolQuote;
			bool	boolFoundEnd = false;

			pstrCommand++;
											/* We found the open brace, now
												find the end of the value */

			if (boolQuote = (*pstrCommand == '{'))
			{
											// Value is bracketted by quotes
				pstrCommand++;
			}

			while (*pstrCommand && !boolFoundEnd)
			{
				if (boolQuote && (*pstrCommand == '}'))
				{
					pstrCommand++;
					boolFoundEnd = true;
				}
				else if (!boolQuote && (*pstrCommand == '/'))
				{
					boolFoundEnd = true;
				}
				else
				{
					if (boolQuote && (*pstrCommand == '\\'))
					{
											// Unescape next character
						pstrCommand++;
					}

					if (*pstrCommand)
					{
						strValue += *pstrCommand;
						pstrCommand++;
					}
				}
			}

			if (strValue.GetLength())
			{								// Process the tag and value
				ProcessKey( strKey, strValue );
			}
		}
	}
											/* Strip what we just processed
												off of this string */
	if (*pstrCommand)
	{
		strCommand = strCommand.Mid( pstrCommand -
										(const char*)strCommand );
	}
	else
	{
		strCommand = "";
	}

	return true;
}

void ChWorldInfo::ProcessKey( const string& strKey, const string& strValue )
{
	if (0 == strKey.CompareNoCase( HOST_KEY ))
	{										// Host key found

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91国偷自产一区二区三区成为亚洲经典| 91精品国产麻豆| 欧日韩精品视频| 91精品国产丝袜白色高跟鞋| 久久久一区二区| 天天色天天操综合| 成人短视频下载| 日韩精品一区二区三区在线观看| 亚洲黄网站在线观看| 狠狠色狠狠色合久久伊人| 日本韩国欧美一区二区三区| 国产校园另类小说区| 秋霞影院一区二区| 在线一区二区三区四区| 中国av一区二区三区| 国内欧美视频一区二区| 欧美另类videos死尸| 亚洲精品视频在线观看网站| 国产69精品一区二区亚洲孕妇| 在线不卡的av| 亚洲综合激情网| 97久久精品人人做人人爽50路| 久久久精品黄色| 麻豆中文一区二区| 欧美另类z0zxhd电影| 亚洲电影在线免费观看| 色网站国产精品| 国产精品国产馆在线真实露脸| 国产精品资源网| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 亚洲同性gay激情无套| 国产九色sp调教91| 精品久久久久久久久久久院品网| 亚洲成av人综合在线观看| 91极品视觉盛宴| 亚洲综合色噜噜狠狠| 一本色道久久综合亚洲精品按摩| 日韩美女视频一区二区 | 午夜久久久久久电影| 色国产精品一区在线观看| 亚洲色图20p| 在线欧美一区二区| 亚洲精品国久久99热| 欧美性做爰猛烈叫床潮| 亚洲图片欧美视频| 9191成人精品久久| 免费看黄色91| 久久久午夜精品理论片中文字幕| 韩国女主播一区| 亚洲国产精品成人综合| 99精品久久99久久久久| 亚洲精品免费视频| 欧美日韩精品系列| 久久99精品一区二区三区 | 欧美国产乱子伦| 成人av电影在线| 一区二区日韩av| 欧美喷潮久久久xxxxx| 极品少妇xxxx精品少妇| 国产人成亚洲第一网站在线播放| 99久久综合99久久综合网站| 亚洲精品第1页| 91精品国产综合久久久蜜臀粉嫩| 蜜臀av性久久久久蜜臀aⅴ | 亚洲视频精选在线| 欧美日韩在线播放一区| 久久不见久久见免费视频7| 国产午夜精品美女毛片视频| 色综合久久久久网| 久久精品国产一区二区| 国产精品伦一区二区三级视频| 色视频成人在线观看免| 久久精品国产亚洲a| 中文字幕一区二区三| 欧美日本国产一区| 国产·精品毛片| 香蕉影视欧美成人| 国产午夜精品美女毛片视频| 欧美色综合天天久久综合精品| 国模套图日韩精品一区二区 | 成人99免费视频| 香蕉加勒比综合久久| 欧美极品xxx| 欧美精品久久99| 成人av电影在线网| 麻豆精品精品国产自在97香蕉| 亚洲国产精品二十页| 91精品国产综合久久精品性色| 成人av网站在线观看免费| 日本不卡的三区四区五区| **欧美大码日韩| 久久久一区二区| 日韩三级视频中文字幕| 欧美三级午夜理伦三级中视频| 国产一二精品视频| 日本v片在线高清不卡在线观看| 日韩理论片网站| 久久综合久久99| 欧美一卡二卡在线观看| 色999日韩国产欧美一区二区| 国产一区二区中文字幕| 日本一区中文字幕| 亚洲综合视频网| 综合久久国产九一剧情麻豆| 久久久久亚洲综合| 精品成人私密视频| 日韩欧美国产一区二区在线播放| 日本道免费精品一区二区三区| 国产成人aaaa| 国产一区二区三区蝌蚪| 老司机免费视频一区二区三区| 亚洲成人www| 亚洲成在人线在线播放| 一区二区三区在线视频播放| 亚洲欧洲精品一区二区精品久久久| 久久久国产精品午夜一区ai换脸| 日韩欧美中文字幕精品| 宅男噜噜噜66一区二区66| 欧美三区在线观看| 欧美三级电影网站| 欧美午夜精品理论片a级按摩| 日本高清无吗v一区| 91传媒视频在线播放| 欧美优质美女网站| 欧美伊人久久久久久久久影院 | 国产一区二区伦理片| 蜜桃精品视频在线| 精品一区二区在线播放| 精品一区二区国语对白| 国产一区二区福利视频| 国产91丝袜在线观看| 国产成人小视频| 99精品久久99久久久久| 欧洲亚洲精品在线| 91精品在线免费观看| 亚洲精品在线一区二区| 国产女人水真多18毛片18精品视频 | 久久精品亚洲国产奇米99| 久久久一区二区三区捆绑**| 日本一区二区视频在线| 国产精品短视频| 亚洲国产中文字幕在线视频综合 | 久久精品日产第一区二区三区高清版 | 成人免费观看男女羞羞视频| 成人av网址在线| 欧美日韩免费在线视频| 日韩美女在线视频| 国产三区在线成人av| 日韩伦理电影网| 日本美女视频一区二区| 国产乱色国产精品免费视频| 91丨porny丨中文| 欧美午夜片在线看| 久久婷婷久久一区二区三区| 国产精品国产三级国产aⅴ入口 | 久久激情五月婷婷| 成人午夜激情视频| 欧美日韩在线播放| 日本一区二区成人在线| 亚洲一区二区免费视频| 激情综合亚洲精品| 在线免费观看一区| 精品粉嫩超白一线天av| 亚洲摸摸操操av| 狠狠色丁香久久婷婷综合_中 | 久久电影网电视剧免费观看| 成人涩涩免费视频| 69av一区二区三区| 成人免费在线观看入口| 免费成人深夜小野草| 99re视频精品| 欧美不卡视频一区| 亚洲国产一区二区视频| 懂色av中文字幕一区二区三区| 欧美喷潮久久久xxxxx| 亚洲特黄一级片| 国模娜娜一区二区三区| 欧美久久婷婷综合色| 亚洲视频在线观看三级| 国产麻豆精品95视频| 91.com在线观看| 亚洲男人天堂一区| 国产精品18久久久久久久网站| 在线不卡免费av| 亚洲一区视频在线观看视频| 懂色中文一区二区在线播放| 久久综合网色—综合色88| 日韩av中文字幕一区二区| 91激情在线视频| 国产精品你懂的| 国产传媒日韩欧美成人| 欧美xxxx老人做受| 日韩av午夜在线观看| 欧美中文字幕不卡| 亚洲欧美福利一区二区| 成人一级黄色片| 亚洲国产精品成人综合| 国产aⅴ综合色| 久久你懂得1024| 国产在线视视频有精品|