Showing preview only (2,378K chars total). Download the full file or copy to clipboard to get everything.
Repository: stweil/OSXvnc
Branch: main
Commit: 4c8eb1d11967
Files: 280
Total size: 2.2 MB
Directory structure:
gitextract_7q6g2gu1/
├── .github/
│ └── workflows/
│ └── dco.yml
├── .gitignore
├── .gitmodules
├── .travis.yml
├── Base.lproj/
│ └── MainMenu.xib
├── Bundles/
│ ├── Echoware/
│ │ ├── ACConnection.cpp
│ │ ├── ACConnection.h
│ │ ├── AES.cpp
│ │ ├── AES.h
│ │ ├── APISocket/
│ │ │ ├── APISocket.h
│ │ │ ├── ClientSocket.cpp
│ │ │ ├── ServerSocket.cpp
│ │ │ └── Socket.cpp
│ │ ├── CritSection.cpp
│ │ ├── CritSection.h
│ │ ├── DataChannel.cpp
│ │ ├── DataChannel.h
│ │ ├── DataChannelSocket.cpp
│ │ ├── DataChannelSocket.h
│ │ ├── DataChannel_timer.cpp
│ │ ├── DataChannels.cpp
│ │ ├── DataChannels.h
│ │ ├── DirService.cpp
│ │ ├── DirService.h
│ │ ├── DllProxyInfo.cpp
│ │ ├── DllProxyInfo.h
│ │ ├── EchoController.h
│ │ ├── EchoController.m
│ │ ├── EchoSrvDataChannel.cpp
│ │ ├── EchoSrvDataChannel.h
│ │ ├── EchoToOSX.cpp
│ │ ├── EchoToOSX.h
│ │ ├── Echoware.cpp
│ │ ├── Echoware.dsp
│ │ ├── Echoware.dsw
│ │ ├── Echoware.h
│ │ ├── Echoware.sln
│ │ ├── Echoware.suo
│ │ ├── Echoware.vcproj
│ │ ├── Echoware.xcodeproj/
│ │ │ ├── admin.mode1
│ │ │ ├── admin.pbxuser
│ │ │ └── project.pbxproj
│ │ ├── Echoware_Prefix.pch
│ │ ├── English.lproj/
│ │ │ ├── EchoServers.nib/
│ │ │ │ ├── classes.nib
│ │ │ │ ├── info.nib
│ │ │ │ └── keyedobjects.nib
│ │ │ └── InfoPlist.strings
│ │ ├── Globals.cpp
│ │ ├── Globals.h
│ │ ├── Info.plist
│ │ ├── InterfaceDllProxyInfo.h
│ │ ├── LICENSE.txt
│ │ ├── LocalDataChannel.cpp
│ │ ├── LocalDataChannel.h
│ │ ├── LocalListener.cpp
│ │ ├── LocalListener.h
│ │ ├── LocalProxyConnection.cpp
│ │ ├── LocalProxyConnection.h
│ │ ├── Logger.cpp
│ │ ├── Logger.h
│ │ ├── MyDllProxyInfo.cpp
│ │ ├── MyDllProxyInfo.h
│ │ ├── NetPacket.h
│ │ ├── OpenSSL/
│ │ │ ├── LibeaySt.dsp
│ │ │ ├── LibeaySt.vcproj
│ │ │ ├── aes.h
│ │ │ ├── aes_core.c
│ │ │ ├── aes_locl.h
│ │ │ ├── e_os2.h
│ │ │ └── opensslconf.h
│ │ ├── ProxiesManager.cpp
│ │ ├── ProxiesManager.h
│ │ ├── ProxyConnect/
│ │ │ ├── ProxyConnect.cpp
│ │ │ ├── ProxyConnect.dsp
│ │ │ ├── ProxyConnect.h
│ │ │ ├── ProxyConnect.vcproj
│ │ │ ├── global.h
│ │ │ ├── md4.cpp
│ │ │ ├── md4.h
│ │ │ ├── md5.cpp
│ │ │ ├── md5.h
│ │ │ ├── ntlm.h
│ │ │ ├── ntlmv2.cpp
│ │ │ ├── stdafx.cpp
│ │ │ └── stdafx.h
│ │ ├── ProxyConnection.cpp
│ │ ├── ProxyConnection.h
│ │ ├── README.txt
│ │ ├── RFBBundleWrapper.cpp
│ │ ├── RFBBundleWrapper.h
│ │ ├── RSA/
│ │ │ ├── Code.cpp
│ │ │ ├── Commonf.cpp
│ │ │ ├── Commonf.h
│ │ │ ├── Function.h
│ │ │ ├── Gsimply.cpp
│ │ │ ├── Gsimply.h
│ │ │ ├── HNumber.h
│ │ │ ├── Hnfunct.cpp
│ │ │ ├── Hnfunct.h
│ │ │ ├── Hnumber.cpp
│ │ │ ├── Keys.cpp
│ │ │ ├── Keys_main.cpp
│ │ │ ├── MyNum.h
│ │ │ ├── MyTypes.h
│ │ │ ├── Mynum.cpp
│ │ │ ├── Myprint.cpp
│ │ │ ├── Myprint.h
│ │ │ ├── Operator.cpp
│ │ │ ├── Operator.h
│ │ │ ├── PrimeGen.cpp
│ │ │ ├── Profiler.h
│ │ │ ├── RSA.dsp
│ │ │ ├── RSA.vcproj
│ │ │ ├── StdAfx.h
│ │ │ ├── TMSG.H
│ │ │ └── stdafx.cpp
│ │ ├── RSAKeys.cpp
│ │ ├── RSAKeys.h
│ │ ├── ServerListSynchronize.cpp
│ │ ├── ServerListSynchronize.h
│ │ ├── User.cpp
│ │ ├── User.h
│ │ ├── blowfish.cpp
│ │ ├── blowfish.h
│ │ ├── blowfish.h2
│ │ ├── rfbserver.cpp
│ │ ├── rfbserver.h
│ │ ├── stdafx.cpp
│ │ ├── stdafx.h
│ │ └── version.plist
│ ├── Jaguar/
│ │ ├── JaguarBundle-Info.plist
│ │ ├── JaguarExtensions.h
│ │ └── JaguarExtensions.m
│ ├── RFBBundleProtocol.h
│ ├── Tiger/
│ │ ├── TigerBundle-Info.plist
│ │ ├── TigerExtensions.h
│ │ └── TigerExtensions.m
│ ├── VNCBundle.h
│ └── VNCBundle.m
├── English.lproj/
│ └── MainMenu.nib/
│ ├── classes.nib
│ ├── info.nib
│ └── keyedobjects.nib
├── French.lproj/
│ ├── Credits.rtf
│ └── MainMenu.nib/
│ ├── classes.nib
│ ├── info.nib
│ └── objects.nib
├── German.lproj/
│ ├── Credits.rtf
│ └── MainMenu.nib/
│ ├── classes.nib
│ ├── info.nib
│ └── objects.nib
├── Italian.lproj/
│ ├── Copying.rtf
│ ├── Credits.rtf
│ └── MainMenu.nib/
│ ├── classes.nib
│ ├── info.nib
│ └── objects.nib
├── Japanese.lproj/
│ ├── Credits.rtf
│ └── MainMenu.nib/
│ ├── classes.nib
│ ├── info.nib
│ └── objects.nib
├── LICENSE
├── NSAuthorization.h
├── NSAuthorization.m
├── OSXvnc/
│ ├── OSXvnc
│ ├── OSXvnc-keepalive
│ ├── Resources/
│ │ └── English.lproj/
│ │ └── Localizable.strings
│ └── StartupParameters.plist
├── OSXvnc-server/
│ ├── CGS.h
│ ├── COPYING
│ ├── Makefile
│ ├── VNCServer.h
│ ├── VNCServer.m
│ ├── auth.c
│ ├── corre.c
│ ├── cutpaste.c
│ ├── d3des.c
│ ├── d3des.h
│ ├── dimming.c
│ ├── getMACAddress.c
│ ├── getMACAddress.h
│ ├── hextile.c
│ ├── include/
│ │ ├── X11/
│ │ │ ├── X.h
│ │ │ ├── Xalloca.h
│ │ │ ├── Xfuncproto.h
│ │ │ ├── Xfuncs.h
│ │ │ ├── Xmd.h
│ │ │ ├── Xos.h
│ │ │ ├── Xosdefs.h
│ │ │ ├── Xproto.h
│ │ │ ├── Xprotostr.h
│ │ │ ├── keysym.h
│ │ │ └── keysymdef.h
│ │ └── Xserver/
│ │ ├── colormap.h
│ │ ├── cursor.h
│ │ ├── dix.h
│ │ ├── gc.h
│ │ ├── input.h
│ │ ├── misc.h
│ │ ├── miscstruct.h
│ │ ├── opaque.h
│ │ ├── os.h
│ │ ├── pixmap.h
│ │ ├── region.h
│ │ ├── regionstr.h
│ │ ├── screenint.h
│ │ ├── scrnintstr.h
│ │ ├── validate.h
│ │ └── window.h
│ ├── kbdptr.c
│ ├── kbdptr.h
│ ├── libvncauth/
│ │ └── Makefile
│ ├── main.c
│ ├── miregion.c
│ ├── mousecursor.c
│ ├── rdr/
│ │ ├── Exception.h
│ │ ├── FdInStream.cxx
│ │ ├── FdInStream.h
│ │ ├── FdOutStream.cxx
│ │ ├── FdOutStream.h
│ │ ├── FixedMemOutStream.h
│ │ ├── InStream.cxx
│ │ ├── InStream.h
│ │ ├── Makefile
│ │ ├── Makefile.in
│ │ ├── MemInStream.h
│ │ ├── MemOutStream.h
│ │ ├── NullOutStream.cxx
│ │ ├── NullOutStream.h
│ │ ├── OutStream.h
│ │ ├── ZlibInStream.cxx
│ │ ├── ZlibInStream.h
│ │ ├── ZlibOutStream.cxx
│ │ ├── ZlibOutStream.h
│ │ └── types.h
│ ├── rfb.h
│ ├── rfbproto.h
│ ├── rfbserver.c
│ ├── rfbserver.h
│ ├── rre.c
│ ├── screencapture.c
│ ├── screencapture.h
│ ├── sockets.c
│ ├── stats.c
│ ├── storepasswd.c
│ ├── tableinitcmtemplate.c
│ ├── tableinittctemplate.c
│ ├── tabletranstemplate.c
│ ├── tight.c
│ ├── tight.h
│ ├── translate.c
│ ├── vncauth.c
│ ├── vncauth.h
│ ├── xalloc.c
│ ├── zlib.c
│ ├── zlibhex.c
│ ├── zrle.cc
│ └── zrleEncode.h
├── OSXvnc.html
├── OSXvnc.icns
├── OSXvnc.tiff
├── OSXvnc.xcodeproj/
│ └── project.pbxproj
├── OSXvnc_small.tiff
├── README.md
├── VNCController.h
├── VNCController.m
├── Version.txt
├── VineServer-Info.plist
├── VineServer.icns
├── build-libjpeg-turbo.sh
├── de.lproj/
│ ├── Copying.rtf
│ └── Localizable.strings
├── en.lproj/
│ ├── Copying.rtf
│ ├── Credits.rtf
│ ├── Localizable.strings
│ └── Vine Server Release Notes.rtf
├── fr.lproj/
│ ├── Copying.rtf
│ └── Localizable.strings
├── it.lproj/
│ └── Localizable.strings
├── ja.lproj/
│ ├── Copying.rtf
│ └── Localizable.strings
└── main.m
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/workflows/dco.yml
================================================
# .github/workflows/dco.yml
name: DCO
on:
pull_request:
push:
branches:
- main
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python 3.x
uses: actions/setup-python@v4
with:
python-version: '3.x'
- name: Check DCO
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
pip3 install -U dco-check
dco-check
================================================
FILE: .gitignore
================================================
/OSXvnc.xcodeproj/project.xcworkspace
/OSXvnc.xcodeproj/xcuserdata/
# xcodebuild -configuration Deployment
/build
================================================
FILE: .gitmodules
================================================
[submodule "libjpeg-turbo"]
path = libjpeg-turbo
url = https://github.com/libjpeg-turbo/libjpeg-turbo.git
================================================
FILE: .travis.yml
================================================
# Travis CI for OSXvnc.
os: osx
osx_image: xcode12.2
addons:
before_deploy:
before_install:
branches:
compiler:
deploy:
dist:
matrix:
notification:
sudo:
# TODO
install:
# libjpeg is already installed.
# - brew install libjpeg
# Patch project configuration to use installed libjpeg.
- ruby -pi -e 'gsub("libturbojpeg", "libjpeg")' OSXvnc.xcodeproj/project.pbxproj
- ruby -pi -e 'gsub("/opt/libjpeg-turbo", "/usr/local")' OSXvnc.xcodeproj/project.pbxproj
script:
- ./build-libjpeg-turbo.sh
- xcodebuild
================================================
FILE: Base.lproj/MainMenu.xib
================================================
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
<dependencies>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="8191"/>
<capability name="box content view" minToolsVersion="7.0"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
<connections>
<outlet property="delegate" destination="1668" id="1783"/>
<outlet property="dockMenu" destination="1669" id="1784"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" customClass="NSObject"/>
<customObject id="1507" customClass="NSApplication"/>
<window title="Vine Server Preferences" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" deferred="NO" oneShot="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="Preferences" animationBehavior="default" id="1508">
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="601" y="672" width="434" height="348"/>
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1418"/>
<value key="minSize" type="size" width="127" height="5"/>
<view key="contentView" id="1509">
<rect key="frame" x="0.0" y="0.0" width="434" height="348"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<tabView id="1510">
<rect key="frame" x="-10" y="30" width="452" height="312"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<animations/>
<font key="font" metaFont="system"/>
<tabViewItems>
<tabViewItem label="Connection" identifier="" id="1511">
<view key="view" id="1512">
<rect key="frame" x="10" y="33" width="432" height="266"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField verticalHuggingPriority="750" id="1513">
<rect key="frame" x="17" y="195" width="125" height="19"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<string key="toolTip">Display Number for VNC Server
Note: This number+5900 is the port that will be used</string>
<animations/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Display Number:" id="1514">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" id="1998">
<rect key="frame" x="273" y="197" width="50" height="19"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<string key="toolTip">Display Number for VNC Server
Note: This number+5900 is the port that will be used</string>
<animations/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Port:" id="1999">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<popUpButton verticalHuggingPriority="750" id="1515">
<rect key="frame" x="144" y="191" width="94" height="26"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<string key="toolTip">Display Number for VNC Server
Note: This number+5900 is the port that will be used</string>
<animations/>
<popUpButtonCell key="cell" type="push" title="Auto" bezelStyle="rounded" alignment="left" lineBreakMode="clipping" state="on" borderStyle="borderAndBezel" inset="2" arrowPosition="arrowAtCenter" preferredEdge="maxY" selectedItem="1518" id="1516">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<menu key="menu" title="OtherViews" id="1517">
<items>
<menuItem title="Auto" state="on" id="1518"/>
<menuItem title="0" tag="5900" id="1519"/>
<menuItem title="1" tag="5901" id="1528"/>
<menuItem title="2" tag="5902" id="1527"/>
<menuItem title="3" tag="5903" id="1529"/>
<menuItem title="4" tag="5904" id="1526"/>
<menuItem title="5" tag="5905" id="1525"/>
<menuItem title="6" tag="5906" id="1524"/>
<menuItem title="7" tag="5907" id="1523"/>
<menuItem title="8" tag="5908" id="1522"/>
<menuItem title="9" tag="5909" id="1521"/>
<menuItem title="--" tag="99" id="1520"/>
</items>
</menu>
</popUpButtonCell>
<connections>
<action selector="changeDisplayNumber:" target="1668" id="1860"/>
</connections>
</popUpButton>
<textField verticalHuggingPriority="750" id="1530">
<rect key="frame" x="328" y="194" width="64" height="22"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
<string key="toolTip">Port Number that VNC will use to communicate.
Note: Same as Display Number+5900
Note: Same as Display Number+5900</string>
<animations/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="1531">
<font key="font" metaFont="system"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<action selector="changePort:" target="1668" id="1861"/>
</connections>
</textField>
<textField toolTip="Name that the VNC viewer will see for this server." verticalHuggingPriority="750" id="1534">
<rect key="frame" x="38" y="223" width="104" height="20"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Display Name:" id="1535">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField toolTip="Name that the VNC viewer will see for this server." verticalHuggingPriority="750" id="1536">
<rect key="frame" x="147" y="224" width="245" height="22"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<animations/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" title="Mac OS X" drawsBackground="YES" id="1537">
<font key="font" metaFont="system"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<action selector="changeDisplayName:" target="1668" id="1862"/>
</connections>
</textField>
<box title="Authentication" id="1538">
<rect key="frame" x="29" y="54" width="366" height="121"/>
<autoresizingMask key="autoresizingMask"/>
<view key="contentView" id="NGi-6l-1cZ">
<rect key="frame" x="2" y="2" width="362" height="104"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField verticalHuggingPriority="750" id="1539">
<rect key="frame" x="161" y="72" width="88" height="22"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<string key="toolTip">Password required to connect with VNC Clients
Note: Password length is not preserved</string>
<animations/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="1540">
<font key="font" metaFont="system"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<action selector="changePassword:" target="1668" id="1863"/>
<outlet property="delegate" destination="1668" id="1787"/>
</connections>
</textField>
<matrix verticalHuggingPriority="750" allowsEmptySelection="NO" autosizesCells="NO" id="1541">
<rect key="frame" x="27" y="53" width="134" height="38"/>
<autoresizingMask key="autoresizingMask"/>
<animations/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
<size key="cellSize" width="134" height="18"/>
<size key="intercellSpacing" width="4" height="2"/>
<buttonCell key="prototype" type="radio" title="Radio" imagePosition="left" alignment="left" inset="2" id="1542">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<cells>
<column>
<buttonCell type="radio" title="VNC Password" imagePosition="left" alignment="left" state="on" toolTip="Password required to connect with VNC Client" tag="1" inset="2" id="1543">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<buttonCell type="radio" title="None" imagePosition="left" alignment="left" tag="2" inset="2" id="1544">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
</column>
</cells>
<connections>
<action selector="changeAuthenticationType:" target="1668" id="1906"/>
</connections>
</matrix>
<button id="1545">
<rect key="frame" x="27" y="9" width="379" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<buttonCell key="cell" type="check" title="Require Remote Login (SSH)" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="1546">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="optionChanged:" target="1668" id="1877"/>
</connections>
</button>
</subviews>
<animations/>
</view>
<animations/>
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</box>
</subviews>
<animations/>
</view>
<connections>
<outlet property="initialFirstResponder" destination="1536" id="1846"/>
</connections>
</tabViewItem>
<tabViewItem label="Device" identifier="" id="1573">
<view key="view" id="1574">
<rect key="frame" x="10" y="33" width="432" height="266"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<box title="Mouse" id="1575">
<rect key="frame" x="19" y="109" width="392" height="54"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<string key="toolTip">Checking this box swaps the middle and right mouse buttons. By convention the buttons sent by VNC client is in the opposite order as Mac OS X buttons.</string>
<view key="contentView" id="vvI-AC-Rgd">
<rect key="frame" x="2" y="2" width="388" height="37"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<button id="1576">
<rect key="frame" x="12" y="8" width="208" height="18"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<animations/>
<buttonCell key="cell" type="check" title="Swap Mouse Buttons 2 and 3" bezelStyle="regularSquare" imagePosition="left" alignment="left" state="on" inset="2" id="1577">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="optionChanged:" target="1668" id="1882"/>
</connections>
</button>
</subviews>
<animations/>
</view>
<animations/>
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</box>
<box title="Display" id="1578">
<rect key="frame" x="19" y="162" width="392" height="98"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<view key="contentView" id="IqN-to-8QS">
<rect key="frame" x="2" y="2" width="388" height="81"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<button id="1579">
<rect key="frame" x="12" y="51" width="175" height="18"/>
<autoresizingMask key="autoresizingMask"/>
<string key="toolTip">Enable this if you want to allow the machine to sleep.
Sleeping machines can not be reached by VNC.</string>
<animations/>
<buttonCell key="cell" type="check" title="Allow machine to sleep" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="1580">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="optionChanged:" target="1668" id="1880"/>
</connections>
</button>
<button id="1581">
<rect key="frame" x="12" y="31" width="181" height="18"/>
<autoresizingMask key="autoresizingMask"/>
<string key="toolTip">Enable this to prevent the screen from dimming while clients are connected.
Any Input will un-dim the screen.</string>
<animations/>
<buttonCell key="cell" type="check" title="Allow display dimming" bezelStyle="regularSquare" imagePosition="left" alignment="left" state="on" inset="2" id="1582">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="optionChanged:" target="1668" id="1881"/>
</connections>
</button>
<button toolTip="Enable this to allow the screen saver to turn on when clients are connected." id="1583">
<rect key="frame" x="12" y="11" width="200" height="18"/>
<autoresizingMask key="autoresizingMask"/>
<animations/>
<buttonCell key="cell" type="check" title="Allow screen saver to start" bezelStyle="regularSquare" imagePosition="left" alignment="left" state="on" inset="2" id="1584">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="optionChanged:" target="1668" id="1889"/>
</connections>
</button>
</subviews>
<animations/>
</view>
<animations/>
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</box>
<box toolTip="The keyboard layout that Vine Server uses to interpret keystrokes from a VNC viewer." title="Keyboard (Mac OS X 10.4 and later)" id="1585">
<rect key="frame" x="19" y="44" width="392" height="61"/>
<autoresizingMask key="autoresizingMask"/>
<view key="contentView" id="GdF-Jl-94f">
<rect key="frame" x="2" y="2" width="388" height="44"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<popUpButton toolTip="The keyboard layout that Vine Server uses to interpret keystrokes from a VNC viewer." verticalHuggingPriority="750" id="1586">
<rect key="frame" x="156" y="9" width="219" height="26"/>
<autoresizingMask key="autoresizingMask"/>
<animations/>
<popUpButtonCell key="cell" type="push" title="U.S." bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" inset="2" arrowPosition="arrowAtCenter" preferredEdge="maxY" selectedItem="1591" id="1587">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<menu key="menu" title="OtherViews" id="1588">
<items>
<menuItem title="U.S." state="on" id="1591"/>
<menuItem title="Unicode Hex Input" tag="2" id="1589"/>
<menuItem title="Current Keyboard" tag="1" id="1590"/>
</items>
</menu>
</popUpButtonCell>
<connections>
<action selector="optionChanged:" target="1668" id="1892"/>
</connections>
</popUpButton>
<textField verticalHuggingPriority="750" id="1592">
<rect key="frame" x="13" y="15" width="114" height="17"/>
<autoresizingMask key="autoresizingMask"/>
<animations/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Keyboard Layout:" id="1593">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
<animations/>
</view>
<animations/>
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</box>
</subviews>
<animations/>
</view>
</tabViewItem>
<tabViewItem label="Sharing" identifier="" id="1547">
<view key="view" id="1548">
<rect key="frame" x="10" y="33" width="432" height="266"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<box toolTip="This section controls how multiple VNC clients share the screen" title="Server Sharing" id="1549">
<rect key="frame" x="19" y="37" width="392" height="123"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<view key="contentView" id="nCC-6o-qMK">
<rect key="frame" x="2" y="2" width="388" height="103"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<matrix verticalHuggingPriority="750" allowsEmptySelection="NO" autosizesCells="NO" id="1550">
<rect key="frame" x="14" y="34" width="350" height="59"/>
<autoresizingMask key="autoresizingMask"/>
<animations/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
<size key="cellSize" width="350" height="18"/>
<size key="intercellSpacing" width="4" height="2"/>
<buttonCell key="prototype" type="radio" title="Radio" imagePosition="left" alignment="left" inset="2" id="1551">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<cells>
<column>
<buttonCell type="radio" title="Always allow multiple VNC connections" bezelStyle="regularSquare" imagePosition="left" alignment="left" toolTip="Always allow multiple VNC clients" tag="1" inset="2" id="1552">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<buttonCell type="radio" title="Let viewers request exclusive access" imagePosition="left" alignment="left" state="on" toolTip="Allow client to specify if it will work while other VNC clients are connected." inset="2" id="1553">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<buttonCell type="radio" title="Allow only one VNC connection at a time" bezelStyle="regularSquare" imagePosition="left" alignment="left" toolTip="Never allow multiple VNC clients" tag="2" inset="2" id="1554">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
</column>
</cells>
<connections>
<action selector="changeSharing:" target="1668" id="1874"/>
</connections>
</matrix>
<button toolTip="Checking this box means the new client is denied access. Unchecking it means the existing client is disconnected." id="1555">
<rect key="frame" x="29" y="12" width="353" height="18"/>
<autoresizingMask key="autoresizingMask"/>
<animations/>
<buttonCell key="cell" type="check" title="Keep existing viewer if a new viewer tries to connect" bezelStyle="regularSquare" imagePosition="left" alignment="left" state="on" inset="2" id="1556">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="optionChanged:" target="1668" id="1875"/>
</connections>
</button>
</subviews>
<animations/>
</view>
<animations/>
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<font key="titleFont" metaFont="system"/>
</box>
<button id="1557">
<rect key="frame" x="23" y="230" width="378" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<buttonCell key="cell" type="check" title="Disable remote control of keyboard and mouse" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="1558">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="optionChanged:" target="1668" id="1876"/>
</connections>
</button>
<button id="1559">
<rect key="frame" x="23" y="190" width="278" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<buttonCell key="cell" type="check" title="Advertise server via Bonjour" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="1560">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="optionChanged:" target="1668" id="1885"/>
</connections>
</button>
<button id="1561">
<rect key="frame" x="23" y="210" width="333" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<buttonCell key="cell" type="check" title="Disable rich clipboard support (Vine Viewer Only)" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="1562">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
</button>
</subviews>
<animations/>
</view>
</tabViewItem>
<tabViewItem label="Startup" identifier="" id="1563">
<view key="view" id="1564">
<rect key="frame" x="10" y="33" width="432" height="266"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<button id="1565">
<rect key="frame" x="18" y="230" width="383" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<buttonCell key="cell" type="check" title="Start server when Vine Server application is launched" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="1566">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="saveUserDefaults:" target="1668" id="1878"/>
</connections>
</button>
<button id="1567">
<rect key="frame" x="18" y="190" width="383" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<buttonCell key="cell" type="check" title="Restart server if it stops unexpectedly" bezelStyle="regularSquare" imagePosition="left" alignment="left" state="on" inset="2" id="1568">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
</button>
<button id="1569">
<rect key="frame" x="18" y="210" width="389" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<buttonCell key="cell" type="check" title="Stop server on a fast user switch" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="1570">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="optionChanged:" target="1668" id="1883"/>
</connections>
</button>
<button verticalHuggingPriority="750" id="1571">
<rect key="frame" x="14" y="104" width="196" height="32"/>
<autoresizingMask key="autoresizingMask"/>
<animations/>
<buttonCell key="cell" type="push" title="System Server..." bezelStyle="rounded" alignment="center" borderStyle="border" inset="2" id="1572">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="makeKeyAndOrderFront:" target="1726" id="1910"/>
</connections>
</button>
</subviews>
<animations/>
</view>
</tabViewItem>
<tabViewItem label="Advanced" identifier="" id="1594">
<view key="view" id="1595">
<rect key="frame" x="10" y="33" width="432" height="266"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<box toolTip="The event taps that Vine Server uses to interpret keystrokes from a VNC viewer." title="Keyboard" id="1596">
<rect key="frame" x="19" y="19" width="403" height="86"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<view key="contentView" id="DRX-jY-fqU">
<rect key="frame" x="2" y="2" width="399" height="69"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<popUpButton toolTip="The OS level at which Vine Server interprets keyboard input from a VNC viewer." verticalHuggingPriority="750" id="1597">
<rect key="frame" x="166" y="35" width="219" height="26"/>
<autoresizingMask key="autoresizingMask"/>
<animations/>
<popUpButtonCell key="cell" type="push" title="Smart Event Management" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" tag="3" inset="2" arrowPosition="arrowAtCenter" preferredEdge="maxY" selectedItem="1600" id="1598">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<menu key="menu" title="OtherViews" id="1599">
<items>
<menuItem title="Smart Event Management" state="on" tag="3" id="1600"/>
<menuItem title="Hardware Events " id="1602"/>
<menuItem title="User Session Events" tag="1" id="1601"/>
</items>
</menu>
</popUpButtonCell>
<connections>
<action selector="optionChanged:" target="1668" id="1916"/>
</connections>
</popUpButton>
<textField verticalHuggingPriority="750" id="1603">
<rect key="frame" x="16" y="41" width="121" height="17"/>
<autoresizingMask key="autoresizingMask"/>
<animations/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Keyboard Events:" id="1604">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<popUpButton toolTip="The OS level at which Vine Server interprets keyboard input from a VNC viewer." verticalHuggingPriority="750" id="1605">
<rect key="frame" x="166" y="9" width="219" height="26"/>
<autoresizingMask key="autoresizingMask"/>
<animations/>
<popUpButtonCell key="cell" type="push" title="HID Event Source" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" inset="2" arrowPosition="arrowAtCenter" preferredEdge="maxY" selectedItem="1610" id="1606">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<menu key="menu" title="OtherViews" id="1607">
<items>
<menuItem title="Private Event Source" tag="2" id="1608"/>
<menuItem title="Combined Event Source" tag="1" id="1609"/>
<menuItem title="HID Event Source" state="on" id="1610"/>
<menuItem title="10.3 API (No Source)" tag="3" id="1611"/>
</items>
</menu>
</popUpButtonCell>
<connections>
<action selector="optionChanged:" target="1668" id="1915"/>
</connections>
</popUpButton>
<textField verticalHuggingPriority="750" id="1612">
<rect key="frame" x="16" y="15" width="121" height="17"/>
<autoresizingMask key="autoresizingMask"/>
<animations/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Event Source:" id="1613">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
<animations/>
</view>
<animations/>
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</box>
<box title="RFB Protocol" borderType="line" id="1614">
<rect key="frame" x="19" y="200" width="162" height="60"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<view key="contentView" id="84T-ob-M1v">
<rect key="frame" x="1" y="1" width="160" height="44"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<popUpButton toolTip="Select to force the server to use an older protocol." verticalHuggingPriority="750" id="1615">
<rect key="frame" x="15" y="10" width="130" height="26"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES"/>
<animations/>
<popUpButtonCell key="cell" type="push" title="Default (3.8)" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" inset="2" arrowPosition="arrowAtCenter" preferredEdge="maxY" selectedItem="1619" id="1616">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<menu key="menu" title="OtherViews" id="1617">
<items>
<menuItem title="Default (3.8)" state="on" id="1619"/>
<menuItem title="3.7" id="1618"/>
<menuItem title="3.3" id="1620"/>
</items>
</menu>
</popUpButtonCell>
<connections>
<action selector="optionChanged:" target="1668" id="1891"/>
</connections>
</popUpButton>
</subviews>
<animations/>
</view>
<animations/>
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</box>
<box title="Command Line Arguments" borderType="line" id="1621">
<rect key="frame" x="19" y="116" width="404" height="80"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<view key="contentView" id="WH1-xk-HxX">
<rect key="frame" x="1" y="1" width="402" height="64"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField verticalHuggingPriority="750" id="1622">
<rect key="frame" x="22" y="23" width="358" height="22"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES"/>
<animations/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="1623">
<font key="font" metaFont="system"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<action selector="optionChanged:" target="1668" id="1890"/>
</connections>
</textField>
</subviews>
<animations/>
</view>
<animations/>
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</box>
</subviews>
<animations/>
</view>
</tabViewItem>
</tabViewItems>
</tabView>
<textField verticalHuggingPriority="750" id="1624">
<rect key="frame" x="17" y="15" width="400" height="17"/>
<autoresizingMask key="autoresizingMask"/>
<animations/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Preference Message" id="1625">
<font key="font" metaFont="system"/>
<color key="textColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
<animations/>
</view>
<connections>
<outlet property="delegate" destination="1668" id="1785"/>
<outlet property="initialFirstResponder" destination="1515" id="1786"/>
</connections>
</window>
<menu title="MainMenu" systemMenu="main" id="1626">
<items>
<menuItem title="Vine Server" id="1627">
<menu key="submenu" title="Vine Server" systemMenu="apple" id="1628">
<items>
<menuItem title="About Vine Server" id="1629">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="orderFrontStandardAboutPanel:" target="-2" id="1850"/>
</connections>
</menuItem>
<menuItem title="Preferences..." keyEquivalent="," id="1640">
<connections>
<action selector="makeKeyAndOrderFront:" target="1508" id="1894"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="1634">
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem>
<menuItem title="Services" id="1630">
<menu key="submenu" title="Services" systemMenu="services" id="1631"/>
</menuItem>
<menuItem isSeparatorItem="YES" id="1635">
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem>
<menuItem title="Hide Vine Server" keyEquivalent="h" id="1632">
<connections>
<action selector="hide:" target="-2" id="1852"/>
</connections>
</menuItem>
<menuItem title="Hide Others" id="1636">
<connections>
<action selector="hideOtherApplications:" target="-2" id="1854"/>
</connections>
</menuItem>
<menuItem title="Show All" id="1638">
<connections>
<action selector="unhideAllApplications:" target="-2" id="1855"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="1637">
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem>
<menuItem title="Quit Vine Server..." keyEquivalent="q" id="1633">
<connections>
<action selector="terminateRequest:" target="1668" id="1853"/>
</connections>
</menuItem>
<menuItem title="Quit Vine Server" alternate="YES" keyEquivalent="q" id="1639">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="terminate:" target="-2" id="1893"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Server" id="1641">
<menu key="submenu" title="Server" id="1642">
<items>
<menuItem title="Start Server" id="1649">
<string key="keyEquivalent" base64-UTF8="YES">
DQ
</string>
<connections>
<action selector="startServer:" target="1668" id="1900"/>
</connections>
</menuItem>
<menuItem title="Stop Server" keyEquivalent="." id="1643">
<connections>
<action selector="stopServer:" target="1668" id="1864"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="1645">
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem>
<menuItem title="View Log" keyEquivalent="V" id="1644">
<connections>
<action selector="openLog:" target="1668" id="1868"/>
</connections>
</menuItem>
<menuItem title="Reverse Connection..." keyEquivalent="r" id="1647">
<connections>
<action selector="reverseConnection:" target="1668" id="1897"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="1648">
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem>
<menuItem title="Server..." keyEquivalent="s" id="1650">
<connections>
<action selector="makeKeyAndOrderFront:" target="1677" id="1914"/>
</connections>
</menuItem>
<menuItem title="System Server..." keyEquivalent="S" id="1646">
<connections>
<action selector="makeKeyAndOrderFront:" target="1726" id="1873"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Edit" id="1658">
<menu key="submenu" title="Edit" id="1659">
<items>
<menuItem title="Cut" keyEquivalent="x" id="1661">
<connections>
<action selector="cut:" target="-1" id="1857"/>
</connections>
</menuItem>
<menuItem title="Copy" keyEquivalent="c" id="1660">
<connections>
<action selector="copy:" target="-1" id="1856"/>
</connections>
</menuItem>
<menuItem title="Paste" keyEquivalent="v" id="1662">
<connections>
<action selector="paste:" target="-1" id="1858"/>
</connections>
</menuItem>
<menuItem title="Select All" keyEquivalent="a" id="1663">
<connections>
<action selector="selectAll:" target="-1" id="1859"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Window" id="1664">
<menu key="submenu" title="Window" systemMenu="window" id="1665">
<items>
<menuItem title="Close Window" keyEquivalent="w" id="1667">
<connections>
<action selector="performClose:" target="-1" id="1869"/>
</connections>
</menuItem>
<menuItem title="Minimize" keyEquivalent="m" id="1666">
<connections>
<action selector="performMiniaturize:" target="-1" id="1865"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Help " id="1651">
<menu key="submenu" title="Help " id="1652">
<items>
<menuItem title="Vine Server Help" keyEquivalent="?" id="1653">
<connections>
<action selector="showHelp:" target="-1" id="1851"/>
</connections>
</menuItem>
<menuItem title="Configure Firewall" id="1657">
<connections>
<action selector="openFirewall:" target="1668" id="1902"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="1655">
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem>
<menuItem title="Release Notes" id="1654">
<connections>
<action selector="openReleaseNotes:" target="1668" id="1866"/>
</connections>
</menuItem>
<menuItem title="GPL License" id="1656">
<connections>
<action selector="openGPL:" target="1668" id="1867"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
</items>
</menu>
<customObject id="1668" customClass="VNCController">
<connections>
<outlet property="allowDimmingCheckbox" destination="1581" id="1788"/>
<outlet property="allowRendezvousCheckbox" destination="1559" id="1789"/>
<outlet property="allowScreenSaverCheckbox" destination="1583" id="1790"/>
<outlet property="allowSleepCheckbox" destination="1579" id="1791"/>
<outlet property="authenticationType" destination="1541" id="1792"/>
<outlet property="connectHost" destination="1714" id="1793"/>
<outlet property="connectPort" destination="1718" id="1794"/>
<outlet property="disableRemoteEventsCheckbox" destination="1557" id="1795"/>
<outlet property="disableRichClipboardCheckbox" destination="1561" id="1796"/>
<outlet property="disableStartupButton" destination="1734" id="1797"/>
<outlet property="displayNameField" destination="1536" id="1798"/>
<outlet property="displayNumText" destination="1703" id="1799"/>
<outlet property="displayNumberField" destination="1515" id="1800"/>
<outlet property="dontDisconnectCheckbox" destination="1555" id="1801"/>
<outlet property="eventSourcePopup" destination="1605" id="1802"/>
<outlet property="hostNamesBox" destination="1683" id="1803"/>
<outlet property="hostNamesField" destination="1684" id="1804"/>
<outlet property="initialAuthenticationType" destination="1775" id="1805"/>
<outlet property="initialDoneButton" destination="1781" id="1806"/>
<outlet property="initialPasswordText" destination="1773" id="1807"/>
<outlet property="initialWindow" destination="1771" id="1808"/>
<outlet property="ipAddressesBox" destination="1686" id="1809"/>
<outlet property="ipAddressesView" destination="1690" id="1810"/>
<outlet property="keyboardEvents" destination="1597" id="1811"/>
<outlet property="keyboardLayout" destination="1586" id="1812"/>
<outlet property="limitToLocalConnections" destination="1545" id="1813"/>
<outlet property="optionsTabView" destination="1510" id="1814"/>
<outlet property="otherArguments" destination="1622" id="1815"/>
<outlet property="passwordField" destination="1539" id="1816"/>
<outlet property="portField" destination="1530" id="1817"/>
<outlet property="portNumText" destination="1699" id="1818"/>
<outlet property="preferenceWindow" destination="1508" id="1819"/>
<outlet property="preferencesMessageTestField" destination="1624" id="1820"/>
<outlet property="protocolVersion" destination="1615" id="1821"/>
<outlet property="reverseConnectionMessageField" destination="1724" id="1822"/>
<outlet property="reverseConnectionWindow" destination="1709" id="1823"/>
<outlet property="serverKeepAliveCheckbox" destination="1567" id="1824"/>
<outlet property="serverMenuItem" destination="1650" id="1825"/>
<outlet property="setStartupButton" destination="1728" id="1826"/>
<outlet property="sharingMatrix" destination="1550" id="1827"/>
<outlet property="startServerButton" destination="1679" id="1828"/>
<outlet property="startServerMenuItem" destination="1649" id="1829"/>
<outlet property="startServerOnLaunchCheckbox" destination="1565" id="1830"/>
<outlet property="startupItemStatusMessageField" destination="1732" id="1831"/>
<outlet property="statusMessageField" destination="1706" id="1832"/>
<outlet property="statusWindow" destination="1677" id="1833"/>
<outlet property="stopServerButton" destination="1681" id="1834"/>
<outlet property="stopServerMenuItem" destination="1643" id="1835"/>
<outlet property="swapMouseButtonsCheckbox" destination="1576" id="1836"/>
<outlet property="systemServerAuthenticationType" destination="1765" id="1837"/>
<outlet property="systemServerDisplayNameField" destination="1760" id="1838"/>
<outlet property="systemServerDisplayNumberField" destination="1739" id="1839"/>
<outlet property="systemServerLimitToLocalConnections" destination="1769" id="1840"/>
<outlet property="systemServerMenu" destination="1646" id="1841"/>
<outlet property="systemServerPasswordField" destination="1763" id="1842"/>
<outlet property="systemServerPortField" destination="1754" id="1843"/>
<outlet property="systemServerWindow" destination="1726" id="1844"/>
<outlet property="terminateOnFastUserSwitch" destination="1569" id="1845"/>
</connections>
</customObject>
<menu title="Menu" id="1669">
<items>
<menuItem title="Preferences..." id="1676">
<connections>
<action selector="makeKeyAndOrderFront:" target="1508" id="1901"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="1671">
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem>
<menuItem title="Start Server" id="1670">
<connections>
<action selector="startServer:" target="1668" id="1870"/>
</connections>
</menuItem>
<menuItem title="Stop Server" id="1672">
<connections>
<action selector="stopServer:" target="1668" id="1871"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="1675">
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem>
<menuItem title="View Log" id="1673">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="openLog:" target="1668" id="1872"/>
</connections>
</menuItem>
<menuItem title="Reverse Connection..." id="1674">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="reverseConnection:" target="1668" id="1899"/>
</connections>
</menuItem>
</items>
</menu>
<window title="Vine Server" deferred="NO" releasedWhenClosed="NO" frameAutosaveName="Server" animationBehavior="default" id="1677">
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES" texturedBackground="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="191" y="684" width="408" height="337"/>
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1418"/>
<value key="minSize" type="size" width="350" height="330"/>
<view key="contentView" id="1678">
<rect key="frame" x="0.0" y="0.0" width="408" height="337"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<button verticalHuggingPriority="750" id="1681">
<rect key="frame" x="11" y="12" width="128" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<animations/>
<buttonCell key="cell" type="push" title="Stop Server" bezelStyle="rounded" alignment="center" enabled="NO" borderStyle="border" inset="2" id="1682">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="stopServer:" target="1668" id="1896"/>
</connections>
</button>
<scrollView autohidesScrollers="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" id="1705">
<rect key="frame" x="17" y="54" width="371" height="62"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<clipView key="contentView" id="M4J-wl-2jg">
<rect key="frame" x="1" y="1" width="369" height="60"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textView editable="NO" importsGraphics="NO" richText="NO" findStyle="panel" usesRuler="YES" usesFontPanel="YES" verticallyResizable="YES" spellingCorrection="YES" smartInsertDelete="YES" id="1706">
<rect key="frame" x="0.0" y="0.0" width="369" height="60"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<animations/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<size key="minSize" width="369" height="60"/>
<size key="maxSize" width="371" height="10000000"/>
<attributedString key="textStorage">
<fragment content="The server is not running">
<attributes>
<color key="NSColor" name="textColor" catalog="System" colorSpace="catalog"/>
<font key="NSFont" metaFont="user"/>
<paragraphStyle key="NSParagraphStyle" alignment="natural" lineBreakMode="wordWrapping" baseWritingDirection="natural"/>
</attributes>
</fragment>
</attributedString>
<color key="insertionPointColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<size key="minSize" width="369" height="60"/>
<size key="maxSize" width="371" height="10000000"/>
</textView>
</subviews>
<animations/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</clipView>
<animations/>
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="YES" id="1707">
<rect key="frame" x="-100" y="-100" width="87" height="18"/>
<autoresizingMask key="autoresizingMask"/>
<animations/>
</scroller>
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="NO" id="1708">
<rect key="frame" x="355" y="1" width="15" height="60"/>
<autoresizingMask key="autoresizingMask"/>
<animations/>
</scroller>
</scrollView>
<box title="IP Address" id="1686">
<rect key="frame" x="14" y="172" width="377" height="74"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<view key="contentView" id="zDW-8G-rc6">
<rect key="frame" x="2" y="2" width="373" height="57"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<scrollView borderType="none" autohidesScrollers="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" id="1687">
<rect key="frame" x="11" y="2" width="358" height="54"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<clipView key="contentView" autoresizesSubviews="NO" drawsBackground="NO" copiesOnScroll="NO" id="Fg5-NT-tqu">
<rect key="frame" x="0.0" y="0.0" width="358" height="54"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<matrix verticalHuggingPriority="750" mode="track" selectionByRect="NO" allowsEmptySelection="NO" autosizesCells="NO" id="1690">
<rect key="frame" x="0.0" y="0.0" width="358" height="34"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<animations/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
<size key="cellSize" width="169" height="17"/>
<size key="intercellSpacing" width="10" height="0.0"/>
<textFieldCell key="prototype" selectable="YES" enabled="NO" sendsActionOnEndEditing="YES" tag="-1" id="1691">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<cells>
<column>
<textFieldCell selectable="YES" enabled="NO" sendsActionOnEndEditing="YES" state="on" title="IP1" id="1695">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<textFieldCell selectable="YES" enabled="NO" sendsActionOnEndEditing="YES" tag="2" title="IP2" id="1693">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</column>
<column>
<textFieldCell selectable="YES" enabled="NO" sendsActionOnEndEditing="YES" tag="1" title="Status1" id="1694">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<textFieldCell selectable="YES" enabled="NO" sendsActionOnEndEditing="YES" tag="2" title="Status2" id="1692">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</column>
</cells>
</matrix>
</subviews>
<animations/>
</clipView>
<animations/>
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" doubleValue="1" controlSize="small" horizontal="YES" id="1689">
<rect key="frame" x="-100" y="-100" width="314" height="15"/>
<autoresizingMask key="autoresizingMask"/>
<animations/>
</scroller>
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" doubleValue="0.64705884456634521" controlSize="small" horizontal="NO" id="1688">
<rect key="frame" x="-22" y="0.0" width="11" height="54"/>
<autoresizingMask key="autoresizingMask"/>
<animations/>
</scroller>
</scrollView>
</subviews>
<animations/>
</view>
<animations/>
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</box>
<box title="Host Name" id="1683">
<rect key="frame" x="14" y="247" width="377" height="80"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<view key="contentView" id="47s-8l-G0w">
<rect key="frame" x="2" y="2" width="373" height="63"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField toolTip="Host Name that can be used to refer to this machine" verticalHuggingPriority="750" id="1684">
<rect key="frame" x="11" y="11" width="349" height="48"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<animations/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" sendsActionOnEndEditing="YES" alignment="left" id="1685">
<font key="font" metaFont="cellTitle"/>
<string key="title">Host Name1
Host Name2
Host Name3</string>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
<animations/>
</view>
<animations/>
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</box>
<box title="Port" id="1696">
<rect key="frame" x="14" y="120" width="377" height="50"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<view key="contentView" id="102-xM-zuw">
<rect key="frame" x="2" y="2" width="373" height="33"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField verticalHuggingPriority="750" id="1697">
<rect key="frame" x="284" y="8" width="37" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES"/>
<animations/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Port:" id="1698">
<font key="font" metaFont="cellTitle"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" id="1699">
<rect key="frame" x="323" y="8" width="37" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES"/>
<animations/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="5900" id="1700">
<font key="font" metaFont="cellTitle"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" id="1701">
<rect key="frame" x="10" y="8" width="110" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES"/>
<animations/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Display Number:" id="1702">
<font key="font" metaFont="cellTitle"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" id="1703">
<rect key="frame" x="125" y="8" width="37" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES"/>
<animations/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="0" id="1704">
<font key="font" metaFont="cellTitle"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
<animations/>
</view>
<animations/>
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</box>
<button verticalHuggingPriority="750" id="1679">
<rect key="frame" x="266" y="12" width="128" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
<animations/>
<buttonCell key="cell" type="push" title="Start Server" bezelStyle="rounded" alignment="center" borderStyle="border" inset="2" id="1680">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
<string key="keyEquivalent" base64-UTF8="YES">
DQ
</string>
</buttonCell>
<connections>
<action selector="startServer:" target="1668" id="1895"/>
</connections>
</button>
</subviews>
<animations/>
</view>
<connections>
<outlet property="delegate" destination="1668" id="1847"/>
</connections>
</window>
<window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="1709">
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="336" y="421" width="423" height="143"/>
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1418"/>
<value key="minSize" type="size" width="213" height="107"/>
<view key="contentView" id="1710">
<rect key="frame" x="0.0" y="0.0" width="423" height="143"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<box title="Reverse Connection" id="1713">
<rect key="frame" x="14" y="49" width="398" height="85"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<view key="contentView" id="lGB-UO-jpX">
<rect key="frame" x="2" y="2" width="394" height="68"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField toolTip="IP/Machine Name of listening VNC viewer" verticalHuggingPriority="750" id="1714">
<rect key="frame" x="189" y="35" width="189" height="22"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES"/>
<animations/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="1715">
<font key="font" metaFont="system"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<action selector="performClick:" target="1711" id="1886"/>
</connections>
</textField>
<textField verticalHuggingPriority="750" id="1716">
<rect key="frame" x="14" y="36" width="170" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Viewer Host Name or IP:" id="1717">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField toolTip="Port Number to connect listening VNC viewer" verticalHuggingPriority="750" id="1718">
<rect key="frame" x="189" y="8" width="74" height="22"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES"/>
<animations/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="1719">
<font key="font" metaFont="system"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<action selector="performClick:" target="1711" id="1887"/>
</connections>
</textField>
<textField verticalHuggingPriority="750" id="2002">
<rect key="frame" x="134" y="9" width="50" height="19"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<string key="toolTip">Display Number for VNC Server
Note: This number+5900 is the port that will be used</string>
<animations/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Port:" id="2003">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
<animations/>
</view>
<animations/>
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<font key="titleFont" metaFont="smallSystemBold"/>
</box>
<button toolTip="Add a listening VNC viewer." verticalHuggingPriority="750" id="1711">
<rect key="frame" x="314" y="12" width="101" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES"/>
<animations/>
<buttonCell key="cell" type="push" title="Connect" bezelStyle="rounded" alignment="center" borderStyle="border" inset="2" id="1712">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
<string key="keyEquivalent" base64-UTF8="YES">
DQ
</string>
</buttonCell>
<connections>
<action selector="connectHost:" target="1668" id="1888"/>
</connections>
</button>
<button toolTip="Add a listening VNC viewer." verticalHuggingPriority="750" id="1722">
<rect key="frame" x="213" y="12" width="101" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES"/>
<animations/>
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" inset="2" id="1723">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
<string key="keyEquivalent" base64-UTF8="YES">
Gw
</string>
</buttonCell>
<connections>
<action selector="cancelConnectHost:" target="1668" id="1898"/>
</connections>
</button>
<textField verticalHuggingPriority="750" id="1724">
<rect key="frame" x="14" y="16" width="197" height="29"/>
<autoresizingMask key="autoresizingMask"/>
<animations/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Reverse Connection Message" id="1725">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
<animations/>
</view>
</window>
<window title="System Server" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="System Server" animationBehavior="default" id="1726">
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="610" y="634" width="430" height="390"/>
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1418"/>
<value key="minSize" type="size" width="213" height="107"/>
<view key="contentView" id="1727">
<rect key="frame" x="0.0" y="0.0" width="430" height="390"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<textField verticalHuggingPriority="750" id="1730">
<rect key="frame" x="20" y="73" width="376" height="85"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<animations/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="left" id="1731">
<font key="font" metaFont="smallSystem"/>
<string key="title">The System Server will start when the machine boots and display the console screen independent of users' desktop servers. Specify connection preferences for the system server above. Other preferences are shared with desktop servers.
Clipboard sharing is unavailable prior to Mac OS X 10.5</string>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<box title="Connection Preferences" id="1736">
<rect key="frame" x="17" y="162" width="396" height="221"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<view key="contentView" id="Jsc-iY-VGb">
<rect key="frame" x="2" y="2" width="392" height="201"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField verticalHuggingPriority="750" id="1737">
<rect key="frame" x="3" y="140" width="125" height="19"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<string key="toolTip">Display Number for VNC Server
Note: This number+5900 is the port that will be used</string>
<animations/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Display Number:" id="1738">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<popUpButton verticalHuggingPriority="750" id="1739">
<rect key="frame" x="130" y="136" width="94" height="26"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<string key="toolTip">Display Number for VNC Server
Note: This number+5900 is the port that will be used</string>
<animations/>
<popUpButtonCell key="cell" type="push" title="Auto" bezelStyle="rounded" alignment="left" lineBreakMode="clipping" state="on" borderStyle="borderAndBezel" inset="2" arrowPosition="arrowAtCenter" preferredEdge="maxY" selectedItem="1745" id="1740">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<menu key="menu" title="OtherViews" id="1741">
<items>
<menuItem title="Auto" state="on" id="1745"/>
<menuItem title="0" tag="5900" id="1749"/>
<menuItem title="1" tag="5901" id="1746"/>
<menuItem title="2" tag="5902" id="1748"/>
<menuItem title="3" tag="5903" id="1743"/>
<menuItem title="4" tag="5904" id="1747"/>
<menuItem title="5" tag="5905" id="1744"/>
<menuItem title="6" tag="5906" id="1752"/>
<menuItem title="7" tag="5907" id="1753"/>
<menuItem title="8" tag="5908" id="1742"/>
<menuItem title="9" tag="5909" id="1751"/>
<menuItem title="--" tag="99" id="1750"/>
</items>
</menu>
</popUpButtonCell>
<connections>
<action selector="changeSystemServerPort:" target="1668" id="1903"/>
</connections>
</popUpButton>
<textField verticalHuggingPriority="750" id="1754">
<rect key="frame" x="314" y="139" width="64" height="22"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
<string key="toolTip">Port Number that VNC will use to communicate.
Note: Same as Display Number+5900
Note: Same as Display Number+5900</string>
<animations/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="1755">
<font key="font" metaFont="system"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<action selector="changeSystemServerPort:" target="1668" id="1904"/>
</connections>
</textField>
<textField toolTip="Name that the VNC viewer will see for this server." verticalHuggingPriority="750" id="1758">
<rect key="frame" x="24" y="168" width="104" height="20"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Display Name:" id="1759">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField toolTip="Name that the VNC viewer will see for this server." verticalHuggingPriority="750" id="1760">
<rect key="frame" x="133" y="169" width="245" height="22"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<animations/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" title="Mac OS X" drawsBackground="YES" id="1761">
<font key="font" metaFont="system"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<action selector="saveUserDefaults:" target="1668" id="1905"/>
</connections>
</textField>
<box title="Authentication" id="1762">
<rect key="frame" x="13" y="7" width="366" height="121"/>
<autoresizingMask key="autoresizingMask"/>
<view key="contentView" id="0lc-Hl-MQJ">
<rect key="frame" x="2" y="2" width="362" height="104"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField verticalHuggingPriority="750" id="1763">
<rect key="frame" x="167" y="72" width="88" height="22"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<string key="toolTip">Password required to connect with VNC Client.
Note: Size is not preserved</string>
<animations/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="1764">
<font key="font" metaFont="system"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<action selector="changeSystemServerAuthentication:" target="1668" id="1907"/>
<outlet property="delegate" destination="1668" id="1848"/>
</connections>
</textField>
<matrix verticalHuggingPriority="750" allowsEmptySelection="NO" autosizesCells="NO" id="1765">
<rect key="frame" x="27" y="53" width="116" height="38"/>
<autoresizingMask key="autoresizingMask"/>
<animations/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
<size key="cellSize" width="116" height="18"/>
<size key="intercellSpacing" width="4" height="2"/>
<buttonCell key="prototype" type="radio" title="Radio" imagePosition="left" alignment="left" inset="2" id="1768">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<cells>
<column>
<buttonCell type="radio" title="VNC Password" imagePosition="left" alignment="left" state="on" toolTip="Password required to connect with VNC Client" tag="1" inset="2" id="1767">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<buttonCell type="radio" title="None" imagePosition="left" alignment="left" tag="2" inset="2" id="1766">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
</column>
</cells>
<connections>
<action selector="changeSystemServerAuthentication:" target="1668" id="1908"/>
</connections>
</matrix>
<button id="1769">
<rect key="frame" x="27" y="9" width="379" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<animations/>
<buttonCell key="cell" type="check" title="Require Remote Login (SSH)" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="1770">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="saveUserDefaults:" target="1668" id="1909"/>
</connections>
</button>
</subviews>
<animations/>
</view>
<animations/>
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</box>
<textField verticalHuggingPriority="750" id="2000">
<rect key="frame" x="259" y="140" width="50" height="19"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<string key="toolTip">Display Number for VNC Server
Note: This number+5900 is the port that will be used</string>
<animations/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Port:" id="2001">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
<animations/>
</view>
<animations/>
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<font key="titleFont" metaFont="system"/>
</box>
<textField verticalHuggingPriority="750" id="1732">
<rect key="frame" x="20" y="52" width="368" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<animations/>
<textFieldCell key="cell" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="left" title="System Server Text" id="1733">
<font key="font" metaFont="systemBold"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button verticalHuggingPriority="750" id="1734">
<rect key="frame" x="17" y="12" width="160" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<animations/>
<buttonCell key="cell" type="push" title="Stop System Server" bezelStyle="rounded" alignment="center" borderStyle="border" inset="2" id="1735">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="removeService:" target="1668" id="1884"/>
</connections>
</button>
<button verticalHuggingPriority="750" id="1728">
<rect key="frame" x="249" y="12" width="167" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
<animations/>
<buttonCell key="cell" type="push" title="Start System Server" bezelStyle="rounded" alignment="center" borderStyle="border" inset="2" id="1729">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="installAsService:" target="1668" id="1879"/>
</connections>
</button>
</subviews>
<animations/>
</view>
</window>
<window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="1771">
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="207" y="859" width="382" height="164"/>
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1418"/>
<value key="minSize" type="size" width="213" height="107"/>
<view key="contentView" id="1772">
<rect key="frame" x="0.0" y="0.0" width="382" height="164"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<textField verticalHuggingPriority="750" id="1773">
<rect key="frame" x="218" y="81" width="88" height="22"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<string key="toolTip">Password required to connect with VNC Client.
Note: Password length is not preserved</string>
<animations/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="1774">
<font key="font" metaFont="system"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<action selector="validateInitialAuthentication:" target="1668" id="1911"/>
<outlet property="delegate" destination="1668" id="1849"/>
</connections>
</textField>
<matrix verticalHuggingPriority="750" allowsEmptySelection="NO" autosizesCells="NO" id="1775">
<rect key="frame" x="84" y="62" width="134" height="38"/>
<autoresizingMask key="autoresizingMask"/>
<animations/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
<size key="cellSize" width="134" height="18"/>
<size key="intercellSpacing" width="4" height="2"/>
<buttonCell key="prototype" type="radio" title="Radio" imagePosition="left" alignment="left" inset="2" id="1778">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<cells>
<column>
<buttonCell type="radio" title="VNC Password" imagePosition="left" alignment="left" state="on" toolTip="Password required to connect with VNC Client" tag="1" inset="2" id="1777">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<buttonCell type="radio" title="None" imagePosition="left" alignment="left" tag="2" inset="2" id="1776">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
</column>
</cells>
<connections>
<action selector="validateInitialAuthentication:" target="1668" id="1912"/>
</connections>
</matrix>
<textField verticalHuggingPriority="750" id="1779">
<rect key="frame" x="17" y="111" width="357" height="40"/>
<autoresizingMask key="autoresizingMask"/>
<animations/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Before accepting connections from VNC clients you must select an authentication type:" id="1780">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button verticalHuggingPriority="750" id="1781">
<rect key="frame" x="286" y="12" width="82" height="32"/>
<autoresizingMask key="autoresizingMask"/>
<animations/>
<buttonCell key="cell" type="push" title="Done" bezelStyle="rounded" alignment="center" enabled="NO" borderStyle="border" inset="2" id="1782">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
<string key="keyEquivalent" base64-UTF8="YES">
DQ
</string>
</buttonCell>
<connections>
<action selector="setInitialAuthentication:" target="1668" id="1913"/>
</connections>
</button>
</subviews>
<animations/>
</view>
</window>
</objects>
</document>
================================================
FILE: Bundles/Echoware/ACConnection.cpp
================================================
#include "StdAfx.h"
#include "acconnection.h"
#include "ProxyConnection.h"
#include "DllProxyInfo.h"
#include "NetPacket.h"
#include <sys/cdefs.h>
#include <sys/utfconv.h>
#include <libkern/OSByteOrder.h>
//#include <CoreFoundation/CFByteOrder.h>
using namespace APISocket;
//time for send live message
#define SEND_LIVE_MESSAGE 10000
CACConnection::CACConnection(CProxyConnection* pProxyConnection) : CClientSocket()
{
m_pProxyConnection = pProxyConnection;
m_nEncryptionLevel = 1;
m_bConnected = false;
m_bStopConnecting = false;
m_dwConnectingStatus=0;
m_pReadBuffer = new CBuffer();
m_pSendBuffer = new CBuffer();
m_dwLastIsAliveMsg = GetTickCount();
}
CACConnection::~CACConnection(void)
{
StopSend(THREAD_STOP_TIMEOUT);
Close();
delete m_pReadBuffer;
delete m_pSendBuffer;
}
void CACConnection::StopConnect()
{
m_bStopConnecting = true;
}
//connect the socket to szIP on port nPort
//first, try directly and if failed then try use proxy settings
bool CACConnection::Connect(const char* szIP, unsigned int nPort)
{
bool res = false;
if (CClientSocket::Connect(szIP, nPort) == 0)
res = true;
if (!res)
res = g_globals.m_proxiesManager.ConnectViaProxy(this, szIP, nPort);
return res;
}
//try connect to echoServer
int CACConnection::Connect()
{
int nRet=CONNECTION_SUCCESSFUL;
if (m_bConnected)
{
m_pProxyConnection->GetProxyInfo()->SetStatus(STATUS_CONNECTING, false);
m_pProxyConnection->GetProxyInfo()->SetStatus(STATUS_AUTHENTICATING, false);
m_pProxyConnection->GetProxyInfo()->SetStatus(STATUS_AUTHENTICATION_FAILED, false);
m_pProxyConnection->GetProxyInfo()->SetStatus(STATUS_ESTABLISHING_DATA_CHANNEL, false);
m_pProxyConnection->GetProxyInfo()->SetStatus(STATUS_SEARCHING_FOR_PARTNER, false);
m_pProxyConnection->GetProxyInfo()->SetStatus(STATUS_DISCONNECTED_FROM_PROXY, false);
m_pProxyConnection->GetProxyInfo()->SetStatus(STATUS_CONNECTED, true);
return PROXY_ALREADY_CONNECTED;
}
//create the socket
Create();
g_globals.m_logger.Write("CACConnection: Enter connect");
m_critSection.Lock();
CDllProxyInfo* pProxyInfo = m_pProxyConnection->GetProxyInfo();
if (pProxyInfo->GetConnectTimeout()!=-1)
{
g_globals.m_logger.WriteFormated("CACConnection: Timeout=%d", pProxyInfo->GetConnectTimeout());
//set the connection timeout
CClientSocket::SetTimeouts(pProxyInfo->GetConnectTimeout()*1000);
SetBlockMode(false);
}
pProxyInfo->SetStatus(STATUS_DISCONNECTED_FROM_PROXY, false);
g_globals.m_logger.WriteFormated("\tCACConnection: Try connect %s:%s %s", pProxyInfo->GetIP(), pProxyInfo->GetPort(), pProxyInfo->GetMyID());
//connect
bool a = Connect(pProxyInfo->GetIP(), atoi(pProxyInfo->GetPort()));
if (a)
{
CClientSocket::SetTimeouts(pProxyInfo->GetConnectTimeout()*1000, pProxyInfo->GetSendTimeout()*1000, pProxyInfo->GetReceiveTimeout()*1000);
unsigned int conn_timeout = (unsigned int)pProxyInfo->GetConnectTimeout() * 1000;
m_pReadBuffer->Empty();
m_pSendBuffer->Empty();
m_dwConnectingStatus = STATUS_CONNECTING;
m_bConnected = true;
StartRoutine();
SendMessage(MSG_PROXY_CONNECTED, 0, 0);
if (errored)
m_bStopConnecting = true;
g_globals.m_logger.Write("\t\tCACConnection: connected");
DWORD dwStartTime = GetTickCount();
while (m_dwConnectingStatus != STATUS_CONNECTED && m_dwConnectingStatus != STATUS_AUTHENTICATION_FAILED)
{
if (m_bStopConnecting)
break;
Sleep(5000);
if (GetTickCount() - dwStartTime > conn_timeout)
break;
}
g_globals.m_logger.Write("\t\tCACConnection: connected2");
switch(m_dwConnectingStatus)
{
case STATUS_CONNECTED:
m_bConnected = true;
nRet=CONNECTION_SUCCESSFUL;
pProxyInfo->SetStatus(STATUS_CONNECTING, false);
pProxyInfo->SetStatus(STATUS_AUTHENTICATING, false);
pProxyInfo->SetStatus(STATUS_AUTHENTICATION_FAILED, false);
pProxyInfo->SetStatus(STATUS_ESTABLISHING_DATA_CHANNEL, false);
pProxyInfo->SetStatus(STATUS_SEARCHING_FOR_PARTNER, false);
pProxyInfo->SetStatus(STATUS_DISCONNECTED_FROM_PROXY, false);
pProxyInfo->SetStatus(STATUS_CONNECTED, true);
pProxyInfo->SetReconnectProxy(true);
break;
case STATUS_AUTHENTICATION_FAILED:
m_bConnected = true;
nRet=AUTHENTICATION_FAILED;
pProxyInfo->SetStatus(STATUS_CONNECTING, false);
pProxyInfo->SetStatus(STATUS_AUTHENTICATING, false);
pProxyInfo->SetStatus(STATUS_AUTHENTICATION_FAILED, true);
pProxyInfo->SetStatus(STATUS_ESTABLISHING_DATA_CHANNEL, false);
pProxyInfo->SetStatus(STATUS_SEARCHING_FOR_PARTNER, false);
pProxyInfo->SetStatus(STATUS_DISCONNECTED_FROM_PROXY, false);
pProxyInfo->SetStatus(STATUS_CONNECTED, false);
pProxyInfo->SetReconnectProxy(false);
break;
case STATUS_AUTHENTICATING:
m_bConnected = false;
nRet=CONNECTION_TIMED_OUT;
pProxyInfo->SetStatus(STATUS_CONNECTING, false);
pProxyInfo->SetStatus(STATUS_AUTHENTICATING, false);
pProxyInfo->SetStatus(STATUS_AUTHENTICATION_FAILED, false);
pProxyInfo->SetStatus(STATUS_ESTABLISHING_DATA_CHANNEL, false);
pProxyInfo->SetStatus(STATUS_SEARCHING_FOR_PARTNER, false);
pProxyInfo->SetStatus(STATUS_DISCONNECTED_FROM_PROXY, true);
pProxyInfo->SetStatus(STATUS_CONNECTED, false);
break;
case STATUS_CONNECTING:
m_bConnected = false;
nRet=CONNECTION_TIMED_OUT;
pProxyInfo->SetStatus(STATUS_CONNECTING, false);
pProxyInfo->SetStatus(STATUS_AUTHENTICATING, false);
pProxyInfo->SetStatus(STATUS_AUTHENTICATION_FAILED, false);
pProxyInfo->SetStatus(STATUS_ESTABLISHING_DATA_CHANNEL, false);
pProxyInfo->SetStatus(STATUS_SEARCHING_FOR_PARTNER, false);
pProxyInfo->SetStatus(STATUS_DISCONNECTED_FROM_PROXY, true);
pProxyInfo->SetStatus(STATUS_CONNECTED, false);
break;
case STATUS_DISCONNECTED_FROM_PROXY:
m_bConnected = false;
nRet=ERROR_CONNECTING_TO_PROXY;
pProxyInfo->SetStatus(STATUS_CONNECTING, false);
pProxyInfo->SetStatus(STATUS_AUTHENTICATING, false);
pProxyInfo->SetStatus(STATUS_AUTHENTICATION_FAILED, false);
pProxyInfo->SetStatus(STATUS_ESTABLISHING_DATA_CHANNEL, false);
pProxyInfo->SetStatus(STATUS_SEARCHING_FOR_PARTNER, false);
pProxyInfo->SetStatus(STATUS_DISCONNECTED_FROM_PROXY, true);
pProxyInfo->SetStatus(STATUS_CONNECTED, false);
break;
}
}
else
{
m_bConnected = false;
pProxyInfo->SetStatus(STATUS_CONNECTED, false);
nRet = NO_PROXY_SERVER_FOUND_TO_CONNECT;
g_globals.m_logger.WriteFormated("\t\tCACConnection: not connected error: %d", CClientSocket::GetLastError());
}
g_globals.m_logger.Write("\tCACConnection: End Try connect");
m_critSection.Unlock();
g_globals.m_logger.Write("CACConnection: Exit connect");
m_bStopConnecting = false;
return nRet;
}
//disconnect from echoServer
bool CACConnection::Disconnect()
{
bool bRet = true;
m_bStopConnecting = true;
m_critSection.Lock();
StopSend(THREAD_STOP_TIMEOUT);
if (m_bConnected)
{
bRet = CClientSocket::Close();
m_bConnected = !m_bConnected;
}
m_bStopConnecting = false;
m_critSection.Unlock();
return bRet;
}
//sets the encryption level
void CACConnection::SetEncryptionLevel(int level)
{
m_critSection.Lock();
m_nEncryptionLevel = level;
m_critSection.Unlock();
}
//process messages received from echoserver
//there are received some data and try to process it
//it is a notify message from CClientSocket
void CACConnection::OnReceive(char* buff, int len)
{
m_pReadBuffer->Write(buff, len);
char szProxyEcho[sizeof(PROXY_ECHO)];
if (m_pReadBuffer->Peak(szProxyEcho, sizeof(PROXY_ECHO))!=sizeof(PROXY_ECHO))
{
if (!strcmp(szProxyEcho, PROXY_ECHO))
{
m_pReadBuffer->Read(szProxyEcho, sizeof(PROXY_ECHO));
return;
}
}
DWORD lenMsg=0;
if (m_pReadBuffer->Peak(&lenMsg, sizeof(DWORD))!=sizeof(DWORD))
return;
lenMsg=OSSwapLittleToHostInt32(lenMsg);
char* msg=new char[lenMsg];
if (m_pReadBuffer->Peak(msg, lenMsg)!=lenMsg)
{
delete []msg;
return;
}
m_pReadBuffer->Drop(lenMsg);
NetPacketHeader netPacketHeader;
memcpy(&netPacketHeader, msg+sizeof(DWORD), sizeof(NetPacketHeader));
netPacketHeader.len = OSSwapLittleToHostInt32(netPacketHeader.len);
CProxyMsg* pProxyMsg=(CProxyMsg*)(msg+sizeof(DWORD)+sizeof(NetPacketHeader));
pProxyMsg->messageid = OSSwapLittleToHostInt32(pProxyMsg->messageid);
pProxyMsg->datalength = OSSwapLittleToHostInt32(pProxyMsg->datalength);
char* pData=0;
if (pProxyMsg->datalength)
pData=((char*)pProxyMsg)+sizeof(CProxyMsg);
if (pProxyMsg->messageid==MSG_PROXY_CONNECTED)
{
g_globals.m_logger.Write("CACConnection: Receive MSG_PROXY_CONNECTED");
m_pProxyConnection->GetProxyInfo()->SetStatus(STATUS_DISCONNECTED_FROM_PROXY, false);
m_rsaKeys.Generate();
SendMessage(MSG_PROXY_PUBLICKEY, (char*)m_rsaKeys.m_pPublicKeyLE, m_rsaKeys.GetPublicKeyLength());
}
else if (pProxyMsg->messageid==MSG_PROXY_PUBLICKEY)
{
g_globals.m_logger.Write("CACConnection: Receive MSG_PROXY_PUBLICKEY");
m_pProxyConnection->GetProxyInfo()->SetStatus(STATUS_AUTHENTICATING, true);
m_dwConnectingStatus=STATUS_AUTHENTICATING;
SendEncryptedPass(pData, pProxyMsg->datalength);
}
else if (pProxyMsg->messageid==MSG_PROXY_HANDSHAKEFAILED)
{
CClientSocket::Close();
m_bConnected=false;
m_pProxyConnection->GetProxyInfo()->SetStatus(STATUS_AUTHENTICATION_FAILED, true);
m_pProxyConnection->GetProxyInfo()->SetStatus(STATUS_AUTHENTICATING, false);
g_globals.m_logger.Write("CACConnection: Receive MSG_PROXY_HANDSHAKEFAILED");
m_dwConnectingStatus=STATUS_AUTHENTICATION_FAILED;
}
else if (pProxyMsg->messageid==MSG_PROXY_HANDSHAKECONFIRM)
{
m_pProxyConnection->GetProxyInfo()->SetStatus(STATUS_DISCONNECTED_FROM_PROXY, false);
char szServerName[ID_STRING_SIZE];
strcpy(szServerName, pData);
if (strlen(szServerName))
m_pProxyConnection->GetProxyInfo()->SetName(szServerName);
else
m_pProxyConnection->GetProxyInfo()->SetName((char*)m_pProxyConnection->GetProxyInfo()->GetIP());
//1.926
char szPublicIP[ID_STRING_SIZE];
char szUserID[ID_STRING_SIZE];
memset(szPublicIP, 0, ID_STRING_SIZE);
memset(szUserID, 0, ID_STRING_SIZE);
int nReceivedData = strlen(szServerName) + 1;
if (nReceivedData < pProxyMsg->datalength)
{
strcpy(szPublicIP, pData + nReceivedData);
nReceivedData += strlen(szPublicIP) + 1;
}
if (nReceivedData < pProxyMsg->datalength)
{
memcpy(szUserID, pData + nReceivedData, 255);
}
if (strlen(szUserID))
{
//2007.08.09
char szEmail[ID_STRING_SIZE];
g_globals.ParseFormattedID(szUserID, ID_STRING_SIZE, szEmail);
g_globals.m_logger.WriteFormated("CACConnection: Receive Client %s, Form %s", szUserID, szEmail);
m_pProxyConnection->GetProxyInfo()->SetMyID(szEmail);
}
m_pProxyConnection->GetProxyInfo()->SetStatus(STATUS_CONNECTED, true);
m_pProxyConnection->GetProxyInfo()->SetStatus(STATUS_AUTHENTICATING, false);
m_pProxyConnection->GetProxyInfo()->SetStatus(STATUS_CONNECTING, false);
g_globals.m_logger.Write("CACConnection: Receive MSG_PROXY_HANDSHAKECONFIRM");
m_dwConnectingStatus=STATUS_CONNECTED;
}
else if (pProxyMsg->messageid==MSG_PROXY_DISCONNECTED)
{
CClientSocket::Close();
m_bConnected=false;
m_pProxyConnection->GetProxyInfo()->SetStatus(STATUS_DISCONNECTED_FROM_PROXY, true);
m_pProxyConnection->GetProxyInfo()->SetStatus(STATUS_CONNECTED, false);
g_globals.m_logger.Write("CACConnection: Receive MSG_PROXY_DISCONNECTED");
}
else if (pProxyMsg->messageid==MSG_PROXY_DUPLICATE_LOGIN)
{
CClientSocket::Close();
m_bConnected=false;
m_pProxyConnection->GetProxyInfo()->SetStatus(STATUS_CONNECTED, false);
m_dwConnectingStatus=STATUS_DISCONNECTED_FROM_PROXY;
g_globals.m_logger.Write("CACConnection: Receive MSG_PROXY_DUPLICATE_LOGIN");
}
else if (pProxyMsg->messageid==MSG_PROXY_PARTNERFOUND)
{
m_dwConnectingStatus=MSG_PROXY_PARTNERFOUND;
g_globals.m_logger.Write("CACConnection: Receive MSG_PROXY_PARTNERFOUND");
}
else if (pProxyMsg->messageid==MSG_PROXY_PARTNERNOTFOUND)
{
m_dwConnectingStatus=MSG_PROXY_PARTNERNOTFOUND;
g_globals.m_logger.Write("CACConnection: Receive MSG_PROXY_PARTNERNOTFOUND");
}
else if (pProxyMsg->messageid==MSG_CHANNEL_CODE)
{
/* initiator receives from echoserver */
m_dwConnectingStatus=MSG_CHANNEL_CODE;
g_globals.m_logger.WriteFormated("CACConnection: Receive MSG_CHANNEL_CODE %s", pData);
}
else if (pProxyMsg->messageid==MSG_PEER_KEY)
{
/* initiator receives from echoserver (initiatorchannelcode/dhpart2) */
m_dwConnectingStatus=MSG_PEER_KEY;
memcpy(m_szChannelCode, pData, CHANNEL_CODE_SIZE);
m_szChannelCode[CHANNEL_CODE_SIZE]=0;
#warning the RSA key? is that char or int data?
memcpy(m_szPeerPublicKey, pData+CHANNEL_CODE_SIZE, RSA_PUBLIC_KEY*sizeof(unsigned int));
m_szPeerPublicKey[RSA_PUBLIC_KEY*sizeof(unsigned int)]=0;
g_globals.m_logger.WriteFormated("CACConnection: Receive MSG_PEER_KEY, chanel code=%s", m_szChannelCode);
}
else if (pProxyMsg->messageid==MSG_CONNECT_TO_PEER)
{
/* responder receives from echoserver (respchannelcode/respID/dhPart1) */
g_globals.m_logger.Write("CACConnection: Receive MSG_CONNECT_TO_PEER 1");
m_dwConnectingStatus=MSG_CONNECT_TO_PEER;
memcpy(m_szChannelCode, pData, CHANNEL_CODE_SIZE);
m_szChannelCode[CHANNEL_CODE_SIZE]=0;
memcpy(m_szPeerID, pData+CHANNEL_CODE_SIZE, ID_STRING_SIZE);
m_szPeerID[ID_STRING_SIZE]=0;
#warning the RSA key? is that char or int data?
memcpy(m_szPeerPublicKey, pData+ID_STRING_SIZE+CHANNEL_CODE_SIZE, RSA_PUBLIC_KEY*sizeof(unsigned int));
m_szPeerPublicKey[RSA_PUBLIC_KEY*sizeof(unsigned int)]=0;
char *pBuff = NULL;
DWORD dwTotalLength = 0;
DWORD dwTemp = 0;
/* responder sends MSG_PEER_KEY to echoserver
(initiatorId,dhpart2,respchannelcode) */
dwTotalLength += CHANNEL_CODE_SIZE;//sizeof(m_szChannelCode);
dwTotalLength += ID_STRING_SIZE;//sizeof(m_szPeerID);
dwTotalLength += m_rsaKeys.GetPublicKeyLength();
pBuff = new char[dwTotalLength];
memset(pBuff,0,dwTotalLength);// Total Buffer size
memcpy(pBuff,m_szPeerID,sizeof(m_szPeerID));
dwTemp = ID_STRING_SIZE;//sizeof(m_szPeerID);
memcpy(pBuff + dwTemp,m_szChannelCode, sizeof(m_szChannelCode));
dwTemp += CHANNEL_CODE_SIZE;//sizeof(m_szChannelCode);
/* set DHpart2 to all zero if no encryption */
if (m_nEncryptionLevel==1)
memcpy(pBuff+dwTemp, (char*)m_rsaKeys.m_pPublicKeyLE, m_rsaKeys.GetPublicKeyLength());
else
memset(pBuff+dwTemp, 0, m_rsaKeys.GetPublicKeyLength());
g_globals.m_logger.WriteFormated("CACConnection: Receive MSG_CONNECT_TO_PEER 2, channel code=%s", m_szChannelCode);
SendMessage(MSG_PEER_KEY,pBuff,dwTotalLength);
g_globals.m_logger.WriteFormated("CACConnection: Receive MSG_CONNECT_TO_PEER 3, channel code=%s", m_szChannelCode);
delete []pBuff;
m_pProxyConnection->OnRemotePartnerConnect(m_szChannelCode, m_szPeerID, m_szPeerPublicKey);
g_globals.m_logger.WriteFormated("CACConnection: Receive MSG_CONNECT_TO_PEER end, channel code=%s", m_szChannelCode);
}
else if (pProxyMsg->messageid==MSG_ISALIVE)
{
g_globals.m_logger.Write("CACConnection: Receive MSG_ISALIVE");
}
delete []msg;
}
//send data to echoServer
//if the send buffer contain data, then this data is read it for send to echoServer
//if there are no data to send, then send IsAliveMessage if is time to do it
//it is a notify message from CClientSocket
void CACConnection::OnSend(char* buff, int& len)
{
if (!m_bConnected)
{
len=0;
return;
}
len=m_pSendBuffer->Read(buff, len);
}
void CACConnection::OnTimer()
{
APISocket::CClientSocket::OnTimer();
if (!m_pSendBuffer->Size() && m_bConnected &&
GetTickCount() - m_dwLastIsAliveMsg >= SEND_LIVE_MESSAGE)
{
m_dwLastIsAliveMsg = GetTickCount();
SendMessage(MSG_ISALIVE, 0, 0);
}
}
//compose message packet to send to echoServer
//message : the message type
//data : the message data
//datalen : the message data length
void CACConnection::SendMessage(DWORD message, char *data, unsigned int datalen)
{
char* lpBuf = NULL;
DWORD nBytesSent = 0;
CProxyMsg msg(message);
NetPacketHeader header;
header.len = msg.MakeMessage(&header, lpBuf, data, datalen);//create the message
DWORD dwToSend=OSSwapHostToLittleInt32(header.len+sizeof(DWORD));
m_pSendBuffer->Write(&dwToSend, sizeof(DWORD));
m_pSendBuffer->Write(lpBuf, header.len);
Send();
if (lpBuf)
delete lpBuf;
}
//compose MSG_PROXY_PASSWORD message packet
void CACConnection::SendEncryptedPass(char * pData,DWORD dwDataLength)
{
char pEncPass[1024];
m_rsaKeys.EncryptPassword(pData, dwDataLength, m_pProxyConnection->GetProxyInfo()->GetPassword(), pEncPass);
char szEmail[ID_STRING_SIZE];
if (g_globals.GetFormattedID(szEmail, ID_STRING_SIZE, m_pProxyConnection->GetProxyInfo()->GetMyID()) == -1)
return;
const int nTotalPkgSize = 1024 + ID_STRING_SIZE+ sizeof(DWORD);
char szTotalData[nTotalPkgSize];
memset(szTotalData, 0, nTotalPkgSize);
memcpy(szTotalData, pEncPass,1024);
memcpy(szTotalData + 1024, szEmail, ID_STRING_SIZE);
SendMessage(MSG_PROXY_PASSWORD, szTotalData, nTotalPkgSize);
}
//calback function, notify that there was an error on read or send data to echoserver on this channel
//it is a notify message from CClientSocket
void CACConnection::OnError(int error)
{
CClientSocket::OnError(error);
m_bStopConnecting = true;
m_pProxyConnection->OnError(error);
CDllProxyInfo* pProxyInfo=m_pProxyConnection->GetProxyInfo();
pProxyInfo->SetStatus(STATUS_CONNECTED, false);
pProxyInfo->SetStatus(STATUS_DISCONNECTED_FROM_PROXY, true);
m_bConnected = false;
}
//find partner on echoServer
//sends MSG_PROXY_FIND_PARTNER message and wait for echoServer answer
bool CACConnection::FindPartner(const char* szPartener)
{
g_globals.m_logger.WriteFormated("CACConnection: FindPartner %s", szPartener);
if (!m_bConnected)
{
g_globals.m_logger.WriteFormated("CACConnection: FindPartner %s end, not connected", szPartener);
return false;
}
m_pProxyConnection->GetProxyInfo()->SetStatus(STATUS_SEARCHING_FOR_PARTNER, true);
char sz[ID_STRING_SIZE];
if (g_globals.GetFormattedID(sz, ID_STRING_SIZE, szPartener) == -1)
return false;
m_dwConnectingStatus=0;
SendMessage(MSG_PROXY_FIND_PARTNER, (char*)sz, (unsigned int)ID_STRING_SIZE);
g_globals.m_logger.WriteFormated("CACConnection: FindPartner wait %d seconds", m_pProxyConnection->GetProxyInfo()->GetConnectTimeout());
DWORD dwStartTime=GetTickCount();
while (!m_dwConnectingStatus)
{
Sleep(10000);
if (GetTickCount()-dwStartTime>(unsigned int)m_pProxyConnection->GetProxyInfo()->GetConnectTimeout()*1000)
break;
}
g_globals.m_logger.Write("CACConnection: FindPartner wait end");
m_pProxyConnection->GetProxyInfo()->SetStatus(STATUS_SEARCHING_FOR_PARTNER, false);
g_globals.m_logger.WriteFormated("CACConnection: FindPartner status=%d", m_dwConnectingStatus);
return (bool)(m_dwConnectingStatus==MSG_PROXY_PARTNERFOUND);
}
//try to connect to szPartner on echoServer
//sends MSG_CONNECT_TO_PEER message and wait for echoServer answer
bool CACConnection::ConnectToPeer(const char* szPartener, char* szChannelCode, char* szPeerPublicKey)
{
g_globals.m_logger.WriteFormated("CACConnection: Try connect to peer %s, channel code ", szPartener, szChannelCode);
char *pBuff = NULL;
DWORD dwTotalLength = 0;
DWORD dwTemp = 0;
dwTotalLength += ID_STRING_SIZE;//(DWORD)strlen(szPartener)+1;
dwTotalLength += m_rsaKeys.GetPublicKeyLength();
pBuff = new char[dwTotalLength];
memset(pBuff, 0, dwTotalLength);
g_globals.GetFormattedID(pBuff, ID_STRING_SIZE, szPartener);
dwTemp = ID_STRING_SIZE;//(DWORD)strlen(szPartener)+1;
/* set DHpart1 to all zero if no encryption */
if (m_nEncryptionLevel==1)
memcpy(pBuff+dwTemp, m_rsaKeys.GetPublicKey(), m_rsaKeys.GetPublicKeyLength());
else
memset(pBuff+dwTemp, 0, m_rsaKeys.GetPublicKeyLength());
m_dwConnectingStatus=0;
m_szPeerPublicKey[0]=m_szChannelCode[0]=0;
SendMessage(MSG_CONNECT_TO_PEER, pBuff, dwTotalLength);
delete [] pBuff;
DWORD dwStartTime=GetTickCount();
while (m_dwConnectingStatus!=MSG_PEER_KEY && m_dwConnectingStatus!=MSG_PROXY_PARTNERNOTFOUND)
{
Sleep(10000);
if (GetTickCount()-dwStartTime>(unsigned int)m_pProxyConnection->GetProxyInfo()->GetConnectTimeout()*1000)
break;
}
if (m_dwConnectingStatus==MSG_PEER_KEY)
{
strcpy(szChannelCode, m_szChannelCode);
memcpy(szPeerPublicKey, m_szPeerPublicKey, RSA_PUBLIC_KEY*sizeof(unsigned int));
}
if (m_dwConnectingStatus==MSG_PEER_KEY)
g_globals.m_logger.WriteFormated("CACConnection: Success connect to peer %s, channel code ", szPartener, szChannelCode);
else
g_globals.m_logger.WriteFormated("CACConnection: Fail connect to peer %s, channel code ", szPartener, szChannelCode);
return m_dwConnectingStatus==MSG_PEER_KEY;
}
================================================
FILE: Bundles/Echoware/ACConnection.h
================================================
#ifndef _ACCONNECTION_H
#define _ACCONNECTION_H
#if _MSC_VER > 1000
#pragma once
#endif
#include "APISocket.h"
#include "CritSection.h"
#include "RSAKeys.h"
class CProxyConnection;
class CBuffer;
/*
Authentication channel class
It is used for client authentication and identification on the echoServer
*/
class CACConnection :
public APISocket::CClientSocket
{
public:
CACConnection(CProxyConnection* pProxyConnection);
virtual ~CACConnection(void);
//connect to echoServer
int Connect();
//disconnect from echoServer
bool Disconnect();
void StopConnect();
//sets the encryption level
void SetEncryptionLevel(int level);
//find partner on echoServer
bool FindPartner(const char* szPartener);
//connect to peer on echoServer
bool ConnectToPeer(const char* szPartener);
bool ConnectToPeer(const char* szPartener, char* szChannelCode, char* szPeerPublicKey);
//generate a session key from a public key
char* GenerateSessionKey(char* szSessionKey, char* szPeerPublicKey)
{
m_rsaKeys.GenerateSessionKey(szPeerPublicKey, szSessionKey);
return szSessionKey;
}
protected:
//overwrited notification functions
void OnReceive(char* buff, int len);
void OnSend(char* buff, int& len);
virtual void OnError(int error);
virtual void OnTimer();
//construct message to send to echoServer
void SendMessage(DWORD message, char *data, unsigned int datalen);
//construct mesage MSG_PROXY_PASSWORD
void SendEncryptedPass(char * pData,DWORD dwDataLength);
//connect to szIP:nPort
bool Connect(const char* szIP, unsigned int nPort);
protected:
CCritSection m_critSection;
int m_nEncryptionLevel;
//parent proxy connection
CProxyConnection* m_pProxyConnection;
bool m_bStopConnecting;
bool m_bConnected;
int m_dwConnectingStatus;
//buffers for recv/send on socket
CBuffer* m_pReadBuffer;
CBuffer* m_pSendBuffer;
CRSAKeys m_rsaKeys;
char m_pRemotePublicKey[RSA_PUBLIC_KEY];
private:
char m_szChannelCode[12];
char m_szPeerID[256];
char m_szPeerPublicKey[RSA_PUBLIC_KEY*sizeof(unsigned int)+1];
DWORD m_dwLastIsAliveMsg;
};
#endif
================================================
FILE: Bundles/Echoware/AES.cpp
================================================
#include "StdAfx.h"
#include "aes.h"
CAES::CAES(void)
{
}
CAES::~CAES(void)
{
}
void CAES::Decrypt(const unsigned char *in, int length, unsigned char *out)
{
CryptData(in, out, length, AES_DECRYPT);
}
void CAES::Encrypt(const unsigned char *in, int length, unsigned char *out)
{
CryptData(in, out, length, AES_ENCRYPT);
}
int CAES::SetDecryptKey(const unsigned char *userKey, const int bits)
{
//return AES_set_decrypt_key(userKey, bits, &m_aesDecKey);
memcpy(m_userDecKey, userKey, bits);
return 0;
}
int CAES::SetEncryptKey(const unsigned char *userKey, const int bits)
{
//return AES_set_encrypt_key(userKey, bits, &m_aesEncKey);
memcpy(m_userEncKey, userKey, bits);
return 0;
}
void CAES::CryptData(const unsigned char *in, unsigned char *out, int length, const int enc)
{
AES_KEY aesKey;
if (AES_ENCRYPT == enc)
AES_set_encrypt_key(m_userEncKey, 128, &aesKey);
else
AES_set_decrypt_key(m_userDecKey, 128, &aesKey);
unsigned long len = length;
unsigned char tmp[AES_BLOCK_SIZE];
while (len >= AES_BLOCK_SIZE)
{
memset(tmp,0,AES_BLOCK_SIZE);
memcpy(tmp,in,AES_BLOCK_SIZE);
if (AES_ENCRYPT == enc)
{
AES_encrypt(tmp, out, &aesKey);
}
else
{
AES_decrypt(tmp, out, &aesKey);
}
len -= AES_BLOCK_SIZE;
in += AES_BLOCK_SIZE;
out += AES_BLOCK_SIZE;
}
if (len)
{
memset(tmp,0,AES_BLOCK_SIZE);
memcpy(tmp,in,AES_BLOCK_SIZE);
if (AES_ENCRYPT == enc)
{
AES_encrypt(tmp, tmp, &aesKey);
}
else
{
AES_decrypt(tmp, tmp, &aesKey);
}
memcpy(out, tmp, AES_BLOCK_SIZE);
}
}
================================================
FILE: Bundles/Echoware/AES.h
================================================
#pragma once
#include "OpenSSL/aes.h"
//wrapper class for AES encryption
class CAES
{
public:
CAES(void);
~CAES(void);
void Decrypt(const unsigned char *in, int length, unsigned char *out);
void Encrypt(const unsigned char *in, int length, unsigned char *out);
int SetDecryptKey(const unsigned char *userKey, const int bits);
int SetEncryptKey(const unsigned char *userKey, const int bits);
protected:
void CryptData(const unsigned char *in, unsigned char *out, int length, const int enc);
protected:
AES_KEY m_aesEncKey;
AES_KEY m_aesDecKey;
public:
unsigned char m_userDecKey[128];
unsigned char m_userEncKey[128];
};
================================================
FILE: Bundles/Echoware/APISocket/APISocket.h
================================================
#ifndef __APISOCKET__
#define __APISOCKET__
#if _MSC_VER > 1000
#pragma once
#endif
#undef FD_SETSIZE
#define FD_SETSIZE 1024
#define __stdcall
#define MAX_BUFFER (64*1024)
#import <CoreFoundation/CoreFoundation.h>
#include "CritSection.h"
namespace APISocket
{
//generic socket class
class CSocket
{
public:
CSocket(int sock=0);
CSocket(const CSocket& other);
virtual ~CSocket();
//[in]Timeouts in milliseconds
void SetTimeouts(int nConnectTimeout=-1, int nSendTimeout=-1, int nRecvTimeout=-1, int nAcceptTimeOut=-1);
//[in]bBlock : true for bloking socket, false for non-blocking socket
void SetBlockMode(bool bBlock);
int GetConnectTimeout();
int GetSendTimeout();
int GetRecvTimeout();
int GetAcceptTimeout();
bool GetBlockMode();
//[in] nPort : port to bind
//return : true or false
virtual bool Create(unsigned int nPort=0);
//return : 0 fail, port bindit for ok
unsigned int Bind(unsigned int nPort=0, bool bLocal=true);
//[in] backlog
//return : true or false
bool Listen(int backlog=10);
//return : -1 for error, 0 for success, 1 for timeout
int Accept(int& sock);
//[in] szServerIP
//[in] nPort
//connect socket to szServer (ip xxx.xxx.xxx.xxx or host name) on port nPort
//return -1 for error, 0 for OK, 1 for timeout
int Connect(const char* szServer, unsigned int nPort);
//shutdown socket
//[in] how : SD_RECEIVE, SD_SEND, SD_BOTH
//return : true or false
bool Shutdown(int how);
//send
//[in] buff : buff to send
//[in] nLen : buff length
//return -1 for error, 0 for OK, 1 for timeout
int Send(const char* buff, int& nLen, int nFlag=0);
//receive
//[in] buff
//[in, out] nLength : size of buff
//[in] flag : 0, MSG_PEEK or MSG_OOB
//return -1 for error, 0 for OK, 1 for timeout
int Receive(char* buff, int& nLength, int nFlag=0);
bool Close();
virtual void OnClose();
virtual void OnError(int error);
virtual void OnReceive(char* buff, int len);
virtual void OnSend(char* buff, int &len);
//gets the TCP_NODELAY socket option
//return true for success and false for error to get the TCP_NODELAY socket option
bool GetSockOption(bool& bTcpNodelay);
//sets the TCP_NODELAY socket option
//return true for success and false for error to set the TCP_NODELAY socket option
bool SetSockOption(bool bTcpNodelay);
//gets the socket last error
int GetLastError();
bool GetLocalPort(unsigned int& nPort);
bool GetRemotePort(unsigned int& nPort);
bool GetRemoteIP(char* szRemoteIP);
//unsigned int GetSock(){return m_sock;};
//atach a sock to this class
int Attach(int sock);
//detach the sock from this class
int Detach();
void OnWrite();
void OnRead();
int Send();
int ReadableByteCount();
int getSocket();
bool StartAsync();
bool StopAsync();
protected:
//Set the socket to either blocking or non-blocking mode
//[in] bNonBlock : true for non-blocking mode, false for blocking mode
//return true or false
bool NonBlock(bool bNonBlock);
//[in] nTimeout in milliseconds
//[in] nType 0 for read, 1 for write
//return -1 for error, 0 for OK, 1 for timeout
int WaitNonBlockCompletion(int nTimeout, int nType);
protected:
int m_sock;
int m_nConnectTimeout, m_nSendTimeout, m_nRecvTimeout, m_nAcceptTimeout;
bool m_bBlockMode;
void* m_hAsyncThread;
unsigned long m_dwAsyncThread;
bool shouldAsyncQuit;
bool hasAsyncQuit;
bool inAsyncNotificationLoop;
bool errored;
CCritSection m_csAsync;
static unsigned long AsyncThreadProc(void* lpParameter);
void AsyncNotifications();
void AsyncNotificationLoop();
};
//a base class for client socket
class CClientSocket : public CSocket
{
public:
CClientSocket(int sock=0);
virtual ~CClientSocket(void);
//start send data
virtual bool StartSend();
//stop send data
//[in] dwTimeout : milliseconds for waitting to stop
bool StopSend(unsigned long dwWaitTimeout);
virtual void OnTimer();
protected:
bool StartRoutine();
bool StopRoutine(unsigned long dwWaitTimeout);
//routine thread handle
void* m_hRoutineThread;
//routine thread id
unsigned long m_dwRoutineThread;
//some routine thread proc
static unsigned long __stdcall RoutineThreadProc(void* lpParameter);
bool routineShouldQuit;
bool routineHasQuit;
};
//a base class for server socket
class CServerSocket : public CSocket
{
public:
CServerSocket(unsigned int nPort=0);
virtual ~CServerSocket(void);
//return : true or false
virtual bool Create();
//[in] backlog
//return : true or false
bool Listen(int backlog=10);
//start waitting for clients
bool StartAccept();
//stop waitting for clients
//[in] dwTimeout : milliseconds for waitting to stop
bool StopAccept(unsigned long dwWaitTimeout);
//notification : new client connected
virtual void OnNewClient(int sock);
virtual void OnLeaveClient(CSocket* pClient);
unsigned int GetListenPort();
protected:
//listen port
unsigned int m_nPort;
//accept thread handle
void* m_hAcceptThread;
//accept thread id
unsigned long m_dwAcceptThread;
//accept thread proc
static unsigned long __stdcall AcceptThreadProc(void* lpParameter);
bool shouldQuit;
bool hasQuit;
};
}
#endif
================================================
FILE: Bundles/Echoware/APISocket/ClientSocket.cpp
================================================
#include "stdafx.h"
#include "APISocket.h"
#include "EchoToOSX.h"
APISocket::CClientSocket::CClientSocket(int sock /*=0*/)
:APISocket::CSocket(sock)
{
m_hRoutineThread=0;
m_dwRoutineThread=0;
}
APISocket::CClientSocket::~CClientSocket(void)
{
}
bool APISocket::CClientSocket::StartSend()
{
bool res = StartRoutine();
int ret = Send();
return res && (ret == 0);
}
bool APISocket::CClientSocket::StopSend(unsigned long dwWaitTimeout)
{
return StopRoutine(dwWaitTimeout);
}
bool APISocket::CClientSocket::StartRoutine()
{
if (m_hRoutineThread)
return true;
routineShouldQuit=0;
routineHasQuit=0;
if (!(m_hRoutineThread=CreateThread(0, 0, RoutineThreadProc, this, 0, &m_dwRoutineThread)))
return false;
return true;
}
bool APISocket::CClientSocket::StopRoutine(unsigned long dwWaitTimeout)
{
if (!m_hRoutineThread)
return true;
bool termResult = ShutdownThread(m_hRoutineThread, dwWaitTimeout, &routineShouldQuit, &routineHasQuit);
m_hRoutineThread=0;
m_dwRoutineThread=0;
return termResult;
}
void APISocket::CClientSocket::OnTimer()
{
}
unsigned long __stdcall APISocket::CClientSocket::RoutineThreadProc(void* lpParameter)
{
APISocket::CClientSocket* pClient = (APISocket::CClientSocket*) lpParameter;
while (true)
{
if (pClient->routineShouldQuit)
break;
pClient->OnTimer();
Sleep(500000);
}
pClient->routineHasQuit = 1;
return 0;
}
================================================
FILE: Bundles/Echoware/APISocket/ServerSocket.cpp
================================================
#include "stdafx.h"
#include "APISocket.h"
APISocket::CServerSocket::CServerSocket(unsigned int nPort/*=0*/)
:APISocket::CSocket()
{
m_nPort=nPort;
m_hAcceptThread=0;
m_dwAcceptThread=0;
}
APISocket::CServerSocket::~CServerSocket(void)
{
}
bool APISocket::CServerSocket::Create()
{
if (!CSocket::Create(m_nPort))
return false;
if (!(m_nPort=Bind(m_nPort)))
return false;
return true;
}
bool APISocket::CServerSocket::Listen(int backlog)
{
return CSocket::Listen();
}
unsigned int APISocket::CServerSocket::GetListenPort()
{
return m_nPort;
}
bool APISocket::CServerSocket::StartAccept()
{
if (m_hAcceptThread)
return true;
shouldQuit = 0;
hasQuit = 0;
if (!(m_hAcceptThread=CreateThread(0, 0, AcceptThreadProc, this, 0, &m_dwAcceptThread)))
return false;
return true;
}
bool APISocket::CServerSocket::StopAccept(unsigned long dwWaitTimeout)
{
bool termResult = ShutdownThread(m_hAcceptThread, dwWaitTimeout, &shouldQuit, &hasQuit);
m_hAcceptThread = 0;
m_dwAcceptThread = 0;
return termResult;
}
void APISocket::CServerSocket::OnNewClient(int sock)
{
}
void APISocket::CServerSocket::OnLeaveClient(CSocket* pClient)
{
}
unsigned long __stdcall APISocket::CServerSocket::AcceptThreadProc(void* lpParameter)
{
CServerSocket* pServerSock= (CServerSocket*) lpParameter;
int sock;
while (true)
{
if (pServerSock->shouldQuit)
break;
int rc=pServerSock->Accept(sock);
if (rc==0)
pServerSock->OnNewClient(sock);
else if (rc==-1)
{
if (pServerSock->shouldQuit)
break;
pServerSock->OnError(pServerSock->GetLastError());
Sleep(10000);
}
else if (rc==1)
Sleep(1000);
}
pServerSock->hasQuit=1;
return 0;
}
================================================
FILE: Bundles/Echoware/APISocket/Socket.cpp
================================================
#include "apisocket.h"
#include <stdio.h>
#include "errno.h"
#include <sys/types.h>
#include <sys/socket.h>
#include "sys/fcntl.h"
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include "../EchoToOSX.h"
#include <string.h>
#include <sys/select.h>
#include <unistd.h>
#include "globals.h"
APISocket::CSocket::CSocket(int sock/*=0*/)
{
m_sock = sock;
errored = false;
m_nConnectTimeout = m_nSendTimeout = m_nRecvTimeout = m_nAcceptTimeout = -1;
m_bBlockMode = false;
m_hAsyncThread = 0;
m_dwAsyncThread = 0;
inAsyncNotificationLoop = false;
StartAsync();
}
APISocket::CSocket::CSocket(const CSocket& other)
{
m_sock = other.m_sock;
errored = false;
m_nConnectTimeout = other.m_nConnectTimeout;
m_nSendTimeout = other.m_nSendTimeout;
m_nRecvTimeout = other.m_nRecvTimeout;
m_nAcceptTimeout = other.m_nAcceptTimeout;
m_bBlockMode = other.m_bBlockMode;
m_hAsyncThread = 0;
m_dwAsyncThread = 0;
inAsyncNotificationLoop = false;
StartAsync();
}
APISocket::CSocket::~CSocket()
{
StopAsync();
Close();
m_sock = 0;
}
void APISocket::CSocket::SetTimeouts(int nConnectTimeout/*=-1*/, int nSendTimeout/*=-1*/, int nRecvTimeout/*=-1*/, int nAcceptTimeout/*=-1*/)
{
m_nConnectTimeout = nConnectTimeout;
m_nSendTimeout = nSendTimeout;
m_nRecvTimeout = nRecvTimeout;
m_nAcceptTimeout = nAcceptTimeout;
}
void APISocket::CSocket::SetBlockMode(bool bBlock)
{
m_bBlockMode = bBlock;
NonBlock(!bBlock);
}
int APISocket::CSocket::GetConnectTimeout()
{
return m_nConnectTimeout;
}
int APISocket::CSocket::GetSendTimeout()
{
return m_nSendTimeout;
}
int APISocket::CSocket::GetRecvTimeout()
{
return m_nRecvTimeout;
}
int APISocket::CSocket::GetAcceptTimeout()
{
return m_nAcceptTimeout;
}
bool APISocket::CSocket::GetBlockMode()
{
return m_bBlockMode;
}
bool APISocket::CSocket::Create(unsigned int nPort /*=0*/)
{
int sock = socket(AF_INET, SOCK_STREAM, 0);
if (!sock)
sock = socket(AF_INET, SOCK_STREAM, 0);
if (!(sock < 0))
{
m_sock = sock;
SetSockOption(true);
return true;
}
return false;
}
unsigned int APISocket::CSocket::Bind(unsigned int nPort/*=0*/, bool bLocal/*=true*/)
{
struct sockaddr_in self;
memset(&self, 0, sizeof(self));
self.sin_family = AF_INET;
self.sin_port = htons(nPort);
if (!bLocal)
self.sin_addr.s_addr = htonl(INADDR_ANY);
else
self.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
if (bind(m_sock, (struct sockaddr *)&self, sizeof(self)) != 0)
return 0;
if (!nPort)
GetLocalPort(nPort);
return nPort;
}
bool APISocket::CSocket::Listen(int backlog)
{
return !listen(m_sock, backlog);
}
int APISocket::CSocket::Accept(int& sock)
{
struct sockaddr_in client_addr;
int addrlen=sizeof(client_addr);
sock = 0;
if (!m_bBlockMode)
{
int rc = 0;
if ((rc = WaitNonBlockCompletion(m_nAcceptTimeout, 0)) != 0)
return rc;
}
sock = accept(m_sock,(struct sockaddr *)&client_addr,(socklen_t *) &addrlen);
if (sock == INVALID_SOCKET)
return -1;
return 0;
}
int APISocket::CSocket::Connect(const char* szServer, unsigned int nPort)
{
if (!m_sock)
return -1;
errored = false;
StartAsync();
struct sockaddr_in sockAddr;
ZeroMemory(&sockAddr, sizeof(sockAddr));
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = htons(nPort);
sockAddr.sin_addr.s_addr = inet_addr(szServer);
if (sockAddr.sin_addr.s_addr == INADDR_NONE)
{
LPHOSTENT lphost;
lphost = gethostbyname(szServer);
if (lphost != NULL)
sockAddr.sin_addr.s_addr = ((struct in_addr *)lphost->h_addr)->s_addr;
}
if (connect(m_sock, (struct sockaddr*)&sockAddr, sizeof(sockAddr)) != 0)
{
if (!m_bBlockMode)
{
while (!inAsyncNotificationLoop) Sleep(10000);
return WaitNonBlockCompletion(m_nConnectTimeout, 1);
}
}
while (!inAsyncNotificationLoop) Sleep(10000);
return 0;
}
bool APISocket::CSocket::Close()
{
bool ret = false;
Shutdown(SD_BOTH);
if (m_sock)
ret = !closesocket(m_sock);
m_sock = 0;
return ret;
}
bool APISocket::CSocket::Shutdown(int how)
{
if (m_sock)
return !shutdown(m_sock, how);
else
return false;
}
int APISocket::CSocket::Send(const char* buff, int& nLen, int nFlag/*=0*/)
{
nLen=send(m_sock, buff, nLen, nFlag);
if (nLen<=0)
{
if (nLen==SOCKET_ERROR)
{
nLen=0;
int err;
uint errlen = sizeof(err);
getsockopt(m_sock, SOL_SOCKET, SO_ERROR, (char*)&err, &errlen);
return (err == WSAEWOULDBLOCK)?(0):(-1);
}
return -1;
}
return 0;
}
int APISocket::CSocket::Receive(char* buff, int& nLength, int nFlag/*=0*/)
{
nLength=recv(m_sock, buff, nLength, nFlag);
if (nLength<=0)
{
if (nLength==SOCKET_ERROR)
{
nLength=0;
int err;
uint errlen = sizeof(err);
getsockopt(m_sock, SOL_SOCKET, SO_ERROR, (char*)&err, &errlen);
return (err == WSAEWOULDBLOCK)?(0):(-1);
}
return -1;
}
return 0;
}
//gets the TCP_NODELAY socket option
//return true for success and false for error to get the TCP_NODELAY socket option
bool APISocket::CSocket::GetSockOption(bool& bTcpNodelay)
{
int on;
uint len=sizeof(on);
bool ret=!getsockopt(m_sock, IPPROTO_TCP, TCP_NODELAY, (char*)&on, &len);
bTcpNodelay=(on!=0);
return ret;
}
//sets the TCP_NODELAY socket option
//return true for success and false for error to set the TCP_NODELAY socket option
bool APISocket::CSocket::SetSockOption(bool bTcpNodelay)
{
int on=(int)bTcpNodelay;
return !setsockopt(m_sock, IPPROTO_TCP, TCP_NODELAY, (char*)&on, sizeof(on));
}
int APISocket::CSocket::GetLastError()
{
return WSAGetLastError();
}
bool APISocket::CSocket::NonBlock(bool bNonBlock)
{
if (bNonBlock)
return (fcntl(m_sock, F_SETFL, O_NONBLOCK) != -1);
else
return (fcntl(m_sock, F_SETFL, fcntl(m_sock, F_GETFL, 0) & ~O_NONBLOCK) != -1);
}
int APISocket::CSocket::WaitNonBlockCompletion(int nTimeout, int nType)
{
fd_set fd;
struct timeval time;
time.tv_sec = nTimeout/1000;
time.tv_usec = (nTimeout-time.tv_sec*1000)*1000;
FD_ZERO(&fd);
FD_SET(m_sock, &fd);
int rc=0;
if (nType==0)
rc = select(m_sock+1, &fd, NULL, NULL, &time);
else if (nType==1)
rc = select(m_sock+1, NULL, &fd, NULL, &time);
if (rc==-1)
return -1;// error
else if (rc==0)
return 1;//timeout
if (FD_ISSET(m_sock, &fd))
return 0;
else
return -1;
}
bool APISocket::CSocket::GetLocalPort(unsigned int& nPort)
{
struct sockaddr_in self;
memset(&self, 0, sizeof(self));
uint len=sizeof(self);
if (getsockname( m_sock, (struct sockaddr*)&self, &len ))
return false;
nPort=ntohs(self.sin_port);
return true;
}
bool APISocket::CSocket::GetRemotePort(unsigned int& nPort)
{
struct sockaddr_in self;
memset(&self, 0, sizeof(self));
int len=sizeof(self);
if (getpeername( m_sock, (struct sockaddr*)&self, (socklen_t *) &len ))
return false;
nPort=ntohs(self.sin_port);
return true;
}
bool APISocket::CSocket::GetRemoteIP(char* szRemoteIP)
{
struct sockaddr_in self;
memset(&self, 0, sizeof(self));
uint len=sizeof(self);
if (getpeername( m_sock, (struct sockaddr*)&self, &len ))
return false;
sprintf(szRemoteIP, "%s", inet_ntoa(self.sin_addr));
return true;
}
int APISocket::CSocket::Attach(int sock)
{
int old=m_sock;
m_sock=sock;
return old;
}
int APISocket::CSocket::Detach()
{
int old=m_sock;
m_sock=0;
return old;
}
void APISocket::CSocket::OnClose()
{
}
void APISocket::CSocket::OnError(int error)
{
errored = true;
g_globals.m_logger.WriteFormated("CSocket::OnError sock = %d err = %d", m_sock, error);
}
void APISocket::CSocket::OnReceive(char* buff, int len)
{
}
void APISocket::CSocket::OnSend(char* buff, int &len)
{
len = 0;
}
void APISocket::CSocket::OnWrite()
{
errored = false;
int r = Send();
}
void APISocket::CSocket::OnRead()
{
errored = false;
int len_to_read = ReadableByteCount();
if (len_to_read <= 0) return;
if (len_to_read > 65000) /////////////
len_to_read = 65000; ////////////
char *buff = new char[len_to_read];
int len_readed = len_to_read;
int r = Receive(buff, len_readed);
if (len_readed <= 0)
{
delete [] buff;
return;
}
OnReceive(buff, len_readed);
delete[] buff;
}
int APISocket::CSocket::ReadableByteCount()
{
if (!m_sock)
return 0;
int bytesAvailable = 0;
if (ioctl(m_sock, FIONREAD, &bytesAvailable) == -1)
{
if (errno == EINVAL)
bytesAvailable = -1;
else
bytesAvailable = 0;
}
return bytesAvailable;
}
int APISocket::CSocket::Send()
{
if (!m_sock || errored)
return 1;
char *buff = new char[MAX_BUFFER];
int len = MAX_BUFFER;
OnSend(buff, len);
int ret = 0;
if (len > 0)
ret = Send(buff, len);
delete [] buff;
return ret;
}
int APISocket::CSocket::getSocket()
{
return m_sock;
}
bool APISocket::CSocket::StartAsync()
{
if (m_hAsyncThread)
return true;
inAsyncNotificationLoop = false;
shouldAsyncQuit = 0;
hasAsyncQuit = 0;
if (!(m_hAsyncThread = CreateThread(0, 0, AsyncThreadProc, this, 0, &m_dwAsyncThread)))
return false;
return true;
}
bool APISocket::CSocket::StopAsync()
{
if (!m_hAsyncThread)
return true;
shouldAsyncQuit = true;
m_csAsync.Lock();
m_csAsync.Unlock();
bool stopResult = ShutdownThread(m_hAsyncThread, THREAD_STOP_TIMEOUT, &shouldAsyncQuit, &hasAsyncQuit);
m_hAsyncThread = 0;
m_dwAsyncThread = 0;
return stopResult;
}
void APISocket::CSocket::AsyncNotifications()
{
if (!m_sock) return;
fd_set read_fds, write_fds;
FD_ZERO(&read_fds);
FD_ZERO(&write_fds);
FD_SET(m_sock, &read_fds);
FD_SET(m_sock, &write_fds);
int res = select(m_sock + 1, &read_fds, &write_fds, NULL, NULL);
if (res > 0)
{
if (FD_ISSET(m_sock, &read_fds))
{
if (ReadableByteCount())
{
inAsyncNotificationLoop = true;
OnRead();
}
else
{
inAsyncNotificationLoop = true;
OnError(GetLastError());
shouldAsyncQuit = true;
return;
}
}
if (FD_ISSET(m_sock, &write_fds))
{
inAsyncNotificationLoop = true;
OnWrite();
}
}
inAsyncNotificationLoop = true;
}
void APISocket::CSocket::AsyncNotificationLoop()
{
while (!shouldAsyncQuit)
{
AsyncNotifications();
Sleep(10000);
}
inAsyncNotificationLoop = false;
m_hAsyncThread = 0;
m_dwAsyncThread = 0;
hasAsyncQuit = 1;
}
unsigned long APISocket::CSocket::AsyncThreadProc(void* lpParameter)
{
APISocket::CSocket *socket = (APISocket::CSocket*)lpParameter;
socket->m_csAsync.Lock();
socket->AsyncNotificationLoop();
socket->m_csAsync.Unlock();
Sleep(50000);
return 0;
}
================================================
FILE: Bundles/Echoware/CritSection.cpp
================================================
#include "StdAfx.h"
#include "critsection.h"
#include "errno.h"
CCritSection::CCritSection(void)
{
pthread_mutex_init(&m_critSection, NULL);
}
CCritSection::~CCritSection(void)
{
if (pthread_mutex_destroy(&m_critSection) == EBUSY)
{
Unlock();
pthread_mutex_destroy(&m_critSection);
}
}
void CCritSection::Lock()
{
pthread_testcancel();
pthread_mutex_lock(&m_critSection);
}
void CCritSection::Unlock()
{
pthread_mutex_unlock(&m_critSection);
pthread_testcancel();
}
================================================
FILE: Bundles/Echoware/CritSection.h
================================================
#ifndef _CRITSECTION_H
#define _CRITSECTION_H
#if _MSC_VER > 1000
#pragma once
#endif
#include "EchoToOSX.h"
//critical section class
class CCritSection
{
public:
CCritSection(void);
virtual ~CCritSection(void);
void Lock();
void Unlock();
protected:
pthread_mutex_t m_critSection;
//CRITICAL_SECTION m_critSection;
};
#endif
================================================
FILE: Bundles/Echoware/DataChannel.cpp
================================================
#include "StdAfx.h"
#include "DataChannel.h"
#include "DataChannels.h"
#include "LocalDataChannel.h"
#include "EchoSrvDataChannel.h"
#include "DllProxyInfo.h"
#define RSA_PUBLIC_KEY 80
#pragma warning(disable : 4355)
CDataChannel::CDataChannel(CDataChannels* pDataChannels, const char* szChannelCode,
const char* szSessionKey, bool bEncryptDecrypt) :
m_localListener(this), m_bEncryptDecrypt(bEncryptDecrypt)
{
m_bLocalDC=false;
m_pDataChannels=pDataChannels;
m_pLocalDataChannel=new CLocalDataChannel(this);
m_pEchoServerDataChannel=new CEchoSrvDataChannel(this);
const CDllProxyInfo* pProxyInfo=pDataChannels->GetProxyInfo();
m_pLocalDataChannel->SetTimeouts(pProxyInfo->GetConnectTimeout()*1000,
pProxyInfo->GetSendTimeout()*1000,
pProxyInfo->GetReceiveTimeout()*1000);
m_pEchoServerDataChannel->SetTimeouts(pProxyInfo->GetConnectTimeout()*1000,
pProxyInfo->GetSendTimeout()*1000,
pProxyInfo->GetReceiveTimeout()*1000);
m_szChannelCode=new char[12];
strcpy(m_szChannelCode, szChannelCode);
m_szSessionKey=new char[1024];
strcpy(m_szSessionKey, szSessionKey);
m_aes.SetEncryptKey((const unsigned char*)m_szSessionKey, 128);
m_aes.SetDecryptKey((const unsigned char*)m_szSessionKey, 128);
g_globals.m_logger.WriteFormated("CDataChannel: New data channel: code=%s , encrypt=%c", szChannelCode, (m_bEncryptDecrypt)?('Y'):('N'));
}
#pragma warning(default : 4355)
CDataChannel::~CDataChannel(void)
{
StopListen();
if (m_pEchoServerDataChannel)
{
// m_pEchoServerDataChannel->Shutdown(SD_BOTH);
m_pEchoServerDataChannel->Close();
m_pEchoServerDataChannel->StopSend(THREAD_STOP_TIMEOUT);
}
if (m_pLocalDataChannel)
{
// m_pLocalDataChannel->Shutdown(SD_BOTH);
m_pLocalDataChannel->Close();
m_pLocalDataChannel->StopSend(THREAD_STOP_TIMEOUT);
}
if (m_pEchoServerDataChannel)
{
delete m_pEchoServerDataChannel;
m_pEchoServerDataChannel=0;
}
if (m_pLocalDataChannel)
{
delete m_pLocalDataChannel;
m_pLocalDataChannel=0;
}
delete []m_szChannelCode;
delete []m_szSessionKey;
}
bool CDataChannel::ConnectEchoServer()
{
g_globals.m_logger.Write("=>ConnectEchoServer");
if (!m_pEchoServerDataChannel->Create() ||
m_pEchoServerDataChannel->Connect(m_pDataChannels->GetProxyInfo()->GetIP(),
atoi(m_pDataChannels->GetProxyInfo()->GetPort()),
m_szChannelCode,
m_pDataChannels->GetProxyInfo()->GetMyID())!=0)
{
OnError(m_pEchoServerDataChannel, 1);
g_globals.m_logger.WriteFormated("CDataChannel: Error connect data channel %p to channel code %s", this, m_szChannelCode);
return false;
}
m_pLocalDataChannel->SetPairChannel(m_pEchoServerDataChannel);
m_pEchoServerDataChannel->SetPairChannel(m_pLocalDataChannel);
m_pEchoServerDataChannel->SetOffLoadingDataChannel(true);
m_pEchoServerDataChannel->StartSend();
g_globals.m_logger.Write("<=ConnectEchoServer");
return true;
}
bool CDataChannel::ConnectLocalServer()
{
m_pDataChannels->LocalConnectDataChannel(this);
return true;
}
//try to connect to the local server on the port nPort
bool CDataChannel::ConnectLocalServer(unsigned int nPort)
{
//g_globals.m_logger.Write("=>CDataChannel::ConnectLocalServer");
m_crtLocalDCSection.Lock();
if (m_bLocalDC)
{
m_crtLocalDCSection.Unlock();
return true;
}
g_globals.m_logger.WriteFormated("=>Try connect local server port: %d", nPort);
APISocket::CClientSocket client;
if (!client.Create())
{
m_crtLocalDCSection.Unlock();
g_globals.m_logger.Write("<=Try connect local server - error create");
return false;
}
client.SetBlockMode(false);
const CDllProxyInfo* pProxyInfo=m_pDataChannels->GetProxyInfo();
client.SetTimeouts(pProxyInfo->GetConnectTimeout(), pProxyInfo->GetSendTimeout(), pProxyInfo->GetReceiveTimeout());
int connectRes = client.Connect("127.0.0.1", nPort);
if (connectRes != 0)
{
m_crtLocalDCSection.Unlock();
g_globals.m_logger.WriteFormated("<=Try connect local server - error connect err code: %d", connectRes);
return false;
}
m_bLocalDC=true;
OnLocalDataChannel(client.Detach(), true);
g_globals.m_logger.Write("<=Try connect local server - success");
m_crtLocalDCSection.Unlock();
return true;
}
//start to listen for local connections
bool CDataChannel::Listen(unsigned int& nPort)
{
g_globals.m_logger.Write("CDataChannel: Enter Listen for local client");
if (!m_localListener.Create())
return false;
if (!m_localListener.Listen())
return false;
nPort=m_localListener.GetListenPort();
if (!m_localListener.StartAccept())
return false;
g_globals.m_logger.Write("CDataChannel: Listen for local client started");
return true;
}
//stop listen for local connections
void CDataChannel::StopListen()
{
m_localListener.Close();
m_localListener.StopAccept(5000);
}
//notify that there was an error on sockets operations
void CDataChannel::OnError(APISocket::CSocket* pSocket, unsigned int err)
{
if (m_pEchoServerDataChannel == pSocket)
{
g_globals.m_logger.WriteFormated("CDataChannel: Start Remove data channel %p due to error on echochannel %d", this, err);
if (m_pDataChannels)
m_pDataChannels->RemoveDataChannel(this);
g_globals.m_logger.WriteFormated("CDataChannel: End Remove data channel %p", this);
}
else
{
if (m_pEchoServerDataChannel->m_bOffLoadingDataChannel && (m_pEchoServerDataChannel->m_nRetryCounter < RECONNECTION_COUNT))
{
g_globals.m_logger.WriteFormated("CDataChannel: Start trying reuse datachannel %p due to error on localchannel %d", this, err);
((APISocket::CClientSocket*)pSocket)->StopSend(THREAD_STOP_TIMEOUT);
((APISocket::CClientSocket*)pSocket)->StopAsync();
m_pEchoServerDataChannel->ResetRetryTimer();
m_pEchoServerDataChannel->m_fStartRetry = true;
g_globals.m_logger.WriteFormated("CDataChannel: End trying reuse datachannel %p due to error on localchannel %d", this, err);
return;
}
g_globals.m_logger.WriteFormated("CDataChannel: Start Remove data channel %p due to error on localchannel %d", this, err);
if (m_pDataChannels)
m_pDataChannels->RemoveDataChannel(this);
g_globals.m_logger.WriteFormated("CDataChannel: End Remove data channel %p", this);
}
}
//sets the encryption level
void CDataChannel::SetEncriptionLevel(int nLevel)
{
m_pEchoServerDataChannel->SetEncriptionLevel(nLevel);
}
//gets the encryption level
int CDataChannel::GetEncriptionLevel()
{
return m_pEchoServerDataChannel->GetEncriptionLevel();
}
//notify that we have a local connection
//there are 2 types of local connections : OffLoadingDataChannel or not
//try to create the data channel to echoServer
void CDataChannel::OnLocalDataChannel(unsigned int sock, bool bOffLoadingDataChannel/*=false*/)
{
m_pLocalDataChannel->Attach(sock);
//m_pLocalDataChannel->SetOffLoadingDataChannel(bOffLoadingDataChannel);
if (!bOffLoadingDataChannel)
{
g_globals.m_logger.WriteFormated("CDataChannel: Try connect data channel %p to channel code %s", this, m_szChannelCode);
if (!m_pEchoServerDataChannel->Create() ||
m_pEchoServerDataChannel->Connect(m_pDataChannels->GetProxyInfo()->GetIP(),
atoi(m_pDataChannels->GetProxyInfo()->GetPort()),
m_szChannelCode,
m_pDataChannels->GetProxyInfo()->GetMyID())!=0)
{
OnError(m_pEchoServerDataChannel, 1);
g_globals.m_logger.WriteFormated("CDataChannel: Error connect data channel %p to channel code %s", this, m_szChannelCode);
return;
}
g_globals.m_logger.WriteFormated("CDataChannel: Success connect data channel %p to channel code %s", this, m_szChannelCode);
m_pLocalDataChannel->SetPairChannel(m_pEchoServerDataChannel);
m_pEchoServerDataChannel->SetPairChannel(m_pLocalDataChannel);
m_pEchoServerDataChannel->StartSend();
}
m_pLocalDataChannel->StartSend();
}
================================================
FILE: Bundles/Echoware/DataChannel.h
================================================
#ifndef _DATACHANNEL_H
#define _DATACHANNEL_H
#if _MSC_VER > 1000
#pragma once
#endif
class CDataChannels;
class CLocalDataChannel;
class CEchoSrvDataChannel;
class CLocalDCTimer;
#include "LocalListener.h"
#include "AES.h"
//class for pair Local connection<->echoServer connection
class CDataChannel
{
public:
CDataChannel(CDataChannels* pDataChannels, const char* szChannelCode,
const char* szSessionKey, bool bEncryptDecrypt);
virtual ~CDataChannel(void);
//connect to echoServer
bool ConnectEchoServer();
//connect to local server
bool ConnectLocalServer();
//connect to local server
bool ConnectLocalServer(unsigned int nPort);
//listen for local client
bool Listen(unsigned int& nPort);
void StopListen();
void OnError(APISocket::CSocket* pSocket, unsigned int err);
//sets the encryption level for this data channel
void SetEncriptionLevel(int nLevel);
//gets the encryption level for this data channel
int GetEncriptionLevel();
//a local connection
void OnLocalDataChannel(unsigned int sock, bool bOffLoadingDataChannel=false);
const char* GetSessionKey(){return m_szSessionKey;}
CLocalDataChannel* m_pLocalDataChannel;
protected:
//the data channels manager
CDataChannels* m_pDataChannels;
CLocalListener m_localListener;
CEchoSrvDataChannel* m_pEchoServerDataChannel;
char* m_szChannelCode;
char* m_szSessionKey;
public:
CAES m_aes;
bool m_bEncryptDecrypt;
CCritSection m_crtLocalDCSection;
bool m_bLocalDC;
};
#endif
================================================
FILE: Bundles/Echoware/DataChannelSocket.cpp
================================================
#include "StdAfx.h"
#include "datachannelsocket.h"
#include "DataChannel.h"
CDataChannelSocket::CDataChannelSocket(CDataChannel* pDataChannel)
{
m_pDataChannel=pDataChannel;
m_pRecvBuffer=new CBuffer();
m_pSendBuffer=new CBuffer();
m_nEncriptionLevel=1;
m_pPairChannel=0;
}
CDataChannelSocket::~CDataChannelSocket(void)
{
StopSend(THREAD_STOP_TIMEOUT);
Close();
delete m_pRecvBuffer;
m_pRecvBuffer=0;
delete m_pSendBuffer;
m_pSendBuffer=0;
}
void CDataChannelSocket::OnReceive(char* buff, int len)
{
m_pPairChannel->WriteData(buff, len);
}
void CDataChannelSocket::OnSend(char* buff, int& len)
{
len = m_pSendBuffer->Read(buff, len);
}
void CDataChannelSocket::OnError(int error)
{
CClientSocket::OnError(error);
m_pDataChannel->OnError(this, error);
}
//sets the pair data channel for this data channel
void CDataChannelSocket::SetPairChannel(CDataChannelSocket* pPairChannel)
{
m_pPairChannel=pPairChannel;
}
//gets the pair data channel for this data channel
CDataChannelSocket* CDataChannelSocket::GetPairChannel()
{
return m_pPairChannel;
}
void CDataChannelSocket::ReadData(char* buff, unsigned int& read_size)
{
read_size = m_pRecvBuffer->Read(buff, read_size);
}
void CDataChannelSocket::WriteData(char* buff, unsigned int write_size)
{
m_pSendBuffer->Write(buff, write_size);
}
//sets the encryption level for this data channel
void CDataChannelSocket::SetEncriptionLevel(int nLevel)
{
m_nEncriptionLevel=nLevel;
}
//gets the encryption level for this data channel
int CDataChannelSocket::GetEncriptionLevel()
{
return m_nEncriptionLevel;
}
================================================
FILE: Bundles/Echoware/DataChannelSocket.h
================================================
#ifndef _DATACHANNELSOCKET_H
#define _DATACHANNELSOCKET_H
#if _MSC_VER > 1000
#pragma once
#endif
#include "apisocket.h"
class CDataChannel;
class CBuffer;
//data channel socket class
//a base class for CLocalDataChannel class and CEchoSrvDataChannel class
class CDataChannelSocket :
public APISocket::CClientSocket
{
public:
CDataChannelSocket(CDataChannel* pDataChannel);
virtual ~CDataChannelSocket(void);
//notification : there are data to read
//[in] len : length of data
//[in] buff: data
virtual void OnReceive(char* buff, int len);
//notification : can send data
//[in] len : length of data
//[in] buff: data
virtual void OnSend(char* buff, int& len);
//notification : receive error
//[out] error
virtual void OnError(int error);
//sets the pair data channel for this data channel
void SetPairChannel(CDataChannelSocket* pPairChannel);
//gets the pair data channel for this data channel
CDataChannelSocket* GetPairChannel();
void ReadData(char* buff, unsigned int& read_size);
void WriteData(char* buff, unsigned int write_size);
//sets the encryption level for this data channel
void SetEncriptionLevel(int nLevel);
//gets the encryption level for this data channel
int GetEncriptionLevel();
protected:
//the parent data channel
CDataChannel* m_pDataChannel;
//buffers for recv/send on socket
CBuffer* m_pRecvBuffer;
CBuffer* m_pSendBuffer;
//the pair data channel for this data channel
CDataChannelSocket* m_pPairChannel;
int m_nEncriptionLevel;
};
#endif
================================================
FILE: Bundles/Echoware/DataChannel_timer.cpp
================================================
#include "StdAfx.h"
#include "DataChannel.h"
#include "DataChannels.h"
#include "LocalDataChannel.h"
#include "EchoSrvDataChannel.h"
#include "DllProxyInfo.h"
#define RSA_PUBLIC_KEY 80
#pragma warning(disable : 4355)
CDataChannel::CDataChannel(CDataChannels* pDataChannels, const char* szChannelCode,
const char* szSessionKey, bool bEncryptDecrypt) :
m_localListener(this), m_bEncryptDecrypt(bEncryptDecrypt)
{
m_pLocalDCTimer=new CLocalDCTimer(this);
m_bLocalDC=false;
m_pDataChannels=pDataChannels;
m_pLocalDataChannel=new CLocalDataChannel(this);
m_pEchoServerDataChannel=new CEchoSrvDataChannel(this);
const CDllProxyInfo* pProxyInfo=pDataChannels->GetProxyInfo();
m_pLocalDataChannel->SetTimeouts(pProxyInfo->GetConnectTimeout()*1000,
pProxyInfo->GetSendTimeout()*1000,
pProxyInfo->GetReceiveTimeout()*1000);
m_pEchoServerDataChannel->SetTimeouts(pProxyInfo->GetConnectTimeout()*1000,
pProxyInfo->GetSendTimeout()*1000,
pProxyInfo->GetReceiveTimeout()*1000);
m_szChannelCode=new char[12];
strcpy(m_szChannelCode, szChannelCode);
m_szSessionKey=new char[1024];
strcpy(m_szSessionKey, szSessionKey);
m_aes.SetEncryptKey((const unsigned char*)m_szSessionKey, 128);
m_aes.SetDecryptKey((const unsigned char*)m_szSessionKey, 128);
g_globals.m_logger.WriteFormated("CDataChannel: New data channel: code=%s , encrypt=%c", szChannelCode, (m_bEncryptDecrypt)?('Y'):('N'));
}
#pragma warning(default : 4355)
CDataChannel::~CDataChannel(void)
{
if (m_pLocalDCTimer)
{
delete m_pLocalDCTimer;
m_pLocalDCTimer=0;
}
StopListen();
if (m_pEchoServerDataChannel)
{
m_pEchoServerDataChannel->Shutdown(SD_BOTH);
m_pEchoServerDataChannel->Close();
m_pEchoServerDataChannel->StopReceive(THREAD_STOP_TIMEOUT);
m_pEchoServerDataChannel->StopSend(THREAD_STOP_TIMEOUT);
}
if (m_pLocalDataChannel)
{
m_pLocalDataChannel->Shutdown(SD_BOTH);
m_pLocalDataChannel->Close();
m_pLocalDataChannel->StopReceive(THREAD_STOP_TIMEOUT);
m_pLocalDataChannel->StopSend(THREAD_STOP_TIMEOUT);
}
if (m_pEchoServerDataChannel)
{
delete m_pEchoServerDataChannel;
m_pEchoServerDataChannel=0;
}
if (m_pLocalDataChannel)
{
delete m_pLocalDataChannel;
m_pLocalDataChannel=0;
}
delete []m_szChannelCode;
delete []m_szSessionKey;
}
bool CDataChannel::ConnectEchoServer()
{
g_globals.m_logger.Write("=>ConnectEchoServer");
if (!m_pEchoServerDataChannel->Create() ||
m_pEchoServerDataChannel->Connect(m_pDataChannels->GetProxyInfo()->GetIP(),
atoi(m_pDataChannels->GetProxyInfo()->GetPort()),
m_szChannelCode,
m_pDataChannels->GetProxyIn
gitextract_7q6g2gu1/ ├── .github/ │ └── workflows/ │ └── dco.yml ├── .gitignore ├── .gitmodules ├── .travis.yml ├── Base.lproj/ │ └── MainMenu.xib ├── Bundles/ │ ├── Echoware/ │ │ ├── ACConnection.cpp │ │ ├── ACConnection.h │ │ ├── AES.cpp │ │ ├── AES.h │ │ ├── APISocket/ │ │ │ ├── APISocket.h │ │ │ ├── ClientSocket.cpp │ │ │ ├── ServerSocket.cpp │ │ │ └── Socket.cpp │ │ ├── CritSection.cpp │ │ ├── CritSection.h │ │ ├── DataChannel.cpp │ │ ├── DataChannel.h │ │ ├── DataChannelSocket.cpp │ │ ├── DataChannelSocket.h │ │ ├── DataChannel_timer.cpp │ │ ├── DataChannels.cpp │ │ ├── DataChannels.h │ │ ├── DirService.cpp │ │ ├── DirService.h │ │ ├── DllProxyInfo.cpp │ │ ├── DllProxyInfo.h │ │ ├── EchoController.h │ │ ├── EchoController.m │ │ ├── EchoSrvDataChannel.cpp │ │ ├── EchoSrvDataChannel.h │ │ ├── EchoToOSX.cpp │ │ ├── EchoToOSX.h │ │ ├── Echoware.cpp │ │ ├── Echoware.dsp │ │ ├── Echoware.dsw │ │ ├── Echoware.h │ │ ├── Echoware.sln │ │ ├── Echoware.suo │ │ ├── Echoware.vcproj │ │ ├── Echoware.xcodeproj/ │ │ │ ├── admin.mode1 │ │ │ ├── admin.pbxuser │ │ │ └── project.pbxproj │ │ ├── Echoware_Prefix.pch │ │ ├── English.lproj/ │ │ │ ├── EchoServers.nib/ │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ └── InfoPlist.strings │ │ ├── Globals.cpp │ │ ├── Globals.h │ │ ├── Info.plist │ │ ├── InterfaceDllProxyInfo.h │ │ ├── LICENSE.txt │ │ ├── LocalDataChannel.cpp │ │ ├── LocalDataChannel.h │ │ ├── LocalListener.cpp │ │ ├── LocalListener.h │ │ ├── LocalProxyConnection.cpp │ │ ├── LocalProxyConnection.h │ │ ├── Logger.cpp │ │ ├── Logger.h │ │ ├── MyDllProxyInfo.cpp │ │ ├── MyDllProxyInfo.h │ │ ├── NetPacket.h │ │ ├── OpenSSL/ │ │ │ ├── LibeaySt.dsp │ │ │ ├── LibeaySt.vcproj │ │ │ ├── aes.h │ │ │ ├── aes_core.c │ │ │ ├── aes_locl.h │ │ │ ├── e_os2.h │ │ │ └── opensslconf.h │ │ ├── ProxiesManager.cpp │ │ ├── ProxiesManager.h │ │ ├── ProxyConnect/ │ │ │ ├── ProxyConnect.cpp │ │ │ ├── ProxyConnect.dsp │ │ │ ├── ProxyConnect.h │ │ │ ├── ProxyConnect.vcproj │ │ │ ├── global.h │ │ │ ├── md4.cpp │ │ │ ├── md4.h │ │ │ ├── md5.cpp │ │ │ ├── md5.h │ │ │ ├── ntlm.h │ │ │ ├── ntlmv2.cpp │ │ │ ├── stdafx.cpp │ │ │ └── stdafx.h │ │ ├── ProxyConnection.cpp │ │ ├── ProxyConnection.h │ │ ├── README.txt │ │ ├── RFBBundleWrapper.cpp │ │ ├── RFBBundleWrapper.h │ │ ├── RSA/ │ │ │ ├── Code.cpp │ │ │ ├── Commonf.cpp │ │ │ ├── Commonf.h │ │ │ ├── Function.h │ │ │ ├── Gsimply.cpp │ │ │ ├── Gsimply.h │ │ │ ├── HNumber.h │ │ │ ├── Hnfunct.cpp │ │ │ ├── Hnfunct.h │ │ │ ├── Hnumber.cpp │ │ │ ├── Keys.cpp │ │ │ ├── Keys_main.cpp │ │ │ ├── MyNum.h │ │ │ ├── MyTypes.h │ │ │ ├── Mynum.cpp │ │ │ ├── Myprint.cpp │ │ │ ├── Myprint.h │ │ │ ├── Operator.cpp │ │ │ ├── Operator.h │ │ │ ├── PrimeGen.cpp │ │ │ ├── Profiler.h │ │ │ ├── RSA.dsp │ │ │ ├── RSA.vcproj │ │ │ ├── StdAfx.h │ │ │ ├── TMSG.H │ │ │ └── stdafx.cpp │ │ ├── RSAKeys.cpp │ │ ├── RSAKeys.h │ │ ├── ServerListSynchronize.cpp │ │ ├── ServerListSynchronize.h │ │ ├── User.cpp │ │ ├── User.h │ │ ├── blowfish.cpp │ │ ├── blowfish.h │ │ ├── blowfish.h2 │ │ ├── rfbserver.cpp │ │ ├── rfbserver.h │ │ ├── stdafx.cpp │ │ ├── stdafx.h │ │ └── version.plist │ ├── Jaguar/ │ │ ├── JaguarBundle-Info.plist │ │ ├── JaguarExtensions.h │ │ └── JaguarExtensions.m │ ├── RFBBundleProtocol.h │ ├── Tiger/ │ │ ├── TigerBundle-Info.plist │ │ ├── TigerExtensions.h │ │ └── TigerExtensions.m │ ├── VNCBundle.h │ └── VNCBundle.m ├── English.lproj/ │ └── MainMenu.nib/ │ ├── classes.nib │ ├── info.nib │ └── keyedobjects.nib ├── French.lproj/ │ ├── Credits.rtf │ └── MainMenu.nib/ │ ├── classes.nib │ ├── info.nib │ └── objects.nib ├── German.lproj/ │ ├── Credits.rtf │ └── MainMenu.nib/ │ ├── classes.nib │ ├── info.nib │ └── objects.nib ├── Italian.lproj/ │ ├── Copying.rtf │ ├── Credits.rtf │ └── MainMenu.nib/ │ ├── classes.nib │ ├── info.nib │ └── objects.nib ├── Japanese.lproj/ │ ├── Credits.rtf │ └── MainMenu.nib/ │ ├── classes.nib │ ├── info.nib │ └── objects.nib ├── LICENSE ├── NSAuthorization.h ├── NSAuthorization.m ├── OSXvnc/ │ ├── OSXvnc │ ├── OSXvnc-keepalive │ ├── Resources/ │ │ └── English.lproj/ │ │ └── Localizable.strings │ └── StartupParameters.plist ├── OSXvnc-server/ │ ├── CGS.h │ ├── COPYING │ ├── Makefile │ ├── VNCServer.h │ ├── VNCServer.m │ ├── auth.c │ ├── corre.c │ ├── cutpaste.c │ ├── d3des.c │ ├── d3des.h │ ├── dimming.c │ ├── getMACAddress.c │ ├── getMACAddress.h │ ├── hextile.c │ ├── include/ │ │ ├── X11/ │ │ │ ├── X.h │ │ │ ├── Xalloca.h │ │ │ ├── Xfuncproto.h │ │ │ ├── Xfuncs.h │ │ │ ├── Xmd.h │ │ │ ├── Xos.h │ │ │ ├── Xosdefs.h │ │ │ ├── Xproto.h │ │ │ ├── Xprotostr.h │ │ │ ├── keysym.h │ │ │ └── keysymdef.h │ │ └── Xserver/ │ │ ├── colormap.h │ │ ├── cursor.h │ │ ├── dix.h │ │ ├── gc.h │ │ ├── input.h │ │ ├── misc.h │ │ ├── miscstruct.h │ │ ├── opaque.h │ │ ├── os.h │ │ ├── pixmap.h │ │ ├── region.h │ │ ├── regionstr.h │ │ ├── screenint.h │ │ ├── scrnintstr.h │ │ ├── validate.h │ │ └── window.h │ ├── kbdptr.c │ ├── kbdptr.h │ ├── libvncauth/ │ │ └── Makefile │ ├── main.c │ ├── miregion.c │ ├── mousecursor.c │ ├── rdr/ │ │ ├── Exception.h │ │ ├── FdInStream.cxx │ │ ├── FdInStream.h │ │ ├── FdOutStream.cxx │ │ ├── FdOutStream.h │ │ ├── FixedMemOutStream.h │ │ ├── InStream.cxx │ │ ├── InStream.h │ │ ├── Makefile │ │ ├── Makefile.in │ │ ├── MemInStream.h │ │ ├── MemOutStream.h │ │ ├── NullOutStream.cxx │ │ ├── NullOutStream.h │ │ ├── OutStream.h │ │ ├── ZlibInStream.cxx │ │ ├── ZlibInStream.h │ │ ├── ZlibOutStream.cxx │ │ ├── ZlibOutStream.h │ │ └── types.h │ ├── rfb.h │ ├── rfbproto.h │ ├── rfbserver.c │ ├── rfbserver.h │ ├── rre.c │ ├── screencapture.c │ ├── screencapture.h │ ├── sockets.c │ ├── stats.c │ ├── storepasswd.c │ ├── tableinitcmtemplate.c │ ├── tableinittctemplate.c │ ├── tabletranstemplate.c │ ├── tight.c │ ├── tight.h │ ├── translate.c │ ├── vncauth.c │ ├── vncauth.h │ ├── xalloc.c │ ├── zlib.c │ ├── zlibhex.c │ ├── zrle.cc │ └── zrleEncode.h ├── OSXvnc.html ├── OSXvnc.icns ├── OSXvnc.tiff ├── OSXvnc.xcodeproj/ │ └── project.pbxproj ├── OSXvnc_small.tiff ├── README.md ├── VNCController.h ├── VNCController.m ├── Version.txt ├── VineServer-Info.plist ├── VineServer.icns ├── build-libjpeg-turbo.sh ├── de.lproj/ │ ├── Copying.rtf │ └── Localizable.strings ├── en.lproj/ │ ├── Copying.rtf │ ├── Credits.rtf │ ├── Localizable.strings │ └── Vine Server Release Notes.rtf ├── fr.lproj/ │ ├── Copying.rtf │ └── Localizable.strings ├── it.lproj/ │ └── Localizable.strings ├── ja.lproj/ │ ├── Copying.rtf │ └── Localizable.strings └── main.m
SYMBOL INDEX (798 symbols across 132 files)
FILE: Bundles/Echoware/AES.h
function class (line 7) | class CAES
FILE: Bundles/Echoware/APISocket/APISocket.h
function namespace (line 18) | namespace APISocket
FILE: Bundles/Echoware/APISocket/Socket.cpp
type sockaddr_in (line 118) | struct sockaddr_in
type sockaddr (line 128) | struct sockaddr
type sockaddr_in (line 144) | struct sockaddr_in
type sockaddr (line 156) | struct sockaddr
type sockaddr_in (line 172) | struct sockaddr_in
type in_addr (line 184) | struct in_addr
type sockaddr (line 187) | struct sockaddr
type timeval (line 295) | struct timeval
type sockaddr_in (line 323) | struct sockaddr_in
type sockaddr (line 328) | struct sockaddr
type sockaddr_in (line 338) | struct sockaddr_in
type sockaddr (line 343) | struct sockaddr
type sockaddr_in (line 353) | struct sockaddr_in
type sockaddr (line 358) | struct sockaddr
FILE: Bundles/Echoware/CritSection.h
function class (line 11) | class CCritSection
FILE: Bundles/Echoware/DataChannel.h
function class (line 18) | class CDataChannel
FILE: Bundles/Echoware/DataChannelSocket.cpp
function CDataChannelSocket (line 53) | CDataChannelSocket* CDataChannelSocket::GetPairChannel()
FILE: Bundles/Echoware/DataChannels.h
function class (line 16) | class CDataChannels
FILE: Bundles/Echoware/DirService.cpp
function NSDictionary (line 50) | NSDictionary* CDirService::attributeDataForNodeOfType(const char* type,
function tDirStatus (line 254) | tDirStatus CDirService::OpenSearchNode(tDirReference inDSRef, tDirNodeRe...
function tDirStatus (line 309) | tDirStatus CDirService::DoPasswordAuth(tDirReference inDSRef, tDirNodeRe...
function tDirStatus (line 395) | tDirStatus CDirService::AppendStringToBuffer(tDataBufferPtr inBuffer, co...
FILE: Bundles/Echoware/DirService.h
function class (line 13) | class CDirService
FILE: Bundles/Echoware/DllProxyInfo.h
function class (line 15) | class CDllProxyInfo : public IDllProxyInfo
FILE: Bundles/Echoware/EchoController.h
function interface (line 9) | interface EchoController : NSObject
FILE: Bundles/Echoware/EchoSrvDataChannel.h
function class (line 13) | class CEchoSrvDataChannel :
FILE: Bundles/Echoware/EchoToOSX.cpp
function DWORD (line 18) | DWORD GetTickCount()
function PostThreadMessage (line 44) | bool PostThreadMessage(unsigned long , int, void *, int)
function PeekMessage (line 49) | bool PeekMessage(void *, int,int,int, int)
function ShutdownThread (line 54) | bool ShutdownThread(void *shutdownThread, unsigned long waitTimeout, boo...
FILE: Bundles/Echoware/Echoware.cpp
function BOOL (line 10) | BOOL DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserv...
function ECHOWARE_API (line 36) | ECHOWARE_API char* GetDllVersion()
function ECHOWARE_API (line 41) | ECHOWARE_API bool InitializeProxyDll()
function ECHOWARE_API (line 60) | ECHOWARE_API void SetLoggingOptions(bool bEnablelogging, char *szLogPath)
function ECHOWARE_API (line 66) | ECHOWARE_API void EnableLogging(bool bEnablelogging)
function ECHOWARE_API (line 71) | ECHOWARE_API bool SetPortForOffLoadingData(int DataOffLoadingPort)
function ECHOWARE_API (line 80) | ECHOWARE_API void* CreateProxyInfoClassObject()
function ECHOWARE_API (line 94) | ECHOWARE_API void DeleteProxyInfoClassObject (void* pProxyInfo)
function ECHOWARE_API (line 105) | ECHOWARE_API void AutoConnect()
function ECHOWARE_API (line 116) | ECHOWARE_API int ConnectProxy(void* pProxyInfo)
function ECHOWARE_API (line 127) | ECHOWARE_API bool DisconnectProxy(void* pProxyInfo)
function ECHOWARE_API (line 138) | ECHOWARE_API bool DisconnectAllProxies()
function ECHOWARE_API (line 149) | ECHOWARE_API void StopConnecting(void* pProxyInfo)
function ECHOWARE_API (line 160) | ECHOWARE_API int EstablishNewDataChannel(void* pProxyInfo , char* IDOfPa...
function ECHOWARE_API (line 171) | ECHOWARE_API void SetEncryptionLevel(int level, void* pProxyInfo)
function ECHOWARE_API (line 184) | ECHOWARE_API void SetLocalProxyInfo(char* ip, char* port, char* username...
function ECHOWARE_API (line 195) | ECHOWARE_API bool CheckServer(char* ip, unsigned short port)
FILE: Bundles/Echoware/Globals.h
function class (line 27) | class CGlobals
function class (line 67) | class CBuffer
function virtual (line 78) | virtual ~CBuffer()
function Write (line 83) | void Write(void* buff, unsigned int write_size)
function Read (line 110) | unsigned int Read(void* buff, unsigned int read_size)
function Peak (line 132) | unsigned int Peak(void* buff, unsigned int read_size)
function Size (line 146) | unsigned int Size()
function Drop (line 151) | void Drop(unsigned int drop_size)
function Empty (line 170) | void Empty()
FILE: Bundles/Echoware/InterfaceDllProxyInfo.h
function class (line 34) | class IDllProxyInfo
FILE: Bundles/Echoware/LocalDataChannel.cpp
function crypt_data (line 18) | void crypt_data(const unsigned char *in, unsigned char *out, int length,...
FILE: Bundles/Echoware/LocalDataChannel.h
function class (line 15) | class CLocalDataChannel :
FILE: Bundles/Echoware/LocalProxyConnection.h
function class (line 10) | class CLocalProxyConnection : public CProxyConnection
FILE: Bundles/Echoware/Logger.h
function class (line 12) | class CLogger
FILE: Bundles/Echoware/MyDllProxyInfo.cpp
function IDllProxyInfo (line 30) | IDllProxyInfo* CMyDllProxyInfo::getDllProxyInfo()
FILE: Bundles/Echoware/MyDllProxyInfo.h
function class (line 13) | class CMyDllProxyInfo
FILE: Bundles/Echoware/NetPacket.h
type NetPacketHeader (line 42) | struct NetPacketHeader
function class (line 54) | class CProxyMsg
function size (line 69) | int size()
FILE: Bundles/Echoware/OpenSSL/aes.h
type aes_key_st (line 79) | struct aes_key_st {
type AES_KEY (line 83) | typedef struct aes_key_st AES_KEY;
FILE: Bundles/Echoware/OpenSSL/aes_core.c
function AES_set_encrypt_key (line 742) | int AES_set_encrypt_key(const unsigned char *userKey, const int bits,
function AES_set_decrypt_key (line 843) | int AES_set_decrypt_key(const unsigned char *userKey, const int bits,
function AES_encrypt (line 896) | void AES_encrypt(const unsigned char *in, unsigned char *out,
function AES_decrypt (line 1087) | void AES_decrypt(const unsigned char *in, unsigned char *out,
FILE: Bundles/Echoware/OpenSSL/aes_locl.h
type u32 (line 75) | typedef unsigned long u32;
type u32 (line 77) | typedef unsigned int u32;
type u16 (line 79) | typedef unsigned short u16;
type u8 (line 80) | typedef unsigned char u8;
FILE: Bundles/Echoware/ProxiesManager.cpp
function CProxyConnection (line 194) | const CProxyConnection* CProxiesManager::FindProxy(CDllProxyInfo* pProxy...
FILE: Bundles/Echoware/ProxiesManager.h
function class (line 14) | class CProxiesManager
FILE: Bundles/Echoware/ProxyConnect/ProxyConnect.cpp
function read_byte (line 27) | int read_byte(APISocket::CSocket sock)
type sockaddr_in (line 247) | struct sockaddr_in
type sockaddr_in (line 312) | struct sockaddr_in
type sockaddr_in (line 510) | struct sockaddr_in
FILE: Bundles/Echoware/ProxyConnect/ProxyConnect.h
function class (line 53) | class CProxyConnect
FILE: Bundles/Echoware/ProxyConnect/global.h
type UINT2 (line 18) | typedef unsigned short int UINT2;
type UINT4 (line 21) | typedef unsigned long int UINT4;
FILE: Bundles/Echoware/ProxyConnect/md4.cpp
function MD4Init (line 92) | void MD4Init(MD4_CTX* context)
function MD4Update (line 108) | void MD4Update(MD4_CTX *context, unsigned char *input, unsigned int inpu...
function MD4Final (line 146) | void MD4Final(unsigned char digest[16], MD4_CTX *context)
function MD4Transform (line 172) | static void MD4Transform
function Encode (line 249) | static void Encode
function Decode (line 269) | static void Decode
function MD4_memcpy (line 285) | static void MD4_memcpy
function MD4_memset (line 300) | static void MD4_memset
FILE: Bundles/Echoware/ProxyConnect/md4.h
type MD4_CTX (line 39) | typedef struct {
FILE: Bundles/Echoware/ProxyConnect/md5.cpp
function MD5Init (line 104) | void MD5Init
function MD5Update (line 122) | void MD5Update
function MD5Final (line 166) | void MD5Final
function MD5Transform (line 197) | static void MD5Transform
function Encode (line 292) | static void Encode
function Decode (line 312) | static void Decode
function MD5_memcpy (line 329) | static void MD5_memcpy(POINTER output, POINTER input, unsigned int len)
function MD5_memset (line 339) | static void MD5_memset(POINTER output,int value,unsigned int len)
FILE: Bundles/Echoware/ProxyConnect/md5.h
type MD5_CTX (line 34) | typedef struct {
FILE: Bundles/Echoware/ProxyConnect/ntlmv2.cpp
function hmac_md5 (line 80) | void hmac_md5(
function base64 (line 175) | void base64(unsigned char *out, const unsigned char *in, int len)
function unbase64 (line 202) | int unbase64(char *out, const char *in, int maxlen)
function ntlmv2_build_type1 (line 359) | int ntlmv2_build_type1()
function ntlmv2_parse_type2 (line 385) | int ntlmv2_parse_type2(unsigned char *buf)
function ntlmv2_prepare_type3 (line 469) | int ntlmv2_prepare_type3()
function ntlmv2_build_type3 (line 618) | int ntlmv2_build_type3()
function DoNTLMv2 (line 737) | int DoNTLMv2
FILE: Bundles/Echoware/ProxyConnection.cpp
function CDllProxyInfo (line 31) | CDllProxyInfo* CProxyConnection::GetProxyInfo()
FILE: Bundles/Echoware/ProxyConnection.h
function class (line 15) | class CProxyConnection
FILE: Bundles/Echoware/RFBBundleWrapper.cpp
type LoginLogoutExtraInfoStructure (line 36) | struct LoginLogoutExtraInfoStructure
function LoginFunction (line 42) | static void LoginFunction(CFStringRef UserName, uid_t UID, gid_t GID)
function LogoutFunction (line 47) | static void LogoutFunction()
function LoginLogoutProxyCallBackFunction (line 51) | static void LoginLogoutProxyCallBackFunction(SCDynamicStoreRef store, CF...
function InstallLoginLogoutNotifiers (line 81) | static int InstallLoginLogoutNotifiers(
function CRFBBundleWrapper (line 569) | CRFBBundleWrapper* CRFBBundleWrapper::GetInstance()
FILE: Bundles/Echoware/RFBBundleWrapper.h
function class (line 15) | class CRFBBundleWrapper
FILE: Bundles/Echoware/RSA/Code.cpp
function Encode (line 10) | int Encode(unsigned char *msg, int msgLen, HugeNumber &FirstHalf, HugeNu...
function Decode (line 49) | int Decode(unsigned char *msg, int &msgLen, HugeNumber &FirstHalf, HugeN...
FILE: Bundles/Echoware/RSA/Commonf.cpp
function randomize (line 14) | void randomize()
function random (line 24) | long int random(long int ULimit)
function word (line 31) | word wmin(word a, word b)
function word (line 39) | word wmax(word a, word b)
function LongIsPrime (line 47) | int LongIsPrime(unsigned long a)
function MakePrimeL (line 71) | unsigned long MakePrimeL()
FILE: Bundles/Echoware/RSA/Gsimply.cpp
function PutInList (line 43) | void PutInList(unsigned long i)
function Razl (line 77) | void Razl(unsigned long y)
function PrimeQ (line 111) | int PrimeQ(HugeNumber &km1,HugeNumber &k)
function DeleteN (line 126) | void DeleteN()
function GeneratePrime (line 138) | int GeneratePrime(HugeNumber &p)
function GeneratePrimeHugeNumber (line 253) | void GeneratePrimeHugeNumber(HugeNumber &x)
function SaveKeys (line 274) | int SaveKeys(char *FileName, HugeNumber &x, HugeNumber &y)
function RestoreKey (line 300) | int RestoreKey(char *FileName, HugeNumber &x, HugeNumber &y)
FILE: Bundles/Echoware/RSA/Hnfunct.cpp
function BaseRazr (line 21) | int BaseRazr()
function GCD (line 42) | void GCD(HugeNumber &uu, HugeNumber &vv, HugeNumber &u)
function LCM (line 67) | void LCM(HugeNumber &a, HugeNumber &b, HugeNumber &lcm)
function Mult1 (line 77) | void Mult1(HugeNumber& u, word v, HugeNumber& w)
function Div1 (line 115) | void Div1(HugeNumber &u, word v, HugeNumber &w, word &r)
function Div (line 140) | void Div(HugeNumber& uu, HugeNumber& vv, HugeNumber& qq, HugeNumber& r)
function Double (line 331) | double Double(HugeNumber &a)
function UnsignedLong (line 343) | unsigned long UnsignedLong(HugeNumber &a)
function ModPower (line 354) | void ModPower(HugeNumber &Y, HugeNumber &x, HugeNumber &n, HugeNumber &f)
function Power (line 403) | void Power(HugeNumber &Y, HugeNumber &x, HugeNumber &n)
function BytesInHN (line 441) | int BytesInHN(HugeNumber &x)
FILE: Bundles/Echoware/RSA/Hnumber.cpp
function HugeNumber (line 91) | HugeNumber& HugeNumber::operator++()
function HugeNumber (line 121) | HugeNumber& HugeNumber::operator--()
function HugeNumber (line 185) | HugeNumber& HugeNumber::operator =( const HugeNumber & source )
function HugeNumber (line 199) | HugeNumber operator + ( HugeNumber &u, HugeNumber &v)
function HugeNumber (line 367) | HugeNumber operator - ( HugeNumber &u, HugeNumber &v)
function HugeNumber (line 397) | HugeNumber operator * ( HugeNumber &u, HugeNumber &v)
function HugeNumber (line 453) | HugeNumber operator / ( HugeNumber &u, HugeNumber &v)
function HugeNumber (line 460) | HugeNumber operator % ( HugeNumber &u, HugeNumber &v)
function Add1 (line 468) | static void Add1(HugeNumber &a, word m)
function Convert (line 494) | static void Convert(char *b_string, HugeNumber &w)
FILE: Bundles/Echoware/RSA/Keys.cpp
function Euklid (line 45) | void Euklid(MyNum &u, MyNum &v, MyNum &nod, MyNum &e)
function CreateKeys (line 86) | void CreateKeys(HugeNumber &D, HugeNumber &e, HugeNumber &N)
function Keys (line 139) | void Keys(HugeNumber &d, HugeNumber &e, HugeNumber &nn)
FILE: Bundles/Echoware/RSA/Keys_main.cpp
function main (line 14) | int main(int argc, char* argv[])
FILE: Bundles/Echoware/RSA/MyNum.h
type byte (line 8) | typedef unsigned char byte;
type word (line 13) | typedef unsigned int word;
type MyNum (line 20) | struct MyNum
FILE: Bundles/Echoware/RSA/MyTypes.h
type byte (line 11) | typedef unsigned char byte;
type word (line 12) | typedef unsigned int word;
type dword (line 13) | typedef unsigned long dword;
FILE: Bundles/Echoware/RSA/Mynum.cpp
function Assign1 (line 18) | void Assign1(MyNum &x)
function Assign0 (line 24) | void Assign0(MyNum &x)
function ConvertHugeNumberToMyNum (line 30) | void ConvertHugeNumberToMyNum(MyNum &a, HugeNumber &b)
function Assign (line 36) | void Assign(MyNum &x, MyNum &y)
function IsZero (line 42) | int IsZero(MyNum &a)
function CompareAbs (line 53) | int CompareAbs(MyNum &a, MyNum &b)
function Subtr (line 63) | void Subtr(MyNum &c, MyNum &a, MyNum &b)
function Div (line 91) | void Div(MyNum &c, MyNum &a, MyNum &b)
function Mult (line 97) | void Mult(MyNum &c, MyNum &a, MyNum &b)
FILE: Bundles/Echoware/RSA/Myprint.cpp
function Protocol (line 8) | void Protocol(char *Msg)
function Protocol (line 16) | void Protocol(const char *Msg, MyNum &a)
function ProtocolF (line 37) | void ProtocolF(const char *Msg, float a)
function Protocol (line 46) | void Protocol(char *Msg, HugeNumber &a)
function PrintCode (line 58) | void PrintCode(const unsigned char *Msg, const long MsgLen)
function PrintChar (line 79) | void PrintChar(unsigned char *ch, const long len)
FILE: Bundles/Echoware/RSA/PrimeGen.cpp
function NextPrime (line 18) | void NextPrime(int &intA)
function Rabin (line 27) | int Rabin(int t, HugeNumber &S, HugeNumber &m, HugeNumber &mm1)
function Test1 (line 82) | int Test1(HugeNumber &a, HugeNumber &n, HugeNumber &nm1, HugeNumber °...
function Test2 (line 100) | int Test2(HugeNumber &x)
function MakePrime (line 122) | void MakePrime(int intS, HugeNumber &n)
FILE: Bundles/Echoware/RSA/TMSG.H
function class (line 5) | class TMsg
FILE: Bundles/Echoware/RSAKeys.h
function class (line 14) | class CRSAKeys
FILE: Bundles/Echoware/ServerListSynchronize.h
function class (line 16) | class CServerListSynchronize
FILE: Bundles/Echoware/User.cpp
function NSUserDefaults (line 41) | NSUserDefaults* CUser::userDefaults(NSString *domain)
function CFStringRef (line 102) | CFStringRef CUser::CopyCurrentConsoleUsername()
function NSString (line 111) | NSString* CUser::CurrentConsoleUsername()
FILE: Bundles/Echoware/User.h
function class (line 16) | class CUser
FILE: Bundles/Echoware/blowfish.cpp
function DWORD (line 127) | DWORD CBlowFish::GetOutputLength (DWORD lInputLong)
function DWORD (line 141) | DWORD CBlowFish::Encode (BYTE * pInput, BYTE * pOutput, DWORD lSize)
FILE: Bundles/Echoware/blowfish.h
function class (line 20) | class CBlowFish
FILE: Bundles/Echoware/rfbserver.h
type rfbserver (line 30) | typedef struct rfbserver {
FILE: Bundles/Jaguar/JaguarExtensions.h
function interface (line 16) | interface JaguarExtensions : VNCBundle <RFBBundleProtocol> {
FILE: Bundles/Tiger/TigerExtensions.h
function interface (line 18) | interface TigerExtensions : VNCBundle <RFBBundleProtocol> {
FILE: Bundles/VNCBundle.h
function interface (line 15) | interface VNCBundle : NSObject {
FILE: NSAuthorization.h
function interface (line 14) | interface NSAuthorization : NSObject {
FILE: OSXvnc-server/CGS.h
type CGSConnectionRef (line 14) | typedef int CGSConnectionRef;
FILE: OSXvnc-server/VNCServer.h
function interface (line 20) | interface VNCServer : NSObject {
FILE: OSXvnc-server/auth.c
function rfbAuthInit (line 44) | void rfbAuthInit(void) {
function failedAttemptsForClient (line 49) | int failedAttemptsForClient(rfbClientPtr cl) {
function incrementFailedAttemptsForClient (line 61) | int incrementFailedAttemptsForClient(rfbClientPtr cl) {
function clearFailedAttemptsForClient (line 77) | void clearFailedAttemptsForClient(rfbClientPtr cl) {
function rfbSecurityResultMessage (line 85) | void rfbSecurityResultMessage(rfbClientPtr cl, int result, char *errorSt...
function rfbAuthNewClient (line 124) | void rfbAuthNewClient(rfbClientPtr cl) {
function enterSuppliedPassword (line 239) | bool enterSuppliedPassword(char *passIn){
function rfbProcessAuthVersion (line 248) | void rfbProcessAuthVersion(rfbClientPtr cl) {
function rfbAuthProcessClientMessage (line 306) | void rfbAuthProcessClientMessage(rfbClientPtr cl) {
FILE: OSXvnc-server/corre.c
function Bool (line 61) | Bool
function Bool (line 86) | static Bool
function getBgColour (line 301) | static uint32_t
FILE: OSXvnc-server/cutpaste.c
function NSUInteger (line 89) | NSUInteger)startLoc {
function initPasteboard (line 329) | void initPasteboard(void) {
function rfbSetCutText (line 398) | void rfbSetCutText(rfbClientPtr cl, char *str, int len) {
function BOOL (line 417) | static BOOL pasteboardRepresentsExistingFile(NSPasteboard *thePasteboard) {
function NSArray (line 447) | static NSArray *arrayFromFlstData(NSData *flstData) {
function NSArray (line 480) | static NSArray *getListOfFilenamesFromPasteboard(NSPasteboard *thePasteb...
function rfbCheckForPasteboardChange (line 491) | void rfbCheckForPasteboardChange(void) {
function rfbSendRichClipboardAck (line 589) | static void rfbSendRichClipboardAck(rfbClientPtr cl) {
function rfbSendRichClipboardAvailable (line 607) | static void rfbSendRichClipboardAvailable(rfbClientPtr cl, NSString *pas...
function rfbSendRichClipboardRequest (line 647) | void rfbSendRichClipboardRequest(rfbClientPtr cl) {
function rfbSendRichClipboardData (line 686) | static void rfbSendRichClipboardData(rfbClientPtr cl) {
function rfbClientUpdatePasteboard (line 745) | void rfbClientUpdatePasteboard(rfbClientPtr cl) {
function rfbReceiveRichClipboardAvailable (line 819) | void rfbReceiveRichClipboardAvailable(rfbClientPtr cl) {
function checkTotalSize (line 894) | void checkTotalSize(unsigned long long *totalSize, NSString *path, NSFil...
function rfbReceiveRichClipboardRequest (line 914) | void rfbReceiveRichClipboardRequest(rfbClientPtr cl) {
function rfbReceiveRichClipboardData (line 1063) | void rfbReceiveRichClipboardData(rfbClientPtr cl) {
FILE: OSXvnc-server/d3des.c
function deskey (line 66) | void deskey(unsigned char *key, int edf)
function cookey (line 102) | static void cookey(unsigned long *raw1)
function cpkey (line 124) | void cpkey(unsigned long *into)
function usekey (line 133) | void usekey(unsigned long *from)
function des (line 143) | void des(unsigned char *inblock, unsigned char *outblock)
function scrunch (line 152) | static void scrunch(unsigned char *outof, unsigned long *into)
function unscrun (line 165) | static void unscrun(unsigned long *outof, unsigned char *into)
function desfunc (line 322) | static void desfunc(unsigned long *block, unsigned long *keys)
FILE: OSXvnc-server/dimming.c
function rfbScreensaverTimer (line 26) | void rfbScreensaverTimer(EventLoopTimerRef timer, void *userData)
function saveDimSettings (line 36) | static int
function restoreDimSettings (line 48) | static int
function saveSleepSettings (line 64) | static int
function restoreSleepSettings (line 76) | static int
function rfbDimmingInit (line 93) | int
function rfbUndim (line 125) | int
function rfbDimmingShutdown (line 161) | int
FILE: OSXvnc-server/getMACAddress.c
function kern_return_t (line 84) | static kern_return_t FindEthernetInterfaces(io_iterator_t *matchingServi...
function kern_return_t (line 157) | static kern_return_t GetMACAddress(io_iterator_t intfIterator, UInt8 *MA...
function NSString (line 214) | NSString *getMACAddressString(void)
FILE: OSXvnc-server/hextile.c
function Bool (line 40) | Bool
FILE: OSXvnc-server/include/X11/X.h
type XID (line 68) | typedef unsigned long XID;
type Mask (line 69) | typedef unsigned long Mask;
type Atom (line 70) | typedef unsigned long Atom;
type VisualID (line 71) | typedef unsigned long VisualID;
type Time (line 72) | typedef unsigned long Time;
type CARD32 (line 75) | typedef CARD32 XID;
type CARD32 (line 76) | typedef CARD32 Mask;
type CARD32 (line 77) | typedef CARD32 Atom;
type CARD32 (line 78) | typedef CARD32 VisualID;
type CARD32 (line 79) | typedef CARD32 Time;
type XID (line 82) | typedef XID Window;
type XID (line 83) | typedef XID Drawable;
type XID (line 84) | typedef XID Font;
type XID (line 85) | typedef XID Pixmap;
type XID (line 86) | typedef XID X11Cursor;
type XID (line 87) | typedef XID Colormap;
type XID (line 88) | typedef XID GContext;
type XID (line 89) | typedef XID KeySym;
type KeyCode (line 91) | typedef unsigned char KeyCode;
FILE: OSXvnc-server/include/X11/Xmd.h
type INT8 (line 55) | typedef int8_t INT8;
type INT16 (line 56) | typedef int16_t INT16;
type INT32 (line 57) | typedef int32_t INT32;
type BOOL (line 59) | typedef int8_t BOOL;
type BITS32 (line 63) | typedef uint32_t BITS32;
type BYTE (line 64) | typedef uint8_t BYTE;
type CARD8 (line 65) | typedef uint8_t CARD8;
type CARD16 (line 66) | typedef uint16_t CARD16;
type CARD32 (line 67) | typedef uint32_t CARD32;
type CARD64 (line 68) | typedef uint64_t CARD64;
type INT64 (line 128) | typedef long INT64;
type CARD64 (line 129) | typedef unsigned long CARD64;
type INT32 (line 133) | typedef unsigned int INT32;
type INT16 (line 134) | typedef unsigned int INT16;
type INT32 (line 137) | typedef signed int INT32;
type INT16 (line 138) | typedef signed int INT16;
type INT32 (line 140) | typedef int INT32;
type INT16 (line 141) | typedef int INT16;
type INT64 (line 148) | typedef long INT64;
type INT32 (line 149) | typedef int INT32;
type INT32 (line 151) | typedef long INT32;
type INT16 (line 153) | typedef short INT16;
type INT8 (line 157) | typedef signed char INT8;
type INT8 (line 159) | typedef char INT8;
type CARD64 (line 163) | typedef unsigned long CARD64;
type CARD32 (line 164) | typedef unsigned int CARD32;
type CARD32 (line 166) | typedef unsigned long CARD32;
type CARD16 (line 168) | typedef unsigned short CARD16;
type CARD8 (line 169) | typedef unsigned char CARD8;
type CARD32 (line 171) | typedef CARD32 BITS32;
type CARD16 (line 172) | typedef CARD16 BITS16;
type CARD8 (line 176) | typedef CARD8 BYTE;
type CARD8 (line 178) | typedef CARD8 BOOL;
FILE: OSXvnc-server/include/X11/Xos.h
type timeval (line 172) | struct timeval {
type timezone (line 177) | struct timezone {
type timezone (line 185) | struct timezone {
type timeval (line 208) | struct timeval {
type sockaddr (line 263) | struct sockaddr
type sockaddr_in (line 269) | struct sockaddr_in
type in_addr (line 280) | struct in_addr
type u_char (line 286) | typedef unsigned char u_char;
type fd_mask (line 290) | typedef unsigned long fd_mask;
type sockaddr_un (line 311) | struct sockaddr_un {
FILE: OSXvnc-server/include/X11/Xproto.h
type CARD16 (line 264) | typedef CARD16 KeyButMask;
type xConnClientPrefix (line 271) | typedef struct {
type xConnSetupPrefix (line 280) | typedef struct {
type xConnSetup (line 289) | typedef struct {
type xPixmapFormat (line 306) | typedef struct {
type xDepth (line 316) | typedef struct {
type xVisualType (line 323) | typedef struct {
type xWindowRoot (line 336) | typedef struct {
type xTimecoord (line 359) | typedef struct {
type xHostEntry (line 364) | typedef struct {
type xCharInfo (line 370) | typedef struct {
type xFontProp (line 379) | typedef struct {
type xTextElt (line 387) | typedef struct { /* followed by string */
type xColorItem (line 394) | typedef struct {
type xrgb (line 402) | typedef struct {
type CARD8 (line 406) | typedef CARD8 KEYCODE;
type xGenericReply (line 417) | typedef struct {
type xGetWindowAttributesReply (line 432) | typedef struct {
type xGetGeometryReply (line 458) | typedef struct {
type xQueryTreeReply (line 472) | typedef struct {
type xInternAtomReply (line 485) | typedef struct {
type xGetAtomNameReply (line 498) | typedef struct {
type xGetPropertyReply (line 512) | typedef struct {
type xListPropertiesReply (line 525) | typedef struct {
type xGetSelectionOwnerReply (line 539) | typedef struct {
type xGrabPointerReply (line 552) | typedef struct {
type xGrabPointerReply (line 565) | typedef xGrabPointerReply xGrabKeyboardReply;
type xQueryPointerReply (line 567) | typedef struct {
type xGetMotionEventsReply (line 579) | typedef struct {
type xTranslateCoordsReply (line 592) | typedef struct {
type xGetInputFocusReply (line 605) | typedef struct {
type xQueryKeymapReply (line 618) | typedef struct {
type xQueryFontReply (line 627) | typedef struct _xQueryFontReply {
type xQueryTextExtentsReply (line 650) | typedef struct {
type xListFontsReply (line 661) | typedef struct {
type xListFontsWithInfoReply (line 676) | typedef struct {
type xGetFontPathReply (line 699) | typedef struct {
type xGetImageReply (line 713) | typedef struct {
type xListInstalledColormapsReply (line 726) | typedef struct {
type xAllocColorReply (line 740) | typedef struct {
type xAllocNamedColorReply (line 753) | typedef struct {
type xAllocColorCellsReply (line 765) | typedef struct {
type xAllocColorPlanesReply (line 778) | typedef struct {
type xQueryColorsReply (line 790) | typedef struct {
type xLookupColorReply (line 804) | typedef struct {
type xQueryBestSizeReply (line 816) | typedef struct {
type xQueryExtensionReply (line 829) | typedef struct {
type xListExtensionsReply (line 845) | typedef struct {
type xSetMappingReply (line 859) | typedef struct {
type xSetMappingReply (line 871) | typedef xSetMappingReply xSetPointerMappingReply;
type xSetMappingReply (line 872) | typedef xSetMappingReply xSetModifierMappingReply;
type xGetPointerMappingReply (line 874) | typedef struct {
type xGetKeyboardMappingReply (line 887) | typedef struct {
type xGetModifierMappingReply (line 900) | typedef struct {
type xGetKeyboardControlReply (line 913) | typedef struct {
type xGetPointerControlReply (line 925) | typedef struct {
type xGetScreenSaverReply (line 939) | typedef struct {
type xListHostsReply (line 954) | typedef struct {
type xError (line 976) | typedef struct {
type xEvent (line 996) | typedef struct _xEvent {
type xKeymapEvent (line 1220) | typedef struct {
type xReply (line 1232) | typedef union {
type xReq (line 1282) | typedef struct _xReq {
type xResourceReq (line 1296) | typedef struct {
type xCreateWindowReq (line 1303) | typedef struct {
type xChangeWindowAttributesReq (line 1319) | typedef struct {
type xChangeSaveSetReq (line 1327) | typedef struct {
type xReparentWindowReq (line 1334) | typedef struct {
type xConfigureWindowReq (line 1342) | typedef struct {
type xCirculateWindowReq (line 1351) | typedef struct {
type xInternAtomReq (line 1358) | typedef struct { /* followed by padded string */
type xChangePropertyReq (line 1366) | typedef struct {
type xDeletePropertyReq (line 1377) | typedef struct {
type xGetPropertyReq (line 1385) | typedef struct {
type xSetSelectionOwnerReq (line 1399) | typedef struct {
type xConvertSelectionReq (line 1408) | typedef struct {
type xSendEventReq (line 1417) | typedef struct {
type xGrabPointerReq (line 1431) | typedef struct {
type xGrabButtonReq (line 1443) | typedef struct {
type xUngrabButtonReq (line 1457) | typedef struct {
type xChangeActivePointerGrabReq (line 1466) | typedef struct {
type xGrabKeyboardReq (line 1476) | typedef struct {
type xGrabKeyReq (line 1486) | typedef struct {
type xUngrabKeyReq (line 1497) | typedef struct {
type xAllowEventsReq (line 1506) | typedef struct {
type xGetMotionEventsReq (line 1513) | typedef struct {
type xTranslateCoordsReq (line 1521) | typedef struct {
type xWarpPointerReq (line 1529) | typedef struct {
type xSetInputFocusReq (line 1539) | typedef struct {
type xOpenFontReq (line 1547) | typedef struct {
type xQueryTextExtentsReq (line 1556) | typedef struct {
type xListFontsReq (line 1563) | typedef struct {
type xListFontsReq (line 1571) | typedef xListFontsReq xListFontsWithInfoReq;
type xSetFontPathReq (line 1573) | typedef struct {
type xCreatePixmapReq (line 1581) | typedef struct {
type xCreateGCReq (line 1590) | typedef struct {
type xChangeGCReq (line 1599) | typedef struct {
type xCopyGCReq (line 1607) | typedef struct {
type xSetDashesReq (line 1615) | typedef struct {
type xSetClipRectanglesReq (line 1624) | typedef struct {
type xClearAreaReq (line 1632) | typedef struct {
type xCopyAreaReq (line 1641) | typedef struct {
type xCopyPlaneReq (line 1651) | typedef struct {
type xPolyPointReq (line 1662) | typedef struct {
type xPolyPointReq (line 1670) | typedef xPolyPointReq xPolyLineReq;
type xPolySegmentReq (line 1674) | typedef struct {
type xPolySegmentReq (line 1682) | typedef xPolySegmentReq xPolyArcReq;
type xPolySegmentReq (line 1683) | typedef xPolySegmentReq xPolyRectangleReq;
type xPolySegmentReq (line 1684) | typedef xPolySegmentReq xPolyFillRectangleReq;
type xPolySegmentReq (line 1685) | typedef xPolySegmentReq xPolyFillArcReq;
type xFillPolyReq (line 1687) | typedef struct _FillPolyReq {
type xPutImageReq (line 1699) | typedef struct _PutImageReq {
type xGetImageReq (line 1712) | typedef struct {
type xPolyTextReq (line 1724) | typedef struct {
type xPolyTextReq (line 1733) | typedef xPolyTextReq xPolyText8Req;
type xPolyTextReq (line 1734) | typedef xPolyTextReq xPolyText16Req;
type xImageTextReq (line 1736) | typedef struct {
type xImageTextReq (line 1745) | typedef xImageTextReq xImageText8Req;
type xImageTextReq (line 1746) | typedef xImageTextReq xImageText16Req;
type xCreateColormapReq (line 1748) | typedef struct {
type xCopyColormapAndFreeReq (line 1757) | typedef struct {
type xAllocColorReq (line 1765) | typedef struct {
type xAllocNamedColorReq (line 1774) | typedef struct {
type xAllocColorCellsReq (line 1783) | typedef struct {
type xAllocColorPlanesReq (line 1791) | typedef struct {
type xFreeColorsReq (line 1799) | typedef struct {
type xStoreColorsReq (line 1807) | typedef struct {
type xStoreNamedColorReq (line 1814) | typedef struct {
type xQueryColorsReq (line 1824) | typedef struct {
type xLookupColorReq (line 1831) | typedef struct { /* followed by string of length len */
type xCreateCursorReq (line 1840) | typedef struct {
type xCreateGlyphCursorReq (line 1851) | typedef struct {
type xRecolorCursorReq (line 1862) | typedef struct {
type xQueryBestSizeReq (line 1871) | typedef struct {
type xQueryExtensionReq (line 1883) | typedef struct {
type xSetModifierMappingReq (line 1891) | typedef struct {
type xSetPointerMappingReq (line 1897) | typedef struct {
type xGetKeyboardMappingReq (line 1903) | typedef struct {
type xChangeKeyboardMappingReq (line 1912) | typedef struct {
type xChangeKeyboardControlReq (line 1921) | typedef struct {
type xBellReq (line 1928) | typedef struct {
type xChangePointerControlReq (line 1934) | typedef struct {
type xSetScreenSaverReq (line 1943) | typedef struct {
type xChangeHostsReq (line 1952) | typedef struct {
type xListHostsReq (line 1961) | typedef struct {
type xChangeModeReq (line 1967) | typedef struct {
type xChangeModeReq (line 1973) | typedef xChangeModeReq xSetAccessControlReq;
type xChangeModeReq (line 1974) | typedef xChangeModeReq xSetCloseDownModeReq;
type xChangeModeReq (line 1975) | typedef xChangeModeReq xForceScreenSaverReq;
type xRotatePropertiesReq (line 1977) | typedef struct { /* followed by LIST of ATOM */
FILE: OSXvnc-server/include/X11/Xprotostr.h
type xSegment (line 56) | typedef struct _xSegment {
type xPoint (line 62) | typedef struct _xPoint {
type xRectangle (line 66) | typedef struct _xRectangle {
type xArc (line 73) | typedef struct _xArc {
FILE: OSXvnc-server/include/Xserver/colormap.h
type CARD32 (line 80) | typedef CARD32 Pixel;
type _CMEntry (line 81) | struct _CMEntry
type _colorResource (line 83) | struct _colorResource
FILE: OSXvnc-server/include/Xserver/cursor.h
type _Cursor (line 58) | struct _Cursor
type _CursorMetric (line 59) | struct _CursorMetric
FILE: OSXvnc-server/include/Xserver/dix.h
type _TimeStamp (line 285) | struct _TimeStamp
type _Client (line 288) | struct _Client
type _WorkQueue (line 292) | struct _WorkQueue
type HWEventQueueType (line 300) | typedef long HWEventQueueType;
type HWEventQueueType (line 302) | typedef int HWEventQueueType;
type HWEventQueueType (line 304) | typedef HWEventQueueType* HWEventQueuePtr;
type TimeStamp (line 308) | typedef struct _TimeStamp {
type timeval (line 516) | struct timeval
type Bool (line 575) | typedef Bool (* ClientSleepProcPtr)(
type _CallbackList (line 879) | struct _CallbackList
type Bool (line 887) | typedef Bool (*AddCallbackProcPtr) (
type Bool (line 891) | typedef Bool (*DeleteCallbackProcPtr) (
type CallbackFuncsRec (line 903) | typedef struct _CallbackProcs {
type ServerGrabState (line 946) | typedef enum {SERVER_GRABBED, SERVER_UNGRABBED,
type ServerGrabInfoRec (line 949) | typedef struct {
type EventInfoRec (line 960) | typedef struct {
type DeviceEventInfoRec (line 972) | typedef struct {
FILE: OSXvnc-server/include/Xserver/gc.h
type _GCInterest (line 85) | struct _GCInterest
type _GC (line 86) | struct _GC
type _GCOps (line 87) | struct _GCOps
type ChangeGCVal (line 107) | typedef union {
FILE: OSXvnc-server/include/Xserver/input.h
type Leds (line 81) | typedef unsigned long Leds;
type _OtherClients (line 82) | struct _OtherClients
type _InputClients (line 83) | struct _InputClients
type _DeviceIntRec (line 84) | struct _DeviceIntRec
type DeviceRec (line 101) | typedef struct _DeviceRec {
type KeybdCtrl (line 109) | typedef struct {
type KeySymsRec (line 117) | typedef struct {
type PtrCtrl (line 124) | typedef struct {
type IntegerCtrl (line 129) | typedef struct {
type StringCtrl (line 135) | typedef struct {
type BellCtrl (line 143) | typedef struct {
type LedCtrl (line 148) | typedef struct {
FILE: OSXvnc-server/include/Xserver/misc.h
type Bool (line 96) | typedef int Bool;
type PIXEL (line 97) | typedef unsigned long PIXEL;
type ATOM (line 98) | typedef unsigned long ATOM;
type _Font (line 106) | struct _Font
type _Client (line 111) | struct _Client
type _CallbackList (line 116) | struct _CallbackList
type _xReq (line 120) | struct _xReq
type _xPoint (line 235) | struct _xPoint
type _Box (line 236) | struct _Box
type _xEvent (line 237) | struct _xEvent
type _xRectangle (line 238) | struct _xRectangle
type _GrabRec (line 239) | struct _GrabRec
type _CharInfo (line 247) | struct _CharInfo
FILE: OSXvnc-server/include/Xserver/miscstruct.h
type xPoint (line 56) | typedef xPoint DDXPointRec;
type BoxRec (line 58) | typedef struct _Box {
type DevUnion (line 62) | typedef union _DevUnion {
FILE: OSXvnc-server/include/Xserver/os.h
type pointer (line 73) | typedef pointer FID;
type _FontPathRec (line 74) | struct _FontPathRec
type _NewClientRec (line 75) | struct _NewClientRec
type _OsTimerRec (line 237) | struct _OsTimerRec
type CARD32 (line 239) | typedef CARD32 (*OsTimerCallback)(
type SIGVAL (line 323) | typedef SIGVAL (*OsSigHandlerPtr)(
type sockaddr (line 478) | struct sockaddr
type SkippedRequestInfoRec (line 661) | typedef struct {
type ReplyInfoRec (line 669) | typedef struct {
FILE: OSXvnc-server/include/Xserver/pixmap.h
type _Drawable (line 67) | struct _Drawable
type _Pixmap (line 68) | struct _Pixmap
type PixUnion (line 70) | typedef union _PixUnion {
FILE: OSXvnc-server/include/Xserver/regionstr.h
type RegDataRec (line 66) | typedef struct _RegData {
type RegionRec (line 72) | typedef struct _Region {
FILE: OSXvnc-server/include/Xserver/screenint.h
type _PixmapFormat (line 55) | struct _PixmapFormat
type _Visual (line 56) | struct _Visual
type _Depth (line 57) | struct _Depth
type _Screen (line 58) | struct _Screen
type _ColormapRec (line 158) | struct _ColormapRec
FILE: OSXvnc-server/include/Xserver/scrnintstr.h
type PixmapFormatRec (line 64) | typedef struct _PixmapFormat {
type VisualRec (line 70) | typedef struct _Visual {
type DepthRec (line 82) | typedef struct _Depth {
type Bool (line 95) | typedef Bool (* CloseScreenProcPtr)(
type Bool (line 111) | typedef Bool (* SaveScreenProcPtr)(
type Bool (line 159) | typedef Bool (* CreateWindowProcPtr)(
type Bool (line 165) | typedef Bool (* DestroyWindowProcPtr)(
type Bool (line 171) | typedef Bool (* PositionWindowProcPtr)(
type Bool (line 179) | typedef Bool (* ChangeWindowAttributesProcPtr)(
type Bool (line 186) | typedef Bool (* RealizeWindowProcPtr)(
type Bool (line 192) | typedef Bool (* UnrealizeWindowProcPtr)(
type PixmapPtr (line 265) | typedef PixmapPtr (* CreatePixmapProcPtr)(
type Bool (line 274) | typedef Bool (* DestroyPixmapProcPtr)(
type RegionPtr (line 289) | typedef RegionPtr (* RestoreAreasProcPtr)(
type RegionPtr (line 310) | typedef RegionPtr (* TranslateBackingStoreProcPtr)(
type RegionPtr (line 321) | typedef RegionPtr (* ClearBackingStoreProcPtr)(
type Bool (line 340) | typedef Bool (* RealizeFontProcPtr)(
type Bool (line 347) | typedef Bool (* UnrealizeFontProcPtr)(
type Bool (line 370) | typedef Bool (* DisplayCursorProcPtr)(
type Bool (line 377) | typedef Bool (* RealizeCursorProcPtr)(
type Bool (line 384) | typedef Bool (* UnrealizeCursorProcPtr)(
type Bool (line 399) | typedef Bool (* SetCursorPositionProcPtr)(
type Bool (line 408) | typedef Bool (* CreateGCProcPtr)(
type Bool (line 414) | typedef Bool (* CreateColormapProcPtr)(
type RegionPtr (line 462) | typedef RegionPtr (* RegionCreateProcPtr)(
type Bool (line 477) | typedef Bool (* RegionCopyProcPtr)(
type Bool (line 496) | typedef Bool (* IntersectProcPtr)(
type Bool (line 504) | typedef Bool (* UnionProcPtr)(
type Bool (line 512) | typedef Bool (* SubtractProcPtr)(
type Bool (line 520) | typedef Bool (* InverseProcPtr)(
type Bool (line 550) | typedef Bool (* PointInRegionProcPtr)(
type Bool (line 559) | typedef Bool (* RegionNotEmptyProcPtr)(
type BoxPtr (line 571) | typedef BoxPtr (* RegionExtentsProcPtr)(
type Bool (line 577) | typedef Bool (* RegionAppendProcPtr)(
type Bool (line 584) | typedef Bool (* RegionValidateProcPtr)(
type RegionPtr (line 591) | typedef RegionPtr (* BitmapToRegionProcPtr)(
type RegionPtr (line 597) | typedef RegionPtr (* RectsToRegionProcPtr)(
type timeval (line 619) | struct timeval
type Bool (line 633) | typedef Bool (* CreateScreenResourcesProcPtr)(
type Bool (line 639) | typedef Bool (* ModifyPixmapHeaderProcPtr)(
type Bool (line 657) | typedef Bool (* MarkOverlappedWindowsProcPtr)(
type Bool (line 665) | typedef Bool (* ChangeSaveUnderProcPtr)(
type X11WindowPtr (line 700) | typedef X11WindowPtr (* GetLayerWindowProcPtr)(
type ScreenRec (line 742) | typedef struct _Screen {
type ScreenInfo (line 910) | typedef struct _ScreenInfo {
FILE: OSXvnc-server/include/Xserver/validate.h
type VTKind (line 35) | typedef enum { VTOther, VTStack, VTMove, VTUnmap, VTMap } VTKind;
FILE: OSXvnc-server/include/Xserver/window.h
type _BackingStore (line 71) | struct _BackingStore
type _Window (line 72) | struct _Window
FILE: OSXvnc-server/kbdptr.c
function KbdAddEvent (line 42) | void KbdAddEvent(Bool down, KeySym keySym, rfbClientPtr cl) {
function keyboardReleaseKeysForClient (line 46) | void keyboardReleaseKeysForClient(rfbClientPtr cl) {
function PtrAddEvent (line 50) | void PtrAddEvent(int buttonMask, int x, int y, rfbClientPtr cl) {
FILE: OSXvnc-server/main.c
function rfbLog (line 120) | void rfbLog(char *format, ...) {
function rfbDebugLog (line 137) | void rfbDebugLog(char *format, ...) {
function rfbLogPerror (line 153) | void rfbLogPerror(char *str) {
function loadDynamicBundles (line 158) | void loadDynamicBundles(BOOL startup) {
function refreshCallback (line 174) | void refreshCallback(CGRectCount count, const CGRect *rectArray, void *i...
function bitsPerPixelForDisplay (line 207) | static int bitsPerPixelForDisplay(CGDirectDisplayID dispID) {
function CGFloat (line 230) | static CGFloat scalingFactor(void)
function rfbCheckForScreenResolutionChange (line 240) | static void rfbCheckForScreenResolutionChange(void) {
function rfbStartClientWithFD (line 468) | void rfbStartClientWithFD(int client_fd) {
type sockaddr_in (line 493) | struct sockaddr_in
type sockaddr (line 520) | struct sockaddr
type sockaddr (line 531) | struct sockaddr
function connectReverseClient (line 559) | void connectReverseClient(char *hostName, int portNum) {
function rfbGetFramebufferUpdateInRect (line 642) | void rfbGetFramebufferUpdateInRect(int x, int y, int w, int h) {
function rfbScreenInit (line 688) | static bool rfbScreenInit(void) {
function usage (line 796) | static void usage(void) {
function checkForUsage (line 881) | static void checkForUsage(int argc, char *argv[]) {
function processArguments (line 898) | static void processArguments(int argc, char *argv[]) {
function rfbShutdown (line 1045) | void rfbShutdown(void) {
function executeEventLoop (line 1071) | static void executeEventLoop (int signal) {
function rfbShutdownOnSignal (line 1075) | static void rfbShutdownOnSignal(int signal) {
function daemonize (line 1085) | void daemonize( void ) {
function scanForOpenPort (line 1117) | static int scanForOpenPort(void) {
function BOOL (line 1165) | BOOL runningLittleEndian ( void ) {
function main (line 1176) | int main(int argc, char *argv[]) {
FILE: OSXvnc-server/miregion.c
function miPrintRegion (line 194) | int
function Bool (line 216) | Bool
function Bool (line 241) | Bool
function RegionPtr (line 296) | RegionPtr
function miRegionInit (line 328) | void
function miRegionDestroy (line 349) | void
function miRegionUninit (line 357) | void miRegionUninit(RegionPtr pReg)
function Bool (line 363) | Bool miRectAlloc(RegionPtr pRgn, int n)
function Bool (line 394) | Bool
function INLINE (line 445) | INLINE static int
function INLINE (line 530) | INLINE static Bool
function Bool (line 600) | static Bool miRegionOp(RegionPtr newReg, /* Place to store res...
function miSetExtents (line 828) | void miSetExtents(RegionPtr pReg)
function Bool (line 885) | static Bool miIntersectO(RegionPtr pReg, BoxPtr r1, BoxPtr r1End, BoxPtr...
function Bool (line 924) | Bool
function Bool (line 1014) | static Bool
function Bool (line 1067) | Bool
function Bool (line 1163) | Bool
function QuickSortRects (line 1253) | static void
function Bool (line 1342) | Bool
function RegionPtr (line 1520) | RegionPtr
function Bool (line 1613) | static Bool
function Bool (line 1730) | Bool
function Bool (line 1790) | Bool
function miRectIn (line 1849) | int
function miTranslateRegion (line 1942) | void
function miRegionReset (line 2024) | void
function Bool (line 2035) | Bool
function Bool (line 2067) | Bool
function miRegionEmpty (line 2075) | void
function BoxPtr (line 2085) | BoxPtr
function QuickSortSpans (line 2106) | static void QuickSortSpans(DDXPointRec spans[], int widths[], int numSpans)
function miClipSpans (line 2207) | int miClipSpans(RegionPtr prgnDst, DDXPointPtr ppt,
function miFindMaxBand (line 2318) | int miFindMaxBand(RegionPtr prgn)
FILE: OSXvnc-server/mousecursor.c
function CGSConnectionRef (line 45) | inline CGSConnectionRef getConnection(void) {
function CGPoint (line 59) | static CGPoint currentCursorLoc(void) {
function loadCurrentCursorData (line 71) | static void loadCurrentCursorData(void) {
function GetCursorInfo (line 170) | void GetCursorInfo(void) {
function rfbCheckForCursorChange (line 229) | void rfbCheckForCursorChange(void) {
function Bool (line 264) | Bool rfbShouldSendNewCursor(rfbClientPtr cl) {
function Bool (line 271) | Bool rfbShouldSendNewPosition(rfbClientPtr cl) {
function Bool (line 279) | Bool rfbSendCursorPos(rfbClientPtr cl) {
function Bool (line 315) | Bool rfbSendRichCursorUpdate(rfbClientPtr cl) {
FILE: OSXvnc-server/rdr/Exception.h
function namespace (line 25) | namespace rdr {
function virtual (line 38) | virtual const char* str() const { return str_; }
function Exception (line 41) | struct SystemException : public Exception {
function Exception (line 57) | struct TimedOut : public Exception {
function Exception (line 61) | struct EndOfStream : public Exception {
function Exception (line 65) | struct FrameException : public Exception {
FILE: OSXvnc-server/rdr/FdInStream.cxx
type timeval (line 129) | struct timeval
function gettimeofday (line 144) | static void gettimeofday(struct timeval* tv, void*)
type timeval (line 170) | struct timeval
type timeval (line 194) | struct timeval
FILE: OSXvnc-server/rdr/FdInStream.h
function namespace (line 28) | namespace rdr {
FILE: OSXvnc-server/rdr/FdOutStream.h
function namespace (line 28) | namespace rdr {
FILE: OSXvnc-server/rdr/FixedMemOutStream.h
function namespace (line 29) | namespace rdr {
FILE: OSXvnc-server/rdr/InStream.h
function namespace (line 30) | namespace rdr {
FILE: OSXvnc-server/rdr/MemInStream.h
function namespace (line 25) | namespace rdr {
FILE: OSXvnc-server/rdr/MemOutStream.h
function namespace (line 28) | namespace rdr {
FILE: OSXvnc-server/rdr/NullOutStream.h
function namespace (line 24) | namespace rdr {
FILE: OSXvnc-server/rdr/OutStream.h
function namespace (line 30) | namespace rdr {
FILE: OSXvnc-server/rdr/ZlibInStream.h
type z_stream_s (line 29) | struct z_stream_s
function namespace (line 31) | namespace rdr {
FILE: OSXvnc-server/rdr/ZlibOutStream.h
type z_stream_s (line 29) | struct z_stream_s
function namespace (line 31) | namespace rdr {
FILE: OSXvnc-server/rdr/types.h
function namespace (line 22) | namespace rdr {
FILE: OSXvnc-server/rfb.h
type rfbScreenInfo (line 57) | typedef struct
type rfbClientRec (line 72) | struct rfbClientRec
type client_state (line 87) | enum client_state {
type rfbClientRec (line 95) | typedef struct rfbClientRec {
type rfbClientIterator (line 452) | struct rfbClientIterator
FILE: OSXvnc-server/rfbproto.h
type rfbRectangle (line 57) | typedef struct {
type rfbPixelFormat (line 71) | typedef struct {
type rfbClientInitMsg (line 220) | typedef struct {
type rfbServerInitMsg (line 235) | typedef struct {
type rfbFramebufferUpdateMsg (line 391) | typedef struct {
type rfbFramebufferUpdateRectHeader (line 408) | typedef struct {
type rfbCopyRect (line 427) | typedef struct {
type rfbRREHeader (line 442) | typedef struct {
type rfbCoRRERectangle (line 457) | typedef struct {
type rfbZlibHeader (line 528) | typedef struct {
type rfbZRLEHeader (line 539) | typedef struct {
type rfbSetColourMapEntriesMsg (line 572) | typedef struct {
type rfbBellMsg (line 591) | typedef struct {
type rfbServerCutTextMsg (line 603) | typedef struct {
type rfbReSizeFrameBufferMsg (line 619) | typedef struct {
type rfbServerToClientMsg (line 637) | typedef union {
type rfbSetPixelFormatMsg (line 660) | typedef struct {
type rfbFixColourMapEntriesMsg (line 677) | typedef struct {
type rfbSetEncodingsMsg (line 697) | typedef struct {
type rfbSetScaleFactorMsg (line 711) | typedef struct {
type rfbFramebufferUpdateRequestMsg (line 725) | typedef struct {
type rfbKeyEventMsg (line 768) | typedef struct {
type rfbPointerEventMsg (line 782) | typedef struct {
type rfbClientCutTextMsg (line 806) | typedef struct {
type rfbClientToServerMsg (line 822) | typedef union {
FILE: OSXvnc-server/rfbserver.c
type rfbClientIterator (line 51) | struct rfbClientIterator {
type rfbClientIterator (line 56) | struct rfbClientIterator
function rfbClientListInit (line 62) | void
function rfbClientIteratorPtr (line 69) | rfbClientIteratorPtr
function rfbClientPtr (line 78) | rfbClientPtr
function rfbReleaseClientIterator (line 87) | void
function Bool (line 93) | Bool rfbClientsConnected(void)
function rfbSendClientList (line 98) | static void rfbSendClientList(void) {
FILE: OSXvnc-server/rfbserver.h
type rfbserver (line 4) | typedef struct rfbserver {
FILE: OSXvnc-server/rre.c
function Bool (line 57) | Bool
function CARD32 (line 272) | static CARD32
FILE: OSXvnc-server/screencapture.c
function screen_data_t (line 32) | screen_data_t *screen_InitCapture()
function screen_CloseCapture (line 165) | void screen_CloseCapture(screen_data_t * p_data)
FILE: OSXvnc-server/screencapture.h
type screen_data_t (line 13) | typedef struct screen_data_t
FILE: OSXvnc-server/sockets.c
function rfbCloseClient (line 61) | void
function ReadExact (line 75) | int
function WriteExact (line 126) | int
FILE: OSXvnc-server/stats.c
function rfbResetStats (line 37) | void rfbResetStats(rfbClientPtr cl) {
function rfbPrintStats (line 51) | void
FILE: OSXvnc-server/storepasswd.c
function usage (line 26) | void usage(void)
function main (line 35) | int main(int argc, char *argv[])
FILE: OSXvnc-server/tableinitcmtemplate.c
function rfbInitColourMapSingleTableOUT (line 45) | static void
FILE: OSXvnc-server/tableinittctemplate.c
function rfbInitTrueColourSingleTableOUT (line 59) | static void
function rfbInitTrueColourRGBTablesOUT (line 98) | static void
function rfbInitOneRGBTableOUT (line 121) | static void
FILE: OSXvnc-server/tabletranstemplate.c
function rfbTranslateWithSingleTableINtoOUT (line 54) | static void
function rfbTranslateWithRGBTablesINtoOUT (line 85) | static void
FILE: OSXvnc-server/tight.c
type TIGHT_CONF (line 49) | typedef struct TIGHT_CONF_s {
function rfbNumCodedRectsTight (line 173) | int
function Bool (line 197) | Bool
function FindBestSolidArea (line 333) | static void
function ExtendSolidArea (line 371) | static void
function Bool (line 406) | static Bool
function Bool (line 451) | static Bool
function Bool (line 504) | static Bool
function Bool (line 578) | static Bool
function Bool (line 607) | static Bool
function Bool (line 632) | static Bool
function Bool (line 695) | static Bool
function Bool (line 755) | static Bool
function Bool (line 780) | static Bool
function Bool (line 817) | static Bool
function Bool (line 870) | static Bool SendCompressedData(rfbClientPtr cl, int compressedLen)
function FillPalette8 (line 908) | static void
function PaletteReset (line 1030) | static void
function PaletteInsert (line 1039) | static int
function Pack24 (line 1110) | static void Pack24(char *buf, rfbPixelFormat *fmt, int count)
function FilterGradient24 (line 1249) | static void
function DetectSmoothImage (line 1386) | static int
function DetectSmoothImage24 (line 1428) | static unsigned long
function Bool (line 1580) | static Bool
function PrepareRowForJpeg (line 1642) | static void
function PrepareRowForJpeg24 (line 1659) | static void
function JpegInitDestination (line 1725) | static void
function boolean (line 1736) | static boolean
function JpegTermDestination (line 1749) | static void
function JpegSetDstManager (line 1759) | static void
FILE: OSXvnc-server/tight.h
type COLOR_LIST (line 32) | typedef struct COLOR_LIST_s {
type PALETTE_ENTRY (line 38) | typedef struct PALETTE_ENTRY_s {
type PALETTE (line 43) | typedef struct PALETTE_s {
FILE: OSXvnc-server/translate.c
function rfbTranslateNone (line 137) | void
function Bool (line 156) | Bool rfbSetTranslateFunction(rfbClientPtr cl) {
function Bool (line 166) | Bool rfbSetTranslateFunctionUsingFormat(rfbClientPtr cl, rfbPixelFormat ...
function Bool (line 271) | static Bool rfbSetClientColourMapBGR233(rfbClientPtr cl)
function PrintPixelFormat (line 316) | void PrintPixelFormat(rfbPixelFormat *pf) {
FILE: OSXvnc-server/vncauth.c
function vncEncryptAndStorePasswd (line 66) | int
function vncRandomBytes (line 146) | void
function vncEncryptBytes (line 163) | void
FILE: OSXvnc-server/xalloc.c
function Xfree (line 173) | void
function FatalError (line 180) | void
FILE: OSXvnc-server/zlib.c
function Bool (line 41) | Bool rfbSendOneRectEncodingZlib(rfbClientPtr cl, int x, int y, int w, in...
function Bool (line 213) | Bool
FILE: OSXvnc-server/zlibhex.c
function Bool (line 45) | Bool
function zlibCompress (line 80) | int
FILE: OSXvnc-server/zrle.cc
function Bool (line 80) | Bool rfbSendRectEncodingZRLE(rfbClientPtr cl, int x, int y, int w, int h)
function FreeZrleData (line 180) | void FreeZrleData(rfbClientPtr cl)
FILE: OSXvnc-server/zrleEncode.h
function class (line 70) | class PaletteHelper {
function hash (line 80) | inline int hash(rdr::U32 pix)
function insert (line 85) | inline void insert(rdr::U32 pix)
function lookup (line 100) | inline int lookup(rdr::U32 pix)
function ZRLE_ENCODE (line 119) | void ZRLE_ENCODE (int x, int y, int w, int h, rdr::OutStream* os,
function ZRLE_ENCODE_TILE (line 142) | void ZRLE_ENCODE_TILE (PIXEL_T* data, int w, int h, rdr::OutStream* os)
FILE: VNCController.h
function interface (line 13) | interface VNCController : NSObject {
Condensed preview — 280 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,505K chars).
[
{
"path": ".github/workflows/dco.yml",
"chars": 434,
"preview": "# .github/workflows/dco.yml\nname: DCO\non:\n pull_request:\n push:\n branches:\n - main\njobs:\n check:\n runs-on:"
},
{
"path": ".gitignore",
"chars": 115,
"preview": "/OSXvnc.xcodeproj/project.xcworkspace\n/OSXvnc.xcodeproj/xcuserdata/\n\n# xcodebuild -configuration Deployment\n/build\n"
},
{
"path": ".gitmodules",
"chars": 108,
"preview": "[submodule \"libjpeg-turbo\"]\n\tpath = libjpeg-turbo\n\turl = https://github.com/libjpeg-turbo/libjpeg-turbo.git\n"
},
{
"path": ".travis.yml",
"chars": 522,
"preview": "# Travis CI for OSXvnc.\n\nos: osx\nosx_image: xcode12.2\n\naddons:\nbefore_deploy:\nbefore_install:\nbranches:\ncompiler:\ndeploy"
},
{
"path": "Base.lproj/MainMenu.xib",
"chars": 136818,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.Cocoa.XIB\" version=\"3"
},
{
"path": "Bundles/Echoware/ACConnection.cpp",
"chars": 20670,
"preview": "#include \"StdAfx.h\"\n#include \"acconnection.h\"\n#include \"ProxyConnection.h\"\n#include \"DllProxyInfo.h\"\n#include \"NetPacket"
},
{
"path": "Bundles/Echoware/ACConnection.h",
"chars": 2077,
"preview": "#ifndef _ACCONNECTION_H\n#define _ACCONNECTION_H\n\n#if _MSC_VER > 1000\n#pragma once\n#endif\n\n#include \"APISocket.h\"\n#includ"
},
{
"path": "Bundles/Echoware/AES.cpp",
"chars": 1545,
"preview": "#include \"StdAfx.h\"\n#include \"aes.h\"\n\nCAES::CAES(void)\n{\n}\n\nCAES::~CAES(void)\n{\n}\n\nvoid CAES::Decrypt(const unsigned cha"
},
{
"path": "Bundles/Echoware/AES.h",
"chars": 639,
"preview": "#pragma once\n\n#include \"OpenSSL/aes.h\"\n\n//wrapper class for AES encryption\n\nclass CAES\n{\npublic:\n\tCAES(void);\n\t~CAES(voi"
},
{
"path": "Bundles/Echoware/APISocket/APISocket.h",
"chars": 5115,
"preview": "#ifndef __APISOCKET__\n#define __APISOCKET__\n\n#if _MSC_VER > 1000\n#pragma once\n#endif\n\n#undef FD_SETSIZE\n#define FD_SETSI"
},
{
"path": "Bundles/Echoware/APISocket/ClientSocket.cpp",
"chars": 1382,
"preview": "#include \"stdafx.h\"\n#include \"APISocket.h\"\n\n#include \"EchoToOSX.h\"\n\nAPISocket::CClientSocket::CClientSocket(int sock /*="
},
{
"path": "Bundles/Echoware/APISocket/ServerSocket.cpp",
"chars": 1681,
"preview": "#include \"stdafx.h\"\n#include \"APISocket.h\"\n\nAPISocket::CServerSocket::CServerSocket(unsigned int nPort/*=0*/)\n\t:APISocke"
},
{
"path": "Bundles/Echoware/APISocket/Socket.cpp",
"chars": 10340,
"preview": "#include \"apisocket.h\"\n#include <stdio.h>\n\n#include \"errno.h\"\n#include <sys/types.h>\n#include <sys/socket.h>\n#include \"s"
},
{
"path": "Bundles/Echoware/CritSection.cpp",
"chars": 482,
"preview": "#include \"StdAfx.h\"\n#include \"critsection.h\"\n#include \"errno.h\"\n\nCCritSection::CCritSection(void)\n{\n\tpthread_mutex_init("
},
{
"path": "Bundles/Echoware/CritSection.h",
"chars": 339,
"preview": "#ifndef _CRITSECTION_H\n#define _CRITSECTION_H\n\n#if _MSC_VER > 1000\n#pragma once\n#endif\n\n#include \"EchoToOSX.h\"\n\n//critic"
},
{
"path": "Bundles/Echoware/DataChannel.cpp",
"chars": 7778,
"preview": "#include \"StdAfx.h\"\n#include \"DataChannel.h\"\n#include \"DataChannels.h\"\n#include \"LocalDataChannel.h\"\n#include \"EchoSrvDa"
},
{
"path": "Bundles/Echoware/DataChannel.h",
"chars": 1480,
"preview": "#ifndef _DATACHANNEL_H\n#define _DATACHANNEL_H\n\n#if _MSC_VER > 1000\n#pragma once\n#endif\n\nclass CDataChannels;\nclass CLoca"
},
{
"path": "Bundles/Echoware/DataChannelSocket.cpp",
"chars": 1587,
"preview": "#include \"StdAfx.h\"\n#include \"datachannelsocket.h\"\n#include \"DataChannel.h\"\n\nCDataChannelSocket::CDataChannelSocket(CDat"
},
{
"path": "Bundles/Echoware/DataChannelSocket.h",
"chars": 1512,
"preview": "#ifndef _DATACHANNELSOCKET_H\n#define _DATACHANNELSOCKET_H\n\n#if _MSC_VER > 1000\n#pragma once\n#endif\n\n#include \"apisocket."
},
{
"path": "Bundles/Echoware/DataChannel_timer.cpp",
"chars": 7194,
"preview": "#include \"StdAfx.h\"\n#include \"DataChannel.h\"\n#include \"DataChannels.h\"\n#include \"LocalDataChannel.h\"\n#include \"EchoSrvDa"
},
{
"path": "Bundles/Echoware/DataChannels.cpp",
"chars": 5429,
"preview": "#include \"StdAfx.h\"\n#include \"DataChannels.h\"\n#include \"DataChannel.h\"\n\n#include \"pthread.h\"\n\n#define WM_REMOVE_CHANNEL\t"
},
{
"path": "Bundles/Echoware/DataChannels.h",
"chars": 1723,
"preview": "#ifndef _DATACHANNELS_H\n#define _DATACHANNELS_H\n\n#if _MSC_VER > 1000\n#pragma once\n#endif\n\nclass CDataChannel;\nclass CDll"
},
{
"path": "Bundles/Echoware/DirService.cpp",
"chars": 13499,
"preview": "/*\n * DirService.cpp\n * Echoware\n *\n * Created by admin on 4/11/07.\n * Copyright 2007 __MyCompanyName__. All rights "
},
{
"path": "Bundles/Echoware/DirService.h",
"chars": 1074,
"preview": "/*\n * DirService.h\n * Echoware\n *\n * Created by admin on 4/11/07.\n * Copyright 2007 __MyCompanyName__. All rights re"
},
{
"path": "Bundles/Echoware/DllProxyInfo.cpp",
"chars": 3396,
"preview": "#include \"stdafx.h\"\n#include \"DllProxyInfo.h\"\n#include \"globals.h\"\n\nCDllProxyInfo::CDllProxyInfo()\n:\tm_strName(\"\")\n\t,m_s"
},
{
"path": "Bundles/Echoware/DllProxyInfo.h",
"chars": 1430,
"preview": "#ifndef _PROXYINFO_H\n#define _PROXYINFO_H\n\n#if _MSC_VER > 1000\n#pragma once\n#endif\n\n#include <string>\n#include \"Interfac"
},
{
"path": "Bundles/Echoware/EchoController.h",
"chars": 2632,
"preview": "/* EchoController */\n\n#import <Cocoa/Cocoa.h>\n\nclass CServerListSynchronize;\nclass CCritSection;\nclass CMyDllProxyInfo;\n"
},
{
"path": "Bundles/Echoware/EchoController.m",
"chars": 21749,
"preview": "\n#import \"EchoController.h\"\n#import \"Echoware.h\"\n#import \"InterfaceDLLProxyInfo.h\"\n#import \"unistd.h\"\n\n#include <CoreFou"
},
{
"path": "Bundles/Echoware/EchoSrvDataChannel.cpp",
"chars": 3381,
"preview": "#include \"StdAfx.h\"\n#include \"echosrvdatachannel.h\"\n#include \"localdatachannel.h\"\n#include \"NetPacket.h\"\n#include \"DataC"
},
{
"path": "Bundles/Echoware/EchoSrvDataChannel.h",
"chars": 1271,
"preview": "#ifndef _ECHOSRVDATACHANNELS_H\n#define _ECHOSRVDATACHANNELS_H\n\n#if _MSC_VER > 1000\n#pragma once\n#endif\n\n#include \"DataCh"
},
{
"path": "Bundles/Echoware/EchoToOSX.cpp",
"chars": 1493,
"preview": "/*\n * EchoToOSX.cpp\n * Echoware\n *\n * Created by Jonathan on 3/29/06.\n * Copyright 2006 __MyCompanyName__. All right"
},
{
"path": "Bundles/Echoware/EchoToOSX.h",
"chars": 2057,
"preview": "/*\n * EchoToVNC.h\n * Echoware\n *\n * Created by Jonathan on 3/3/06.\n * Copyright 2006 __MyCompanyName__. All rights r"
},
{
"path": "Bundles/Echoware/Echoware.cpp",
"chars": 5095,
"preview": "// Echoware.cpp : Defines the entry point for the DLL application.\n//\n\n#include \"stdafx.h\"\n#include \"Echoware.h\"\n#includ"
},
{
"path": "Bundles/Echoware/Echoware.dsp",
"chars": 6905,
"preview": "# Microsoft Developer Studio Project File - Name=\"Echoware\" - Package Owner=<4>\n# Microsoft Developer Studio Generated B"
},
{
"path": "Bundles/Echoware/Echoware.dsw",
"chars": 1327,
"preview": "Microsoft Developer Studio Workspace File, Format Version 6.00\n# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!\n\n##"
},
{
"path": "Bundles/Echoware/Echoware.h",
"chars": 1060,
"preview": "#if !defined(_ECHOWARE_H)\n#define _ECHOWARE_H\n\n#if _MSC_VER > 1000\n#pragma once\n#endif\n\nextern \"C\" char* GetDllVersion()"
},
{
"path": "Bundles/Echoware/Echoware.sln",
"chars": 2439,
"preview": "Microsoft Visual Studio Solution File, Format Version 7.00\nProject(\"{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}\") = \"Echoware"
},
{
"path": "Bundles/Echoware/Echoware.vcproj",
"chars": 6147,
"preview": "<?xml version=\"1.0\" encoding = \"Windows-1252\"?>\n<VisualStudioProject\n\tProjectType=\"Visual C++\"\n\tVersion=\"7.00\"\n\tName=\"Ec"
},
{
"path": "Bundles/Echoware/Echoware.xcodeproj/admin.mode1",
"chars": 49297,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.c"
},
{
"path": "Bundles/Echoware/Echoware.xcodeproj/admin.pbxuser",
"chars": 105452,
"preview": "// !$*UTF8*$!\n{\n\t089C1669FE841209C02AAC07 /* Project object */ = {\n\t\tactiveBuildConfigurationName = Deployment;\n\t\tactive"
},
{
"path": "Bundles/Echoware/Echoware.xcodeproj/project.pbxproj",
"chars": 71888,
"preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 42;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
},
{
"path": "Bundles/Echoware/Echoware_Prefix.pch",
"chars": 148,
"preview": "//\n// Prefix header for all source files of the 'Echoware' target in the 'Echoware' project.\n//\n\n#ifdef __OBJC__\n #im"
},
{
"path": "Bundles/Echoware/English.lproj/EchoServers.nib/classes.nib",
"chars": 2127,
"preview": "{\n IBClasses = (\n {\n ACTIONS = {\n addServer = id;\n advancedSettings ="
},
{
"path": "Bundles/Echoware/English.lproj/EchoServers.nib/info.nib",
"chars": 456,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.c"
},
{
"path": "Bundles/Echoware/Globals.cpp",
"chars": 2653,
"preview": "#include \"stdafx.h\"\n#include \"Globals.h\"\n\n//#include <Winsock2.h>\n\nCGlobals g_globals;\n\nCGlobals::CGlobals()\n{\n\tm_bIsDll"
},
{
"path": "Bundles/Echoware/Globals.h",
"chars": 3600,
"preview": "#ifndef _GLOBALS_H\n#define _GLOBALS_H\n\n#if _MSC_VER > 1000\n#pragma once\n#endif\n\n#define CHANNEL_CODE_SIZE\t11\n#define ID_"
},
{
"path": "Bundles/Echoware/Info.plist",
"chars": 718,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.c"
},
{
"path": "Bundles/Echoware/InterfaceDllProxyInfo.h",
"chars": 1547,
"preview": "#ifndef _INTERFACE_DLL_PROXY_INFO_H\n#define _INTERFACE_DLL_PROXY_INFO_H\n\n#if _MSC_VER > 1000\n#pragma once\n#endif\n\n//enum"
},
{
"path": "Bundles/Echoware/LICENSE.txt",
"chars": 8135,
"preview": "EchoWare OSX Bundle 1.926\n9 August 07\n\nThe openssl material used in EchoWare comes with license material that\nis appende"
},
{
"path": "Bundles/Echoware/LocalDataChannel.cpp",
"chars": 3414,
"preview": "\n#include \"StdAfx.h\"\n#include \"LocalDataChannel.h\"\n#include \"DataChannel.h\"\n#include \"globals.h\"\n\nCLocalDataChannel::CLo"
},
{
"path": "Bundles/Echoware/LocalDataChannel.h",
"chars": 664,
"preview": "#ifndef _LOCALDATACHANNELS_H\n#define _LOCALDATACHANNELS_H\n\n#if _MSC_VER > 1000\n#pragma once\n#endif\n\n#include \"datachanne"
},
{
"path": "Bundles/Echoware/LocalListener.cpp",
"chars": 648,
"preview": "#include \"StdAfx.h\"\n#include \"locallistener.h\"\n#include \"DataChannel.h\"\n\nCLocalListener::CLocalListener(CDataChannel* pD"
},
{
"path": "Bundles/Echoware/LocalListener.h",
"chars": 524,
"preview": "#ifndef _LOCALLISTENER_H\n#define _LOCALLISTENER_H\n\n#if _MSC_VER > 1000\n#pragma once\n#endif\n\n#include \"apisocket.h\"\n\nclas"
},
{
"path": "Bundles/Echoware/LocalProxyConnection.cpp",
"chars": 167,
"preview": "#include \"StdAfx.h\"\n#include \"LocalProxyConnection.h\"\n\nCLocalProxyConnection::CLocalProxyConnection(void)\n{\n}\n\nCLocalPro"
},
{
"path": "Bundles/Echoware/LocalProxyConnection.h",
"chars": 273,
"preview": "#ifndef _LOCALPROXICONNECT_H\n#define _LOCALPROXICONNECT_H\n\n#if _MSC_VER > 1000\n#pragma once\n#endif\n\n#include \"proxyconne"
},
{
"path": "Bundles/Echoware/Logger.cpp",
"chars": 1803,
"preview": "#include \"StdAfx.h\"\n#include <time.h>\n#include \"logger.h\"\n\n//if defined _CONSOLE_ then the logging data are writted to a"
},
{
"path": "Bundles/Echoware/Logger.h",
"chars": 748,
"preview": "#ifndef _LOGGER_H\n#define _LOGGER_H\n\n#if _MSC_VER > 1000\n#pragma once\n#endif\n\n#include <string>\n#include \"CritSection.h\""
},
{
"path": "Bundles/Echoware/MyDllProxyInfo.cpp",
"chars": 2278,
"preview": "/*\n * MyDllProxyInfo.cpp\n * Echoware\n *\n * Created by Vasya Pupkin on 1/15/07.\n * Copyright 2007 __MyCompanyName__. "
},
{
"path": "Bundles/Echoware/MyDllProxyInfo.h",
"chars": 828,
"preview": "/*\n * MyDllProxyInfo.h\n * Echoware\n *\n * Created by Vasya Pupkin on 1/15/07.\n * Copyright 2007 __MyCompanyName__. Al"
},
{
"path": "Bundles/Echoware/NetPacket.h",
"chars": 4049,
"preview": "#ifndef _NETPACKET_H\n#define _NETPACKET_H\n\n#if _MSC_VER > 1000\n#pragma once\n#endif\n\nenum\n{\n PROXY_MSG_BASE = WM_USER "
},
{
"path": "Bundles/Echoware/OpenSSL/LibeaySt.dsp",
"chars": 3053,
"preview": "# Microsoft Developer Studio Project File - Name=\"LibeaySt\" - Package Owner=<4>\n# Microsoft Developer Studio Generated B"
},
{
"path": "Bundles/Echoware/OpenSSL/LibeaySt.vcproj",
"chars": 3070,
"preview": "<?xml version=\"1.0\" encoding = \"Windows-1252\"?>\n<VisualStudioProject\n\tProjectType=\"Visual C++\"\n\tVersion=\"7.00\"\n\tName=\"Li"
},
{
"path": "Bundles/Echoware/OpenSSL/aes.h",
"chars": 4846,
"preview": "/* crypto/aes/aes.h -*- mode:C; c-file-style: \"eay\" -*- */\n/* =========================================================="
},
{
"path": "Bundles/Echoware/OpenSSL/aes_core.c",
"chars": 59962,
"preview": "/* crypto/aes/aes_core.c -*- mode:C; c-file-style: \"eay\" -*- */\n/**\n * rijndael-alg-fst.c\n *\n * @version 3.0 (December 2"
},
{
"path": "Bundles/Echoware/OpenSSL/aes_locl.h",
"chars": 3507,
"preview": "/* crypto/aes/aes.h -*- mode:C; c-file-style: \"eay\" -*- */\n/* =========================================================="
},
{
"path": "Bundles/Echoware/OpenSSL/e_os2.h",
"chars": 9790,
"preview": "/* e_os2.h */\n/* ====================================================================\n * Copyright (c) 1998-2000 The Ope"
},
{
"path": "Bundles/Echoware/OpenSSL/opensslconf.h",
"chars": 5730,
"preview": "/* opensslconf.h */\n/* WARNING: Generated automatically from opensslconf.h.in by Configure. */\n\n/* OpenSSL was configure"
},
{
"path": "Bundles/Echoware/ProxiesManager.cpp",
"chars": 6649,
"preview": "#include \"StdAfx.h\"\n#include \"proxiesmanager.h\"\n#include \"DllProxyInfo.h\"\n//#include <algorithm>\n\nCProxiesManager::CProx"
},
{
"path": "Bundles/Echoware/ProxiesManager.h",
"chars": 2045,
"preview": "#ifndef _PROXIESMANAGER_H\n#define _PROXIESMANAGER_H\n\n#if _MSC_VER > 1000\n#pragma once\n#endif\n\n#include \"ProxyConnection."
},
{
"path": "Bundles/Echoware/ProxyConnect/ProxyConnect.cpp",
"chars": 19782,
"preview": "#include \"stdafx.h\"\n#include <string>\n#include \"proxyconnect.h\"\n\n#include \"ntlm.h\"\n\n#include <sys/types.h>\n#include <sys"
},
{
"path": "Bundles/Echoware/ProxyConnect/ProxyConnect.dsp",
"chars": 3772,
"preview": "# Microsoft Developer Studio Project File - Name=\"ProxyConnect\" - Package Owner=<4>\n# Microsoft Developer Studio Generat"
},
{
"path": "Bundles/Echoware/ProxyConnect/ProxyConnect.h",
"chars": 2811,
"preview": "#if !defined(_PROXY_CONNECT_)\n#define _PROXY_CONNECT_\n\n#if _MSC_VER > 1000\n#pragma once\n#endif\n\n#define LOCAL_PROXY_CONN"
},
{
"path": "Bundles/Echoware/ProxyConnect/ProxyConnect.vcproj",
"chars": 3671,
"preview": "<?xml version=\"1.0\" encoding = \"Windows-1252\"?>\n<VisualStudioProject\n\tProjectType=\"Visual C++\"\n\tVersion=\"7.00\"\n\tName=\"Pr"
},
{
"path": "Bundles/Echoware/ProxyConnect/global.h",
"chars": 784,
"preview": "/* GLOBAL.H - RSAREF types and constants\n */\n\n/* PROTOTYPES should be set to one if and only if the compiler supports\n "
},
{
"path": "Bundles/Echoware/ProxyConnect/md4.cpp",
"chars": 8423,
"preview": "/* MD4C.C - RSA Data Security, Inc., MD4 message-digest algorithm\n */\n\n/* Copyright (C) 1990-2, RSA Data Security, Inc. "
},
{
"path": "Bundles/Echoware/ProxyConnect/md4.h",
"chars": 1540,
"preview": "#if !defined(_MD4_)\n#define _MD4_\n\n\n/* MD4.H - header file for MD4C.C\n */\n\n/* Copyright (C) 1991-2, RSA Data Security, I"
},
{
"path": "Bundles/Echoware/ProxyConnect/md5.cpp",
"chars": 10265,
"preview": "/* MD5C.C - RSA Data Security, Inc., MD5 message-digest algorithm\n */\n\n/* Copyright (C) 1991-2, RSA Data Security, Inc. "
},
{
"path": "Bundles/Echoware/ProxyConnect/md5.h",
"chars": 1373,
"preview": "#if !defined(_MD5_)\n#define _MD5_\n\n\n/* MD5.H - header file for MD5C.C\n */\n\n/* Copyright (C) 1991-2, RSA Data Security, I"
},
{
"path": "Bundles/Echoware/ProxyConnect/ntlm.h",
"chars": 1093,
"preview": "#if !defined(_NTLM_)\n#define _NTLM_\n\n\n\n#define MAX_HOSTLEN 32\n#define MAX_DOMLEN 32\n#define MAX_USERLEN 32\n#define RESP_"
},
{
"path": "Bundles/Echoware/ProxyConnect/ntlmv2.cpp",
"chars": 20918,
"preview": "////////////////////////////////////////////////////////////////////////////\n// EchoWare is Copyright (C) 2004,2005 Echo"
},
{
"path": "Bundles/Echoware/ProxyConnect/stdafx.cpp",
"chars": 291,
"preview": "// stdafx.cpp : source file that includes just the standard includes\n// ProxyConnect.pch will be the pre-compiled header"
},
{
"path": "Bundles/Echoware/ProxyConnect/stdafx.h",
"chars": 320,
"preview": "// stdafx.h : include file for standard system include files,\n// or project specific include files that are used frequen"
},
{
"path": "Bundles/Echoware/ProxyConnection.cpp",
"chars": 3614,
"preview": "#include \"StdAfx.h\"\n#include \"proxyconnection.h\"\n#include \"dllproxyinfo.h\"\n#include \"ACConnection.h\"\n#include \"DataChann"
},
{
"path": "Bundles/Echoware/ProxyConnection.h",
"chars": 1071,
"preview": "#ifndef _PROXCONNECTION_H\n#define _PROXCONNECTION_H\n\n#if _MSC_VER > 1000\n#pragma once\n#endif\n\n#include \"CritSection.h\"\n\n"
},
{
"path": "Bundles/Echoware/README.txt",
"chars": 2601,
"preview": "\n EchoWare OSX Bundle Version 1.926\n Released: 9 August 2007\n "
},
{
"path": "Bundles/Echoware/RFBBundleWrapper.cpp",
"chars": 21448,
"preview": "/*\n * RFBBundleWrapper.cpp\n * Echoware\n *\n * Created by admin on 4/11/07.\n * Copyright 2007 __MyCompanyName__. All r"
},
{
"path": "Bundles/Echoware/RFBBundleWrapper.h",
"chars": 804,
"preview": "/*\n * RFBBundleWrapper.h\n * Echoware\n *\n * Created by admin on 4/11/07.\n * Copyright 2007 __MyCompanyName__. All rig"
},
{
"path": "Bundles/Echoware/RSA/Code.cpp",
"chars": 2087,
"preview": "#include \"stdafx.h\"\n//#include <mem.h>\n#include <string.h>\n\n#include \"HNumber.h\"\n#include \"GSimply.h\"\n#include \"Operator"
},
{
"path": "Bundles/Echoware/RSA/Commonf.cpp",
"chars": 1629,
"preview": "// General purpose functions\n#include \"stdafx.h\"\n//#include <conio.h>\n#include <math.h>\n#include <string.h>\n#include <st"
},
{
"path": "Bundles/Echoware/RSA/Commonf.h",
"chars": 371,
"preview": "// General purpose functions\n#ifndef __CommonF_H\n#define __CommonF_H\n\n#include <stdio.h>\n#include \"MyTypes.h\"\n#include \""
},
{
"path": "Bundles/Echoware/RSA/Function.h",
"chars": 341,
"preview": "#ifndef __FUNCTION_H\n#define __FUNCTION_H\n\n#include \"HNumber.h\"\nextern int LL(HugeNumber &q);\n//extern word NOD(unsigned"
},
{
"path": "Bundles/Echoware/RSA/Gsimply.cpp",
"chars": 7296,
"preview": "/*\nPrograms of the superbig random numbers generation.\n\nIgorSharov@rambler.ru\n*/\n#include \"stdafx.h\"\n//#include <conio.h"
},
{
"path": "Bundles/Echoware/RSA/Gsimply.h",
"chars": 285,
"preview": "#ifndef __GSymply\n#define __GSymply\n\nextern int PrimeQ(HugeNumber &km1, HugeNumber &k);\nextern void GeneratePrimeHugeNum"
},
{
"path": "Bundles/Echoware/RSA/HNumber.h",
"chars": 1296,
"preview": "#ifndef __HugeNumber_H\n#define __HugeNumber_H\n\n#include <stdlib.h>\n#include \"MyTypes.h\"\n\nclass HugeNumber\n{\n\tpublic:\n\t\tw"
},
{
"path": "Bundles/Echoware/RSA/Hnfunct.cpp",
"chars": 9718,
"preview": "/*\nFunctions for work with huge numbers\nIgorSharov@rambler.ru\n*/\n\n#include \"stdafx.h\"\n//#include <conio.h>\t//Debug\n#incl"
},
{
"path": "Bundles/Echoware/RSA/Hnfunct.h",
"chars": 732,
"preview": "#ifndef _HNFUNCT__H\n#define _HNFUNCT__H\n\n#include \"Hnumber.h\"\n\nextern HugeNumber zero,one,two,three;\nextern int BaseRazr"
},
{
"path": "Bundles/Echoware/RSA/Hnumber.cpp",
"chars": 9919,
"preview": "/*\nIgorSharov@rambler.ru\n*/\n#include \"stdafx.h\"\n//#include <conio.h>\n#include <string.h>\n#include <math.h>\n#include <std"
},
{
"path": "Bundles/Echoware/RSA/Keys.cpp",
"chars": 3872,
"preview": "/*\nIgorSharov@rambler.ru\n*/\n#include \"stdafx.h\"\n#include <time.h>\n//#include <conio.h>\n#include <stdlib.h>\n#include <std"
},
{
"path": "Bundles/Echoware/RSA/Keys_main.cpp",
"chars": 694,
"preview": "// Key_main.cpp : Defines the entry point for the console application.\n//\n#include \"stdafx.h\"\n//#include <conio.h>\n#incl"
},
{
"path": "Bundles/Echoware/RSA/MyNum.h",
"chars": 800,
"preview": "#ifndef __MyNum\n#define __MyNum\n\n#define SizeOfMyNum 4\n\n#ifndef __TByte\n#define __TByte\ntypedef unsigned char byte;\n#end"
},
{
"path": "Bundles/Echoware/RSA/MyTypes.h",
"chars": 386,
"preview": "#ifndef __MyTypes_H\n#define __MyTypes_H\n\n#define base 0x1000\t\t \t// Osnovanie sistemy schislenija\n\n//#define DecBase\t\t\t\t"
},
{
"path": "Bundles/Echoware/RSA/Mynum.cpp",
"chars": 1334,
"preview": "/*\nIgorSharov@rambler.ru\nBolshie chisla so znakom\nv2.0\n*/\n\n#include \"stdafx.h\"\n#include \"MyNum.h\"\n#include \"HNFunct.h\"\n#"
},
{
"path": "Bundles/Echoware/RSA/Myprint.cpp",
"chars": 1365,
"preview": "#include \"stdafx.h\"\n#include <stdio.h>\n#include \"HNumber.h\"\n#include \"MyNum.h\"\n\nFILE *Prot=NULL;\n\nvoid Protocol(char *Ms"
},
{
"path": "Bundles/Echoware/RSA/Myprint.h",
"chars": 402,
"preview": "#ifndef __MyPrint\n#define __MyPrint\n\n#include <stdio.h>\n\n#include \"MyNum.h\"\n\nextern FILE *Prot;\nextern void Protocol(cha"
},
{
"path": "Bundles/Echoware/RSA/Operator.cpp",
"chars": 1828,
"preview": "/*\nIgorSharov@rambler.ru\n*/\n#include \"stdafx.h\"\n\n#include \"HNumber.h\"\n\nint operator !=( const HugeNumber &test1, const H"
},
{
"path": "Bundles/Echoware/RSA/Operator.h",
"chars": 463,
"preview": "#ifndef __Operator_H\n#define __Operator_H\n\n#include \"HNumber.h\"\n\nextern int operator !=( const HugeNumber & test1, const"
},
{
"path": "Bundles/Echoware/RSA/PrimeGen.cpp",
"chars": 4909,
"preview": "/*\nIgorSharov@rambler.ru\n*/\n#include \"stdafx.h\"\n#include <Time.h>\n#include \"HNumber.h\"\n#include \"HNFunct.h\"\n#include \"Op"
},
{
"path": "Bundles/Echoware/RSA/Profiler.h",
"chars": 139,
"preview": "#ifndef __Profiler\n#define __Profiler\n\n#include <time.h>\n#define TimeDim 11\n\nextern time_t Time[TimeDim];\nextern void Re"
},
{
"path": "Bundles/Echoware/RSA/RSA.dsp",
"chars": 4121,
"preview": "# Microsoft Developer Studio Project File - Name=\"RSA\" - Package Owner=<4>\n# Microsoft Developer Studio Generated Build "
},
{
"path": "Bundles/Echoware/RSA/RSA.vcproj",
"chars": 3966,
"preview": "<?xml version=\"1.0\" encoding = \"Windows-1252\"?>\n<VisualStudioProject\n\tProjectType=\"Visual C++\"\n\tVersion=\"7.00\"\n\tName=\"RS"
},
{
"path": "Bundles/Echoware/RSA/StdAfx.h",
"chars": 338,
"preview": "// stdafx.h : include file for standard system include files,\n// or project specific include files that are used frequen"
},
{
"path": "Bundles/Echoware/RSA/TMSG.H",
"chars": 441,
"preview": "#ifndef __TMsg\n#define __TMsg\n// Class for encoding/decoding operations. Any message for\n// coding should be represented"
},
{
"path": "Bundles/Echoware/RSA/stdafx.cpp",
"chars": 282,
"preview": "// stdafx.cpp : source file that includes just the standard includes\n// RSA.pch will be the pre-compiled header\n// stdaf"
},
{
"path": "Bundles/Echoware/RSAKeys.cpp",
"chars": 4224,
"preview": "#include \"stdafx.h\"\n#include \"RSAKeys.h\"\n#include <time.h>\n#include \"RSA/HNumber.h\"\n#include \"RSA/Hnfunct.h\"\n#include \"b"
},
{
"path": "Bundles/Echoware/RSAKeys.h",
"chars": 1122,
"preview": "#ifndef _RSAKEYS_H\n#define _RSAKEYS_H\n\n#if _MSC_VER > 1000\n#pragma once\n#endif\n\n#include \"rsa/HNumber.h\"\n\n#define RSA_PU"
},
{
"path": "Bundles/Echoware/ServerListSynchronize.cpp",
"chars": 9077,
"preview": "/*\n * ServerListSynchronize.cpp\n * Echoware\n *\n * Created by admin on 2/21/07.\n * Copyright 2007 __MyCompanyName__. "
},
{
"path": "Bundles/Echoware/ServerListSynchronize.h",
"chars": 1289,
"preview": "/*\n * ServerListSynchronize.h\n * Echoware\n *\n * Created by admin on 2/21/07.\n * Copyright 2007 __MyCompanyName__. Al"
},
{
"path": "Bundles/Echoware/User.cpp",
"chars": 3765,
"preview": "/*\n * User.cpp\n * Echoware\n *\n * Created by admin on 4/11/07.\n * Copyright 2007 __MyCompanyName__. All rights reserv"
},
{
"path": "Bundles/Echoware/User.h",
"chars": 988,
"preview": "/*\n * User.h\n * Echoware\n *\n * Created by admin on 4/11/07.\n * Copyright 2007 __MyCompanyName__. All rights reserved"
},
{
"path": "Bundles/Echoware/blowfish.cpp",
"chars": 5969,
"preview": "// blowfish.cpp C++ class implementation of the BLOWFISH encryption algorithm\n// _THE BLOWFISH ENCRYPTION ALGORITHM_\n/"
},
{
"path": "Bundles/Echoware/blowfish.h",
"chars": 1864,
"preview": "#ifndef _inc_blowfish_h\n#define _inc_blowfish_h\n\n#include <libkern/OSByteOrder.h>\n// blowfish.h interface file for b"
},
{
"path": "Bundles/Echoware/blowfish.h2",
"chars": 13158,
"preview": "// blowfish.h2 header file containing random number tables\n\nstatic DWORD bf_P[NPASS + 2] = {\n 0x243f6a88, 0x85a308d3, "
},
{
"path": "Bundles/Echoware/rfbserver.cpp",
"chars": 160,
"preview": "/*\n * rfbserver.cpp\n * Echoware\n *\n * Created by admin on 2/15/07.\n * Copyright 2007 __MyCompanyName__. All rights r"
},
{
"path": "Bundles/Echoware/rfbserver.h",
"chars": 807,
"preview": "/*\n * rfbserver.h\n * Echoware\n *\n * Created by admin on 2/15/07.\n * Copyright 2007 __MyCompanyName__. All rights res"
},
{
"path": "Bundles/Echoware/stdafx.cpp",
"chars": 287,
"preview": "// stdafx.cpp : source file that includes just the standard includes\n// Echoware.pch will be the pre-compiled header\n// "
},
{
"path": "Bundles/Echoware/stdafx.h",
"chars": 159,
"preview": "#ifndef _STDAFX_H\n#define _STDAFX_H\n\n#if _MSC_VER > 1000\n#pragma once\n#endif\n\n#define WIN32_LEAN_AND_MEAN\n\n//#include <w"
},
{
"path": "Bundles/Echoware/version.plist",
"chars": 467,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.c"
},
{
"path": "Bundles/Jaguar/JaguarBundle-Info.plist",
"chars": 901,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.c"
},
{
"path": "Bundles/Jaguar/JaguarExtensions.h",
"chars": 423,
"preview": "//\n// JaguarExtensions.h\n// OSXvnc\n//\n// Created by Jonathan Gillaspie on Fri Jul 11 2003.\n// Copyright (c) 2003 Red"
},
{
"path": "Bundles/Jaguar/JaguarExtensions.m",
"chars": 9707,
"preview": "//\n// JaguarExtensions.m\n// OSXvnc\n//\n// Created by Jonathan Gillaspie on Fri Jul 11 2003.\n// Copyright (c) 2003 Red"
},
{
"path": "Bundles/RFBBundleProtocol.h",
"chars": 1275,
"preview": "//\n// RFBBundleProtocol.h\n// OSXvnc\n//\n// Created by Jonathan Gillaspie on Fri Aug 22 2003.\n// Copyright (c) 2003 Re"
},
{
"path": "Bundles/Tiger/TigerBundle-Info.plist",
"chars": 754,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.c"
},
{
"path": "Bundles/Tiger/TigerExtensions.h",
"chars": 790,
"preview": "//\n// TigerExtensions.h\n// OSXvnc\n//\n// Created by Jonathan Gillaspie on Fri Jul 11 2003.\n// Copyright (c) 2003 Reds"
},
{
"path": "Bundles/Tiger/TigerExtensions.m",
"chars": 19621,
"preview": "//\n// TigerExtensions.m\n// OSXvnc\n//\n// Created by Jonathan Gillaspie on Fri Jul 11 2003.\n// Copyright (c) 2003 Reds"
},
{
"path": "Bundles/VNCBundle.h",
"chars": 357,
"preview": "//\n// VNCBundle.h\n// OSXvnc\n//\n// Created by Jonathan Gillaspie on 3/6/08.\n// Copyright 2008 __MyCompanyName__. All "
},
{
"path": "Bundles/VNCBundle.m",
"chars": 5672,
"preview": "//\n// VNCBundle.m\n// OSXvnc\n//\n// Created by Jonathan Gillaspie on 3/6/08.\n// Copyright 2008 __MyCompanyName__. All "
},
{
"path": "English.lproj/MainMenu.nib/classes.nib",
"chars": 6332,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "English.lproj/MainMenu.nib/info.nib",
"chars": 583,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "French.lproj/Credits.rtf",
"chars": 3230,
"preview": "{\\rtf1\\mac\\ansicpg10000\\cocoartf824\\cocoasubrtf100\n{\\fonttbl\\f0\\fswiss\\fcharset77 Helvetica;\\f1\\froman\\fcharset77 Times-"
},
{
"path": "French.lproj/MainMenu.nib/classes.nib",
"chars": 2822,
"preview": "{\n IBClasses = (\n {\n ACTIONS = {optionChanged = id; };\n CLASS = FirstResponder;\n "
},
{
"path": "French.lproj/MainMenu.nib/info.nib",
"chars": 659,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.c"
},
{
"path": "German.lproj/Credits.rtf",
"chars": 3085,
"preview": "{\\rtf1\\mac\\ansicpg10000\\cocoartf824\\cocoasubrtf410\n{\\fonttbl\\f0\\fswiss\\fcharset77 Helvetica;\\f1\\froman\\fcharset77 Times-"
},
{
"path": "German.lproj/MainMenu.nib/classes.nib",
"chars": 2774,
"preview": "{\n IBClasses = (\n {\n ACTIONS = {\"\" = id; optionChanged = id; };\n CLASS = FirstResponder;"
},
{
"path": "German.lproj/MainMenu.nib/info.nib",
"chars": 683,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.c"
},
{
"path": "Italian.lproj/Copying.rtf",
"chars": 21279,
"preview": "{\\rtf1\\mac\\ansicpg10000\\cocoartf824\\cocoasubrtf110\n{\\fonttbl\\f0\\fswiss\\fcharset77 Helvetica;\\f1\\fswiss\\fcharset77 Arial-"
},
{
"path": "Italian.lproj/Credits.rtf",
"chars": 3059,
"preview": "{\\rtf1\\mac\\ansicpg10000\\cocoartf102\n{\\fonttbl\\f0\\fswiss\\fcharset77 Helvetica;\\f1\\froman\\fcharset77 Times-Roman;}\n{\\color"
},
{
"path": "Italian.lproj/MainMenu.nib/classes.nib",
"chars": 2774,
"preview": "{\n IBClasses = (\n {\n ACTIONS = {\"\" = id; optionChanged = id; };\n CLASS = FirstResponder;"
},
{
"path": "Italian.lproj/MainMenu.nib/info.nib",
"chars": 634,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.c"
},
{
"path": "Japanese.lproj/Credits.rtf",
"chars": 3897,
"preview": "{\\rtf1\\mac\\ansicpg10000\\cocoartf102\n{\\fonttbl\\f0\\fswiss\\fcharset77 Helvetica;\\f1\\fnil\\fcharset78 HiraKakuPro-W3;\\f2\\from"
},
{
"path": "Japanese.lproj/MainMenu.nib/classes.nib",
"chars": 2765,
"preview": "{\n IBClasses = (\n {\n ACTIONS = {optionChanged = id; };\n CLASS = FirstResponder;\n "
},
{
"path": "Japanese.lproj/MainMenu.nib/info.nib",
"chars": 652,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.c"
},
{
"path": "LICENSE",
"chars": 32472,
"preview": " GNU GENERAL PUBLIC LICENSE\n Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
},
{
"path": "NSAuthorization.h",
"chars": 600,
"preview": "//\n// NSAuthorization.h\n// OSXvnc\n//\n// Created by Jonathan Gillaspie on Fri Dec 12 2003.\n// Copyright (c) 2003 __My"
},
{
"path": "NSAuthorization.m",
"chars": 2752,
"preview": "//\n// NSAuthorization.m\n// OSXvnc\n//\n// Created by Jonathan Gillaspie on Fri Dec 12 2003.\n// Copyright (c) 2003 __My"
},
{
"path": "OSXvnc/OSXvnc",
"chars": 2826,
"preview": "#!/bin/sh\n. /etc/rc.common\n\n#\n# OSXvnc\n#\n# The OSXvnc application will OVERWRITE this file if you ask it to Configure th"
},
{
"path": "OSXvnc/OSXvnc-keepalive",
"chars": 2779,
"preview": "#!/bin/sh\n#\n# OSXvnc-keepalive\n#\n# This little script, as you might imagine, will relaunch OSXvnc-server\n# when a user l"
},
{
"path": "OSXvnc/Resources/English.lproj/Localizable.strings",
"chars": 399,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist SYSTEM \"file://localhost/System/Library/DTDs/PropertyList.dtd\">\n<"
},
{
"path": "OSXvnc/StartupParameters.plist",
"chars": 289,
"preview": "{\n Description = \"VNC Server\";\n Provides = (\"VNC\");\n Requires = (\"Resolver\");\n Uses\t\t\t = (\"Core G"
},
{
"path": "OSXvnc-server/CGS.h",
"chars": 1581,
"preview": "/*\n * CGS.h\n * OSXvnc\n *\n * Created by Mihai Parparita on Sat Jun 15 2002.\n * Copyright (c) 2002 Mihai Parparita. Al"
},
{
"path": "OSXvnc-server/COPYING",
"chars": 18043,
"preview": "\t\t GNU GENERAL PUBLIC LICENSE\n\t\t Version 2, June 1991\n\n Copyright (C) 1989, 1991 Free Software Foundation, Inc."
},
{
"path": "OSXvnc-server/Makefile",
"chars": 1638,
"preview": "# Makefile for OSXvnc-server\n\nCC=cc\nCXX=cc\nCFLAGS=-O3 -Wall -Wextra -g\nCXXFLAGS=-O3 -Wall -Wextra -g\nINCLUDES=-Ilibvncau"
},
{
"path": "OSXvnc-server/VNCServer.h",
"chars": 2752,
"preview": "//\n// VNCServer.h\n// OSXvnc\n//\n// Created by Jonathan Gillaspie on Mon Nov 17 2003.\n// Copyright (c) 2003 __MyCompan"
},
{
"path": "OSXvnc-server/VNCServer.m",
"chars": 39953,
"preview": "//\n// VNCServer.m\n// OSXvnc\n//\n// Created by Jonathan Gillaspie on Mon Nov 17 2003.\n// Copyright (c) 2003 Redstone S"
},
{
"path": "OSXvnc-server/auth.c",
"chars": 10091,
"preview": "/*\n * auth.c - deal with authentication.\n *\n * This file implements the VNC authentication protocol when setting up an R"
},
{
"path": "OSXvnc-server/corre.c",
"chars": 10451,
"preview": "/*\n * corre.c\n *\n * Routines to implement Compact Rise-and-Run-length Encoding (CoRRE). This\n * code is based on krw's "
},
{
"path": "OSXvnc-server/cutpaste.c",
"chars": 43570,
"preview": "/*\n * cutpaste.c - routines to deal with cut & paste buffers / selection.\n */\n\n/*\n * OSXvnc Copyright (C) 2001 Dan McGu"
},
{
"path": "OSXvnc-server/d3des.c",
"chars": 15150,
"preview": "/*\n * This is D3DES (V5.09) by Richard Outerbridge with the double and\n * triple-length support removed for use in VNC. "
},
{
"path": "OSXvnc-server/d3des.h",
"chars": 1618,
"preview": "/*\n * This is D3DES (V5.09) by Richard Outerbridge with the double and\n * triple-length support removed for use in VNC.\n"
},
{
"path": "OSXvnc-server/dimming.c",
"chars": 4077,
"preview": "#include <IOKit/pwr_mgt/IOPMLib.h>\n#include <IOKit/pwr_mgt/IOPM.h>\n#include <stdlib.h>\n#include <stdio.h>\n#include <sign"
},
{
"path": "OSXvnc-server/getMACAddress.c",
"chars": 11122,
"preview": "/*\n * getMACAddress.c\n * Eggplant\n *\n * Created by Douglas Simons on 11/15/06.\n * Copyright 2006 Redstone Software, "
},
{
"path": "OSXvnc-server/getMACAddress.h",
"chars": 231,
"preview": "/*\n * getMACAddress.h\n * Eggplant\n *\n * Created by Douglas Simons on 11/15/06.\n * Copyright 2006 Redstone Software, "
},
{
"path": "OSXvnc-server/hextile.c",
"chars": 23043,
"preview": "/*\n * hextile.c\n *\n * Routines to implement Hextile Encoding\n */\n\n/*\n * OSXvnc Copyright (C) 2001 Dan McGuirk <mcguirk@"
},
{
"path": "OSXvnc-server/include/X11/X.h",
"chars": 23534,
"preview": "/*\n * $XConsortium: X.h,v 1.69 94/04/17 20:10:48 dpw Exp $\n */\n\n/* Definitions for the X window system likely to be"
},
{
"path": "OSXvnc-server/include/X11/Xalloca.h",
"chars": 5377,
"preview": "/* $XConsortium: Xalloca.h /main/6 1996/09/28 16:17:22 rws $ */\n\n/*\n\nCopyright (c) 1995 X Consortium\n\nPermission is her"
},
{
"path": "OSXvnc-server/include/X11/Xfuncproto.h",
"chars": 2879,
"preview": "/* $XConsortium: Xfuncproto.h,v 1.9 95/06/08 23:20:39 gildea Exp $ */\n/*\n *\nCopyright (c) 1989, 1991 X Consortium\n\nPerm"
},
{
"path": "OSXvnc-server/include/X11/Xfuncs.h",
"chars": 3399,
"preview": "/*\n * $XConsortium: Xfuncs.h,v 1.16 94/12/01 16:25:53 kaleb Exp $\n * $XFree86: xc/include/Xfuncs.h,v 3.2 1995/01/28 15:4"
},
{
"path": "OSXvnc-server/include/X11/Xmd.h",
"chars": 7203,
"preview": "/***********************************************************\n\nCopyright (c) 1987 X Consortium\n\nPermission is hereby gra"
},
{
"path": "OSXvnc-server/include/X11/Xos.h",
"chars": 7274,
"preview": "/*\n * $XConsortium: Xos.h /main/70 1996/11/15 16:00:41 kaleb $\n * $XFree86: xc/include/Xos.h,v 3.21.2.1 1998/01/23 12:35"
},
{
"path": "OSXvnc-server/include/X11/Xosdefs.h",
"chars": 3238,
"preview": "/*\n * O/S-dependent (mis)feature macro definitions\n *\n * $XConsortium: Xosdefs.h /main/16 1996/09/28 16:17:29 rws $\n * $"
},
{
"path": "OSXvnc-server/include/X11/Xproto.h",
"chars": 55277,
"preview": "/*\n *\t$XConsortium: Xproto.h /main/21 1996/03/20 15:27:51 mor $\n */\n\n/* Definitions for the X window system used by serv"
},
{
"path": "OSXvnc-server/include/X11/Xprotostr.h",
"chars": 3003,
"preview": "/* $XConsortium: Xprotostr.h,v 1.5 94/04/17 20:10:53 rws Exp $ */\n#ifndef XPROTOSTRUCTS_H\n#define XPROTOSTRUCTS_H\n\n/****"
},
{
"path": "OSXvnc-server/include/X11/keysym.h",
"chars": 2660,
"preview": "/* $XConsortium: keysym.h,v 1.15 94/04/17 20:10:55 rws Exp $ */\n\n/******************************************************"
},
{
"path": "OSXvnc-server/include/X11/keysymdef.h",
"chars": 66539,
"preview": "/* $TOG: keysymdef.h /main/25 1997/06/21 10:54:51 kaleb $ */\n\n/*********************************************************"
},
{
"path": "OSXvnc-server/include/Xserver/colormap.h",
"chars": 5301,
"preview": "/*\n\nCopyright (c) 1987 X Consortium\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof th"
},
{
"path": "OSXvnc-server/include/Xserver/cursor.h",
"chars": 4090,
"preview": "/***********************************************************\n\nCopyright (c) 1987 X Consortium\n\nPermission is hereby gra"
},
{
"path": "OSXvnc-server/include/Xserver/dix.h",
"chars": 22714,
"preview": "/***********************************************************\n\nCopyright (c) 1987 X Consortium\n\nPermission is hereby gra"
},
{
"path": "OSXvnc-server/include/Xserver/gc.h",
"chars": 5191,
"preview": "/***********************************************************\n\nCopyright (c) 1987 X Consortium\n\nPermission is hereby gra"
},
{
"path": "OSXvnc-server/include/Xserver/input.h",
"chars": 11919,
"preview": "/* $XConsortium: input.h /main/22 1996/09/25 00:50:39 dpw $ */\n/* $XFree86: xc/programs/Xserver/include/input.h,v 3.4 19"
},
{
"path": "OSXvnc-server/include/Xserver/misc.h",
"chars": 8358,
"preview": "/***********************************************************\n\nCopyright (c) 1987 X Consortium\n\nPermission is hereby gra"
},
{
"path": "OSXvnc-server/include/Xserver/miscstruct.h",
"chars": 2954,
"preview": "/* $XConsortium: miscstruct.h,v 5.5 94/04/17 20:25:50 dpw Exp $ */\n/* $XFree86: xc/programs/Xserver/include/miscstruct.h"
},
{
"path": "OSXvnc-server/include/Xserver/opaque.h",
"chars": 2495,
"preview": "/* $XConsortium: opaque.h,v 1.19 94/04/17 20:25:51 dpw Exp $ */\n/*\n\nCopyright (c) 1987 X Consortium\n\nPermission is here"
},
{
"path": "OSXvnc-server/include/Xserver/os.h",
"chars": 13600,
"preview": "/***********************************************************\n\nCopyright (c) 1987 X Consortium\n\nPermission is hereby gra"
},
{
"path": "OSXvnc-server/include/Xserver/pixmap.h",
"chars": 4013,
"preview": "/* $XConsortium: pixmap.h,v 5.6 94/04/17 20:25:53 dpw Exp $ */\n/********************************************************"
},
{
"path": "OSXvnc-server/include/Xserver/region.h",
"chars": 2557,
"preview": "/* $XConsortium: region.h,v 1.5 94/04/17 20:25:59 dpw Exp $ */\n/********************************************************"
},
{
"path": "OSXvnc-server/include/Xserver/regionstr.h",
"chars": 10750,
"preview": "/* $XConsortium: regionstr.h,v 1.8 94/04/17 20:26:01 dpw Exp $ */\n/*****************************************************"
},
{
"path": "OSXvnc-server/include/Xserver/screenint.h",
"chars": 4509,
"preview": "/* $XConsortium: screenint.h /main/6 1996/06/17 10:55:15 mor $ */\n/*****************************************************"
},
{
"path": "OSXvnc-server/include/Xserver/scrnintstr.h",
"chars": 23623,
"preview": "/* $XConsortium: scrnintstr.h /main/32 1996/09/28 17:14:32 rws $ */\n/***************************************************"
},
{
"path": "OSXvnc-server/include/Xserver/validate.h",
"chars": 1682,
"preview": "/* $XConsortium: validate.h,v 5.4 94/04/17 20:26:11 dpw Exp $ */\n\n/*\n\nCopyright (c) 1989 X Consortium\n\nPermission is he"
},
{
"path": "OSXvnc-server/include/Xserver/window.h",
"chars": 7751,
"preview": "/* $XConsortium: window.h /main/8 1996/03/21 13:35:33 mor $ */\n/********************************************************"
},
{
"path": "OSXvnc-server/kbdptr.c",
"chars": 1656,
"preview": "/*\n * kbdptr.c - deal with keyboard and pointer device over TCP & UDP.\n *\n *\n */\n\n/*\n * OSXvnc Copyright (C) 2001 Dan M"
}
]
// ... and 80 more files (download for full content)
About this extraction
This page contains the full source code of the stweil/OSXvnc GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 280 files (2.2 MB), approximately 595.1k tokens, and a symbol index with 798 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.