Project

General

Profile

« Previous | Next » 

Revision 8371

Renamed www/ back to web/

View differences:

www/main/servers/vegbiendev/db/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
RewriteRule ^.*$ /.phpPgAdmin/[vegbiendev.nceas.ucsb.edu/phppgadmin]/localhost:5432:allow/$0 [discardpath,noescape,last]
www/main/servers/vegbiendev/fs
1
link ../../../..
2 0

  
www/main/servers/vegbiendev/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
# don't redirect subdir paths
9
RewriteCond %{DOCUMENT_ROOT}/servers/vegbiendev/$1 -d
10
RewriteRule ^([^/]+).*$ - [discardpath,noescape,last]
11

  
12
# handle DirectoryIndex (this must be at this position in the rules)
13
RewriteRule ^(.*/)?index\.php$ $1 [discardpath,noescape]
14

  
15
RewriteRule ^.*$ db/$0 [discardpath,noescape,last]
www/main/servers/nimoy/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
RewriteRule ^.*$ /.phpMyAdmin/[nimoy.nceas.ucsb.edu/phpmyadmin]/$0 [discardpath,noescape,last]
www/main/.vegbank
1
link VegBank
2 0

  
www/main/index.php
1
<?php
2
require_once dirname(__FILE__)."/util.php";
3

  
4
$self_dir = ensure_suffix("/", dirname($_SERVER["SCRIPT_NAME"]));
5

  
6
# config
7
$alias = "j.mp/vegpath#";
8

  
9
function by_prefix($url, $main_url=null)
10
{
11
	if (!isset($main_url)) $main_url = $url;
12
	
13
	return function($path) use($url, $main_url)
14
	{
15
		return $path ? $url.$path : $main_url;
16
	};
17
}
18

  
19
$h_level = 5;
20
$root = $_SERVER["SERVER_NAME"] === gethostbyaddr($_SERVER["SERVER_ADDR"])
21
	? $alias : $_SERVER["SERVER_NAME"].rm_suffix("/", $self_dir)."?";
22
# instead of PATH_INFO, to support the Apache ErrorDocument directive
23
$rel_fs_path = rm_prefix($self_dir, $_SERVER["REQUEST_URI"]);
24
$path = parse_dot_path($rel_fs_path);
25
$ns = strtolower($path->head);
26

  
27
function add_ns($name, $path_pat, $url_func)
28
{
29
	global $root, $h_level, $path, $ns;
30
	if (is_string($url_func)) $url_func = by_prefix($url_func);
31
	
32
	print("<h".$h_level.' id="'.$name.'">'.$root.'<big><a href="http://'.$root
33
		.$name.'">'.$name."</a></big><i>".$path_pat."</i></h".$h_level.">\n");
34
	if ($ns === strtolower($name)) # found match, so redirect
35
	{
36
		header("Location: ".strip_url($url_func($path->tail)));
37
		ob_end_flush();
38
		exit;
39
	}
40
}
41

  
42
function custom_separator($url, $sep, $main_url=null)
43
{
44
	if (!isset($main_url)) $main_url = $url;
45
	
46
	return function($path) use($url, $sep, $main_url)
47
	{
48
		if ($path === "") return $main_url;
49
		$path = parse_dot_path($path);
50
		return $url.join_non_empty($sep, array($path->head, $path->tail));
51
	};
52
}
53

  
54
function fragment_override($url, $fragment=null)
55
{
56
	return function($path) use($url, $fragment)
57
	{
58
		if (!isset($fragment))
59
		{
60
			$path = parse_dot_path($path);
61
			$fragment = $path->head;
62
			$path = $path->tail;
63
		}
64
		if ($path !== "") $url .= "?".$path;
65
		return $url."#".$fragment;
66
	};
67
}
68

  
69
function phpPgAdmin($url, $table=null)
70
{
71
	return function($path) use($url, $table)
72
	{
73
		$path = join_non_empty(".", array($table, $path));
74
		$path = parse_dot_path($path);
75
		$subject = "schema";
76
		if ($path->head !== "")
77
		{
78
			$url .= "&table=".$path->head;
79
			if ($path->tail !== "")
80
			{
81
				$url .= "&column=".$path->tail;
82
				$subject = "column";
83
			}
84
			else $subject = "table";
85
		}
86
		$url .= "&subject=".$subject;
87
		return $url;
88
	};
89
}
90

  
91
function phpMyAdmin($url, $table=null)
92
{
93
	return function($path) use($url, $table)
94
	{
95
		$path = join_non_empty(".", array($table, $path));
96
		$path = parse_dot_path($path);
97
		$target = "db_structure";
98
		if ($path->head !== "")
99
		{
100
			$url .= "&table=".$path->head;
101
			if ($path->tail !== "") $url .= "&column=".$path->tail;
102
			$target = "tbl_structure";
103
		}
104
		$url .= "&target=".$target.".php";
105
		return $url;
106
	};
107
}
108

  
109
ob_start(); // delay output in case there is a redirect
110
?>
111
<html>
112
	<head>
113
		<title>VegPath</title>
114
		<link rel="stylesheet" type="text/css" href="/main.css" />
115
		<style type="text/css">
116
h1 {color: green;}
117
		</style>
118
		<script type="text/javascript" src="/util.js"></script>
119
	</head>
120
	<body>
121
		<h1>VegPath&nbsp;&nbsp; <small><a href="http://en.wikipedia.org/wiki/PURL">persistent URLs</a> for vegetation resources</small></h1>
122
		<div>Supported URL patterns:&nbsp;&nbsp; <small>(elements in <i>italics</i> are optional)</small></div>
123
		<p></p>
124
<?php
125
# add and list URLs
126

  
127
$Redmine = "https://projects.nceas.ucsb.edu/nceas/projects/bien";
128
$Redmine_svn = $Redmine."/repository/raw";
129

  
130
$nimoy = "http://nimoy.nceas.ucsb.edu/phpmyadmin/index.php";
131
function nimoy_db($db) { global $nimoy; return phpMyAdmin($nimoy."?db=".$db); }
132

  
133
$IH_db = phpMyAdmin($nimoy."?db=bien3_adb", "ih");
134

  
135
$SALVIAS = "http://salvias.net/Documents/salvias_data_dictionary.html";
136
?>
137
		<table border="0" cellspacing="0" cellpadding="0">
138
			<tr valign="top">
139
				<td nowrap="nowrap"><h2>Terms</h2></td>
140
				<td nowrap="nowrap"><h2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</h2></td>
141
				<td nowrap="nowrap"><h2>Data</h2></td>
142
			</tr>
143
			<tr valign="top">
144
				<td nowrap="nowrap">
145
<?php
146
print("<blockquote>\n");
147
print("<h3>Exchange schemas</h3>");
148
{
149
	print("<blockquote>\n");
150
	add_ns("VegCore", ".term", "https://projects.nceas.ucsb.edu/nceas/projects/bien/wiki/VegCore#");
151
	add_ns("DwC", ".term", "http://rs.tdwg.org/dwc/terms/#");
152
	{
153
		print("<blockquote>\n"); $h_level++;
154
		add_ns("DwC.history", ".term", "http://rs.tdwg.org/dwc/terms/history/#");
155
		print("</blockquote>\n"); $h_level--;
156
	}
157
	add_ns("TCS", "#/XPath", "http://www.tdwg.org/standards/117/download/#/v101.xsd");
158
	add_ns("VegX", "#/XPath", "http://wiki.tdwg.org/twiki/pub/Vegetation/WebHome/VegX_Schema_1.5.3_proposed.zip#/veg.xsd");
159
	print("</blockquote>\n");
160
}
161
print("<h3>Aggregators</h3>");
162
{
163
	print("<blockquote>\n");
164
	add_ns("VegBank", ".table.column", custom_separator("http://vegbank.org/vegbank/views/dba_tabledescription_detail.jsp?view=detail&entity=dba_tabledescription&where=where_tablename&wparam=",
165
		"#", "http://vegbank.org/get/index/dba_tabledescription"));
166
	add_ns("SALVIAS", ".table.column", by_prefix($SALVIAS."#Plot_", $SALVIAS));
167
	{
168
		print("<blockquote>\n"); $h_level++;
169
		add_ns("SALVIAS.db", ".table.column", nimoy_db("salvias_plots"));
170
		add_ns("SALVIAS.users", ".table.column", nimoy_db("salvias_users"));
171
		print("</blockquote>\n"); $h_level--;
172
	}
173
	add_ns("BIEN2", "", $nimoy."?target=server_databases.php");
174
	{
175
		print("<blockquote>\n"); $h_level++;
176
		add_ns("BIEN2.web", ".table.column", nimoy_db("bien_web"));
177
		add_ns("BIEN2.core", ".table.column", nimoy_db("bien2"));
178
		add_ns("BIEN2.geoscrub", ".table.column", nimoy_db("geoscrub"));
179
		add_ns("BIEN2.staging", ".table.column", nimoy_db("bien2_staging"));
180
		print("</blockquote>\n"); $h_level--;
181
	}
182
	add_ns("VegBIEN", ".table.column", phpPgAdmin("http://vegbiendev.nceas.ucsb.edu/phppgadmin/redirect.php?server=localhost%3A5432%3Aallow&database=vegbien&schema=public"));
183
	print("</blockquote>\n");
184
}
185
print("<h3>Primary databases</h3>");
186
{
187
	print("<blockquote>\n");
188
	add_ns("TNRS", ".term", fragment_override("http://tnrs.iplantcollaborative.org/instructions.html", "download_results"));
189
	add_ns("CTFS", "", $Redmine."/wiki/CTFS");
190
	{
191
		print("<blockquote>\n"); $h_level++;
192
		add_ns("CTFS.schema", ".table.column", $Redmine_svn."/inputs/CTFS/_archive/DBv5.txt#");
193
		add_ns("CTFS.tables", ".table", fragment_override($Redmine."/wiki/CTFS", "Tables"));
194
		add_ns("CTFS.terms", ".term", $Redmine_svn."/inputs/CTFS/_src/ctfs-comments_worksheet.xls#");
195
		print("</blockquote>\n"); $h_level--;
196
	}
197
	add_ns("IH.db", ".term", $IH_db);
198
	print("</blockquote>\n");
199
}
200
print("<h3>People</h3>");
201
{
202
	print("<blockquote>\n");
203
	add_ns("Brad", "", "mailto:bboyleATemail.arizona.edu");
204
	{
205
		print("<blockquote>\n"); $h_level++;
206
		$Brad_Boyle_VegCore = $Redmine_svn."/schemas/VegCore/Brad_Boyle";
207
		add_ns("Brad.data-provenance", ".term", $Brad_Boyle_VegCore."/BIEN%20database%20entities%20related%20to%20data%20provenance%20and%20ownership.docx#");
208
		add_ns("Brad.DwC-IDs.2013-2-7", ".term", $Brad_Boyle_VegCore."/vegbien_identifiers.xlsx#");
209
		add_ns("Brad.DwC-IDs.2013-1-31", ".term", $Brad_Boyle_VegCore."/vegbien_identifier_examples.xlsx#");
210
		print("</blockquote>\n"); $h_level--;
211
	}
212
	print("</blockquote>\n");
213
}
214
print("</blockquote>\n");
215
?>
216
				</td>
217
				<td nowrap="nowrap"></td>
218
				<td nowrap="nowrap">
219
<?php
220
print("<blockquote>\n");
221
print("<h3>Institutions</h3>");
222
{
223
	print("<blockquote>\n");
224
	add_ns("IH", ".herbarium_code", by_prefix("http://sweetgum.nybg.org/ih/herbarium_list.php?QueryName=DetailedQuery&Restriction=NamPartyType+%3D+%27IH+Herbarium%27&col_NamOrganisationAcronym=",
225
		"http://sweetgum.nybg.org/ih/"));
226
	print("</blockquote>\n");
227
}
228
print("</blockquote>\n");
229
?>
230
				</td>
231
			</tr>
232
		</table>
233
<?php
234
if (ends_with($root, '#')) # URL shortener requires fragment redirect
235
{
236
?>
237
		<script type="text/javascript">
238
var loc = document.location
239
if (loc.hash) document.location = '?'+rm_prefix('#', loc.hash)
240
		</script>
241
<?php
242
}
243
?>
244
	</body>
245
</html>
246
<?php
247
ob_end_flush();
248
?>
www/main/BIEN2/core/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
RewriteRule ^.*$ /servers/nimoy/bien2/$0 [discardpath,noescape,last]
www/main/BIEN2/geoscrub/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
RewriteRule ^.*$ /servers/nimoy/geoscrub/$0 [discardpath,noescape,last]
www/main/BIEN2/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
# don't redirect subdir paths
9
RewriteCond %{DOCUMENT_ROOT}/BIEN2/$1 -d
10
RewriteRule ^([^/]+).*$ - [discardpath,noescape,last]
11

  
12
# handle DirectoryIndex (this must be at this position in the rules)
13
RewriteRule ^(.*/)?index\.php$ $1 [discardpath,noescape]
14

  
15
RewriteRule ^.*$ web/$0 [discardpath,noescape,last]
www/main/BIEN2/staging/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
RewriteRule ^.*$ /servers/nimoy/bien2_staging/$0 [discardpath,noescape,last]
www/main/BIEN2/web/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
RewriteRule ^.*$ /servers/nimoy/bien_web/$0 [discardpath,noescape,last]
www/main/IH/db/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
RewriteRule ^.*$ /servers/nimoy/bien3_adb/ih/$0 [discardpath,noescape,last]
www/main/IH/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
# don't redirect subdir paths
9
RewriteCond %{DOCUMENT_ROOT}/IH/$1 -d
10
RewriteRule ^([^/]+).*$ - [discardpath,noescape,last]
11

  
12
# handle DirectoryIndex (this must be at this position in the rules)
13
RewriteRule ^(.*/)?index\.php$ $1 [discardpath,noescape]
14

  
15
RewriteRule ^$   http://sweetgum.nybg.org/ih/                                                                                                                            [discardpath,noescape,last]
16
RewriteRule ^.+$ http://sweetgum.nybg.org/ih/herbarium_list.php?QueryName=DetailedQuery&Restriction=NamPartyType+\%3D+\%27IH+Herbarium\%27&col_NamOrganisationAcronym=$0 [discardpath,noescape,last]
www/main/util.php
1
<?php
2
function coalesce($value, $empty) { return isset($value) ? $value : $empty; }
3

  
4
function starts_with($str, $prefix)
5
{
6
	return substr($str, 0, strlen($prefix)) === $prefix;
7
}
8

  
9
function ends_with($str, $suffix)
10
{
11
	return substr($str, -strlen($suffix)) === $suffix;
12
}
13

  
14
function rm_prefix($prefix, $str)
15
{
16
	return starts_with($str, $prefix) ? substr($str, strlen($prefix)) : $str;
17
}
18

  
19
function rm_suffix($suffix, $str)
20
{
21
	return ends_with($str, $suffix) ?
22
		substr($str, 0, strlen($str) - strlen($suffix)) : $str;
23
}
24

  
25
function ensure_prefix($prefix, $str)
26
{
27
	return starts_with($str, $prefix) ? $str : $prefix.$str;
28
}
29

  
30
function ensure_suffix($suffix, $str)
31
{
32
	return ends_with($str, $suffix) ? $str : $str.$suffix;
33
}
34

  
35
class Path
36
{
37
	public $head;
38
	public $tail;
39
	
40
	function Path($head, $tail="")
41
	{
42
		$this->head = $head;
43
		$this->tail = $tail;
44
	}
45
}
46

  
47
function partition($str, $delim)
48
{
49
	$delim_idx = strpos($str, $delim);
50
	return $delim_idx !== false ? new Path(substr($str, 0, $delim_idx),
51
		substr($str, $delim_idx+strlen($delim))) : new Path($str);
52
}
53

  
54
function array_non_empty($array)
55
{
56
	foreach ($array as $key => $value)
57
		if (!isset($value) || $value === "") unset($array[$key]);
58
	return $array;
59
}
60

  
61
function join_non_empty($delim, $array)
62
{
63
	return implode($delim, array_non_empty($array));
64
}
65

  
66
function parse_dot_path($path) { return partition($path, "."); }
67

  
68
function parse_mixed_path($path)
69
{
70
	preg_match('/^([\w-]*)(.*)$/', $path, $path);
71
	return new Path($path[1], rm_prefix(".", $path[2]));
72
}
73

  
74
function strip_url($url) { return rm_suffix("#", $url); }
75
?>
www/main/.tnrs
1
link TNRS
2 0

  
www/main/main.conf
1
<VirtualHost *:80>
2
	ServerRoot /home/bien/svn/web
3
	ServerAdmin aaronmk@nceas.ucsb.edu
4
	
5
	RewriteEngine on
6
	RewriteMap tolower int:tolower
7
	RewriteMap subdomain2path prg:subdomain2path
8
	
9
	DocumentRoot .
10
	<Directory main>
11
		AllowOverride all
12
	</Directory>
13
	
14
	ErrorLog logs/error_log
15
	CustomLog logs/access_log combined
16
</VirtualHost>
www/main/main.css
1
html {font-size: 10pt; font-family: Verdana, sans-serif;}
2
a {color: blue; text-decoration: none;}
3
a:hover {text-decoration: underline;}
4
big, .big {font-size: 140%; font-weight: bold;}
5
code, .code {font-weight: normal; font-family: Courier, monospace;}
6
.progress {text-decoration: blink;}
7

  
8
h2, h3, h4, h5, h6, blockquote {margin-bottom: 3pt; margin-right: 0;}
9
h3, h4 {margin-top: 8pt;}
10
blockquote, h5, h6 {margin-top: 4pt;}
11
.indent {padding-left: 2em;}
www/main/VegBank/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
RewriteRule ^$             http://vegbank.org/get/index/dba_tabledescription                                                                                           [discardpath,noescape,last]
9
RewriteRule ^([^/]+)/(.*)$ http://vegbank.org/vegbank/views/dba_tabledescription_detail.jsp?view=detail&entity=dba_tabledescription&where=where_tablename&wparam=$1#$2 [discardpath,noescape,last]
www/main/.ctfs
1
link CTFS
2 0

  
www/main/VegBIEN/Redmine/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
# don't redirect subdir paths
9
RewriteCond %{DOCUMENT_ROOT}/VegBIEN/Redmine/$1 -d
10
RewriteRule ^([^/]+).*$ - [discardpath,noescape,last]
11

  
12
# handle DirectoryIndex (this must be at this position in the rules)
13
RewriteRule ^(.*/)?index\.php$ $1 [discardpath,noescape]
14

  
15
RewriteRule ^.*$ wiki/$0 [discardpath,noescape,last]
www/main/VegBIEN/Redmine/svn-web/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
RewriteRule ^.*$ /VegBIEN/Redmine/main/repository/entry/$0 [discardpath,noescape,last]
www/main/VegBIEN/Redmine/wiki/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
RewriteRule ^$   /VegBIEN/Redmine/main/wiki/Database_development/ [discardpath,noescape,last]
9
RewriteRule ^.+$ /VegBIEN/Redmine/main/wiki/$0                    [discardpath,noescape,last]
www/main/VegBIEN/Redmine/main/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
RewriteRule ^.*$ https://projects.nceas.ucsb.edu/nceas/projects/bien/$0 [discardpath,noescape,last]
www/main/VegBIEN/Redmine/svn/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
RewriteRule ^.*$ /VegBIEN/Redmine/main/repository/raw/$0 [discardpath,noescape,last]
www/main/VegBIEN/db/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
RewriteRule ^.*$ /servers/vegbiendev/vegbien/public/$0 [discardpath,noescape,last]
www/main/VegBIEN/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
# don't redirect subdir paths
9
RewriteCond %{DOCUMENT_ROOT}/VegBIEN/$1 -d
10
RewriteRule ^([^/]+).*$ - [discardpath,noescape,last]
11

  
12
# handle DirectoryIndex (this must be at this position in the rules)
13
RewriteRule ^(.*/)?index\.php$ $1 [discardpath,noescape]
14

  
15
RewriteRule ^.*$ db/$0 [discardpath,noescape,last]
www/main/subdomain2path
1
#!/usr/bin/env php
2
<?php
3
while (($line = fgets(STDIN)) !== false)
4
{
5
	$subdomain = rtrim($line, "\n");
6
	$path = implode("/", array_reverse(explode(".", $subdomain)));
7
	print($path."\n");
8
}
9
?>
10 0

  
www/main/svn-web
1
link .redmine/svn-web
2 0

  
www/main/TNRS/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
RewriteRule ^.*$ http://tnrs.iplantcollaborative.org/instructions.html?$0#download_results [discardpath,noescape,last]
www/main/.vegx
1
link VegX
2 0

  
www/main/util.js
1
function is_undef(value) { return typeof value === 'undefined' }
2

  
3
function coalesce(value, empty) { return !is_undef(value) ? value : empty }
4

  
5
function starts_with(str, prefix)
6
{
7
	return str.substr(0, prefix.length) === prefix
8
}
9

  
10
function ends_with(str, suffix) { return str.substr(-suffix.length) === suffix }
11

  
12
function rm_prefix(prefix, str)
13
{
14
	return starts_with(str, prefix) ? str.substr(prefix.length) : str
15
}
16

  
17
function rm_suffix(suffix, str)
18
{
19
	return ends_with(str, suffix) ?
20
		str.substr(0, str.length - suffix.length) : str
21
}
22

  
23
function partition(str, delim)
24
{
25
	var delim_idx = str.indexOf(delim)
26
	return delim_idx >= 0 ? {head: str.substr(0, delim_idx),
27
		tail: str.substr(delim_idx+delim.length)} : {head: str, tail: ''}
28
}
29

  
30
function parse_dot_path(path) { return partition(path, '.') }
31

  
32
function parse_mixed_path(path)
33
{
34
	path = /^([\w-]*)(.*)$/.exec(path)
35
	return {head: path[1], tail: rm_prefix('.', path[2])}
36
}
37

  
38
function strip_url(url) { return rm_suffix('#', url) }
www/main/dotpath.php
1
<?php
2
# parses any dotpath in the query string
3

  
4
require_once dirname(__FILE__)."/util.php";
5

  
6
@list($path, $query) = explode("&", $_SERVER["QUERY_STRING"], 2);
7

  
8
## translate dotpaths (after the last /) to /-paths, e.g. d/a.[b.c] -> d/a/b.c
9
# replace all unescaped . with / , e.g. a.[b.c] -> a/[b.c]
10
# remove any [] escape, e.g. a.b=[c.d] -> a/b=c.d (the ] must be at the end)
11
do
12
{
13
	$old_path = $path;
14
	$path = preg_replace('/^(.*\/)?(?=.)(\.?[^.\/]*?)(?:\[([^\[\]\/]*)\])?\.([^\/]*)$/',
15
		'$1$2$3/$4', $path);
16
} while ($path !== $old_path);
17

  
18
$url = ensure_suffix("/", $_SERVER["PATH_INFO"]).$path
19
	.(isset($query) ? "?&".$query : "");
20
header("Location: ".$url);
21
?>
www/main/TCS/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
RewriteRule ^.*$ http://www.tdwg.org/standards/117/download/#/v101.xsd#$0 [discardpath,noescape,last]
www/main/.dwc
1
link DwC
2 0

  
www/main/.vegbien
1
link VegBIEN
2 0

  
www/main/CTFS/terms/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
RewriteRule ^.*$ /Redmine/svn/inputs/CTFS/_src/ctfs-comments_worksheet.xls/#$0 [discardpath,noescape,last,redirect]
www/main/CTFS/tables/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
RewriteRule ^.*$ /Redmine/wiki/CTFS/?$0#Tables [discardpath,noescape,last,redirect]
www/main/CTFS/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
# don't redirect subdir paths
9
RewriteCond %{DOCUMENT_ROOT}/CTFS/$1 -d
10
RewriteRule ^([^/]+).*$ - [discardpath,noescape,last]
11

  
12
# handle DirectoryIndex (this must be at this position in the rules)
13
RewriteRule ^(.*/)?index\.php$ $1 [discardpath,noescape]
14

  
15
RewriteRule ^.*$ schema/$0 [discardpath,noescape,last]
www/main/CTFS/schema/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
RewriteRule ^.*$ /Redmine/svn/inputs/CTFS/_archive/DBv5.txt/#$0 [discardpath,noescape,last,redirect]
www/main/.redmine
1
link VegBIEN/Redmine
2 0

  
www/main/SALVIAS/users/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
RewriteRule ^.*$ /servers/nimoy/salvias_users/$0 [discardpath,noescape,last]
www/main/SALVIAS/db/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
RewriteRule ^.*$ /servers/nimoy/salvias_plots/$0 [discardpath,noescape,last]
www/main/SALVIAS/dd/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
RewriteRule ^(?!Plot_)(.+)$ Plot_$1 [discardpath,noescape]
9
RewriteRule ^.*$ http://salvias.net/Documents/salvias_data_dictionary.html#$0 [discardpath,noescape,last]
www/main/SALVIAS/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
# don't redirect subdir paths
9
RewriteCond %{DOCUMENT_ROOT}/SALVIAS/$1 -d
10
RewriteRule ^([^/]+).*$ - [discardpath,noescape,last]
11

  
12
# handle DirectoryIndex (this must be at this position in the rules)
13
RewriteRule ^(.*/)?index\.php$ $1 [discardpath,noescape]
14

  
15
RewriteRule ^.*$ dd/$0 [discardpath,noescape,last]
www/main/.phpPgAdmin/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
RewriteRule ^\[(.*)\]/([^/]*)/([^/]*)/([^/]*)/([^/]*)/(.+?)/?$ http://$1/redirect.php?server=$2&database=$3&schema=$4&table=$5&column=$6&subject=column [discardpath,noescape,last,redirect]
9
RewriteRule ^\[(.*)\]/([^/]*)/([^/]*)/([^/]*)/(.+?)/?$         http://$1/redirect.php?server=$2&database=$3&schema=$4&table=$5&subject=table            [discardpath,noescape,last,redirect]
10
RewriteRule ^\[(.*)\]/([^/]*)/([^/]*)/(.+?)/?$                 http://$1/redirect.php?server=$2&database=$3&schema=$4&subject=schema                    [discardpath,noescape,last,redirect]
11
RewriteRule ^\[(.*)\]/([^/]*)/(.+?)/?$                         http://$1/redirect.php?server=$2&database=$3&subject=database                            [discardpath,noescape,last,redirect]
12
RewriteRule ^\[(.*)\]/(.+?)/?$                                 http://$1/redirect.php?server=$2&subject=server                                          [discardpath,noescape,last,redirect]
13
RewriteRule ^\[(.*)\]/?$                                       http://$1/redirect.php?subject=root                                                      [discardpath,noescape,last,redirect]
www/main/svn
1
link .redmine/svn
2 0

  
www/main/.tcs
1
link TCS
2 0

  
www/main/VegX/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
RewriteRule ^.*$ http://wiki.tdwg.org/twiki/pub/Vegetation/WebHome/VegX_Schema_1.5.3_proposed.zip#/veg.xsd#$0 [discardpath,noescape,last]
www/main/.htaccess
1
#### URL resolution
2

  
3
Options +FollowSymLinks
4

  
5
DirectorySlash on
6
DirectoryIndex index.php
7

  
8
### mod_rewrite
9

  
10
RewriteEngine on
11
RewriteOptions inherit
12

  
13
# remove www subdomain
14
RewriteCond %{HTTP_HOST} ^www\.(.*)$
15
RewriteRule ^.*$ http://%1/$0 [discardpath,noescape,last]
16

  
17
# remove linewraps used to create a newline for Google spreadsheets
18
RewriteRule ^_-(.*)$ /$1 [discardpath,noescape,last,redirect]
19

  
20
# translate subdomain to path
21
RewriteCond %{HTTP_HOST} !=vegbiendev.nceas.ucsb.edu
22
RewriteCond %{HTTP_HOST} ^(.*)\.([^.]*\.[^.]*)$
23
RewriteRule ^.*$ http://%2/${subdomain2path:%1}/$0 [discardpath,noescape,last]
24

  
25
# use separate lowercase version when available
26
RewriteCond %{DOCUMENT_ROOT}/$1 !-d
27
RewriteCond .${tolower:$1} ^.*$
28
RewriteCond %{DOCUMENT_ROOT}/%0 -d
29
RewriteRule ^([^/]*)(/.*)$ %0$2 [discardpath,noescape]
30

  
31
# parse dotpath in the query string
32
RewriteRule ^dotpath - [discardpath,noescape,last]
33
RewriteCond %{QUERY_STRING} ^(?!&).+$
34
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
35

  
36
# don't redirect subdir paths
37
RewriteCond %{DOCUMENT_ROOT}/$1 -d
38
RewriteRule ^([^/]+).*$ - [discardpath,noescape,last]
39

  
40
# don't rewrite existing paths
41
RewriteCond %{REQUEST_FILENAME} -d [ornext]
42
RewriteCond %{REQUEST_FILENAME} -f
43
RewriteRule ^.*$ - [discardpath,noescape,last]
44

  
45
## specific to /
46

  
47
RewriteRule ^.*$ https://projects.nceas.ucsb.edu/nceas/projects/bien/wiki/VegCore#$0 [discardpath,noescape,last]
www/main/DwC/history/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
RewriteRule ^.*$ http://rs.tdwg.org/dwc/terms/history/#$0 [discardpath,noescape,last]
www/main/DwC/terms/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
RewriteRule ^.*$ http://rs.tdwg.org/dwc/terms/#$0 [discardpath,noescape,last]
www/main/DwC/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
# don't redirect subdir paths
9
RewriteCond %{DOCUMENT_ROOT}/DwC/$1 -d
10
RewriteRule ^([^/]+).*$ - [discardpath,noescape,last]
11

  
12
# handle DirectoryIndex (this must be at this position in the rules)
13
RewriteRule ^(.*/)?index\.php$ $1 [discardpath,noescape]
14

  
15
RewriteRule ^.*$ terms/$0 [discardpath,noescape,last]
www/main/.bien2
1
link BIEN2
2 0

  
www/main/.ih
1
link IH
2 0

  
www/main/.salvias
1
link SALVIAS
2 0

  
www/main/.phpMyAdmin/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
RewriteRule ^\[(.*)\]/([^/]*)/([^/]*)/(.+?)/?$ http://$1/?db=$2&table=$3&column=$4&target=tbl_structure.php [discardpath,noescape,last,redirect]
9
RewriteRule ^\[(.*)\]/([^/]*)/(.+?)/?$         http://$1/?db=$2&table=$3&target=tbl_structure.php           [discardpath,noescape,last,redirect]
10
RewriteRule ^\[(.*)\]/(.+?)/?$                 http://$1/?db=$2&target=db_structure.php                     [discardpath,noescape,last,redirect]
11
RewriteRule ^\[(.*)\]/?$                       http://$1/?target=server_databases.php                       [discardpath,noescape,last,redirect]
web/BIEN2/core/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
RewriteRule ^.*$ /servers/nimoy/bien2/$0 [discardpath,noescape,last]
web/BIEN2/staging/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
RewriteRule ^.*$ /servers/nimoy/bien2_staging/$0 [discardpath,noescape,last]
web/IH/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
# don't redirect subdir paths
9
RewriteCond %{DOCUMENT_ROOT}/IH/$1 -d
10
RewriteRule ^([^/]+).*$ - [discardpath,noescape,last]
11

  
12
# handle DirectoryIndex (this must be at this position in the rules)
13
RewriteRule ^(.*/)?index\.php$ $1 [discardpath,noescape]
14

  
15
RewriteRule ^$   http://sweetgum.nybg.org/ih/                                                                                                                            [discardpath,noescape,last]
16
RewriteRule ^.+$ http://sweetgum.nybg.org/ih/herbarium_list.php?QueryName=DetailedQuery&Restriction=NamPartyType+\%3D+\%27IH+Herbarium\%27&col_NamOrganisationAcronym=$0 [discardpath,noescape,last]
web/VegBank/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
RewriteRule ^$             http://vegbank.org/get/index/dba_tabledescription                                                                                           [discardpath,noescape,last]
9
RewriteRule ^([^/]+)/(.*)$ http://vegbank.org/vegbank/views/dba_tabledescription_detail.jsp?view=detail&entity=dba_tabledescription&where=where_tablename&wparam=$1#$2 [discardpath,noescape,last]
web/.salvias
1
link SALVIAS
0 2

  
web/DwC/history/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
RewriteRule ^.*$ http://rs.tdwg.org/dwc/terms/history/#$0 [discardpath,noescape,last]
web/DwC/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
# don't redirect subdir paths
9
RewriteCond %{DOCUMENT_ROOT}/DwC/$1 -d
10
RewriteRule ^([^/]+).*$ - [discardpath,noescape,last]
11

  
12
# handle DirectoryIndex (this must be at this position in the rules)
13
RewriteRule ^(.*/)?index\.php$ $1 [discardpath,noescape]
14

  
15
RewriteRule ^.*$ terms/$0 [discardpath,noescape,last]
web/servers/nimoy/.htaccess
1
RewriteEngine on
2
RewriteOptions inherit
3

  
4
# parse dotpath in the query string
5
RewriteCond %{QUERY_STRING} ^(?!&).+$
6
RewriteRule ^.*$ /dotpath.php%{REQUEST_URI} [discardpath,noescape,last]
7

  
8
RewriteRule ^.*$ /.phpMyAdmin/[nimoy.nceas.ucsb.edu/phpmyadmin]/$0 [discardpath,noescape,last]
web/servers/vegbiendev/fs
1
link ../../../..
0 2

  
web/index.php
1
<?php
2
require_once dirname(__FILE__)."/util.php";
3

  
4
$self_dir = ensure_suffix("/", dirname($_SERVER["SCRIPT_NAME"]));
5

  
6
# config
7
$alias = "j.mp/vegpath#";
8

  
9
function by_prefix($url, $main_url=null)
10
{
11
	if (!isset($main_url)) $main_url = $url;
12
	
13
	return function($path) use($url, $main_url)
14
	{
15
		return $path ? $url.$path : $main_url;
16
	};
17
}
18

  
19
$h_level = 5;
20
$root = $_SERVER["SERVER_NAME"] === gethostbyaddr($_SERVER["SERVER_ADDR"])
21
	? $alias : $_SERVER["SERVER_NAME"].rm_suffix("/", $self_dir)."?";
22
# instead of PATH_INFO, to support the Apache ErrorDocument directive
23
$rel_fs_path = rm_prefix($self_dir, $_SERVER["REQUEST_URI"]);
24
$path = parse_dot_path($rel_fs_path);
25
$ns = strtolower($path->head);
26

  
27
function add_ns($name, $path_pat, $url_func)
28
{
29
	global $root, $h_level, $path, $ns;
30
	if (is_string($url_func)) $url_func = by_prefix($url_func);
31
	
32
	print("<h".$h_level.' id="'.$name.'">'.$root.'<big><a href="http://'.$root
33
		.$name.'">'.$name."</a></big><i>".$path_pat."</i></h".$h_level.">\n");
34
	if ($ns === strtolower($name)) # found match, so redirect
35
	{
36
		header("Location: ".strip_url($url_func($path->tail)));
37
		ob_end_flush();
38
		exit;
39
	}
40
}
41

  
42
function custom_separator($url, $sep, $main_url=null)
43
{
44
	if (!isset($main_url)) $main_url = $url;
45
	
46
	return function($path) use($url, $sep, $main_url)
47
	{
48
		if ($path === "") return $main_url;
49
		$path = parse_dot_path($path);
50
		return $url.join_non_empty($sep, array($path->head, $path->tail));
51
	};
52
}
53

  
54
function fragment_override($url, $fragment=null)
55
{
56
	return function($path) use($url, $fragment)
57
	{
58
		if (!isset($fragment))
59
		{
60
			$path = parse_dot_path($path);
61
			$fragment = $path->head;
62
			$path = $path->tail;
63
		}
64
		if ($path !== "") $url .= "?".$path;
65
		return $url."#".$fragment;
66
	};
67
}
68

  
69
function phpPgAdmin($url, $table=null)
70
{
71
	return function($path) use($url, $table)
72
	{
73
		$path = join_non_empty(".", array($table, $path));
74
		$path = parse_dot_path($path);
75
		$subject = "schema";
76
		if ($path->head !== "")
77
		{
78
			$url .= "&table=".$path->head;
79
			if ($path->tail !== "")
80
			{
81
				$url .= "&column=".$path->tail;
82
				$subject = "column";
83
			}
84
			else $subject = "table";
85
		}
86
		$url .= "&subject=".$subject;
87
		return $url;
88
	};
89
}
90

  
91
function phpMyAdmin($url, $table=null)
92
{
93
	return function($path) use($url, $table)
94
	{
95
		$path = join_non_empty(".", array($table, $path));
96
		$path = parse_dot_path($path);
97
		$target = "db_structure";
98
		if ($path->head !== "")
99
		{
100
			$url .= "&table=".$path->head;
101
			if ($path->tail !== "") $url .= "&column=".$path->tail;
102
			$target = "tbl_structure";
103
		}
104
		$url .= "&target=".$target.".php";
105
		return $url;
106
	};
107
}
108

  
109
ob_start(); // delay output in case there is a redirect
110
?>
111
<html>
112
	<head>
113
		<title>VegPath</title>
114
		<link rel="stylesheet" type="text/css" href="/main.css" />
115
		<style type="text/css">
116
h1 {color: green;}
117
		</style>
118
		<script type="text/javascript" src="/util.js"></script>
119
	</head>
120
	<body>
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff