SSI - A dispatcher that enables SSI through mogile


Apache2-Mogile-Dispatch documentation Contained in the Apache2-Mogile-Dispatch distribution.

Index


Code Index:

NAME

Top

SSI - A dispatcher that enables SSI through mogile

DESCRIPTION

Top

This example module shows how to use cookies to determine if mogile is to be used or not. It takes advantage of the apache request object being passed to make its deciscion.

In your http.conf file set the content filter and let this module take care of the rest.

    SetOutputFilter INCLUDES
    <LocationMatch "^/">
        SetHandler modperl
        PerlHandler SSI
    </LocationMatch>

AUTHOR

Top

Nick Gerakines, <nick at socklabs.com>

SUPPORT

Top

You can find documentation for this module with the perldoc command.

  perldoc Apache2::Mogile::Dispatch

COPYRIGHT & LICENSE

Top


Apache2-Mogile-Dispatch documentation Contained in the Apache2-Mogile-Dispatch distribution.

package SSI;

use strict;
use warnings;

use base 'Apache2::Mogile::Dispatch';

use Cache::Memcached;

sub mogile_key {
    my ($r) = @_;
    return $r->uri;
}

# Take advantage of memcache to cache request configuration info when
# possible.
sub get_direction {
    my ($r, $cf) = @_;
    my $host_info;
    if (my $memd = Cache::Memcached->new({ 'servers' => [ '192.168.100.1:11211', '192.168.100.2:11211' ] }) ) {
        my $memkey = memcache_key($r, $cf);
        $host_info = $memd->get($memkey);
    }
    if (! $host_info) {
            $host_info = { 'mogile' => 1 }; # Replace this with something else
            $memd->set($memkey, $host_info);
        }
    }
    return $host_info;
}

sub get_config {
    return {
        'MogTrackers' => [ 'localhost:11211', 'localhost:11212'],
        'MogStaticServers' => ['localhost:80'],
        'MogDomain' => 'localhost',
    };
}

# Instead of automatically reproxying the request to mogile, we can choose
# to request the file and print its contents thus enabling mod_include.
# In some cases we don't want to filter through mod_include. Those cases
# are images, javascript includes, css, etc. We use this function to indicate
# that we want those requests to immediately reproxy.
sub reproxy_request {
    my ($r, $config, $host_info) = @_;
    if ($r->uri =~ m!^/css!xm) { return 1; }
    if ($r->uri =~ m!^/images!xm) { return 1; }
    if ($r->uri =~ m!^/javascript!xm) { return 1; }
    if ($r->uri =~ m!^/js!xm) { return 1; }
    return 0;
}

1;
__END__