mark: A photo of Mark kneeling on top of the Taal Volcano in the Philippines. It was a long hike. (Default)
Mark Smith ([staff profile] mark) wrote in [site community profile] changelog2009-06-12 08:33 pm

[dw-free] http://bugs.dwscoalition.org/show_bug.cgi?id=1133

[commit: http://hg.dwscoalition.org/dw-free/rev/7351b0b64242]

http://bugs.dwscoalition.org/show_bug.cgi?id=1133

Add ability to specify alternate domains e.g. dreamwidth.net, dreamwidth.com
which redirect back to the main site domain.

Patch by [personal profile] exor674.

Files modified:
  • cgi-bin/Apache/LiveJournal.pm
  • doc/config-private.pl.txt
--------------------------------------------------------------------------------
diff -r 94480661f601 -r 7351b0b64242 cgi-bin/Apache/LiveJournal.pm
--- a/cgi-bin/Apache/LiveJournal.pm	Fri Jun 12 17:58:07 2009 +0000
+++ b/cgi-bin/Apache/LiveJournal.pm	Fri Jun 12 20:33:03 2009 +0000
@@ -351,6 +351,34 @@ sub trans
         my $url = "$LJ::SITEROOT$uri";
         $url .= "?" . $args if $args;
         return redir($r, $url);
+    }
+
+    # handle alternate domains
+    if ( $host ne $LJ::DOMAIN && $host ne $LJ::DOMAIN_WEB ) {
+        my $which_alternate_domain = undef;
+        foreach my $other_host ( @LJ::ALTERNATE_DOMAINS ) {
+            $which_alternate_domain = $other_host
+                if $host =~ m/\Q$other_host\E$/i;
+        }
+
+        if ( defined $which_alternate_domain ) {
+            my $root = $is_ssl ? "https://" : "http://";
+            $host =~ s/\Q$which_alternate_domain\E$/$LJ::DOMAIN/i;
+
+            # do $LJ::DOMAIN -> $LJ::DOMAIN_WEB here, to save a redirect.
+            if ( $LJ::DOMAIN_WEB && $host eq $LJ::DOMAIN ) {
+                $host = $LJ::DOMAIN_WEB;
+            }
+            $root .= "$host/";
+
+            if ( $r->method eq "GET" ) {
+                my $url = "$root$uri";
+                $url .= "?" . $args if $args;
+                return redir( $r, $url );
+            } else {
+                return redir( $r, $root );
+            }
+        }
     }
 
     # check for sysbans on ip address
diff -r 94480661f601 -r 7351b0b64242 doc/config-private.pl.txt
--- a/doc/config-private.pl.txt	Fri Jun 12 17:58:07 2009 +0000
+++ b/doc/config-private.pl.txt	Fri Jun 12 20:33:03 2009 +0000
@@ -33,6 +33,14 @@
     # when an entry is posted; hash instead of array for efficiency
     %OFFICIAL_JOURNALS = (
         news => 1,
+    );
+
+    # list of alternate domains that point to your site.
+    @ALTERNATE_DOMAINS = (
+        'ljsite.org',
+        'ljsite.net',
+        'ljsite.co.uk',
+        'ljsite.tld',
     );
 
     # configuration/ID for statistics tracker modules which apply to
--------------------------------------------------------------------------------