IPTables Tools

I am constantly trying to get a better handle on my iptables configuration. Particularly when setting up NAT and IP forwarding. This article lists three tools for configuring and maintaining iptables firewalls. I had previously heard of GuardDog; but FireHOL and “Easy Firewall Generator for iptables” were both new to me.

Suse RPM

Got a couple links on building RPMs for Suse.

  • Maximum RPM – A 2000 article on making RPMs, kind of dated but still accurate.
  • Suse Package Conventions – Suse specific RPM information.
  • Migrating Red Hat applications to SUSE – A Novell “Cool Solutions” article on moving getting Redhat packages working on Suse. Contains only general information and most of that is concerning platform independent development; not strictly Redhat to Suse migration. The article is interesting because it talks about using Perl and the Yast API to make Yast configuration modules for ANYTHING on Suse. hmmm… I can think of a couple uses for that!

Quick Reference: CVS Automation

CVS Auto-updating is a blog post on how to get CVS to manage auto updating when working with a web server or a local repository. Nothing fancy, but it works. Here is another option (releated to KDE management) for auto updating:

Simply subscribe the user owning the cvs/svn checkout to the mailing-list where
commit mails are sent, and in that user, set up .procmailrc like:0:kdecvs.lck
| $HOME/bin/kdecvslogwhere kdecvslog is a script like:========================
#!/usr/bin/perl -wmy $subj;

umask 022;

$ENV{“CVS_RSH”} = “ssh”;

# read the message to make procmail happy
while()
{
chop;
$subj = $1 if(/^Subject: (.*)/i and !defined($subj));
}

exit 0 if (!defined($subj));
exit 0 if ($subj =~ /\/\.\.\//);

$subj = $1 if ($subj =~ /^\S+: (.*)$/); # remove branches
$subj = $1 if ($subj =~ /^(\S+).*$/);

# Choose here which subjects to filter upon. Another solution is to filter
# in .procmailrc of course
if ( $subj =~ m#www/areas/koffice# || $subj =~ m#www/media# )
{
my $home = $ENV{“HOME”};
my $cvsroot = “$home/koffice.org”;

open LOG, “>>$home/cvslog”;
my $date = `date`; chop($date);

my $path = “$subj”;
if ( $subj =~ m#www/media# ) {
$path = “$cvsroot”;
} else {
$path = $subj;
$path =~ s#www/areas/koffice##;
$path = “$cvsroot/$path”;
}
print LOG “$date: subj is $subj\n”;
print LOG “$date: testing path $path\n”;
#print LOG “$date: mod is $mod\n”;
$path = “$cvsroot” if (! -d $path);

if (-d $path) {
print LOG “$date: updating $path\n”;
$SIG{ALRM} = sub { $SIG{TERM} = sub{}; kill TERM, 0; exit 0; };
alarm 600;
my $out = `cd $path; svn up 2>&1`;  ## use cvs up here instead of svn up if you use CVS
print LOG “$date: output–\n” . $out . “\n”;
}
close(LOG);
}

Thanks to David Faure for the script.

Speedy Linux

Here is a quick (and light) article on getting more speed out of your linux distrobution. The information is useful but here are a couple more tips that can help:

  • Although its generally not necessary to have multiple virtual terminals running in init 5; they are VERY useful on other (i.e. non-GUI) run levels. So instead of commenting them out we can simply disabled them for a given run level like this:

    1:2345:respawn:/sbin/mingetty tty1
    2:2345:respawn:/sbin/mingetty tty2
    3:23:respawn:/sbin/mingetty tty3
    4:23:respawn:/sbin/mingetty tty4
    5:23:respawn:/sbin/mingetty tty5
    6:23:respawn:/sbin/mingetty tty6

    This would give you 2 virtual terminals on run levels 4 & 5 but still retain all 6 when on 2 & 3.

  • Use Open Office a bunch? You can add this command to your .bashrc to keep an instance of Open Office in memory: “ooffice -quickstart &”.
  • Many people will see a noticeable speed improvement by building a kernel targeted to their particular processor. This may sound hard but its really just a simple as getting the src rpm of your current kernel and typing: “rpm –rebuild –target athlon kernel-verison.src.rpm”. You will then need to install the new kernel. The nice part about this is that it is registered as the same kernel and uses the same sources as the default distribution kernel.

The death of a desktop…

There has been a heated debate going on in the Gnome world over which development environment to integrate on a native level with the desktop layer of Gnome; Java or Mono. The dark secret that every Gnome developer subconsciously understands in their rigid little pre-OOP based minds is that C is killing Gnome’s ability to compete effectively in the F/OSS desktop world. All the core Gnome developers understand this, as do most anyone who has had to develop on Gnome. To make C a truly useful language for desktop application development it needs a couple things; like encapsulation, inheritance, and polymorphism. If these qualities sound familiar its because they are quite literally the defining characteristics of object oriented programming. A cursory look at GTK shows many a half-assed attempt to implement said qualities in Gnome libraries even though their primary language of choice doesn’t support them natively. Suffice to say that Open Office, Mozilla, KDE, and almost all sane desktop software application are developed in C++ (or similar OOP languages) these days. Fundamentally Gnome HAS to make a switch; and this switch will decide the future of the Gnome Desktop.

Now this is where things get interesting. Redhat has decided to back Java (or more specifically Classpath and gcj, an open source Java implementation.) Why? No one is really sure but it should be noted that Havoc Pennington (head of Redhat Gnome development and probably the second most famous talking head in the Gnome pantheon) has gone so far as to say that Redhat will not and CANNOT include Mono in its version of Linux. Rehat is the single largest Gnome contributor, the largest corporate Linux distribution, and employees more Gnome developers than any other single employer. Not including Mono (and not supporting it) would be a huge blow to the success of Gnome on the Linux desktop. So how far is Redhat willing to go to keep Mono out of Gnome? Evidently they would be willing to actually FORK (yes you heard me right) Gnome.

Now, easily the most public face of Gnome development is Miguel de Icaza. Miguel is most famous for a little project he works on called Mono. Yes, that would be the same Mono that Redhat will not ship. And easily some of the most interesting technology to come out of Gnome in the past couple years has come from Miguel’s platform of choice (things like Beagle.) Mono is the obvious favorite for the future direction of Gnome. So much so, that Java doesn’t even register on the radar of most Gnome developers.

So here is the rundown. 1) Gnome needs to move from C if it ever want to bring modern applications to its desktop environment. 2) Mono is the logical direction for Gnome to head. 3) Gnome’s most influential developer is ONLY willing to go towards Mono. 4) Gnome’s most significant corporate contributor is not willing to use/ship/support Mono. 5) That same contributor is pushing Java. 6) Very few in the Gnome world actually want to use Java (minus Sun and Redhat) on the Gnome desktop. 7) Redhat is actually willing to fork Gnome (the thought of switching to a superior desktop never even crossed their minds) rather than use Mono. And finally, 8) Many of the Gnome core developers would rather stay with C than bother with the whole mess.

Man, does this sound like a desktop with a bright future! Oh, ya. By the way. Because of the flexability, and power of the Qt environment. You can already make native Java applications in KDE. And they are a whole lot easier than making them in GTK#, AWT, or Swing.

NetWare on Linux

I had never heard of this project before, so I figured I would post a link. MARSNWE is a NetWare emulation tool for Linux. MARSNWE can easily replace the file and print services of a Novell NetWare 2.2 or 3.11 server. It can also be be used in this manner as an IPX router. It does not offer all the features of newer version of NetWare (like Directory Services) but works as a nice tool for legacy support on Linux. The link is to the Novell Suse information sheet.

Subversion and Apache SSl

Ben Meyer (aka icefox) pointed out this quick tutorial on getting Subversion (SVN) up and running with Apache & SSL. The tutorial covers install with Debain, but is fairly relivant for any other distro.

SVN is a replacement for the venerable Current Versioning System (CVS) use to manage very large, very distributed, digital information. While it is most commonly used to manage software projects, it can also be used to manage documents, websites, or even personal home directories.

The tutorial is particularly interesting to me because I am changeing over from CVS to SVN for source control on KDE.

Gnome vs KDE: Part 2

Got the heads-up for this from Michael Pyne. The newest version of Gnome, 2.10, will include among its many features; the editor will be able to highlight the current line, highlight matching braces, and single-click preference in the file manager will also affect the archive manager.

Seriously, at this blazing pace Gnome should catch up to Windows around 2075 (assuming Windows does nothing) and maybe it will catch up to KDE sometime around 2120 (assuming again, no action on KDE’s part.) How is it that such a desktop is even considered in the same league as something like OSX, Windows, or KDE?

BTW I am typing this in a web browser text field within KDE, with auto spell-checking. Wonder how long it will take them to implement this.

Gnome vs KDE: Part 1

I know I have been on a KDE rant as of late, but I find that the technology continues to amaze me. For example, Gnome decided that (for compatibility sake with Windows GTK applications) that it should have the ability to reverse the button order on their dialog boxes. You see, a couple years ago Gnome made the decision to move from the button order to the MacOS style button order of . The enter button, because of this design, always defaults to cancel instead of ok. Well here is that patch to allow selection of the button order.

For good measure, KDE decided that, for compatibility with MacOS style interfaces it would allow its dialogs to select their button order. Here is KDE’s patch.

Seriously, thats it. Four lines! Four lines and all the KDE dialog button get re-ordered. All KDE applications inherit this change automatically. Here is the kicker, Gnomes patch is around 266 lines; and it will only affect two-thirds of their applications. That is why Gnome is getting its ass handed to it by KDE. Fewer developers, fewer lines of code, and more functionality.