--- /dev/null
+# $Id$
+# Main page of 'My::Project::captive'
+# Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+#
+# 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; exactly version 2 of June 1991 is required
+#
+# 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+package project::captive::Index;
+require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
+our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
+our $CVS_ID=q$Id$;
+use strict;
+use warnings;
+
+use My::Web;
+Wuse 'project::Lib';
+
+
+our @ListItem=(
+ "name"=>"Captive",
+ "platform"=>"unixuser",
+ "priority"=>666,
+ "summary"=>"The first free NTFS read/write filesystem for GNU/Linux",
+ "license"=>"GPL",
+ "maintenance"=>"update",
+ "language"=>"i386 asm, C, Perl",
+ "icon"=>"captive-install-acquire-icon",
+ "cvs-of main tree"=>"captive",
+ "cvs-of branched ReactOS subdir"=>"reactos:captive",
+ "cvs-of branched LUFS"=>"lufs:captive",
+ "cvs-of 'httpcaptive://' method"=>"gnome-vfs-httpcaptive:captive",
+ "cvs-of 'libntfs://' method"=>"ntfsprogs-gnomevfs",
+ "description"=>sub { return <<"HERE"; },
+<p>Project implements the first full read/write free access to NTFS disk drives.
+You can mount your Microsoft Windows NT, 200x or XP partition as
+a transparently accessible volume for your GNU/Linux.</p>
+<p>This compatibility was achieved in
+the @{[ a_href 'http://www.winehq.com/','Wine' ]} way by using the original
+Microsoft Windows <i>ntfs.sys</i> driver. It emulates the required subsystems of
+the Microsoft Windows kernel by reusing one of the original
+<i>ntoskrnl.exe</i>, @{[ a_href 'http://www.reactos.com/','ReactOS' ]} parts, or
+this project's own reimplementations, on a case by case basis.
+Project includes the first open source MS-Windows kernel API for Free operating systems.
+Involvement of the original driver files was chosen to achieve the best
+and unprecedented filesystem compatibility and safety.</p>
+<p>As opposed to other projects this is currently the only software supporting the full
+read/write access including the possibility to create/delete files, modify directories
+etc.</p>
+HERE
+ );
+
+sub handler
+{
+my $W=project::Lib->init(
+ "no_project_data"=>1,
+ "css_push"=>"./Index.css",
+ "project_text_after_title"=>sub { return ""
+ .'<table border="0" class="navigate"><tr>'
+ .'<td>• '.a_href('#download','Download').'</td>'
+ .'<td>• '.a_href('#news','NEWS').'</td>'
+ .'<td>• '.a_href('#testimonials','Testimonials').'</td>'
+ .'<td>• '.a_href('#press','Internet Press').'</td>'
+ .'<td>• '.a_href('#notes','Installation Notes').'</td>'
+ .'<td>• '.a_href('#lists','Mailing Lists').'</td>'
+ .'<td>• '.a_href('#seealso','See Also').'</td>'
+ .'</tr></table>'
+ },
+ );
+
+
+print <<"HERE" if !$W->{"no_job"};
+@{[ vskip "3ex" ]}
+
+<table border="0" style="margin: 3ex; padding: 2ex; background: #bb8888;" class="margin-center">
+ <tr><td style="font-size: larger;">
+ Looking for a challenging job: @{[ a_href $W->{"resume_url"},"My resume" ]}
+ </td></tr>
+</table>
+HERE
+
+my %version=(
+ map(($_=>["1.1.5","0"]),qw(captive captive-lufs captive-install)),
+ "lufs"=>["0.9.7","1captive8"],
+ );
+
+print <<"HERE";
+<h2 id="download">Download</h2>
+
+<h3>Choose the one preferred installation format:</h3>
+
+<table border="1" frame="border" rules="rows" style="text-align: center;" class="download">
+ <tr>
+ <td>
+ <p>RPM i386 binary<br />tested for distributions:</p>
+ <table border="0"><tr><td align="left"><ul>
+ <li>Red Hat 9 Shrike</li>
+ <li>Red Hat 8 Psyche</li>
+ <li>SuSE 9.0</li>
+ <li>SuSE 9.1</li>
+ <li>Mandrake 9.1 Bamboo</li>
+ </ul></td></tr></table>
+ </td>
+ <td>@{[ a_href 'dist/captive-static-'.$version{"captive"}[0].'-'.$version{"captive"}[1].'.i386.rpm',
+ undef(),"size"=>1,"basename"=>1 ]}</td>
+ </tr>
+ <tr>
+ <td>
+ <p>.tar.gz i386 binary<br />(for non-RPM distributions)</p>
+ </td>
+ <td>@{[ a_href 'dist/captive-static-'.$version{"captive"}[0].'.tar.gz',undef(),"size"=>1,"basename"=>1 ]}</td>
+ </tr>
+ <tr>
+ <td>Source archives</td>
+ <td>@{[ a_href 'CVS.pm#source','download link' ]}</td>
+ </tr>
+</table>
+
+<h4>Development Status</h4>
+
+<p>Project is no longer developed. The key functionality is reached
+by the latest released version. All its resources are available
+@{[ a_href 'CVS.pm#source','here' ]} for download.</p>
+
+<h4>Known Issue</h4>
+
+<p>Captive was written to interface with the Linux kernel via
+@{[ a_href 'http://lufs.sourceforge.net/lufs/','LUFS' ]}.
+Unfortunately, this project is no longer being maintained by its author.
+Mounting of NTFS devices usually works, but is no longer supported by the
+author of Captive. Always unmount the device by umount(8) command before shutting
+down your GNU/Linux system.</p>
+
+<p>A port of Captive to the newer
+@{[ a_href 'http://fuse.sourceforge.net/','FUSE' ]}
+interface has not yet been implemented.
+There is an experimental LUFS-FUSE bridge called
+@{[ a_href 'http://sourceforge.net/project/showfiles.php?group_id=121684','lufis' ]}
+that can be used in the meanwhile.
+Also, the captive-cmdline(1) interface will get around any kernel compatibility
+problems.</p>
+
+@{[ vskip "3ex" ]}
+
+<h2 id="news">NEWS</h2>
+
+<dl>
+ <dt>captive-1.1.5 (2004-01-18) [@{[ a_href $W->{"project_viewcvs"}.'/*checkout*/captive/NEWS?rev=HEAD','archive' ]}]</dt>
+ <dd>
+ <ul>
+ <li>Fixed ignorance of the file truncate operation via LUFS (Matthias R.)</li>
+ <li>Support for reading of HIDDEN SYSTEM NTFS files via LUFS</li>
+ <li>Fixed refusal to mount some NT4.0 NTFSes (Nerijus Baliunas, Scott Chevalley)</li>
+ <li>Support <code>/dev/ataraid</code> devices (Ivan Tonov)</li>
+ </ul>
+ </dd>
+ <dt>lufs-0.9.7captive8 (2003-12-06) [@{[ a_href $W->{"project_viewcvs"}.'/*checkout*/lufs/NEWS.captive?rev=1.1.2.11','archive' ]}]</dt>
+</dl>
+
+@{[ vskip "3ex" ]}
+
+<h2 id="testimonials">Captive NTFS Testimonials</h2>
+
+<ul>
+ <li>Hospital of Castelo Branco - Bruno Santos
+ <p>we are preparing the machines to install another system that will allow
+ the digitalization of medical images - PACS (picture archive and
+ communication system).</p>
+
+ <p>since the computers that are need are about 100 and we need to install
+ windows in all of them (even we have an almost automated instalation - but
+ requires some administrator interaction). So, we want to install
+ windows2000 without pressing a key.</p>
+
+ <p>@{[ a_href 'TestimonialBrunoSantos.pm','<span style="font-style: italic;">[ more ]</span>' ]}</p>
+ </li>
+ <li>@{[ a_href 'http://www.amunra.co.uk/','Dave "AmunRa" Rigby' ]}
+ <p>Ok, I'm impressed (@{[ a_href 'http://www.amunra.co.uk/archives/000028.php','Captive Review' ]})</p>
+ <p>Linux software generally has a reputation for having some great, novell
+ ideas, but often lacking in the general 'spit and polish' - difficult to
+ install, unreliable, and so on. However the latest program I have tried out
+ - Captive, is a breath of fresh air - simple to install and set up, and It
+ Just WorksTM. And not only that, it's probably one of the most useful and
+ technically impressive projects I've seen in a long time ...</p>
+ <p><span style="font-style: italic;">[ snip ]</span></p>
+ </li>
+ <li>Derek J Witt
+ <p>I commend you for this project. I am currently using this on my XP NTFS
+ partitions and I am impressed that I can actually move, edit, and remove files
+ and directories with no apparent ill effects. This is very nice indeed.</p>
+ <p>I initially was skeptical because it uses wine and parts of ReactOS
+ (I have messed with this OS a few times), but you have proved me wrong. I have
+ noticed no lag on my system. I do notice the initial mounting process does
+ take slightly longer than the Linux-NTFS project. But, once I'm past that, it's
+ quite transparent.</p>
+ <p><span style="font-style: italic;">[ technical question cut ]</span></p>
+ </li>
+ <li>James Van't Slot
+ <p>Just wanted to drop you a note and say "Excellent work!"</p>
+ <p>I just installed captive and it worked as advertized right out of the
+ rpm. Thanks, I've been holding off recompiling my kernel until NTFS is
+ supported out of the box for Redhat. Now I don't have to bother.</p>
+ <p>Thanks again and keep up the great work.</p>
+ </li>
+</ul>
+
+<h2 id="press">@{[ a_href 'Press.pm','Internet Press' ]}</h2>
+
+@{[ vskip "3ex" ]}
+
+
+<h1 id="notes">Installation Notes</h1>
+<p>You should first run <b>captive-install-acquire</b> command to check your
+available Microsoft Windows drivers versions. Now you can execute:</p>
+
+<blockquote>
+ <p class="quote" style="white-space: pre;"
+># captive-cmdline \\
+ --load-module=/var/lib/captive/ntoskrnl.exe \\
+ --filesystem=/var/lib/captive/ntfs.sys \\
+ --sandbox-server=/usr/sbin/captive-sandbox-server \\
+ --bug-pathname=/tmp/captive-bug-%FT%T.captivebug.xml.gz \\
+ --disk --rw /dev/hda1
+# Now you can use ftp(1)-like command-line interface for the NTFS disk access.</p
+ >
+ <p>(Backslash end-of-line characters '\\' to be omitted for line continuation.)</p>
+</blockquote>
+
+
+<h2>Overview</h2>
+
+<p>Any errors from '<b>captive-lufs</b>' are written to '<b>/var/log/messages</b>'.</p>
+<p>Needed drivers (at least ntoskrnl.exe+ntfs.sys) must be in '<b>/var/lib/captive</b>'.</p>
+<p>'<b>captive</b>' package creates '<b>captive</b>' user and '<b>captive</b>' group on your system.</p>
+
+
+<h2>LUFS Kernel Driver Module</h2>
+
+<p>@{[ a_href 'http://lufs.sourceforge.net/lufs/','LUFS' ]} (Linux Userland File
+System) needs Linux kernel module driver (<i>lufs.o</i>) compatible with your
+running Linux kernel. The binary driver is supplied already precompiled for many
+Linux kernel versions in the binary packages above (<b>.i386.rpm</b> and
+<b>_i386.deb</b> archives).</p>
+
+<p>If you cannot <b>mount</b>(8) your NTFS filesystem you should run <span
+class="quote">/usr/share/lufs/prepmod</span> to see the reasons. It is always
+recommended to upgrade to the latest stable kernel supplied by your GNU/Linux
+distribution vendor. You may need to install package
+<b>kernel-source</b> (Red Hat) or <b>kernel-headers</b> (Debian) matching your
+Linux kernel version (<b>rpm -q kernel</b>) and re-run <span
+class="quote">/usr/share/lufs/prepmod</span>.</p>
+
+<p><b>WARNING:</b> This 'captive' package may modify your Linux kernel
+sources matching your currently running kernel version. These minor
+modifications may include a dependencies rebuild, compiling build tools, fixes of
+several include files, etc. All the modifications are done at the mount(8) time
+by the automatically executed <span class="quote">/usr/share/lufs/prepmod</span> script.
+This behavior was not present in the original
+@{[ a_href 'http://lufs.sourceforge.net/lufs/','LUFS' ]} distribution
+by @{[ a_href 'http://www.malinux.net/main/','Florin Malita' ]}.</p>
+
+
+HERE
+
+
+print rightimg <<"HERE",'reactos','ReactOS',"a_href"=>'http://www.reactos.com/';
+ <h2>The First Open Source MS-Windows Kernel API for Free OS</h2>
+
+ <p>Compatibility with the existing binary Microsoft Windows file system drivers has been
+ reached. Microsoft Windows kernel system components required by these drivers
+ were analyzed and successfully emulated in the GNU/Linux operating system.
+ The project brings the Microsoft Windows kernel emulation framework to support even
+ other types of Microsoft Windows drivers in the future.
+ The <span class="productname">@{[ a_href 'http://www.reactos.com/','ReactOS' ]}</span>
+ code base proved to be a big asset for this functionality.</p>
+HERE
+
+
+my @lists=qw(captive-announce-list captive-list captive-devel-list);
+
+print <<"HERE";
+
+<h2 id="lists">Mailing Lists</h2>
+
+<form action="@{[ uri_escaped(path_web "/Mailman.pm") ]}" @{[ form_method "post" ]}>
+ <table border="1" class="mailman" style="border-collapse: collapse; border-style: solid; border-width: 1px;">
+ <tr>@{[ map('<th>'.$_.'@jankratochvil.net</th>',@lists) ]}</tr>
+ <tr><td>New version announcements<br />
+ (low traffic, recommended)</td>
+ <td>User support,<br />bug reports</td>
+ <td>Development</td>
+ </tr>
+ <tr>@{[ map({ "<td>".a_href($W->{"mailman_url"}."listinfo/$_",'Mailman Infopage')."</td>"; } @lists) ]}</tr>
+ <tr>@{[ map({ "<td>".a_href($W->{"pipermail_url"}."$_",'Archive')."</td>"; } @lists) ]}</tr>
+ <tr>@{[
+ map(('<td><input type="checkbox" name="list" value="'.$_.'"'
+ .($_ ne "captive-announce-list" ? '' : ' checked="checked"')
+ .' /> Subscribe?</td>'),@lists)
+ ]}</tr>
+ <tr><td colspan="3">
+ <table border="0" style="text-align: left;">
+ <tr><td>Email address: </td><td><input type="text" name="email" size="30" /></td></tr>
+ <tr><td>Your new Mailman password:</td><td><input type="password" name="pw" size="15" /></td></tr>
+ <tr><td>Reenter your password: </td><td><input type="password" name="pw-conf" size="15" /></td></tr>
+ </table>
+ <p>
+ <input type="hidden" name="back" value="/project/captive/#lists" />
+ <input type="submit" name="email-button" value="Subscribe me" />
+ </p>
+ </td></tr>
+ </table>
+</form>
+
+
+@{[ vskip "3ex" ]}
+
+<h1 id="seealso">See Also</h1>
+<ul>
+ <li>@{[ a_href 'Preview.pm','Technology Preview' ]}</li>
+ <li>@{[ a_href 'CVS.pm','Download Sources, CVS Repository' ]}</li>
+ <li>@{[ a_href 'doc/','Developer Documentation' ]}; highlights:<ul>
+ <li>@{[ a_href 'doc/About.pm#versions','Microsoft Windows Versions Compatibility' ]}</li>
+ <li>@{[ a_href 'doc/Architecture.pm#law','Laws and Licensing Conditions' ]}</li>
+ <li>@{[ a_href 'doc/Details.pm#sandbox','Sandboxing of W32 Filesystem' ]}</li>
+ <li>@{[ a_href 'doc/TODO.pm#todo_fsck','TODO: Fsck of NTFS' ]}</li>
+ <li>@{[ a_href 'doc/TODO.pm#todo_surprise','TODO: NTFS Support for Partition Surprise' ]}</li>
+ <li>@{[ a_href 'doc/Related.pm#LinuxNTFScompet','Related Projects - Linux NTFS' ]}</li>
+ <li>@{[ a_href 'doc/Related.pm#vmware','Related Projects - VMware Workstation' ]}</li>
+ <li>@{[ a_href 'doc/LinuxNTFS.pm',"Re: 7.7 Can't we write a wrapper for Windows' driver?" ]}</li>
+ </ul></li>
+ <li>@{[ a_href $W->{"project_viewcvs"}.'/*checkout*/captive/TODO?rev=HEAD','Known Bugs' ]}</li>
+ <li>Man Pages<ul>
+ @{[
+ do {
+ my @mans=(
+ 'captive'=>[7,'Microsoft Windows NT kernel emulation for NTFS disk access'],
+ 'mount.captive'=>[8,'mount(8) interface for NTFS disk access'],
+ 'lufs-captivefs'=>[7,'Linux Userland File System module for NTFS as filesystem'],
+ 'captive-cmdline'=>[1,'Command-line client for captive(7) NTFS disk access'],
+### 'captive-sandbox-server'=>[1,'Security+safety wrapper for NTFS disk access'],
+ 'captive-install-acquire'=>[1,'Find MS Windows XP driver files for NTFS'],
+### 'captive-install-fstab'=>[1,'Manage captive-ntfs /etc/fstab entries'],
+ );
+ my @r;
+ while (@mans) {
+ my $file=shift @mans;
+ my($section,$name)=@{shift @mans};
+ push @r,"<li>".a_href("man/$file.pod.html",$file)."($section) - $name</li>\n";
+ }
+ @r;
+ }
+ ]}
+ </ul></li>
+ <li>@{[ a_href 'Resources.pm','Related Pages' ]}</li>
+ <li>@{[ a_href 'Thanks.pm','Thanks' ]}</li>
+</ul>
+HERE
+
+
+exit;
+}
+1;