SkunkWorks Source
While I don't consider SkunkWorks to
be "Open Source" in any down-with-copyrights, information-must-be-free
ideological sense, I've included the source in the distribution package for a
number of purely practical reasons:
- There's a fair amount of paranoia about since the demise of
ACScript. I want users to be able to study the source, verify that it contains
no password-stealing Trojans or other malicious code, and build themselves a
clean, safe executable for their own use.
- If a protocol change breaks something, I don't want to be the
sole source for fixes. More people equipped to solve problems and publish the
solutions means less pressure on me come patch day.
- To be brutally honest, macro newbies with pirated drain
scripts are not the intended audience of this tool, and I don't intend to offer
them a lot of support. SkunkWorks is meant to be an industrial-strength
scripting platform for people who know what they're doing and don't mind
rolling up their sleeves. Though I've tried to be fairly thorough in the
console and API documentation,
consider the source the ultimate authority on what the program does and how it does
it. You don't have to be a VB wizard to use SkunkWorks, but the support you get
from me will be based on the assumption that you've at least tried to find answers
for yourself.
Source is installed into the SkunkWorks\Source folder, and
includes four Visual Basic projects, two VB project groups, and one Visual C++
project:
- SkunkWorks.vbp builds the SkunkWorks API COM component
(Skapi.dll). This project gets the coveted "SkunkWorks" name mainly so that its
progids come out as SkunkWorks.something.
- SWConsole.vbp builds the SkunkWorks console (SWConsole.exe).
- SkunkWorks.vbg is a project group combining the API and
the console. Since the console depends on the API, I find it convenient to edit
and debug them together in one VB environment.
- SWPlugin.vbp builds the SkunkWorks plugin (SWPlugin.dll).
- SWFilter.vbp builds the SkunkWorks netfilter (SWFilter.dll).
- SWPlugin.vbg is a project group combining the plugin
and the filter. Again, the intertwined nature of these two components makes it
easier to work on them together rather than separately.
- SwxScript.dsw is a Visual C++ project that builds a
component call SwxScript.dll. When I finally got fed up with the limitations
of the MS Script Control, I wrote this component to replace it. Its main
advantages are better line number reporting on errors, the ability to reliably
stop a runaway script, and script debugger support.
Note that if you want to build SwxScript.dll, you will need
the headers and library files contained in Microsoft's Scriptng.exe, which you
can download from
this
Knowledge Base article.
If all you want to do is rebuild your own Skapi.dll on patch day, the installed source should meet your
needs. If you're seriously interested in tinkering, however, you may want to enroll
in the SkunkWorks
project on SourceForge.net.
CVS setup
This section describes how to set up anonymous, read-only access to
the SkunkWorks CVS repository. This will enable you to customize your version of
SkunkWorks and automatically maintain your local changes across new releases. It
will not enable you to upload changes back into the mainline development source.
For information on how to become an official SkunkWorks developer with upload
privileges, contact me by email.
I'm going to assume you're already a registered SourceForge user
and have downloaded and installed WinCVS. If not, see the SourceForge site documentation
for information on how to do that.
Here's my recommended sequence for setting up a CVS-enabled
SkunkWorks build environment on your disk:
- Download and install the latest SkunkWorks release, if you
haven't already done so.
- Create a new folder, e.g. C:\SkunkWorksDev, for SkunkWorks
development.
- Copy *.dll from your SkunkWorks installation folder to
SkunkWorksDev.
- In SkunkWorksDev, rename Skapi.dll to SkapiCompat.dll, and
SWFilter.dll to SWFilterCompat.dll.
- Start WinCVS. Under Admin 4
Preferences, specify the following:
Authentication: | pserver |
Path: | /cvsroot/skunkworks |
Host Address: | cvs.sourceforge.net |
User Name: | anonymous |
CVSROOT: | anonymous@cvs.sourceforge.net:/cvsroot.skunkworks |
- In WinCVS, browse to your SkunkWorksDev folder. There are four CVS
modules available for checkout under the SkunkWorks project, as follows:
Source |
The main SkunkWorks source. |
Libraries |
The script libraries and samples included in
the SkunkWorks install package. |
Docs |
The SkunkWorks documentation. |
Installer |
Files needed for building and packaging a SkunkWorks
installer. |
Use Create 4 Checkout module in WinCVS to
check out each module in turn. Place the checked-out modules under your SkunkWorksDev
folder. You needn't check out all of them, only the ones you're interested in. This
probably includes Source and perhaps Libraries if you want to customize SkunkNav, for
instance. Docs you might want to check out for reference even if you don't plan on
writing any documentation. Installer is really of interest only to official SkunkWorks
release technicians and can safely be ignored by anybody else.
- If you haven't already done so, download Scriptng.exe
and extract it into your Visual C++ Include folder (except for Ad1.lib, which
goes in you VC++ Lib folder). You will need these headers and libraries in
order to build SwxScript.dll. (If you don't have VC++ installed, you can skip
this step.)
- After checking out the modules, it's time to do a build. Open
SwxScript.dsw in Visual C++. (If you don't have VC++ installed, you can skip this
step.) On the Build menu, Set Active Configuration to Win32 Release MinDependency,
then Build SwxScript.dll. Exit VC++.
- Open CallPfn.dsw in Visual C++. On the Build menu, Set Active
Configuration to Win32 Release, then Build CallPfn.dll. Exit VC++.
- Open SkunkWorksDev\Source\SWPlugin.vbg in Visual Basic and Make
Project Group (on the File Menu). Make sure "Use Default Build Options" is checked,
and click Build. When the build is finished, close VB. Choose Yes if it asks you
to save changes.
- Do the same with SkunkWorksDev\Source\SkunkWorks.vbg. If you get a
dialog asking whether you want to Break or Preserve compatibility, choose Preserve.
When the build is finished, save and close as before.
You should now have a working SkunkWorks installation in your
SkunkWorksDev folder.