Explorar o código

Added readme's and install script

[email protected] %!s(int64=5) %!d(string=hai) anos
pai
achega
e340a02a8f
Modificáronse 6 ficheiros con 614 adicións e 0 borrados
  1. 6 0
      .hg_archival.txt
  2. 1 0
      .hgtags
  3. 142 0
      CheckRide.iss
  4. 127 0
      License.txt
  5. 169 0
      Readme.TXT
  6. 169 0
      Readme.md

+ 6 - 0
.hg_archival.txt

@@ -0,0 +1,6 @@
+repo: 645a23c6ba855f4f1d472dccfdabafa5aa503b16
+node: 1eaaf0fad9f7b87c5fb182b25f7de06735da886a
+branch: default
+latesttag: Release1.0
+latesttagdistance: 10
+changessincelatesttag: 10

+ 1 - 0
.hgtags

@@ -0,0 +1 @@
+9ce950d3df43699a4de80cedbd3dd99eb215becd Release1.0

+ 142 - 0
CheckRide.iss

@@ -0,0 +1,142 @@
+; Complete package (client, cerver and source code)
+; Use CheckRideOnTheRun.iss to generate a temporary client helper app.
+#define MyAppName "CheckRide Helper"
+#define MyAppVersion "1.0"
+#define MyAppPublisher "Reinier Olislagers"
+#define MyAppURL "https://bitbucket.org/reiniero/checkride"
+#define MyAppExeName "CheckRideHelper.exe"
+#define MyAppSupportPhone "You know my number"
+#define MyAppDescription "Remote support tool for helped party"
+
+[Setup]
+; NOTE: The value of AppId uniquely identifies this application.
+; Do not use the same AppId value in installers for other applications.
+; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
+AppId={{F3E60E4F-DFEB-4FA2-8987-F3DB84133704}
+AppName={#MyAppName}
+AppVersion={#MyAppVersion}
+;AppVerName={#MyAppName} {#MyAppVersion}
+AppPublisher={#MyAppPublisher}
+AppPublisherURL={#MyAppURL}
+AppComments=Software to help support customers.
+AppContact={#MyAppPublisher}
+AppReadmeFile=https://bitbucket.org/reiniero/checkride
+AppSupportPhone={#MyAppSupportPhone}
+AppSupportURL={#MyAppURL}
+AppUpdatesURL={#MyAppURL}
+
+;We don't do this as we want to give people the choice to show this or not
+;InfoAfterFile=Readme.txt
+LicenseFile=License.txt
+
+VersionInfoCompany=Reinier Olislagers
+VersionInfoDescription={#MyAppDescription}
+VersionInfoProductName={#MyAppName}
+VersionInfoProductVersion={#MyAppVersion}
+VersionInfoTextVersion={#MyAppVersion}
+VersionInfoVersion={#MyAppVersion}
+
+DefaultDirName={pf}\{#MyAppName}
+DefaultGroupName={#MyAppName}
+AllowNoIcons=yes
+OutputDir=setupoutput\
+OutputBaseFilename=CheckRideHelperSetup
+SetupIconFile=Source\CheckRide.ico
+
+; compress as much as we can:
+Compression=lzma2/Ultra64
+SolidCompression=true
+; used for setup.exe generated by inno:
+InternalCompressLevel=Max
+MergeDuplicateFiles=true
+AppCopyright=Reinier Olislagers et al
+
+[Languages]
+Name: english; MessagesFile: compiler:Default.isl
+
+[Tasks]
+Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
+
+[Files]
+Source: output\CheckRide.exe; DestDir: {app}; Flags: ignoreversion; Components: "Helper";
+Source: source\CheckRide.conf; DestDir: {app}; Components: "Helper"; Flags: confirmoverwrite;
+; for later modification of CheckRideNoResource:
+; we don't do resource editing now, so...
+;Source: Source\checkrideconfig.rc; DestDir: {app}; Components: "Helper"; 
+Source: output\CheckRideHelper.exe; DestDir: {app}; Flags: ignoreversion; Components: "Helper";
+;Not necessary anymore
+;Source: output\CheckRideNoResource.exe; DestDir: {app}; Flags: ignoreversion; Components: "Helper"; 
+Source: Source\external\vncviewer.exe; DestDir: {app}; Flags: ignoreversion; Components: "Helper";
+Source: Source\external\libeay32.dll; DestDir: {app}; Flags: ignoreversion; Components: "Helper";
+; Resource editing doesn't work with the exes we output, so leave it.
+;Source: Source\external\resedit.exe; DestDir: {app}; Flags: ignoreversion; Components: "Helper";
+; sas.dll, schook.dll needed for customisation of checkride. Checkride also needs other files
+; (e.g. stunnel stuff) but these are already present for checkridehelper anyway.
+Source: Source\external\sas.dll; DestDir: {app}; Flags: ignoreversion; Components: "Helper";
+Source: Source\external\schook.dll; DestDir: {app}; Flags: ignoreversion; Components: "Helper";
+Source: Source\external\ssleay32.dll; DestDir: {app}; Flags: ignoreversion; Components: "Helper";
+Source: Source\external\stunnel.exe; DestDir: {app}; Flags: ignoreversion; Components: "Helper";
+Source: Source\external\stunnel.pem; DestDir: {app}; Flags: ignoreversion; Components: "Helper";
+Source: Source\external\ultravnc.ini; DestDir: {app}; Flags: ignoreversion; Components: "Helper";
+Source: Source\external\zlib1.dll; DestDir: {app}; Flags: ignoreversion; Components: "Helper";
+Source: License.TXT; DestDir: {app}; Components: "Helper Source";
+Source: Readme.TXT; DestDir: {app}; Components: "Helper Source"; 
+
+; Once again for source code:
+Source: Source\external\libeay32.dll; DestDir: {app}\Source\external; Flags: ignoreversion; Components: "Source";
+Source: Source\external\sas.dll; DestDir: {app}\Source\external; Flags: ignoreversion; Components: "Source";
+Source: Source\external\schook.dll; DestDir: {app}\Source\external; Flags: ignoreversion; Components: "Source";
+Source: Source\external\ssleay32.dll; DestDir: {app}\Source\external; Flags: ignoreversion; Components: "Source";
+Source: Source\external\stunnel.exe; DestDir: {app}\Source\external; Flags: ignoreversion; Components: "Source";
+Source: Source\external\stunnel.pem; DestDir: {app}\Source\external; Flags: ignoreversion; Components: "Source";
+Source: Source\external\ultravnc.ini; DestDir: {app}\Source\external; Flags: ignoreversion; Components: "Source";
+Source: Source\external\vncviewer.exe; DestDir: {app}\Source\external; Flags: ignoreversion; Components: "Source";
+;Not needed anymore; we use schooks
+;Source: Source\external\vnchooks.dll; DestDir: {app}\Source\external; Flags: ignoreversion; Components: "Source";
+Source: Source\external\winvnc.exe; DestDir: {app}\Source\external; Flags: ignoreversion; Components: "Source";
+Source: Source\external\zlib1.dll; DestDir: {app}\Source\external; Flags: ignoreversion; Components: "Source";
+
+; All external source can be included in source code as well:
+; However, this really bloats the installer, so left at
+; https://bitbucket.org/reiniero/checkride/src 
+;Source: Source\external\source\*.*; DestDir: {app}\Source\External; Components: "Source";
+
+Source: Source\checkride.conf; DestDir: {app}\Source; Components: "Source";
+Source: Source\CheckRide.ico; DestDir: {app}\Source; Components: "Source"; 
+Source: Source\CheckRide.lpi; DestDir: {app}\Source; Components: "Source"; 
+Source: Source\CheckRide.lpr; DestDir: {app}\Source; Components: "Source";
+Source: Source\CheckRideHelper.ico; DestDir: {app}\Source; Components: "Source"; 
+Source: Source\CheckRideHelper.lpi; DestDir: {app}\Source; Components: "Source"; 
+Source: Source\CheckRideHelper.lpr; DestDir: {app}\Source; Components: "Source"; 
+Source: Source\checkridehelperunit.lfm; DestDir: {app}\Source; Components: "Source"; 
+Source: Source\checkridehelperunit.pas; DestDir: {app}\Source; Components: "Source"; 
+Source: Source\manifest.rc; DestDir: {app}\Source; Components: "Source"; 
+Source: Source\manifest.xml; DestDir: {app}\Source;  Components: "Source";
+Source: Source\stunnelhelped.conf.template; DestDir: {app}\Source; Components: "Source"; 
+Source: Source\stunnelhelper.conf.template; DestDir: {app}\Source; Components: "Source"; 
+Source: Source\unit1.lfm; DestDir: {app}\Source; Components: "Source"; 
+Source: Source\unit1.pas; DestDir: {app}\Source; Components: "Source";
+
+Source: CheckRide.iss; DestDir: {app}; Components: "Source";
+ 
+ 
+
+[Icons]
+Name: {group}\{#MyAppName}; Filename: {app}\{#MyAppExeName}
+Name: {commondesktop}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; Tasks: desktopicon
+Name: "{group}\Uninstall {#MyAppName}"; Filename: {uninstallexe}; Comment: "Uninstall application"; 
+
+[Run]
+;CheckRideHelper doesn't seem to nneed elevation, so we can do this.
+Filename: {app}\{#MyAppExeName}; Flags: nowait postinstall skipifsilent
+Filename: "{app}\README.TXT"; Description: "View the README file"; Flags: postinstall shellexec skipifsilent
+
+
+[Types]
+Name: full; Description: "Full install: installs everything"; 
+Name: server; Description: "Server/helper only, no source code"; 
+Name: custom; Description: "Custom installation"; Flags: IsCustom; 
+
+[Components]
+Name: Helper; Description: "Server & Client: Software to take over other peoples' screens."; Flags: checkablealone; Types: full server custom; 
+Name: Source; Description: "Source code for the program. Useful for developers."; Flags: checkablealone; Types: full custom;

+ 127 - 0
License.txt

@@ -0,0 +1,127 @@
+CheckRide licenses
+==================
+Just wanted to make sure you understand and accept under what licenses the various CheckRide components are distributed.
+If you don't agree with those licenses, please don't use the product.
+The non-lawyer summary: you may use these programs, even commercially, but please don't sue anybody and you may have to distribute source code to stuff if you modify it.
+See below for details.
+
+1. Description
+==============
+The CheckRide package contains of some wrapper and helper programs (e.g. CheckRide, CheckRideHelper, CheckRideResourceZipper) that use the UltraVNC, and stunnel programs and associated libraries (DLLS) and configuration files.
+The wrapper and helper programs don't link (statically or dynamically) to these applications/DLLs, but execute them and use command-line parameters and configuration files to specify what to do.
+
+2. CheckRide, CheckRideHelper, CheckRideResourceZipper License
+==============================================================
+The CheckRide, CheckRideHelper and CheckRideResourceZipper source code/programs are released as freeware under the MIT license: all use permitted but no liability accepted:
+
+Copyright (C) 2011 by Reinier Olislagers
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+3. UltraVNC license
+================================
+UltraVNC 1.0.9.6.1 from www.uvnc.com, GPL v3 license. 
+see
+http://www.uvnc.com/downloads/ultravnc/95-downlaod-10961.html
+
+Source is provided via the CheckRide source code archive:
+https://bitbucket.org/reiniero/checkride/src
+also at
+http://www.uvnc.com/component/jdownloads/summary/6/2.html
+
+Files used: 
+sas.dll
+schook.dll
+ultravnc.ini
+vnchooks.dll
+vncviewer.exe
+winvnc.exe
+
+Taken from the UltraVNC 1.0.9.6.1 download link:
+http://www.uvnc.com/downloads/ultravnc/95-downlaod-10961.html
+License
+
+GNU GENERAL PUBLIC LICENSE (GPL)
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+http://www.gnu.org/licenses
+
+4. Stunnel license
+==================
+Stunnel 4.44 files from 
+http://www.stunnel.org/
+GPL license; includes permission to use with OpenSSL libraries.
+Source and binaries (including OpenSSL libraries) can be downloaded from
+http://www.stunnel.org/?page=downloads
+
+Source is provided via the CheckRide source code archive:
+https://bitbucket.org/reiniero/checkride/src
+also at
+ftp://ftp.stunnel.org/stunnel/stunnel-4.44.tar.gz
+
+Files used: 
+libeay32.dll
+ssleay32.dll
+stunnel.exe
+stunnel.ini
+stunnel.pem
+zlib1.dll
+
+Below extracted from COPYING in the source archive:
+stunnel license (see COPYRIGHT.GPL for detailed GPL conditions)
+
+Copyright (C) 1998-2011 Michal Trojnara
+
+This program is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2 of the License, or (at your option) any later
+version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+this program; if not, see <http://www.gnu.org/licenses>.
+
+Linking stunnel statically or dynamically with other modules is making
+a combined work based on stunnel. Thus, the terms and conditions of the
+GNU General Public License cover the whole combination.
+
+In addition, as a special exception, the copyright holder of stunnel gives you
+permission to combine stunnel with free software programs or libraries that
+are released under the GNU LGPL and with code included in the standard release
+of OpenSSL under the OpenSSL License (or modified versions of such code, with
+unchanged license). You may copy and distribute such a system following the
+terms of the GNU GPL for stunnel and the licenses of the other code concerned.
+
+Note that people who make modified versions of stunnel are not obligated to
+grant this special exception for their modified versions; it is their choice
+whether to do so. The GNU General Public License gives permission to release
+a modified version without this exception; this exception also makes it
+possible to release a modified version which carries forward this exception.

+ 169 - 0
Readme.TXT

@@ -0,0 +1,169 @@
+CheckRide readme
+================
+
+1. Help, it doesn't work?
+=========================
+If you are running CheckRide.exe, your helper probably hasn't completely read this file, so he or she forgot to configure the program correctly.
+Symptom: the program shows this line:
+Setting up connection to helper Wonko the Sane at changethisline.example.com:33334.
+and it seems to work, but your helper cannot take over your screen.
+This means that your helper hasn't set up your CheckRide program correctly.
+
+Temporary solution: click Disconnect, ask your helper what to enter in the
+Helper server name and
+Helper server port fields.
+Then press connect.
+
+Permanent solution: let your helper create your own Checkride.conf (see section "5. CheckRide.conf").
+
+
+2. What is it?
+==============
+This program allows a person requesting help to let a helper take over her desktop remotely.
+
+It is inspired by earlier scripts (e.g. http://www.runpcrun.com/create_your_own_support_software) that set up a reverse VNC connections, and its name is influenced by Fog Creek's CoPilot.
+CheckRide allows remote support without hassle: the helped person just runs the program and waits for the helper to take over.
+It sets up an SSL encrypted tunnel and shares the helped person's desktop using VNC to a helper that has a server port open and the helper program listening.
+The program for the helped person uses a default address and port to connect to to simplify things.
+
+
+3. How to use CheckRide.exe
+===========================
+Start CheckRide.exe. The program will automatically try to connect until you click Disconnect or close the program.
+When connecting, tray icons (next to the clock) will appear for the UltraVNC program (eye symbol) and stunnel program (a boxy shape).
+CheckRide uses UltraVNC to contact your helper using the stunnel program.
+The helper should have started their own program to respond to your connection attempts.
+When your helper responds by taking over your screen, the UltraVNC (eye) icon will change color from blue to yellow.
+When the connetion is lost, e.g. due to network problems, CheckRide will keep on trying to reconnect.
+CheckRide stops UltraVNC and stunnel when disconnecting or closing. You will notice the icons disappear.
+
+You should know enough by now about running CheckRide.
+Read on if you're a helper interested in using CheckRideHelper, or a developer.
+
+4. CheckRideHelper
+==================
+CheckRideHelper.exe is the counterpart for CheckRide.exe: you need to start it on the helper side to take over the helped party's screen.
+CheckRideHelper, CheckRide and all other required files (including source) can be installed using CheckRideHelperSetup.exe, see
+https://bitbucket.org/reiniero/checkride/downloads
+REQUIRED configuration: see next section.
+
+5. Configuration for helper
+===========================
+You need to have either a fixed external IP address or a fixed DNS name (e.g. www.lazarus.freepascal.com).
+Most residential dial-up and broadband (ADSL, cable) connections have a dynamic IP address. In this case, get a free dynamic DNS address via e.g. www.dyndns.org, install the dynamic DNS client and use the host address (e.g. example.dyndns.org) as your hostname when compiling the program.
+In your router/modem, forward the relevant port (the one specified as HelperPort in the CheckRide.conf file) to your desktop running CheckRideHelper.exe. See www.portforward.com for further details on port forwarding.
+
+To adjust the host/server name and port Checkride connects to, there are multiple options. The first option is the most elegant and easy for end users:
+1. Use CheckRideHelper to modify CheckRide.exe settings: using the Tools...Customize Checkride menu, edit settings.
+2. distribute CheckRide.conf with your own settings. These overrule the built-in settings (see below)
+3. use command line options to overrule built-in settings and CheckRide.conf, see section below.
+4. specify server name and port manually in the CheckRide form (useful for one-off operations).
+
+6. CheckRide.conf
+=================
+If you place a file CheckRide.conf in the CheckRide application directory, you override the built-in configuration and can specify where the app will connect to.
+
+CheckRideHelper uses CheckRide.conf to determine what port to listen to.
+
+CheckRide.conf should contain something like:
+[default]
+; Default helper entry
+HelperHost=donaldduck.dyndns.org
+HelperPort=1337
+HelperName=Donald
+... where you can customise the HelperHost, HelperPort and HelperName entries.
+The host is the host (name or IP address) of the helper's machine.
+The port is the TCP port where the helper's CheckRide server listens on.
+Obviously, CheckRide.conf contents (at least the port number) need to match both on helper and helped party.
+
+7. Checkride.exe command line switches
+======================================
+You can overrule the embedded configuration and CheckRide.conf by using command line options. Please use ChecKride -h and CheckRideHelper -h for details.
+Some options for CheckRide:
+--helperhost <name_or_ip>    : helper host address/IP number
+--helperport <portnumber>    : helper port
+--helpername <name>          : name to display
+--noautoconnect              : don't automatically connect to helper on program startup
+--help                       : show command line options
+
+
+8. CheckRideHelper use
+======================
+Configuration: see above. 
+On start, unless you specify -noautoconnect as a parameter, UltraVNC and stunnel tray icons should appear.
+Note: -noautoconnect also works for CheckRide.exe
+If you want to change the port on which you can be reached by CheckRide, change the port number in the edit box, press Disconnect and Listen.
+You can find out your external IP address by clicking the What is my IP? button. Handy if you want to pass this on to a helped person.
+
+
+9. Compilation
+==============
+9.1 Prerequisites
+If you want to compile the programs yourself you will need:
+Lazarus IDE+FreePascal compiler from www.lazarus.freepascal.org
+If you want to modify the installer (CheckRideHelperSetup.iss), you'll need:
+Inno Setup (QuickStart Pack recommended): http://www.jrsoftware.org/isdl.php#qsp
+
+Get the source code either:
+- with the installer (CheckRideHelperSetup), 
+- from the repository at https://bitbucket.org/reiniero/checkride/src
+
+9.2 CheckRide & CheckRideHelper
+Edit CheckRide.conf, specifying your own server name and port, and helper name.
+
+When compiling, the Lazarus project executes a program, CheckRideResourceZipper.exe.
+This program generates a zip file from CheckRide.conf and the other required executables and files, then adds this zip file to CheckRide.exe.
+See the settings in Lazarus, Project, Project Options, Compiler Options, Compilation, Execute after (call on compile, build, run).
+If you want to change the files incorporated in CheckRide.exe, modify CheckRideResourceZipper.lpr, recompile it, then build (not compile) CheckRide & CheckRideHelper.
+
+To use your own version of CheckRideHelper, put these files in a directory:
+CheckRideHelper.exe
+checkride.conf
+libeay32.dll
+license.txt
+readme.txt (this file)
+ssleay32.dll
+stunnel.pem
+ultravnc.ini
+vncviewer.exe
+zlib1.dll
+
+
+10. What does this tool use?
+============================
+The CheckRide and CheckRideHelper programs are wrappers for:
+- UltraVNC
+- Stunnel
+Please see the file License.txt for information on what they are, where to get them and their licenses.
+
+
+11. License
+===========
+The CheckRide, CheckRideHelper source code/programs are released as freeware under the MIT license: all use permitted but no liability accepted:
+
+Copyright (C) 2011-2012 by Reinier Olislagers
+
+CheckRide and CheckRideHelper make use of some other programs/components.
+Please see the file License.txt for the exact license.
+
+
+12. Bugs & improvement ideas
+============================
+12.1 Contributions
+I'd be happy to receive bug reports and patches/ideas for improvement via the project's issue tracker:
+https://bitbucket.org/reiniero/checkride/issues
+
+12.2 Ideas
+These may be acted on, or they may not ;)
+- look into installing/using temporary video driver service
+- test with existing vnc services
+- use stringgrid instead of memo for log output
+- nslookup first to get host info
+- ping first to get idea of whether host is up (run ping in process, pipe result to screen on linux; run indy or whatever ping on windows)
+- replace stunnel with FPC units (synapse?)
+- certs in ssl; create them yourself for added security/authentication
+- incorporate audio qemu rfb extension if both ends have CheckRide=>telephony over VNC/voice communication
+  see: http://www.tigervnc.com/cgi-bin/rfbproto 
+- misuse ultravnc chat or something similar (clipboard info?) for a telnet like interface (probably without admin on UAC systems though)
+- move vnc/stunnel handling to classes in separate units for reuse
+- pre-VNC chat over SSL -> eg measure bandwidth?

+ 169 - 0
Readme.md

@@ -0,0 +1,169 @@
+CheckRide readme
+================
+
+1. Help, it doesn't work?
+=========================
+If you are running CheckRide.exe, your helper probably hasn't completely read this file, so he or she forgot to configure the program correctly.
+Symptom: the program shows this line:
+Setting up connection to helper Wonko the Sane at changethisline.example.com:33334.
+and it seems to work, but your helper cannot take over your screen.
+This means that your helper hasn't set up your CheckRide program correctly.
+
+Temporary solution: click Disconnect, ask your helper what to enter in the
+Helper server name and
+Helper server port fields.
+Then press connect.
+
+Permanent solution: let your helper create your own Checkride.conf (see section "5. CheckRide.conf").
+
+
+2. What is it?
+==============
+This program allows a person requesting help to let a helper take over her desktop remotely.
+
+It is inspired by earlier scripts (e.g. http://www.runpcrun.com/create_your_own_support_software) that set up a reverse VNC connections, and its name is influenced by Fog Creek's CoPilot.
+CheckRide allows remote support without hassle: the helped person just runs the program and waits for the helper to take over.
+It sets up an SSL encrypted tunnel and shares the helped person's desktop using VNC to a helper that has a server port open and the helper program listening.
+The program for the helped person uses a default address and port to connect to to simplify things.
+
+
+3. How to use CheckRide.exe
+===========================
+Start CheckRide.exe. The program will automatically try to connect until you click Disconnect or close the program.
+When connecting, tray icons (next to the clock) will appear for the UltraVNC program (eye symbol) and stunnel program (a boxy shape).
+CheckRide uses UltraVNC to contact your helper using the stunnel program.
+The helper should have started their own program to respond to your connection attempts.
+When your helper responds by taking over your screen, the UltraVNC (eye) icon will change color from blue to yellow.
+When the connetion is lost, e.g. due to network problems, CheckRide will keep on trying to reconnect.
+CheckRide stops UltraVNC and stunnel when disconnecting or closing. You will notice the icons disappear.
+
+You should know enough by now about running CheckRide.
+Read on if you're a helper interested in using CheckRideHelper, or a developer.
+
+4. CheckRideHelper
+==================
+CheckRideHelper.exe is the counterpart for CheckRide.exe: you need to start it on the helper side to take over the helped party's screen.
+CheckRideHelper, CheckRide and all other required files (including source) can be installed using CheckRideHelperSetup.exe, see
+https://bitbucket.org/reiniero/checkride/downloads
+REQUIRED configuration: see next section.
+
+5. Configuration for helper
+===========================
+You need to have either a fixed external IP address or a fixed DNS name (e.g. www.lazarus.freepascal.com).
+Most residential dial-up and broadband (ADSL, cable) connections have a dynamic IP address. In this case, get a free dynamic DNS address via e.g. www.dyndns.org, install the dynamic DNS client and use the host address (e.g. example.dyndns.org) as your hostname when compiling the program.
+In your router/modem, forward the relevant port (the one specified as HelperPort in the CheckRide.conf file) to your desktop running CheckRideHelper.exe. See www.portforward.com for further details on port forwarding.
+
+To adjust the host/server name and port Checkride connects to, there are multiple options. The first option is the most elegant and easy for end users:
+1. Use CheckRideHelper to modify CheckRide.exe settings: using the Tools...Customize Checkride menu, edit settings.
+2. distribute CheckRide.conf with your own settings. These overrule the built-in settings (see below)
+3. use command line options to overrule built-in settings and CheckRide.conf, see section below.
+4. specify server name and port manually in the CheckRide form (useful for one-off operations).
+
+6. CheckRide.conf
+=================
+If you place a file CheckRide.conf in the CheckRide application directory, you override the built-in configuration and can specify where the app will connect to.
+
+CheckRideHelper uses CheckRide.conf to determine what port to listen to.
+
+CheckRide.conf should contain something like:
+[default]
+; Default helper entry
+HelperHost=donaldduck.dyndns.org
+HelperPort=1337
+HelperName=Donald
+... where you can customise the HelperHost, HelperPort and HelperName entries.
+The host is the host (name or IP address) of the helper's machine.
+The port is the TCP port where the helper's CheckRide server listens on.
+Obviously, CheckRide.conf contents (at least the port number) need to match both on helper and helped party.
+
+7. Checkride.exe command line switches
+======================================
+You can overrule the embedded configuration and CheckRide.conf by using command line options. Please use ChecKride -h and CheckRideHelper -h for details.
+Some options for CheckRide:
+--helperhost <name_or_ip>    : helper host address/IP number
+--helperport <portnumber>    : helper port
+--helpername <name>          : name to display
+--noautoconnect              : don't automatically connect to helper on program startup
+--help                       : show command line options
+
+
+8. CheckRideHelper use
+======================
+Configuration: see above. 
+On start, unless you specify -noautoconnect as a parameter, UltraVNC and stunnel tray icons should appear.
+Note: -noautoconnect also works for CheckRide.exe
+If you want to change the port on which you can be reached by CheckRide, change the port number in the edit box, press Disconnect and Listen.
+You can find out your external IP address by clicking the What is my IP? button. Handy if you want to pass this on to a helped person.
+
+
+9. Compilation
+==============
+9.1 Prerequisites
+If you want to compile the programs yourself you will need:
+Lazarus IDE+FreePascal compiler from www.lazarus.freepascal.org
+If you want to modify the installer (CheckRideHelperSetup.iss), you'll need:
+Inno Setup (QuickStart Pack recommended): http://www.jrsoftware.org/isdl.php#qsp
+
+Get the source code either:
+- with the installer (CheckRideHelperSetup), 
+- from the repository at https://bitbucket.org/reiniero/checkride/src
+
+9.2 CheckRide & CheckRideHelper
+Edit CheckRide.conf, specifying your own server name and port, and helper name.
+
+When compiling, the Lazarus project executes a program, CheckRideResourceZipper.exe.
+This program generates a zip file from CheckRide.conf and the other required executables and files, then adds this zip file to CheckRide.exe.
+See the settings in Lazarus, Project, Project Options, Compiler Options, Compilation, Execute after (call on compile, build, run).
+If you want to change the files incorporated in CheckRide.exe, modify CheckRideResourceZipper.lpr, recompile it, then build (not compile) CheckRide & CheckRideHelper.
+
+To use your own version of CheckRideHelper, put these files in a directory:
+CheckRideHelper.exe
+checkride.conf
+libeay32.dll
+license.txt
+readme.txt (this file)
+ssleay32.dll
+stunnel.pem
+ultravnc.ini
+vncviewer.exe
+zlib1.dll
+
+
+10. What does this tool use?
+============================
+The CheckRide and CheckRideHelper programs are wrappers for:
+- UltraVNC
+- Stunnel
+Please see the file License.txt for information on what they are, where to get them and their licenses.
+
+
+11. License
+===========
+The CheckRide, CheckRideHelper source code/programs are released as freeware under the MIT license: all use permitted but no liability accepted:
+
+Copyright (C) 2011-2012 by Reinier Olislagers
+
+CheckRide and CheckRideHelper make use of some other programs/components.
+Please see the file License.txt for the exact license.
+
+
+12. Bugs & improvement ideas
+============================
+12.1 Contributions
+I'd be happy to receive bug reports and patches/ideas for improvement via the project's issue tracker:
+https://bitbucket.org/reiniero/checkride/issues
+
+12.2 Ideas
+These may be acted on, or they may not ;)
+- look into installing/using temporary video driver service
+- test with existing vnc services
+- use stringgrid instead of memo for log output
+- nslookup first to get host info
+- ping first to get idea of whether host is up (run ping in process, pipe result to screen on linux; run indy or whatever ping on windows)
+- replace stunnel with FPC units (synapse?)
+- certs in ssl; create them yourself for added security/authentication
+- incorporate audio qemu rfb extension if both ends have CheckRide=>telephony over VNC/voice communication
+  see: http://www.tigervnc.com/cgi-bin/rfbproto 
+- misuse ultravnc chat or something similar (clipboard info?) for a telnet like interface (probably without admin on UAC systems though)
+- move vnc/stunnel handling to classes in separate units for reuse
+- pre-VNC chat over SSL -> eg measure bandwidth?