diff --git a/episodes.php b/episodes.php new file mode 100644 index 00000000..49bb6296 --- /dev/null +++ b/episodes.php @@ -0,0 +1,54 @@ + 'countries/nl/eplist.html', + '.pr.us' => 'countries/pr/eplist.html', + '.ar' => 'countries/wbtv/eplist.html', + '.at' => 'countries/at/eplist.html', + '.au' => 'countries/au/eplist.html', + '.au' => 'countries/au/eplist.html', + '.be' => 'countries/be/eplist.html', + '.br' => 'countries/wbtv/eplist.html', + '.ca' => 'countries/ca/eplist.html', + '.cl' => 'countries/cl/eplist.html', + '.co' => 'countries/co/eplist.html', + '.cr' => 'countries/cr/eplist.html', + '.cz' => 'countries/cz/eplist.html', + '.de' => 'countries/de/eplist.html', + '.es' => 'countries/es/eplist.html', + '.fi' => 'countries/fi/eplist.html', + '.fr' => 'countries/fr/eplist.html', + '.gb' => 'countries/uk/eplist.html', + '.gr' => 'countries/gr/eplist.html', + '.id' => 'countries/id/eplist.html', + '.ie' => 'countries/uk/eplist.html', + '.il' => 'countries/il/eplist.html', + '.it' => 'countries/it/eplist.html', + '.jo' => 'countries/jo/eplist.html', + '.my' => 'countries/id/eplist.html', + '.nl' => 'countries/nl/eplist.html', + '.no' => 'countries/no/eplist.html', + '.nz' => 'countries/nz/eplist.html', + '.pe' => 'countries/pe/eplist.html', + '.ph' => 'countries/ph/eplist.html', + '.pk' => 'countries/pk/eplist.html', + '.pl' => 'countries/pl/eplist.html', + '.pt' => 'countries/pt/eplist.html', + '.ru' => 'countries/ru/eplist.html', + '.se' => 'countries/se/eplist.html', + '.sg' => 'countries/sg/eplist.html', + '.si' => 'countries/si/eplist.html', + '.uk' => 'countries/uk/eplist.html', + '' => 'countries/us/eplist.html', +); + +$remote_host = gethostbyaddr($_SERVER['REMOTE_ADDR']); +$server_name = $_SERVER['SERVER_NAME']; + +foreach ($domains as $suffix => $url) { + if (!$suffix || substr($remote_host, -strlen($suffix)) == $suffix) { + header("Location: http://$server_name/lurk/$url"); + } +} + +print file_get_contents('internal/dom-error.html'); diff --git a/internal/domainlist b/internal/domainlist deleted file mode 100644 index b925bb28..00000000 --- a/internal/domainlist +++ /dev/null @@ -1,39 +0,0 @@ -DEFAULT countries/us/eplist.html -.ca countries/ca/eplist.html -.uk countries/uk/eplist.html -.ie countries/uk/eplist.html -.fi countries/fi/eplist.html -.se countries/se/eplist.html -.gb countries/uk/eplist.html -.fr countries/fr/eplist.html -.gr countries/gr/eplist.html -.id countries/id/eplist.html -.au countries/au/eplist.html -.be countries/be/eplist.html -.cl countries/cl/eplist.html -.pt countries/pt/eplist.html -.co countries/co/eplist.html -.cr countries/cr/eplist.html -.de countries/de/eplist.html -.my countries/id/eplist.html -.nl countries/nl/eplist.html -.euro.net countries/nl/eplist.html -.pr.us countries/pr/eplist.html -.il countries/il/eplist.html -.au countries/au/eplist.html -.sg countries/sg/eplist.html -.at countries/at/eplist.html -.pe countries/pe/eplist.html -.ph countries/ph/eplist.html -.pk countries/pk/eplist.html -.es countries/es/eplist.html -.ru countries/ru/eplist.html -.jo countries/jo/eplist.html -.no countries/no/eplist.html -.si countries/si/eplist.html -.nz countries/nz/eplist.html -.pl countries/pl/eplist.html -.br countries/wbtv/eplist.html -.ar countries/wbtv/eplist.html -.it countries/it/eplist.html -.cz countries/cz/eplist.html diff --git a/lurker.html b/lurker.html index 352525ff..29728ff3 100755 --- a/lurker.html +++ b/lurker.html @@ -52,7 +52,7 @@ href="/lurk/universe/intro.html">[The Babylon 5 Universe][The Episodes] -#include -#include -#include -#include -#include -#include - -char *getenv(); - -main() -{ - FILE *fp; - char domain[100], filename[500], bestname[500]; - char *hisdomain, *mapbuf; - int matchlen = 0, hislen, thislen, i, c, fd; - struct stat st; - - chdir(BASEDIR); - - printf("Content-type: text/html\n"); - - /* - * Get the remote domain name and make it lower case. - */ - hisdomain = getenv("REMOTE_HOST"); - if (hisdomain == NULL) - hisdomain = strdup("com"); - hislen = strlen(hisdomain); - for (i = 0; i < hislen; i++) - hisdomain[i] = tolower(hisdomain[i]); - - /* - * Now read list entries and find the filename with the longest - * matching domain name. - */ - fp = fopen(LISTFILE, "r"); - if (fp) - { - /* First entry is the default filename. */ - fscanf(fp, "%s %s", domain, bestname); - - while (fscanf(fp, "%s %s", domain, filename) > -1) - { - thislen = strlen(domain); - if (thislen > matchlen && thislen <= hislen) - { - if (! strcmp(domain, hisdomain+hislen-thislen)) - { - strcpy(bestname, filename); - matchlen = thislen; - } - } - } - - fclose(fp); - } - else - strcpy(bestname, ERRORFILE); - - printf("Location: http://%s/lurk/%s\n\n", getenv("SERVER_NAME"), - bestname); -} diff --git a/src/select-eplist.c.dump b/src/select-eplist.c.dump deleted file mode 100644 index c7a5d253..00000000 --- a/src/select-eplist.c.dump +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Select an episode list to show based on a control file. - */ - -#define LISTFILE "/home/koreth/lurk/internal/domainlist" -char * BASEDIR = "/home/koreth/lurk/"; -#define ERRORFILE "/home/koreth/lurk/internal/dom-error.html" - -#include -#include -#include -#include -#include -#include -#include - -char *getenv(); - -main() -{ - FILE *fp; - char domain[100], filename[500], bestname[500]; - char *hisdomain, *mapbuf; - int matchlen = 0, hislen, thislen, i, c, fd; - struct stat st; - - chdir(BASEDIR); - - printf("Content-type: text/html\n"); - - /* - * Get the remote domain name and make it lower case. - */ - hisdomain = getenv("REMOTE_HOST"); - if (hisdomain == NULL) - hisdomain = strdup("com"); - hislen = strlen(hisdomain); - for (i = 0; i < hislen; i++) - hisdomain[i] = tolower(hisdomain[i]); - - /* - * Now read list entries and find the filename with the longest - * matching domain name. - */ - fp = fopen(LISTFILE, "r"); - if (fp) - { - /* First entry is the default filename. */ - fscanf(fp, "%s %s", domain, bestname); - - while (fscanf(fp, "%s %s", domain, filename) > -1) - { - thislen = strlen(domain); - if (thislen > matchlen && thislen <= hislen) - { - if (! strcmp(domain, hisdomain+hislen-thislen)) - { - strcpy(bestname, filename); - matchlen = thislen; - } - } - } - - fclose(fp); - } - else - strcpy(bestname, ERRORFILE); - - /* - * Output the file in question. - */ - fd = open(bestname, 0); - if (fd < 0) - fd = open(ERRORFILE, 0); - if (fd < 0) - { -err: - printf("\n

Fatal error!

\n"); - printf("Can't find an episode list.\n"); - exit(0); - } - - if (fstat(fd, &st)) - goto err; - -#if defined(MAP_FAILED) && defined(MAP_SHARED) /* { */ - mapbuf = mmap(NULL, (size_t) st.st_size, PROT_READ, - MAP_SHARED, fd, (off_t) 0); - if (mapbuf == MAP_FAILED) - { - perror("eplist: mmap"); - goto err; - } - - close(fd); - - printf("Content-length: %lu\n\n", (unsigned long)st.st_size); - fflush(stdout); - - write(1, mapbuf, (unsigned long)st.st_size); - -#else /* }{ */ - printf("Content-length: %lu\n\n", (unsigned long)st.st_size); - - fp = fdopen(fd, "r"); - while ((c = getc(fp)) != EOF) - putchar(c); - fclose(fp); - fflush(stdout); -#endif /* } */ - - close(1); - - { - char *c, *val; - - val = getenv("HTTP_USER_AGENT"); - for (c = val; *c; c++) - if (*c == '/') - *c = '#'; - - chdir("/home/woodstock/koreth/browsers"); - fd = open(val, O_RDWR | O_APPEND | O_CREAT, 0644); - write(fd, val, 1); - close(fd); - } - - exit(0); -}