Having trouble finding instruction regarding how to setup CGI access for Apache on CentOS 7. Most of the instructions I am finding are for older versions. Any of those changes break httpd . . . so I remove that to return to functionality.
With 'Links' installed, I can run the su -u backuppc /var/www/cgi-bin/BackupPC_Admin and the webpage appears on the sverver machine (via ssh) itself. So, the cgi-bin file is functional. Any help would be greatly appreciated. --- _______________________________ Bob Wooden of Donelson Trophy 615.885.2846 www.donelsontrophy.com [1] "Everyone deserves an award!!" On 2015-07-28 09:25, Bob of Donelson Trophy wrote: > Good news! > > Got BackupPC 4.0.0 to run!! > > I had a permissions issue with /data, my data (storage) directory. When I > 'chown' to backuppc user, and ran "sudo -u backuppc > /usr/local/BackupPC/bin/BackupPC -d" BackupPC started . . . yeah!! (Now I can > go look at logfiles.) > > Now, I think I have an Apache permissions issue as when I use my browser to > access the [ip address]/BackupPC I get nothing but, when I try [ip > address]/backuppc I get the directory that contains all the *.gif files and > other. This is a (Apache?) permissions issue I have read about somewhere . . > . now to find that again. > > My linux education continues . . . > > --- > > _______________________________ > > Bob Wooden of Donelson Trophy > > 615.885.2846 > www.donelsontrophy.com [1] > > "Everyone deserves an award!!" > > On 2015-07-27 15:50, David Cramblett wrote: > As mentioned in a previous email, I had a problem getting backuppc to start > or stay running when I first installed it. I found I had to ensure that the > temp file location was created in in /var/run/BackupPC before starting the > daemon. If backuppc uses a temp file location for your distro, I assume it > does, then it will be needed to start the daemon, regardless whether you > start it manually or form the init script. > > You could look and see if you have a directory at /var/run/BackupPC > > The config.pl [3] parameter below will tell you where this directory should > be created: > > $Conf{RunDir} = '/var/run/BackupPC'; > > If you don't have the correct directory, try creating it (of course customize > this to your run dir location from config.pl [3]): > > $ mkdir -p /var/run/BackupPC > $ chown [backuppc-user]:[backuppc-group] /var/run/BackupPC > > Then try starting the daemon again. > > I ended up adding a temp file system check to my init script for backuppc: > > checkTempFs() { > if `test -d /var/run/BackupPC`; then > echo "BackupPC tempfs exisits" > else > mkdir -p /var/run/BackupPC > chown backuppc:backuppc /var/run/BackupPC > echo "BackupPC tempfs created" > fi > } > > Then I I added the "checkTempFs()" function to the init script's "start" > function: > > start() { > # Make sure /var/run/BackupPC tempfs exisits > CHECKTEMPFS > echo -n "Starting BackupPC: " > daemon --user backuppc /usr/local/BackupPC/bin/BackupPC -d > RETVAL=$? > echo > [ $RETVAL -eq 0 ] && touch /var/lock/subsys/backuppc || > RETVAL=1 > return $RETVAL > } > > David > > On Mon, Jul 27, 2015 at 10:08 AM, Bob of Donelson Trophy > <b...@donelsontrophy.net> wrote: > > (Sorry, David. 'Hit' reply instead of "reply-all". So your getting a > duplicate.) > > Yes, I am following the steps below. > > However the "./configure.sh --prefix option" suggestion to add to the > rsync-bpc, I did not do as running "./configure.sh" reports that is has > installed in /usr/local/bin by default. Keywords in that suggestion sentence > are "default might be . . .". > > Also, your config.pl [3] file is very much identical to mine except I have > not yet installed samba. > > I am having trouble getting backuppc to run manually (have not activated the > init.d script, yet.) > > I am struggling with file permissions and will not get back to post any > specific questions until late this afternoon or tomorrow. > > So far the project seems to be progressing well. > > --- > > _______________________________ > > Bob Wooden of Donelson Trophy > > 615.885.2846 [2] > www.donelsontrophy.com [1] > > "Everyone deserves an award!!" > > On 2015-07-27 11:29, David Cramblett wrote: > Bob, > > My samba packages on CentOS 7: > > samba-common-4.1.12-21 > samba-libs-4.1.12-21 > samba-client-4.1.12-21 > > I just wanted to double check, your following these steps below for your > backuppc install correct? > > #------------------------------------------------------------------------ > # Installation instructions: download and install all three tar balls. > #------------------------------------------------------------------------ > > BackupPC-XS-0.30.tar.gz: > > tar zxvf BackupPC-XS-0.30.tar.gz > cd BackupPC-XS-0.30 > perl Makefile.PL > make > make test > make install > > rsync-bpc-3.0.9.3.tar.gz: > > tar zxvf rsync-bpc-3.0.9.3.tar.gz > cd rsync-bpc-3.0.9.3 > ./configure.sh > make > make install > > BackupPC-4.0.0alpha3.tar.gz: > > tar zxvf BackupPC-4.0.0alpha3.tar.gz > cd BackupPC-4.0.0alpha3 > ./configure.pl [4] > > The last step for each will need to be run as a privileged user. > > If you want to install rsync_bpc in /usr/local/bin (default might be > /usr/bin), then you should add the --prefix option to configure.sh: > > ./configure.sh --prefix=/usr/local > > David > > On Sun, Jul 26, 2015 at 12:31 PM, Bob of Donelson Trophy > <b...@donelsontrophy.net> wrote: > > This is a BIG help. Thank you. > > I have re-installed my server with CentOS7. Resolved all (I think) my > dependencies issues. Currently having some file permissions issues with > Apache. My linux education continues. > > As I look through your file, the initial question is, what version Samba have > you installed? Or is it smbclient? > > --- > > _______________________________ > > Bob Wooden of Donelson Trophy > > 615.885.2846 [2] > www.donelsontrophy.com [1] > > "Everyone deserves an award!!" > > On 2015-07-26 12:24, David Cramblett wrote: > > Bob, > > Here is my config.pl [3]. Anything in braces{ } is data I sanitized before > sharing my config file. > > ==================== config.pl [3] ===================== > > $Conf{ServerHost} = '{BACKUPPC_HOST}.{MY_DOMAIN}'; > $Conf{ServerPort} = -1; > $Conf{ServerMesgSecret} = ''; > $Conf{MyPath} = '/bin'; > $Conf{UmaskMode} = 23; > $Conf{WakeupSchedule} = [ > 1, > 2, > 3, > 4, > 5, > 6, > 7, > 21, > 22, > 23 > ]; > $Conf{PoolV3Enabled} = '0'; > $Conf{MaxBackups} = 4; > $Conf{MaxUserBackups} = 4; > $Conf{MaxPendingCmds} = 15; > $Conf{CmdQueueNice} = 10; > $Conf{MaxBackupPCNightlyJobs} = 4; > $Conf{BackupPCNightlyPeriod} = 2; > $Conf{PoolSizeNightlyUpdatePeriod} = 16; > $Conf{MaxOldLogFiles} = 7; > $Conf{DfPath} = '/usr/bin/df'; > $Conf{DfCmd} = '$dfPath $topDir'; > $Conf{SplitPath} = '/usr/bin/split'; > $Conf{ParPath} = undef; > $Conf{CatPath} = '/usr/bin/cat'; > $Conf{GzipPath} = '/usr/bin/gzip'; > $Conf{Bzip2Path} = '/usr/bin/bzip2'; > $Conf{DfMaxUsagePct} = 98; > $Conf{DHCPAddressRanges} = []; > $Conf{BackupPCUser} = '{BACKUPPC_USER}'; > $Conf{TopDir} = '/backuppc'; > $Conf{ConfDir} = '/etc/BackupPC'; > $Conf{LogDir} = '/var/log/BackupPC'; > $Conf{RunDir} = '/var/run/BackupPC'; > $Conf{InstallDir} = '/usr/local/BackupPC'; > $Conf{CgiDir} = '/var/www/cgi-bin'; > $Conf{BackupPCUserVerify} = '1'; > $Conf{HardLinkMax} = 31999; > $Conf{PerlModuleLoad} = undef; > $Conf{ServerInitdPath} = undef; > $Conf{ServerInitdStartCmd} = ''; > $Conf{FullPeriod} = '6.97'; > $Conf{IncrPeriod} = '0.97'; > $Conf{FillCycle} = 0; > $Conf{FullKeepCnt} = [ > 2, > 0, > 6 > ]; > $Conf{FullKeepCntMin} = 1; > $Conf{FullAgeMax} = 90; > $Conf{IncrKeepCnt} = 6; > $Conf{IncrKeepCntMin} = 1; > $Conf{IncrAgeMax} = 30; > $Conf{BackupsDisable} = 0; > $Conf{RestoreInfoKeepCnt} = 10; > $Conf{ArchiveInfoKeepCnt} = 10; > $Conf{BackupFilesOnly} = {}; > $Conf{BackupFilesExclude} = {}; > $Conf{BlackoutBadPingLimit} = 3; > $Conf{BlackoutGoodCnt} = 7; > $Conf{BlackoutPeriods} = [ > { > 'hourEnd' => 24, > 'weekDays' => [ > 1, > 2, > 3, > 4, > 5 > ], > 'hourBegin' => 7 > } > ]; > $Conf{BackupZeroFilesIsFatal} = '1'; > $Conf{XferMethod} = 'rsync'; > $Conf{XferLogLevel} = 1; > $Conf{ClientCharset} = ''; > $Conf{ClientCharsetLegacy} = 'iso-8859-1'; > $Conf{SmbShareName} = [ > 'C$' > ]; > $Conf{SmbShareUserName} = ''; > $Conf{SmbSharePasswd} = ''; > $Conf{SmbClientPath} = '/usr/bin/smbclient'; > $Conf{SmbClientFullCmd} = '$smbClientPath \\$host\$shareName $I_option -U > $userName -E -d 1 -c tarmode\ full -Tc$X_option - $fileList'; > $Conf{SmbClientIncrCmd} = '$smbClientPath \\$host\$shareName $I_option -U > $userName -E -d 1 -c tarmode\ full -TcN$X_option $timeStampFile - $fileList'; > $Conf{SmbClientRestoreCmd} = '$smbClientPath \\$host\$shareName $I_option -U > $userName -E -d 1 -c tarmode\ full -Tx -'; > $Conf{TarShareName} = [ > '/' > ]; > $Conf{TarClientCmd} = '$sshPath -q -x -n -l root $host env LC_ALL=C $tarPath > -c -v -f - -C $shareName+ --totals'; > $Conf{TarFullArgs} = '$fileList+'; > $Conf{TarIncrArgs} = '--newer=$incrDate+ $fileList+'; > $Conf{TarClientRestoreCmd} = '$sshPath -q -x -l root $host env LC_ALL=C > $tarPath -x -p --numeric-owner --same-owner -v -f - -C $shareName+'; > $Conf{TarClientPath} = '/usr/bin/gtar'; > $Conf{RsyncClientPath} = '/usr/bin/rsync'; > $Conf{RsyncBackupPCPath} = '/usr/local/bin/rsync_bpc'; > $Conf{RsyncSshArgs} = [ > '-e', > '$sshPath -l root' > ]; > $Conf{RsyncShareName} = [ > '/' > ]; > $Conf{RsyncdClientPort} = 873; > $Conf{RsyncdUserName} = ''; > $Conf{RsyncdPasswd} = ''; > $Conf{RsyncFullArgsExtra} = [ > '--checksum' > ]; > $Conf{RsyncArgs} = [ > '--super', > '--recursive', > '--protect-args', > '--numeric-ids', > '--perms', > '--owner', > '--group', > '-D', > '--times', > '--links', > '--hard-links', > '--delete', > '--partial', > '--log-format=log: %o %i %B %8U,%8G %9l %f%L', > '--stats' > ]; > $Conf{RsyncArgsExtra} = []; > $Conf{RsyncRestoreArgs} = [ > '--recursive', > '--super', > '--protect-args', > '--numeric-ids', > '--perms', > '--owner', > '--group', > '-D', > '--times', > '--links', > '--hard-links', > '--delete', > '--partial', > '--log-format=log: %o %i %B %8U,%8G %9l %f%L', > '--stats' > ]; > $Conf{FtpShareName} = [ > '' > ]; > $Conf{FtpUserName} = ''; > $Conf{FtpPasswd} = ''; > $Conf{FtpPassive} = '1'; > $Conf{FtpBlockSize} = 10240; > $Conf{FtpPort} = 21; > $Conf{FtpTimeout} = 120; > $Conf{FtpFollowSymlinks} = '0'; > $Conf{ArchiveDest} = '/tmp'; > $Conf{ArchiveComp} = 'gzip'; > $Conf{ArchivePar} = '0'; > $Conf{ArchiveSplit} = 0; > $Conf{ArchiveClientCmd} = '$Installdir/bin/BackupPC_archiveHost > $tarCreatePath $splitpath $parpath $host $backupnumber $compression $compext > $splitsize $archiveloc $parfile *'; > $Conf{SshPath} = '/usr/bin/ssh'; > $Conf{NmbLookupPath} = '/usr/bin/nmblookup'; > $Conf{NmbLookupCmd} = '$nmbLookupPath -A $host'; > $Conf{NmbLookupFindHostCmd} = '$nmbLookupPath $host'; > $Conf{FixedIPNetBiosNameCheck} = '0'; > $Conf{PingPath} = '/usr/bin/ping'; > $Conf{PingCmd} = '$pingPath -c 1 -w 3 $host'; > $Conf{PingMaxMsec} = 20; > $Conf{CompressLevel} = 3; > $Conf{ClientTimeout} = 72000; > $Conf{DumpPreUserCmd} = undef; > $Conf{DumpPostUserCmd} = undef; > $Conf{DumpPreShareCmd} = undef; > $Conf{DumpPostShareCmd} = undef; > $Conf{RestorePreUserCmd} = undef; > $Conf{RestorePostUserCmd} = undef; > $Conf{ArchivePreUserCmd} = undef; > $Conf{ArchivePostUserCmd} = undef; > $Conf{UserCmdCheckStatus} = '0'; > $Conf{ClientNameAlias} = undef; > $Conf{SendmailPath} = '/usr/sbin/sendmail'; > $Conf{EMailNotifyMinDays} = '2.5'; > $Conf{EMailFromUserName} = 'backuppc'; > $Conf{EMailAdminUserName} = 'backuppc'; > $Conf{EMailUserDestDomain} = '@{MY_DOMAIN}'; > $Conf{EMailNoBackupEverSubj} = undef; > $Conf{EMailNoBackupEverMesg} = undef; > $Conf{EMailNotifyOldBackupDays} = 7; > $Conf{EMailNoBackupRecentSubj} = undef; > $Conf{EMailNoBackupRecentMesg} = undef; > $Conf{EMailNotifyOldOutlookDays} = 5; > $Conf{EMailOutlookBackupSubj} = undef; > $Conf{EMailOutlookBackupMesg} = undef; > $Conf{EMailHeaders} = 'MIME-Version: 1.0 > Content-Type: text/plain; charset="utf-8" > '; > $Conf{CgiAdminUserGroup} = ''; > $Conf{CgiAdminUsers} = '{ADMIN_USER}'; > $Conf{SCGIServerPort} = -1; > $Conf{CgiURL} = 'http://{BACKUPPC_HOST}.{MY_DOMAIN}/cgi-bin/BackupPC_Admin'; > $Conf{RrdToolPath} = '/usr/bin/rrdtool'; > $Conf{Language} = 'en'; > $Conf{CgiUserHomePageCheck} = ''; > $Conf{CgiUserUrlCreate} = 'mailto:%s'; > $Conf{CgiDateFormatMMDD} = 1; > $Conf{CgiNavBarAdminAllHosts} = '1'; > $Conf{CgiSearchBoxEnable} = '1'; > nf{CgiNavBarLinks} = [ > { > 'link' => '?action=view&type=docs', > 'lname' => 'Documentation', > 'name' => undef > }, > { > 'link' => 'http://backuppc.wiki.sourceforge.net [5]', > 'lname' => undef, > 'name' => 'Wiki' > }, > { > 'link' => 'http://backuppc.sourceforge.net [6]', > 'lname' => undef, > 'name' => 'SourceForge' > } > ]; > $Conf{CgiStatusHilightColor} = { > 'Reason_backup_failed' => '#ffcccc', > 'Reason_backup_done' => '#ccffcc', > 'Reason_backup_canceled_by_user' => '#ff9900', > 'Reason_no_ping' => '#ffff99', > 'Disabled_OnlyManualBackups' => '#d1d1d1', > 'Status_backup_in_progress' => '#66cc99', > 'Disabled_AllBackupsDisabled' => '#d1d1d1' > }; > $Conf{CgiHeaders} = '<meta http-equiv="pragma" content="no-cache">'; > $Conf{CgiImageDir} = '/var/www/html/BackupPC'; > $Conf{CgiExt2ContentType} = {}; > $Conf{CgiImageDirURL} = '/BackupPC'; > $Conf{CgiCSSFile} = 'BackupPC_stnd.css'; > $Conf{CgiUserConfigEditEnable} = '1'; > $Conf{CgiUserConfigEdit} = { > 'EMailOutlookBackupSubj' => '1', > 'ClientCharset' => '1', > 'TarFullArgs' => '1', > 'RsyncdPasswd' => '1', > 'FtpBlockSize' => '1', > 'IncrKeepCnt' => '1', > 'FixedIPNetBiosNameCheck' => '1', > 'SmbShareUserName' => '1', > 'EMailFromUserName' => '1', > 'ArchivePreUserCmd' => '0', > 'PingCmd' => '0', > 'FullAgeMax' => '1', > 'FtpUserName' => '1', > 'PingMaxMsec' => '1', > 'CompressLevel' => '1', > 'DumpPreShareCmd' => '0', > 'BackupFilesOnly' => '1', > 'EMailNotifyOldBackupDays' => '1', > 'EMailAdminUserName' => '1', > 'BlackoutPeriods' => '1', > 'NmbLookupFindHostCmd' => '0', > 'MaxOldPerPCLogFiles' => '1', > 'TarClientCmd' => '0', > 'EMailNotifyOldOutlookDays' => '1', > 'SmbSharePasswd' => '1', > 'SmbClientIncrCmd' => '0', > 'FullKeepCntMin' => '1', > 'RsyncArgs' => '1', > 'FtpFollowSymlinks' => '1', > 'ArchiveComp' => '1', > 'TarIncrArgs' => '1', > 'EMailUserDestDomain' => '1', > 'TarClientPath' => '0', > 'RestoreInfoKeepCnt' => '1', > 'UserCmdCheckStatus' => '0', > 'RsyncdClientPort' => '1', > 'IncrAgeMax' => '1', > 'RsyncdUserName' => '1', > 'RsyncRestoreArgs' => '1', > 'ClientCharsetLegacy' => '1', > 'SmbClientFullCmd' => '0', > 'ArchiveInfoKeepCnt' => '1', > 'FtpShareName' => '1', > 'BackupZeroFilesIsFatal' => '1', > 'EMailNoBackupRecentMesg' => '1', > 'FtpPort' => '1', > 'FullKeepCnt' => '1', > 'TarShareName' => '1', > 'RsyncFullArgsExtra' => '1', > 'EMailNoBackupEverSubj' => '1', > 'TarClientRestoreCmd' => '0', > 'EMailNoBackupRecentSubj' => '1', > 'ArchivePar' => '1', > 'XferLogLevel' => '1', > 'RsyncSshArgs' => '1', > 'ArchiveDest' => '1', > 'RsyncdAuthRequired' => '1', > 'ClientTimeout' => '1', > 'EMailNotifyMinDays' => '1', > 'SmbClientRestoreCmd' => '0', > 'ClientNameAlias' => '1', > 'DumpPostShareCmd' => '0', > 'EMailOutlookBackupMesg' => '1', > 'BlackoutBadPingLimit' => '1', > 'BackupFilesExclude' => '1', > 'FullPeriod' => '1', > 'ArchivePostUserCmd' => '0', > 'IncrPeriod' => '1', > 'RsyncShareName' => '1', > 'FtpTimeout' => '1', > 'RestorePostUserCmd' => '0', > 'BlackoutGoodCnt' => '1', > 'ArchiveClientCmd' => '0', > 'ArchiveSplit' => '1', > 'FtpRestoreEnabled' => '1', > 'XferMethod' => '1', > 'NmbLookupCmd' => '0', > 'BackupsDisable' => '1', > 'SmbShareName' => '1', > 'FtpPasswd' => '1', > 'RestorePreUserCmd' => '0', > 'RsyncArgsExtra' => '1', > 'IncrKeepCntMin' => '1', > 'EMailNoBackupEverMesg' => '1', > 'EMailHeaders' => '1', > 'DumpPreUserCmd' => '0', > 'FillCycle' => '1', > 'RsyncClientPath' => '0', > 'DumpPostUserCmd' => '0' > }; > > On Sat, Jul 25, 2015 at 4:32 AM, Bob of Donelson Trophy > <b...@donelsontrophy.net> wrote: > > Thanks for the reply, David. > > I have thought about switching distro to CentOS. I have seen other mailing > posts that mention the use of it and have some experience with CentOS. (Not > that I am against Ubuntu or Debian, they are my primary distros . . . no > offense, anyone.) > > I do not have a problem with untarring, etc. My main issue is where to place > what. There is an "html-dir" directory that I am not sure where to put it > (i.e. /usr/share/backuppc/html or somewhere in Apache2?) And so I cannot get > the URL to allow access via the webpage (http://[ip address]/backuppc.)And > then the permissions required for backuppc user to access the cgi-bin files? > > Could I see a copy (sanitized, if you like) of your configure.pl [4] file? > Where you chose to place various directories might help me figure out what I > am doing wrong. > > --- > > _______________________________ > > Bob Wooden of Donelson Trophy > > 615.885.2846 [2] > www.donelsontrophy.com [1] > > "Everyone deserves an award!!" > > On 2015-07-24 17:18, David Cramblett wrote: > Bob, > > What kind of issue are you running in to? I installed about 6-9 months ago on > CentOS 7. I didn't write down any instructions though - I'm terrible about > that. I only ran into a couple of issues that I can recall: > > 1) Dependencies - A few were missing and I had manually install them. I think > the BackupPC install script listed the dependencies, and whether I had them > installed or not. I would just cancel the installer, add the missing > dependencies, and then re-run the installer. A couple of libraries, I > couldn't identify the package off the top of my head, but I was able to > locate which package had the library from a quick Google search. > > 2) The installer did not have a good init script for the newest version of > CentOS I was using. I found a couple tips on the list serve and then wrote my > own init script to start BackupPC on system startup for CentOS. The main > issue was the temp file system in /var/run/BackupPC was not being created > properly, so BackupPC would not start or wouldn't stay running. > > If you can let me know what specific issue your having, I can try and give > you a hand. > > David > > On Fri, Jul 24, 2015 at 2:31 PM, Bob of Donelson Trophy > <b...@donelsontrophy.net> wrote: > > I know this is a very general request but, I have been trying to install > BackupPC4.0.0alpha3.tar,gz on Ubuntu 14.04.2 LTS. > > It is not as simple as "Install essentials, install BackupPC-XS-0.3.0.tar.gz, > install rsync-bpc-3.0.9.3.tar.gz, install BackupPC4.0.0alpha3.tar.gz., etc." > > I believe I have solved most of my dependencies issues. > > Does anyone have any notes to better guide me than the information that I > cannot find on the net? > -- > > _______________________________ > > Bob Wooden of Donelson Trophy > > 615.885.2846 [2] > www.donelsontrophy.com [1] > > "Everyone deserves an award!!" > > ------------------------------------------------------------------------------ > > _______________________________________________ > BackupPC-users mailing list > BackupPC-users@lists.sourceforge.net > List: https://lists.sourceforge.net/lists/listinfo/backuppc-users [7] > Wiki: http://backuppc.wiki.sourceforge.net [5] > Project: http://backuppc.sourceforge.net/ [8] > > -- > > David Cramblett -- David Cramblett -- David Cramblett -- David Cramblett ------------------------------------------------------------------------------ _______________________________________________ BackupPC-users mailing list BackupPC-users@lists.sourceforge.net List: https://lists.sourceforge.net/lists/listinfo/backuppc-users [7] Wiki: http://backuppc.wiki.sourceforge.net [5] Project: http://backuppc.sourceforge.net/ [8] Links: ------ [1] http://www.donelsontrophy.com [2] tel:615.885.2846 [3] http://config.pl [4] http://configure.pl [5] http://backuppc.wiki.sourceforge.net [6] http://backuppc.sourceforge.net [7] https://lists.sourceforge.net/lists/listinfo/backuppc-users [8] http://backuppc.sourceforge.net/
------------------------------------------------------------------------------
_______________________________________________ BackupPC-users mailing list BackupPC-users@lists.sourceforge.net List: https://lists.sourceforge.net/lists/listinfo/backuppc-users Wiki: http://backuppc.wiki.sourceforge.net Project: http://backuppc.sourceforge.net/