diff --git a/Combo/BuildMenuCombo.vcxproj b/Combo/BuildMenuCombo.vcxproj
deleted file mode 100644
index 5032c60..0000000
--- a/Combo/BuildMenuCombo.vcxproj
+++ /dev/null
@@ -1,139 +0,0 @@
-
-
-
-
- Debug
- Win32
-
-
- Release
- Win32
-
-
-
-
-
- MFCProj
- BuildMenuCombo
-
-
-
- Application
- Static
- MultiByte
-
-
- Application
- Static
- MultiByte
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(SolutionDir)Combo\$(Configuration)\
- false
- BuildMenu
-
-
- true
- $(SolutionDir)Combo\$(Configuration)\
- BuildMenu
-
-
-
- MultiThreaded
- OnlyExplicitInline
- true
- true
- MaxSpeed
- true
- Level3
- NDEBUG;WIN32;_WINDOWS;BUILD_UI;%(PreprocessorDefinitions)
- .\Release\BuildMenuCombo.pch
-
-
- true
- NDEBUG;%(PreprocessorDefinitions)
- .\Release\BuildMenuCombo.tlb
- true
- Win32
-
-
- 0x0404
- Release/BuildMenu.res
- NDEBUG;BUILD_UI;%(PreprocessorDefinitions)
-
-
- true
- .\Release\BuildMenuCombo.bsc
-
-
- true
- Windows
-
-
-
-
- MultiThreadedDebug
- Default
- false
- Disabled
- true
- Level3
- true
- EditAndContinue
- _DEBUG;WIN32;_WINDOWS;BUILD_UI;%(PreprocessorDefinitions)
- EnableFastChecks
-
-
- true
- _DEBUG;%(PreprocessorDefinitions)
- .\Debug\BuildMenuCombo.tlb
- true
- Win32
-
-
- 0x0404
- Debug/BuildMenu.res
- _DEBUG;BUILD_UI;%(PreprocessorDefinitions)
-
-
- true
- .\Debug\BuildMenuCombo.bsc
-
-
- true
- true
- Windows
- $(OutDir)$(TargetName)$(TargetExt)
-
-
-
-
-
-
-
-
-
- \Users\Temp\Desktop\PCMancefssh\Resource;%(AdditionalIncludeDirectories)
- \Users\Temp\Desktop\PCMancefssh\Resource;%(AdditionalIncludeDirectories)
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Combo/BuildMenuCombo.vcxproj.filters b/Combo/BuildMenuCombo.vcxproj.filters
deleted file mode 100644
index c6eefc5..0000000
--- a/Combo/BuildMenuCombo.vcxproj.filters
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
- {b3ddee94-8ea7-43a2-a15d-f211fee70b56}
- cpp;c;cxx;rc;def;r;odl;idl;hpj;bat
-
-
- {a2ef7c2f-1738-494d-bf67-e74071d7713b}
- h;hpp;hxx;hm;inl
-
-
- {74b72fcb-4992-4fe2-ad2b-fb1bd1ba5b58}
- ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe
-
-
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
-
-
- Source Files
-
-
-
-
- Header Files
-
-
- Header Files
-
-
-
\ No newline at end of file
diff --git a/Combo/Combo.dsp b/Combo/Combo.dsp
new file mode 100644
index 0000000..3c61800
--- /dev/null
+++ b/Combo/Combo.dsp
@@ -0,0 +1,661 @@
+# Microsoft Developer Studio Project File - Name="Combo" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Application" 0x0101
+
+CFG=Combo - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "Combo.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "Combo.mak" CFG="Combo - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Combo - Win32 Release" (based on "Win32 (x86) Application")
+!MESSAGE "Combo - Win32 Debug" (based on "Win32 (x86) Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""$/Combo", WDAAAAAA"
+# PROP Scc_LocalPath "."
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "Combo - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 1
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /Ob2 /I "..\SimpXmlParser" /D "NDEBUG" /D "_COMBO_" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /FR /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x404 /d "NDEBUG"
+# ADD RSC /l 0x404 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
+# ADD LINK32 wininet.lib wsock32.lib winmm.lib msimg32.lib version.lib /nologo /subsystem:windows /machine:I386 /out:"Release/PCMan Combo/PCMan.exe"
+# Begin Special Build Tool
+OutDir=.\Release
+SOURCE="$(InputPath)"
+PreLink_Cmds=$(OutDir)\BuildMenu.exe $(OutDir)\PCMan Combo\Config ..\Version_PreBuildEvent_Combo.bat 1
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "Combo - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 1
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\SimpXmlParser" /D "_DEBUG" /D "_COMBO_" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "USE_DEBUG_CONSOLE" /FR /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x404 /d "_DEBUG"
+# ADD RSC /l 0x404 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 wininet.lib wsock32.lib winmm.lib msimg32.lib version.lib /nologo /subsystem:windows /debug /machine:I386 /out:"Debug/PCMan Combo/PCMan.exe" /pdbtype:sept
+# Begin Special Build Tool
+OutDir=.\Debug
+SOURCE="$(InputPath)"
+PreLink_Cmds=$(OutDir)\BuildMenu.exe $(OutDir)\PCMan Combo\Config ..\Version_PreBuildEvent_Lite.bat 1
+# End Special Build Tool
+
+!ENDIF
+
+# Begin Target
+
+# Name "Combo - Win32 Release"
+# Name "Combo - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\Lite\AddressDlg.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\AdItem.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\AdList.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\AES.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\AnsiBar.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\AppConfig.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\AutoComplete.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\AutoReplyPage.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\AutoUpdate.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\AutoUpdateDlg.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\BBSHyperLink.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\BrowseDirDlg.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\ChiConv\ChiConv.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\Clipboard.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\ColorConfigDlg.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Resource\Combo.rc
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\ConfigFile.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\Conn.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\ConnectPage.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\CtrlEdit.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\CustomizeDlg.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\CustomTabCtrl.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\CustomToolBar.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\custsite.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\Debug_Kit.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\DlgLayout\DlgLayout.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\DragTreeCtrl.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\FavMenu.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\GeneralPage.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\Hotkey.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\HotkeyEdit.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\HyperLinkPage.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\InputNameDlg.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\InstantTranDlg.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\KeyMap.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\KeyMapDlg.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\ListDlg.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\MainFrm.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\MemIniFile.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\MouseCTL.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\MouseGesture.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\OleImage.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\OtherPage.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\PasswdDlg.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\PCMan.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\ReBarState.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\Rijndael.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\SearchBar.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\SearchPlugin.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\SetBkDlg.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\SimpXmlParser\SimpXmlParser.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\sitelistctrl.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\SitePage.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\SiteSettings.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\StdAfx.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\StringDlg.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\strutils.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\TelnetConn.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\TermView.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\TriggerList.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\Ucs2Conv.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\WebBrowser.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\WebBrowserCtrl.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\WebCfgPage.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\WebConn.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\WebPageDlg.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\WindowState.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\WinUtils.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\Lite\AddressDlg.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\AdItem.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\AdList.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\AnsiBar.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\AppConfig.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\AutoComplete.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\AutoReplyPage.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\AutoUpdate.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\BBSHyperLink.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\BrowseDirDlg.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\ChiConv\ChiConv.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\Clipboard.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\ColorConfigDlg.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\ConfigFile.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\Conn.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\ConnectPage.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\CtrlEdit.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\CustomizeDlg.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\CustomTabCtrl.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\CustomToolBar.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\custsite.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\Debug_Kit.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\DragTreeCtrl.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\FavMenu.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\FileUtil.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\GeneralPage.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\Hotkey.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\HotkeyEdit.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\HyperLinkPage.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\InputNameDlg.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\KeyMap.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\KeyMapDlg.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\ListDlg.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\MainFrm.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\MemIniFile.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\MENUMAPITEM.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\OleImage.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\OtherPage.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\PasswdDlg.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\PCMan.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\ReBarState.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Resource\resource.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\RFC854.H
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\Rijndael.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\SearchBar.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\SearchPlugin.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\SetBkDlg.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\SimpXmlParser\SimpXmlParser.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\sitelistctrl.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\SitePage.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\SiteSettings.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\StdAfx.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\StringDlg.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\strutils.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\TelnetConn.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\TermView.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\Ucs2Conv.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\WebBrowser.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\WebBrowserCtrl.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\webcfgpage.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\WebConn.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\WebPageDlg.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\WindowState.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\Lite\WinUtils.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# Begin Source File
+
+SOURCE=..\Resource\res\ansfile.ico
+# End Source File
+# Begin Source File
+
+SOURCE=..\Resource\res\copy_cur.cur
+# End Source File
+# Begin Source File
+
+SOURCE=..\Resource\res\drag_cur.cur
+# End Source File
+# Begin Source File
+
+SOURCE=..\Resource\res\hand.cur
+# End Source File
+# Begin Source File
+
+SOURCE=..\Resource\res\idr_main.ico
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/Combo/Combo.vcproj b/Combo/Combo.vcproj
new file mode 100644
index 0000000..1862ac9
--- /dev/null
+++ b/Combo/Combo.vcproj
@@ -0,0 +1,2037 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Combo/Combo.vcxproj b/Combo/Combo.vcxproj
deleted file mode 100644
index 5130bd4..0000000
--- a/Combo/Combo.vcxproj
+++ /dev/null
@@ -1,245 +0,0 @@
-
-
-
-
- Debug
- Win32
-
-
- Release
- Win32
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {A56537F7-964A-457E-B2B2-A5C89ED935F9}
- Win32Proj
- Combo
-
-
-
- Application
- true
- MultiByte
- Static
-
-
- Application
- false
- true
- MultiByte
- Static
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
- ..\Lite\;$(IncludePath)
- PCMan
- $(SolutionDir)Combo\$(Configuration)\PCMan Combo
-
-
- false
- $(SolutionDir)Combo\$(Configuration)\PCMan Combo
- PCMan
- ..\Lite\;$(IncludePath)
-
-
-
- NotUsing
- Level3
- Disabled
- WIN32;_DEBUG;_WINDOWS;_COMBO_;%(PreprocessorDefinitions)
- ..\SimpXmlParser;%(AdditionalIncludeDirectories)
-
-
- Windows
- true
- wininet.lib;wsock32.lib;winmm.lib;version.lib;libssh2d.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)
-
-
-
-
- 0x0404
-
-
-
-
- Level3
- NotUsing
- MaxSpeed
- true
- true
- WIN32;NDEBUG;_WINDOWS;_COMBO_;%(PreprocessorDefinitions)
- ..\SimpXmlParser;%(AdditionalIncludeDirectories)
-
-
- Windows
- true
- true
- true
- wininet.lib;wsock32.lib;winmm.lib;version.lib;libssh2.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Combo/Combo.vcxproj.filters b/Combo/Combo.vcxproj.filters
deleted file mode 100644
index 58e6d22..0000000
--- a/Combo/Combo.vcxproj.filters
+++ /dev/null
@@ -1,458 +0,0 @@
-
-
-
-
- {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
- cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
-
-
- {93995380-89BD-4b04-88EB-625FBE52EBFB}
- h;hpp;hxx;hm;inl;inc;xsd
-
-
- {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
- rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
-
-
- {bdd28138-9aa9-4f6c-9d67-fde740689f85}
-
-
- {b30e489a-5aad-409c-8b89-61937cbe1a3e}
-
-
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
- Source Files\NewFilter1
-
-
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
- Header Files\NewFilter1
-
-
-
-
- Resource Files
-
-
-
\ No newline at end of file
diff --git a/Combo/Debug/PCMan Combo/Config/BBSFavorites b/Combo/Debug/PCMan Combo/Config/BBSFavorites
index 312fb5d..d85b1b6 100644
--- a/Combo/Debug/PCMan Combo/Config/BBSFavorites
+++ b/Combo/Debug/PCMan Combo/Config/BBSFavorites
@@ -6,5 +6,4 @@ s
s¥x¤j§å½ð½ð¹ê·~§{ ptt.cc
sKKCity bbs.kkcity.com.tw
sptt.cc ptt.cc
-sPTT SSH telnets://ptt.cc:22
diff --git a/Combo/Debug/PCMan Combo/Config/UI b/Combo/Debug/PCMan Combo/Config/UI
index 30febd1..f896d4b 100644
Binary files a/Combo/Debug/PCMan Combo/Config/UI and b/Combo/Debug/PCMan Combo/Config/UI differ
diff --git a/Combo/Debug/PCMan Combo/PCMan.exe.manifest b/Combo/Debug/PCMan Combo/PCMan.exe.manifest
new file mode 100644
index 0000000..f2e29cf
--- /dev/null
+++ b/Combo/Debug/PCMan Combo/PCMan.exe.manifest
@@ -0,0 +1,10 @@
+
+
+
+PCMan
+
+
+
+
+
+
diff --git a/Combo/WebBrowser.cpp b/Combo/WebBrowser.cpp
index 35e7a1c..be15da9 100644
--- a/Combo/WebBrowser.cpp
+++ b/Combo/WebBrowser.cpp
@@ -20,7 +20,7 @@ static char THIS_FILE[] = __FILE__;
#include "../Lite/mainfrm.h"
#include "WebConn.h"
-//static const IID IID_ITravelLogStg = { 0x7EBFDD80, 0xAD18, 0x11d3, {0xA4, 0xC5, 0x00, 0xC0, 0x4F, 0x72, 0xD6, 0xB8}};
+static const IID IID_ITravelLogStg = { 0x7EBFDD80, 0xAD18, 0x11d3, {0xA4, 0xC5, 0x00, 0xC0, 0x4F, 0x72, 0xD6, 0xB8}};
/////////////////////////////////////////////////////////////////////////////
// CWebBrowser
diff --git a/Lite/MainFrm.cpp b/Lite/MainFrm.cpp
index d0b1951..75b880d 100644
--- a/Lite/MainFrm.cpp
+++ b/Lite/MainFrm.cpp
@@ -752,10 +752,7 @@ void CMainFrame::OnRClickTab(NMHDR *pNMHDR, LRESULT *pResult)
pos+=2;
}
else
- {
- InsertMenu(popup, pos + 1, MF_STRING | MF_BYPOSITION, ID_CONNECT_CLOSE_ALL_OTHERS, close_all_other_pages);
- InsertMenu(popup, pos + 2, MF_STRING | MF_BYPOSITION, ID_CONNECT_CLOSE, close_this_page);
- }
+ InsertMenu(popup, pos + 1, MF_STRING | MF_BYPOSITION, ID_CONNECT_CLOSE, close_this_page);
::TrackPopupMenu(popup, TPM_RIGHTBUTTON | TPM_LEFTALIGN, pt.x, pt.y, 0, m_hWnd, NULL);
DeleteMenu(popup, pos, MF_BYPOSITION);
@@ -840,24 +837,18 @@ void CMainFrame::OnNewConnectionAds(LPCTSTR cmdline)
AddToTypedHistory(cmdline);
- short portDefault = 23;
- bool ssh = false;
-
if (0 == strnicmp(cmdline, "telnet:", 7))
{
- portDefault = 23;
- ssh = false;
+ cmdline += 7;
+ while (*cmdline == '/')
+ cmdline++;
}
else if (0 == strnicmp(cmdline, "bbs:", 4))
{
- portDefault = 23;
- ssh = false;
+ cmdline += 4;
+ while (*cmdline == '/')
+ cmdline++;
}
- else if (0 == strnicmp(cmdline, "telnets:", 8))
- {
- portDefault = 22;
- ssh = true;
- }
else if (IsFileExist(cmdline))
{
int l = strlen(cmdline);
@@ -889,23 +880,22 @@ void CMainFrame::OnNewConnectionAds(LPCTSTR cmdline)
if (param[param.GetLength()-1] == '/')
param = param.Left(param.GetLength() - 1);
- int rfindPos = param.ReverseFind(':');
- int findPos = param.Find(':');
+ int pos = param.Find(':');
CString address;
unsigned short port;
- if (rfindPos == findPos)
+ if (pos == -1)
{
address = param;
port = 23;
}
else
{
- address = param.Left(rfindPos);
- CString port_str = param.Mid(rfindPos + 1);
+ address = param.Left(pos);
+ CString port_str = param.Mid(pos + 1);
port = (unsigned short)atoi(port_str);
- //if (port == 23)
- // param = address;
+ if (port == 23)
+ param = address;
}
view.Connect(address, param, port);
if(!setCharset)
@@ -998,8 +988,7 @@ void CMainFrame::UpdateAddressBar()
CString address = view.con->address;
if (view.telnet && !view.telnet->is_ansi_editor)
{
- unsigned short portDefault = view.telnet->IsSSH() ? 22 : 23;
- if (view.telnet->port != portDefault)
+ if (view.telnet->port != 23)
{
char port_str[16];
sprintf(port_str, ":%d", view.telnet->port);
@@ -2404,7 +2393,7 @@ void CMainFrame::OnConnectCloseAllOthers()
int all = tab.GetItemCount();
for(int i=0;iname;
name += '\t';
-//#ifdef _COMBO_
-// name += telnet->address.Mid(9);
-//#else
-// name += telnet->address;
-//#endif
- name += telnet->address;
- unsigned short portDefault = telnet->IsSSH() ? 22 : 23;
- if (telnet->port != portDefault && telnet->port > 0)
+#ifdef _COMBO_
+ name += telnet->address.Mid(9);
+#else
+ name += telnet->address;
+#endif
+ if (telnet->port != 23 && telnet->port > 0)
{
char port_str[16];
sprintf(port_str, ":%d", telnet->port);
@@ -2966,8 +2953,7 @@ void CMainFrame::OnFavorite(UINT id)
{
typedef DWORD (WINAPI DOFD)(HWND, LPCTSTR);
DOFD* pfunc = NULL;
- HMODULE hmod = LoadLibrary("IEFRAME.dll");
- if (!hmod) hmod = LoadLibrary("Shdocvw.dll");
+ HMODULE hmod = LoadLibrary("Shdocvw.dll");
pfunc = (DOFD*)GetProcAddress(hmod, "DoOrganizeFavDlg");
if (!hmod || !pfunc)
return;
@@ -4051,7 +4037,7 @@ void CMainFrame::OnBBSFont()
}
}
-LRESULT CMainFrame::OnDownloadPage( WPARAM, LPARAM )
+void CMainFrame::OnDownloadPage()
{
const char url[] = "http://of.openfoundry.org/projects/744/download";
#ifdef _COMBO_
@@ -4059,7 +4045,6 @@ LRESULT CMainFrame::OnDownloadPage( WPARAM, LPARAM )
#else
ShellExecute(m_hWnd, "open", url , NULL, NULL, SW_SHOW);
#endif
- return TRUE;
}
diff --git a/Lite/MainFrm.h b/Lite/MainFrm.h
index 6cbe3aa..702e7d9 100644
--- a/Lite/MainFrm.h
+++ b/Lite/MainFrm.h
@@ -274,7 +274,7 @@ class CMainFrame : public CFrameWnd
//}}AFX_MSG
void OnFavorite(UINT id);
- LRESULT OnDownloadPage(WPARAM, LPARAM);
+ void OnDownloadPage();
#if _MFC_VER >= 0x0700
afx_msg void OnActivateApp(BOOL bActive, DWORD hTask);
diff --git a/Lite/TelnetConn.cpp b/Lite/TelnetConn.cpp
index 462949a..6e6f590 100644
--- a/Lite/TelnetConn.cpp
+++ b/Lite/TelnetConn.cpp
@@ -108,8 +108,6 @@ CTelnetConn::CTelnetConn()
site_settings.paste_autowrap = 0;
key_map = NULL;
-
- m_isSSH = false;
}
CTelnetConn::~CTelnetConn()
@@ -864,27 +862,20 @@ void CTelnetConn::OnConnect(int nErrorCode)
item.iImage = 0;
view->parent->tab.SetItem(idx, &item);
CString ads_port = address;
-
- unsigned short defaultPort = this->IsSSH() ? 22 : 23;
-
- if (port != defaultPort) //22: ssh
+ if (port != 23)
{
char port_str[16];
sprintf(port_str, ":%d", port);
ads_port += port_str;
}
-
CString str("s");
str += name;
str += '\t';
-
-//#ifdef _COMBO_
-// str += LPCTSTR(ads_port) + (this->IsSSH() ? 10 : 9); // strlen("telnet://") = 9; strlen("telnets://") = 10;
-//#else
-// str += ads_port;
-//#endif
-
- str += ads_port; //EDIT. make a difference between telnet and telnets when add history.
+#ifdef _COMBO_
+ str += LPCTSTR(ads_port) + 9; // strlen("telnet://") = 9;
+#else
+ str += ads_port;
+#endif
str += '\t';
if (!cfg_path.IsEmpty())
str += cfg_path.Left(cfg_path.GetLength() - name.GetLength());
@@ -902,7 +893,7 @@ int CTelnetConn::Send(const void *lpBuf, int nBufLen)
if (!is_ansi_editor)
{
- int r = this->SendImpl(lpBuf, nBufLen);
+ int r = ::send(telnet, (char*)lpBuf, nBufLen, 0);
return r;
}
@@ -2171,27 +2162,3 @@ void CTelnetConn::CopyArticleComplete(bool cancel)
get_article_with_ansi = false;
downloaded_article.Empty();
}
-
-
-int CTelnetConn::RecvImpl( void *buf, int len )
-{
- return ::recv(telnet, static_cast(buf), len, 0);
-}
-
-
-int CTelnetConn::SendImpl( const void *lpBuf, int nBufLen )
-{
- return ::send(telnet, static_cast(lpBuf), nBufLen, 0);
-}
-
-void CTelnetConn::ConnectImpl( sockaddr *addr, int len )
-{
- ::connect(telnet, addr, len);
-}
-
-int CTelnetConn::CloseImpl()
-{
- int r = ::closesocket(telnet);
- telnet = 0;
- return r;
-}
diff --git a/Lite/TelnetConn.h b/Lite/TelnetConn.h
index e6599ec..fe65b25 100644
--- a/Lite/TelnetConn.h
+++ b/Lite/TelnetConn.h
@@ -185,7 +185,6 @@ BYTE get_article_in_editor : 1;
public:
virtual void OnReceive(int nErrorCode);
virtual void OnConnect(int nErrorCode);
-
//}}AFX_VIRTUAL
// Generated message map functions
@@ -195,43 +194,34 @@ BYTE get_article_in_editor : 1;
// Implementation
protected:
- bool m_isSSH;
-
-public:
- virtual void ConnectImpl(sockaddr *addr, int len);
- virtual int RecvImpl(void* buf, int len);
- virtual int SendImpl(const void* lpBuf, int nBufLen);
- virtual int CloseImpl();
-
- bool IsSSH() const
- {
- return m_isSSH;
- }
};
int CTelnetConn::Close()
{
- return this->CloseImpl();
+ int r =::closesocket(telnet);
+ telnet = 0;
+ return r;
}
void CTelnetConn::Connect(sockaddr *addr, int len)
{
- this->ConnectImpl(addr, len);
+ ::connect(telnet, addr, len);
}
int CTelnetConn::Recv(void *buf, int len)
{
- return this->RecvImpl(buf, len);
+ return ::recv(telnet, (char*)buf, len, 0);
}
+
#ifndef SD_SEND
#define SD_SEND 1
#endif
int CTelnetConn::Shutdown()
{
- return ::shutdown(telnet, SD_SEND);
+ return ::shutdown(telnet, SD_SEND);
}
inline void CTelnetConn::SetBgColor(BYTE &attr, BYTE bk)
diff --git a/Lite/TelnetSSHConnSurrogate.cpp b/Lite/TelnetSSHConnSurrogate.cpp
deleted file mode 100644
index 5e0e3c4..0000000
--- a/Lite/TelnetSSHConnSurrogate.cpp
+++ /dev/null
@@ -1,85 +0,0 @@
-#include "TelnetSSHConnSurrogate.h"
-#include
-
-#include "TelnetSSHState.h"
-
-TelnetSSHConnSurrogate::TelnetSSHConnSurrogate(void) :
- m_addrlen(0)
-{
- m_isSSH = true;
-}
-
-
-TelnetSSHConnSurrogate::~TelnetSSHConnSurrogate(void)
-{
-}
-
-
-void TelnetSSHConnSurrogate::OnReceive( int nErrorCode )
-{
- CTelnetConn::OnReceive(nErrorCode);
-
- m_self->OnReceive(nErrorCode);
-}
-
-
-void TelnetSSHConnSurrogate::OnConnect( int nErrorCode )
-{
- CTelnetConn::OnConnect(nErrorCode);
- m_self->OnConnect(nErrorCode);
-}
-
-
-void TelnetSSHConnSurrogate::ConnectImpl( sockaddr *addr, int len )
-{
- std::unique_ptr self(
- new TelnetSSHLoginInfoLoadState(
- this->telnet,
- std::bind(&TelnetSSHConnSurrogate::NextState, this),
- std::bind(&TelnetSSHConnSurrogate::ReceiveData, this),
- std::bind(&TelnetSSHConnSurrogate::SetDisconnect, this)
- ));
- //std::unique_ptr self(
- // new TelnetSSHConnectState(
- // this->telnet, "bbs", "",
- // std::bind(&TelnetSSHConnSurrogate::NextState, this),
- // std::bind(&TelnetSSHConnSurrogate::SetDisconnect, this)
- // ));
- m_self = std::move(self);
-
- m_addr = *addr;
- m_addrlen = len;
- m_self->Connect(&m_addr, m_addrlen);
-}
-
-
-int TelnetSSHConnSurrogate::RecvImpl( void *buf, int len )
-{
- return m_self->Recv(buf, len);
-}
-
-
-int TelnetSSHConnSurrogate::SendImpl( const void *buf, int len )
-{
- return m_self->Send(buf, len);
-}
-
-
-int TelnetSSHConnSurrogate::CloseImpl()
-{
- int result = CTelnetConn::CloseImpl();
- m_self->Close();
- return result;
-}
-
-
-void TelnetSSHConnSurrogate::NextState()
-{
- m_self = m_self->Next();
-}
-
-void TelnetSSHConnSurrogate::SetDisconnect()
-{
- this->is_connected = false;
- this->is_disconnected = true;
-}
diff --git a/Lite/TelnetSSHConnSurrogate.h b/Lite/TelnetSSHConnSurrogate.h
deleted file mode 100644
index 0b47059..0000000
--- a/Lite/TelnetSSHConnSurrogate.h
+++ /dev/null
@@ -1,40 +0,0 @@
-#ifndef _PCMAN_COMBO_TELNETSSHCONNSURROGATE_H_
-#define _PCMAN_COMBO_TELNETSSHCONNSURROGATE_H_
-
-#include
-#include "TelnetConn.h"
-#include
-
-class TelnetSSHState;
-class TelnetSSHConnSurrogate :
- public CTelnetConn
-{
-public:
- TelnetSSHConnSurrogate(void);
- virtual ~TelnetSSHConnSurrogate(void);
-
- virtual void OnReceive(int nErrorCode) override;
-
- virtual void OnConnect(int nErrorCode) override;
-
- virtual void ConnectImpl(sockaddr *addr, int len) override;
-
- virtual int RecvImpl(void* buf, int len) override;
-
- virtual int SendImpl(const void* lpBuf, int nBufLen) override;
-
- virtual int CloseImpl() override;
-
- void NextState();
-
- void SetDisconnect();
-
-private:
- std::unique_ptr m_self;
-
- sockaddr m_addr;
- int m_addrlen;
-};
-
-
-#endif
diff --git a/Lite/TelnetSSHState.cpp b/Lite/TelnetSSHState.cpp
deleted file mode 100644
index 8de2f6f..0000000
--- a/Lite/TelnetSSHState.cpp
+++ /dev/null
@@ -1,450 +0,0 @@
-#include "TelnetSSHConnSurrogate.h"
-
-#include
-
-#include
-#include
-#include
-#include
-
-#include "TelnetSSHState.h"
-
-#undef min
-
-TelnetSSHState::TelnetSSHState( void )
-{
-
-}
-
-
-TelnetSSHState::~TelnetSSHState( void )
-{
-
-}
-
-
-namespace
-{
-
-
-const std::string gLoginUsernameMessage = "SSH LoginUsername: ";
-const std::string gLoginPasswordMessage = "SSH LoginPassword: ";
-
-
-void SetCourseCommand(unsigned column, unsigned row, std::string &buffer)
-{
- //[{ROW};{COLUMN}H
- std::stringstream conv;
- conv << '\x1b' << '[' << column << ';' << row << 'H';
- buffer += conv.str();
-}
-
-
-} //namespace
-
-
-TelnetSSHLoginInfoLoadState::TelnetSSHLoginInfoLoadState(
- SOCKET socket,
- const fnTypeNextState &fnNextState,
- const fnTypeNotifyReceive &fnNotifyReceive,
- const fnTypeSetDisconnect &fnSetDisconnect) :
-
- m_target(&m_username)
-{
- this->SetSocket(socket);
- this->SetFnNextState(fnNextState);
- this->SetFnNotifyReceive(fnNotifyReceive);
- this->SetFnSetDisconnect(fnSetDisconnect);
-
- SetCourseCommand(1, 1, m_textShowOnSceen);
- m_textShowOnSceen += gLoginUsernameMessage;
- assert(m_target);
-}
-
-
-TelnetSSHLoginInfoLoadState::TelnetSSHLoginInfoLoadState(
- const TelnetSSHConnectState &conn )
-{
- this->SetSocket(conn.GetSocket());
- this->SetFnNextState(conn.GetFnNextState());
- this->SetFnNotifyReceive(conn.GetFnNotifyReceive());
- this->SetFnSetDisconnect(conn.GetFnSetDisconnect());
-}
-
-
-TelnetSSHLoginInfoLoadState::~TelnetSSHLoginInfoLoadState( void )
-{
-}
-
-
-void TelnetSSHLoginInfoLoadState::OnReceive( int /*nErrorCode*/ )
-{
-}
-
-
-void TelnetSSHLoginInfoLoadState::OnConnect( int /*nErrorCode*/ )
-{
-}
-
-
-void TelnetSSHLoginInfoLoadState::Connect( sockaddr *addr, int len )
-{
- m_addr = addr;
- m_addrlen = len;
-
- this->NotifyReceive();
-}
-
-
-int TelnetSSHLoginInfoLoadState::Recv( void *buf, int len )
-{
- assert(buf);
-
- if (nullptr == buf || len <= 0)
- {
- return 0;
- }
-
- std::copy(m_textShowOnSceen.begin(), m_textShowOnSceen.end(),
- stdext::checked_array_iterator(static_cast(buf), len));
-
- return std::min(m_textShowOnSceen.size(), static_cast(len));
-}
-
-
-int TelnetSSHLoginInfoLoadState::Send( const void *buf, int len )
-{
- assert(buf);
-
- if (nullptr == buf || len <= 0)
- {
- return 0;
- }
-
- const char *text = static_cast(buf);
- m_textShowOnSceen.clear();
-
- switch(*text)
- {
- case 13:
- {
- if (m_username.empty())
- {
- SetCourseCommand(1, 1, m_textShowOnSceen);
- m_textShowOnSceen += gLoginUsernameMessage;
- m_target = &m_username;
- }
- else if (&m_username == m_target)
- {
- SetCourseCommand(2, 1, m_textShowOnSceen);
- m_textShowOnSceen += gLoginPasswordMessage;
- m_target = &m_password;
- }
- else //!m_username.empty() && !m_password.empty()
- {
- m_fnNextState();
- return len;
- }
- }
- break;
-
- case 8:
- case 127:
- {
- if (!m_target->empty())
- {
- const char *backspace = "\b \b";
- m_textShowOnSceen = backspace;
- m_target->pop_back();
- }
- }
- break;
-
- default:
- if (m_target == &m_password)
- {
- m_textShowOnSceen.assign("*", len);
- }
- else
- {
- m_textShowOnSceen.assign(text, len);
- }
- m_target->append(text, len);
- }
-
- this->NotifyReceive();
-
- return len;
-}
-
-
-void TelnetSSHLoginInfoLoadState::Close()
-{
-}
-
-
-std::unique_ptr TelnetSSHLoginInfoLoadState::Next()
-{
- std::unique_ptr state(
- new TelnetSSHConnectState(*this));
- state->Connect(m_addr, m_addrlen);
-
- return std::move(state);
-}
-
-
-void TelnetSSHLoginInfoLoadState::NotifyReceive()
-{
- m_fnNotifyReceive();
-}
-
-
-struct TelnetSSHConnectState::TelnetSSHConnectStateImpl
-{
- void Init();
- void Clear();
-
- bool initialSuccess;
- bool connected;
- LIBSSH2_SESSION *session;
- LIBSSH2_CHANNEL *channal;
-};
-
-
-void TelnetSSHConnectState::TelnetSSHConnectStateImpl::Init()
-{
- this->Clear();
-
- if (0 == libssh2_init(0) )
- {
- this->initialSuccess = true;
- }
-}
-
-
-void TelnetSSHConnectState::TelnetSSHConnectStateImpl::Clear()
-{
- this->initialSuccess = false;
- this->connected = false;
- this->session = nullptr;
- this->channal = nullptr;
-}
-
-
-TelnetSSHConnectState::TelnetSSHConnectState(
- SOCKET socket,
- const std::string &username,
- const std::string &password,
- const fnTypeNextState &fnNextState,
- const fnTypeSetDisconnect &fnSetDisconnect ) :
- m_impl(new TelnetSSHConnectState::TelnetSSHConnectStateImpl)
-{
- assert(m_impl);
-
- this->SetSocket(socket);
- this->SetUsername(username);
- this->SetPassword(password);
- this->SetFnNextState(fnNextState);
- this->SetFnSetDisconnect(fnSetDisconnect);
-
- m_impl->Init();
-}
-
-
-TelnetSSHConnectState::TelnetSSHConnectState(
- TelnetSSHLoginInfoLoadState &loginState ) :
- m_impl(new TelnetSSHConnectState::TelnetSSHConnectStateImpl)
-{
- assert(m_impl);
-
- this->SetSocket(loginState.GetSocket());
- this->SetUsername(loginState.GetUsername());
- this->SetPassword(loginState.GetPassword());
- this->SetFnNextState(loginState.GetFnNextState());
- this->SetFnNotifyReceive(loginState.GetFnNotifyReceive());
- this->SetFnSetDisconnect(loginState.GetFnSetDisconnect());
-
- m_impl->Init();
-}
-
-
-TelnetSSHConnectState::~TelnetSSHConnectState( void )
-{
- libssh2_exit();
-}
-
-
-void TelnetSSHConnectState::OnReceive( int nErrorCode )
-{
-}
-
-
-void TelnetSSHConnectState::OnConnect( int nErrorCode )
-{
- if (0 != nErrorCode)
- {
- return;
- }
-
- LIBSSH2_SESSION *session = libssh2_session_init();
-
- if(int err = libssh2_session_handshake(session, this->GetSocket()))
- {
- return;
- }
-
- //what fingerprint can do?
- const char *fingerprint = libssh2_hostkey_hash(session, LIBSSH2_HOSTKEY_HASH_SHA1);
-
- if (libssh2_userauth_password(
- session,
- this->GetUsername().c_str(),
- this->GetPassword().c_str()))
- {
- this->GetFnSetDisconnect()();
- return;
- }
-
- LIBSSH2_CHANNEL *channel = libssh2_channel_open_session(session);
- if (nullptr == channel)
- {
- return;
- }
-
- if (libssh2_channel_request_pty(channel, "vt100"))
- {
- return;
- }
-
- if (libssh2_channel_shell(channel))
- {
- return;
- }
-
- libssh2_session_set_blocking(session, 0);
- m_impl->session = session;
- m_impl->channal = channel;
-
- m_impl->connected = true;
-}
-
-
-
-void TelnetSSHConnectState::Connect( sockaddr *addr, int len )
-{
- ::connect(this->GetSocket(), addr, len);
-}
-
-
-int TelnetSSHConnectState::Send( const void* buf, int len )
-{
- if (!m_impl->initialSuccess)
- {
- return 0;
- }
-
- if (!m_impl->connected)
- {
- return 0;
- }
-
- int returnLen = libssh2_channel_write(m_impl->channal, static_cast(buf), len);
-
- if (LIBSSH2_ERROR_EAGAIN == returnLen)
- {
- //TODO.
- }
-
- if (LIBSSH2_ERROR_ALLOC == returnLen)
- {
- //TODO.
- }
-
- if (LIBSSH2_ERROR_SOCKET_SEND == returnLen)
- {
- //TODO.
- }
-
- if (LIBSSH2_ERROR_CHANNEL_CLOSED == returnLen)
- {
- //TODO.
- }
-
- if (LIBSSH2_ERROR_CHANNEL_EOF_SENT == returnLen)
- {
- //TODO.
- }
-
- return returnLen;
-}
-
-
-int TelnetSSHConnectState::Recv( void* buf, int len )
-{
- if (!m_impl->initialSuccess)
- {
- return 0;
- }
-
- if (!m_impl->connected)
- {
- return 0;
- }
-
- if (nullptr == m_impl->channal)
- {
- return 0;
- }
-
- int returnLen = libssh2_channel_read(m_impl->channal, static_cast(buf), len);
-
- if (LIBSSH2_ERROR_EAGAIN == returnLen)
- {
- return 0;
- }
-
- if (LIBSSH2_ERROR_SOCKET_SEND == returnLen)
- {
- //TODO.
- }
-
- if (LIBSSH2_ERROR_CHANNEL_CLOSED == returnLen)
- {
- //TODO.
- }
-
-
- if (0 >= returnLen)
- {
- if (libssh2_channel_eof(m_impl->channal))
- {
- if (m_impl->channal)
- {
- libssh2_channel_free(m_impl->channal);
- m_impl->channal = nullptr;
- }
-
- if (m_impl->session)
- {
- libssh2_session_disconnect(m_impl->session, "disconnect");
- libssh2_session_free(m_impl->session);
- }
- }
- }
-
- return returnLen;
-}
-
-
-void TelnetSSHConnectState::Close()
-{
-}
-
-
-std::unique_ptr TelnetSSHConnectState::Next()
-{
- std::unique_ptr loginState(
- new TelnetSSHLoginInfoLoadState(*this));
-
- return std::move(loginState);
-}
diff --git a/Lite/TelnetSSHState.h b/Lite/TelnetSSHState.h
deleted file mode 100644
index b5babdc..0000000
--- a/Lite/TelnetSSHState.h
+++ /dev/null
@@ -1,191 +0,0 @@
-#ifndef _PCMANNOVUS_COMBO_TELNETSSHCONN_H_
-#define _PCMANNOVUS_COMBO_TELNETSSHCONN_H_
-
-
-#include
-#include
-#include
-
-#include
-
-class TelnetSSHState
-{
-public:
- TelnetSSHState(void);
-
- virtual ~TelnetSSHState(void);
-
- virtual void OnReceive(int nErrorCode) = 0;
-
- virtual void OnConnect(int nErrorCode) = 0;
-
- virtual void Connect(sockaddr *addr, int len) = 0;
-
- virtual int Recv(void *buf, int len) = 0;
-
- virtual int Send(const void *buf, int len) = 0;
-
- virtual void Close() = 0;
-
- virtual std::unique_ptr Next() = 0;
-};
-
-
-class TelnetSSHConnectState;
-class TelnetSSHDefaultState :
- public TelnetSSHState
-{
-public:
- typedef std::function fnTypeNextState;
- typedef std::function fnTypeNotifyReceive;
- typedef std::function fnTypeSetDisconnect;
-
- void SetSocket(SOCKET socket)
- {
- m_socket = socket;
- }
-
- SOCKET GetSocket() const
- {
- return m_socket;
- }
-
- template
- void SetUsername(T &&username)
- {
- m_username = std::forward(username);
- }
-
- const std::string &GetUsername() const
- {
- return m_username;
- }
-
- template
- void SetPassword(T &&password)
- {
- m_password = std::forward(password);
- }
-
- const std::string &GetPassword() const
- {
- return m_password;
- }
-
- template
- void SetFnNextState(T &&fnNextState)
- {
- m_fnNextState = std::forward(fnNextState);
- }
-
- const fnTypeNextState &GetFnNextState() const
- {
- return m_fnNextState;
- }
-
- template
- void SetFnNotifyReceive(T &&fnNotifyReceive)
- {
- m_fnNotifyReceive = std::forward(fnNotifyReceive);
- }
-
- const fnTypeNotifyReceive &GetFnNotifyReceive() const
- {
- return m_fnNotifyReceive;
- }
-
- template
- void SetFnSetDisconnect(T &&fnSetDisconnect)
- {
- m_fnSetDisconnect = std::forward(fnSetDisconnect);
- }
-
- const fnTypeSetDisconnect &GetFnSetDisconnect() const
- {
- return m_fnSetDisconnect;
- }
-
-protected:
- SOCKET m_socket;
- std::string m_username;
- std::string m_password;
- fnTypeNextState m_fnNextState;
- fnTypeNotifyReceive m_fnNotifyReceive;
- fnTypeSetDisconnect m_fnSetDisconnect;
-};
-
-
-class TelnetSSHLoginInfoLoadState :
- public TelnetSSHDefaultState
-{
-public:
- TelnetSSHLoginInfoLoadState(
- SOCKET socket,
- const fnTypeNextState &fnNextState,
- const fnTypeNotifyReceive &fnNotifyReceive,
- const fnTypeSetDisconnect &fnSetDisconnect);
- TelnetSSHLoginInfoLoadState(const TelnetSSHConnectState &conn);
- virtual ~TelnetSSHLoginInfoLoadState(void);
-
- virtual void OnReceive(int nErrorCode) override;
-
- virtual void OnConnect(int nErrorCode) override;
-
- virtual void Connect(sockaddr *addr, int len) override;
-
- virtual int Recv(void *buf, int len) override;
-
- virtual int Send(const void *buf, int len) override;
-
- virtual void Close() override;
-
- virtual std::unique_ptr Next() override;
-
- void NotifyReceive();
-
-private:
- sockaddr *m_addr;
- int m_addrlen;
- std::string m_textShowOnSceen;
-
- std::string *m_target;
-};
-
-
-class TelnetSSHConnectState :
- public TelnetSSHDefaultState
-{
-public:
- TelnetSSHConnectState(
- SOCKET socket,
- const std::string &username,
- const std::string &password,
- const fnTypeNextState &fnNextState,
- const fnTypeSetDisconnect &fnSetDisconnect);
-
- TelnetSSHConnectState(
- TelnetSSHLoginInfoLoadState &loginState);
-
- virtual ~TelnetSSHConnectState(void);
-
- virtual void OnReceive(int nErrorCode) override;
-
- virtual void OnConnect(int nErrorCode) override;
-
- virtual void Connect(sockaddr *addr, int len);
-
- virtual int Recv(void *buf, int len) override;
-
- virtual int Send(const void *buf, int len) override;
-
- virtual void Close() override;
-
- virtual std::unique_ptr Next() override;
-
-private:
- struct TelnetSSHConnectStateImpl;
- std::unique_ptr m_impl;
-};
-
-
-#endif
diff --git a/Lite/TermView.cpp b/Lite/TermView.cpp
index 049d63f..aa0e7b5 100644
--- a/Lite/TermView.cpp
+++ b/Lite/TermView.cpp
@@ -26,7 +26,6 @@
#include "MouseCTL.h"
#include "OleImage.h"
-#include "TelnetSSHConnSurrogate.h"
#if defined _COMBO_
#include "../Combo/WebPageDlg.h"
@@ -1329,18 +1328,16 @@ LRESULT CTermView::_OnImeCompositionA(WPARAM wparam, LPARAM lparam)
return 0;
}
-BOOL CTermView::Connect( CString address, CString name, unsigned short port, LPCTSTR cfg_path /*= NULL*/ )
+BOOL CTermView::Connect(CString address, CString name, unsigned short port, LPCTSTR cfg_path)
{
if (name.IsEmpty())
return FALSE;
+#if defined _COMBO_
+ if (port > 0 && address.Find("telnet://") == -1)
+ address = "telnet://" + address;
+#endif
-//#if defined _COMBO_
-// if (port > 0 && address.Find("telnet://") == -1)
-// address = "telnet://" + address;
-//#endif
-
- bool ssh = address.Find("telnets:") != -1;
- CConn* ncon = NewConn(address, name, port, ssh, cfg_path); //²£¥Í¤F·sªº³s½uµe±¡A§¹¦¨©Ò¦³³]©w
+ CConn* ncon = NewConn(address, name, port, cfg_path); //²£¥Í¤F·sªº³s½uµe±¡A§¹¦¨©Ò¦³³]©w
if (!ncon)
return FALSE;
@@ -1480,7 +1477,7 @@ void CTermView::OnAnsiCopy()
void CTermView::OnAnsiEditor()
{
- Connect(LoadString(IDS_NOT_SAVED), LoadString(IDS_ANSI_EDIT), false, 0);
+ Connect(LoadString(IDS_NOT_SAVED), LoadString(IDS_ANSI_EDIT), 0);
}
@@ -1922,11 +1919,10 @@ void CTermView::OnBackspaceNoDBCS()
}
}
-inline CConn* CTermView::NewConn( CString address, CString name, unsigned short port, bool ssh, LPCTSTR cfg_path )
+CConn* CTermView::NewConn(CString address, CString name, unsigned short port, LPCTSTR cfg_path)
{
CConn* newcon = NULL;
- //newcon = ssh ? new TelnetSSHConn("bbs", "") : new CTelnetConn;
- newcon = ssh ? new TelnetSSHConnSurrogate : new CTelnetConn;
+ newcon = new CTelnetConn;
newcon->address = address;
newcon->name = name;
@@ -2030,7 +2026,7 @@ void CTermView::ConnectSocket(CTelnetConn *new_telnet)
new_telnet->Create();
#if defined _COMBO_
- const LPCTSTR paddress = LPCTSTR(new_telnet->address) + (new_telnet->IsSSH() ? 10 : 9);
+ const LPCTSTR paddress = LPCTSTR(new_telnet->address) + 9;
#else
CString &paddress = new_telnet->address;
#endif
@@ -2963,34 +2959,23 @@ void CTermView::ConnectStr(CString name, CString dir)
ConnectWeb(address, TRUE);
return;
}
+ if (0 == strncmp("telnet:", address, 7))
+ {
+ LPCTSTR p = address;
+ p += 7;
+ while (*p && *p == '/')
+ ++p;
+ address = p;
+ }
#endif
- bool ssh = false;
- short portDefault = 23;
- if (0 == strncmp("telnet:", address, 7))
- {
- ssh = false;
- portDefault = 23;
- }
- else if (0 == strncmp("telnets:", address, 8))
- {
- ssh = true;
- portDefault = 22;
- }
- else
- {
- address = "telnet://" + address;
- }
-
- int rfindPos = address.ReverseFind(':');
- int findPos = address.Find(':');
-
- if (rfindPos == findPos)
- port = portDefault;
+ i = address.ReverseFind(':');
+ if (i == -1)
+ port = 23;
else
{
- port = (unsigned short)atoi(LPCTSTR(address.Mid(rfindPos + 1)));
- address = address.Left(rfindPos);
+ port = (unsigned short)atoi(LPCTSTR(address.Mid(i + 1)));
+ address = address.Left(i);
}
SetFocus();
diff --git a/Lite/TermView.h b/Lite/TermView.h
index 4a1b0d0..b0856e3 100644
--- a/Lite/TermView.h
+++ b/Lite/TermView.h
@@ -170,7 +170,7 @@ class CTermView : public CWnd
BOOL OpenAnsFile(LPCTSTR filepath);
UINT mouse_sel_timer;
static DWORD DNSLookupThread(LPVOID param);
- inline CConn* NewConn(CString address, CString name, unsigned short port, bool ssh, LPCTSTR cfg_path);
+ inline CConn* NewConn(CString address, CString name, unsigned short port, LPCTSTR cfg_path);
void OnInitialUpdate();
inline void FillBk(CDC& dc);
void UpdateBkgnd();
@@ -182,7 +182,7 @@ class CTermView : public CWnd
void OnAnsiCopy();
void ReConnect(CTelnetConn* retelnet);
LRESULT CTermView::OnDNSLookupEnd(WPARAM found, LPARAM lparam);
- BOOL Connect(CString address, CString name, unsigned short port, LPCTSTR cfg_path = NULL);
+ BOOL Connect(CString address, CString name, unsigned short port, LPCTSTR cfg = NULL);
//{{AFX_MSG(CTermView)
afx_msg LRESULT OnFind(WPARAM w, LPARAM l);
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
diff --git a/PCMan.sln b/PCMan.sln
index 792816c..7bb9712 100644
--- a/PCMan.sln
+++ b/PCMan.sln
@@ -1,32 +1,49 @@
-
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BuildMenuCombo", "Combo\BuildMenuCombo.vcxproj", "{1A3D8A75-CE90-EABF-DD93-0286A2E11C95}"
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual Studio 2008
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Base64Test", "Base64Test\Base64Test.vcproj", "{6EAC5BDC-4743-4907-ABCF-23C33E6B8876}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Combo", "Combo\Combo.vcxproj", "{A56537F7-964A-457E-B2B2-A5C89ED935F9}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BuildMenuCombo", "Combo\BuildMenuCombo.vcproj", "{3DCAF1A3-EC8C-4E69-BD1E-458AFBA2BE8E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BuildMenuLite", "Lite\BuildMenuLite.vcproj", "{0C6D5061-75A3-4206-B47D-479B41C62D16}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Combo", "Combo\Combo.vcproj", "{5AD86F36-2953-41FE-BD95-0E8DD0A4AF1D}"
+ ProjectSection(ProjectDependencies) = postProject
+ {3DCAF1A3-EC8C-4E69-BD1E-458AFBA2BE8E} = {3DCAF1A3-EC8C-4E69-BD1E-458AFBA2BE8E}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Lite", "Lite\Lite.vcproj", "{AC6C940E-CBB8-4FD8-AEF9-756EA50AF5C6}"
ProjectSection(ProjectDependencies) = postProject
- {1A3D8A75-CE90-EABF-DD93-0286A2E11C95} = {1A3D8A75-CE90-EABF-DD93-0286A2E11C95}
+ {0C6D5061-75A3-4206-B47D-479B41C62D16} = {0C6D5061-75A3-4206-B47D-479B41C62D16}
EndProjectSection
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UAOTabGen", "UAOTabGen\UAOTabGen.vcproj", "{3B454357-27C4-43D4-BCD2-545AA1108707}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
- Template|Win32 = Template|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {1A3D8A75-CE90-EABF-DD93-0286A2E11C95}.Debug|Win32.ActiveCfg = Debug|Win32
- {1A3D8A75-CE90-EABF-DD93-0286A2E11C95}.Debug|Win32.Build.0 = Debug|Win32
- {1A3D8A75-CE90-EABF-DD93-0286A2E11C95}.Release|Win32.ActiveCfg = Release|Win32
- {1A3D8A75-CE90-EABF-DD93-0286A2E11C95}.Release|Win32.Build.0 = Release|Win32
- {1A3D8A75-CE90-EABF-DD93-0286A2E11C95}.Template|Win32.ActiveCfg = Release|Win32
- {1A3D8A75-CE90-EABF-DD93-0286A2E11C95}.Template|Win32.Build.0 = Release|Win32
- {A56537F7-964A-457E-B2B2-A5C89ED935F9}.Debug|Win32.ActiveCfg = Debug|Win32
- {A56537F7-964A-457E-B2B2-A5C89ED935F9}.Debug|Win32.Build.0 = Debug|Win32
- {A56537F7-964A-457E-B2B2-A5C89ED935F9}.Release|Win32.ActiveCfg = Release|Win32
- {A56537F7-964A-457E-B2B2-A5C89ED935F9}.Release|Win32.Build.0 = Release|Win32
- {A56537F7-964A-457E-B2B2-A5C89ED935F9}.Template|Win32.ActiveCfg = Release|Win32
- {A56537F7-964A-457E-B2B2-A5C89ED935F9}.Template|Win32.Build.0 = Release|Win32
+ {6EAC5BDC-4743-4907-ABCF-23C33E6B8876}.Debug|Win32.ActiveCfg = Debug|Win32
+ {6EAC5BDC-4743-4907-ABCF-23C33E6B8876}.Release|Win32.ActiveCfg = Release|Win32
+ {3DCAF1A3-EC8C-4E69-BD1E-458AFBA2BE8E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {3DCAF1A3-EC8C-4E69-BD1E-458AFBA2BE8E}.Debug|Win32.Build.0 = Debug|Win32
+ {3DCAF1A3-EC8C-4E69-BD1E-458AFBA2BE8E}.Release|Win32.ActiveCfg = Release|Win32
+ {3DCAF1A3-EC8C-4E69-BD1E-458AFBA2BE8E}.Release|Win32.Build.0 = Release|Win32
+ {0C6D5061-75A3-4206-B47D-479B41C62D16}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0C6D5061-75A3-4206-B47D-479B41C62D16}.Debug|Win32.Build.0 = Debug|Win32
+ {0C6D5061-75A3-4206-B47D-479B41C62D16}.Release|Win32.ActiveCfg = Release|Win32
+ {0C6D5061-75A3-4206-B47D-479B41C62D16}.Release|Win32.Build.0 = Release|Win32
+ {5AD86F36-2953-41FE-BD95-0E8DD0A4AF1D}.Debug|Win32.ActiveCfg = Debug|Win32
+ {5AD86F36-2953-41FE-BD95-0E8DD0A4AF1D}.Debug|Win32.Build.0 = Debug|Win32
+ {5AD86F36-2953-41FE-BD95-0E8DD0A4AF1D}.Release|Win32.ActiveCfg = Release|Win32
+ {5AD86F36-2953-41FE-BD95-0E8DD0A4AF1D}.Release|Win32.Build.0 = Release|Win32
+ {AC6C940E-CBB8-4FD8-AEF9-756EA50AF5C6}.Debug|Win32.ActiveCfg = Debug|Win32
+ {AC6C940E-CBB8-4FD8-AEF9-756EA50AF5C6}.Debug|Win32.Build.0 = Debug|Win32
+ {AC6C940E-CBB8-4FD8-AEF9-756EA50AF5C6}.Release|Win32.ActiveCfg = Release|Win32
+ {AC6C940E-CBB8-4FD8-AEF9-756EA50AF5C6}.Release|Win32.Build.0 = Release|Win32
+ {3B454357-27C4-43D4-BCD2-545AA1108707}.Debug|Win32.ActiveCfg = Debug|Win32
+ {3B454357-27C4-43D4-BCD2-545AA1108707}.Release|Win32.ActiveCfg = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/PCMan.sln.old b/PCMan.sln.old
deleted file mode 100644
index 7bb9712..0000000
--- a/PCMan.sln.old
+++ /dev/null
@@ -1,51 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 10.00
-# Visual Studio 2008
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Base64Test", "Base64Test\Base64Test.vcproj", "{6EAC5BDC-4743-4907-ABCF-23C33E6B8876}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BuildMenuCombo", "Combo\BuildMenuCombo.vcproj", "{3DCAF1A3-EC8C-4E69-BD1E-458AFBA2BE8E}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BuildMenuLite", "Lite\BuildMenuLite.vcproj", "{0C6D5061-75A3-4206-B47D-479B41C62D16}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Combo", "Combo\Combo.vcproj", "{5AD86F36-2953-41FE-BD95-0E8DD0A4AF1D}"
- ProjectSection(ProjectDependencies) = postProject
- {3DCAF1A3-EC8C-4E69-BD1E-458AFBA2BE8E} = {3DCAF1A3-EC8C-4E69-BD1E-458AFBA2BE8E}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Lite", "Lite\Lite.vcproj", "{AC6C940E-CBB8-4FD8-AEF9-756EA50AF5C6}"
- ProjectSection(ProjectDependencies) = postProject
- {0C6D5061-75A3-4206-B47D-479B41C62D16} = {0C6D5061-75A3-4206-B47D-479B41C62D16}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UAOTabGen", "UAOTabGen\UAOTabGen.vcproj", "{3B454357-27C4-43D4-BCD2-545AA1108707}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {6EAC5BDC-4743-4907-ABCF-23C33E6B8876}.Debug|Win32.ActiveCfg = Debug|Win32
- {6EAC5BDC-4743-4907-ABCF-23C33E6B8876}.Release|Win32.ActiveCfg = Release|Win32
- {3DCAF1A3-EC8C-4E69-BD1E-458AFBA2BE8E}.Debug|Win32.ActiveCfg = Debug|Win32
- {3DCAF1A3-EC8C-4E69-BD1E-458AFBA2BE8E}.Debug|Win32.Build.0 = Debug|Win32
- {3DCAF1A3-EC8C-4E69-BD1E-458AFBA2BE8E}.Release|Win32.ActiveCfg = Release|Win32
- {3DCAF1A3-EC8C-4E69-BD1E-458AFBA2BE8E}.Release|Win32.Build.0 = Release|Win32
- {0C6D5061-75A3-4206-B47D-479B41C62D16}.Debug|Win32.ActiveCfg = Debug|Win32
- {0C6D5061-75A3-4206-B47D-479B41C62D16}.Debug|Win32.Build.0 = Debug|Win32
- {0C6D5061-75A3-4206-B47D-479B41C62D16}.Release|Win32.ActiveCfg = Release|Win32
- {0C6D5061-75A3-4206-B47D-479B41C62D16}.Release|Win32.Build.0 = Release|Win32
- {5AD86F36-2953-41FE-BD95-0E8DD0A4AF1D}.Debug|Win32.ActiveCfg = Debug|Win32
- {5AD86F36-2953-41FE-BD95-0E8DD0A4AF1D}.Debug|Win32.Build.0 = Debug|Win32
- {5AD86F36-2953-41FE-BD95-0E8DD0A4AF1D}.Release|Win32.ActiveCfg = Release|Win32
- {5AD86F36-2953-41FE-BD95-0E8DD0A4AF1D}.Release|Win32.Build.0 = Release|Win32
- {AC6C940E-CBB8-4FD8-AEF9-756EA50AF5C6}.Debug|Win32.ActiveCfg = Debug|Win32
- {AC6C940E-CBB8-4FD8-AEF9-756EA50AF5C6}.Debug|Win32.Build.0 = Debug|Win32
- {AC6C940E-CBB8-4FD8-AEF9-756EA50AF5C6}.Release|Win32.ActiveCfg = Release|Win32
- {AC6C940E-CBB8-4FD8-AEF9-756EA50AF5C6}.Release|Win32.Build.0 = Release|Win32
- {3B454357-27C4-43D4-BCD2-545AA1108707}.Debug|Win32.ActiveCfg = Debug|Win32
- {3B454357-27C4-43D4-BCD2-545AA1108707}.Release|Win32.ActiveCfg = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/PCMan.suo b/PCMan.suo
deleted file mode 100644
index 726b024..0000000
Binary files a/PCMan.suo and /dev/null differ