Moxie
2015-11-22 5287d27c3e70013b2f93cb199d822c1066b7aa5d
commit | author | age
48fe87 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
M 2 <html>
3 <head>
4 <!-- Begin Header -->
5 <title>Gitblit</title>
6 <meta charset="utf-8">
7 <meta name="ROBOTS" content="INDEX">
8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
9 <meta name="viewport" content="width=device-width, initial-scale=1.0">
10         
11 <link rel="stylesheet" href="./bootstrap/css/bootstrap.css">
12 <link rel='shortcut icon' type='image/png' href='./gitblt-favicon.png' />
13 <link rel="stylesheet" href="./prettify/prettify.css" />
14 <!-- Google Plus Profile Page -->
15 <link rel="publisher" href="https://plus.google.com/114464678392593421684" />
16 <style type="text/css"> a.gpluspage { margin-top:3px;text-decoration: none; } </style>
17
18 <!-- Google Plus One -->
19 <link rel="canonical" href="http://gitblit.com" />
20 <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script>
21 <style type="text/css"> div.gplusone { margin-top:12px; } </style>
22
23 <script src="./prettify/prettify.js"></script>
24 <script src="./bootstrap/js/jquery.js"></script>
25 <script src="./bootstrap/js/bootstrap.min.js"></script>
26 </head>
27 <body onload='prettyPrint()'>        <!-- Navigation Bar -->
28         <div class="navbar navbar-fixed-top">
29             <div class="navbar-inner">
30                 <div class="container">
31                       <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
32                         <span class="icon-bar"></span>
33                         <span class="icon-bar"></span>
34                         <span class="icon-bar"></span>
35                       </a>
36                       <a class="brand" href="./"><img src="./gitblt_25_white.png" alt="Gitblit"></img></a>
37                     <div class="nav-collapse">
38                         <ul class="nav">
39                             <li class='dropdown'> <!-- Menu -->
40 <a class='dropdown-toggle' href='#' data-toggle='dropdown'>about<b class='caret'></b></a>
41 <ul class='dropdown-menu'>
42 <li><a href='index.html'>overview</a></li>
43 <li><a href='features.html'>features</a></li>
44 <li><a href='screenshots.html'>screenshots</a></li>
45 </ul></li> <!-- End Menu -->
46 <li class='dropdown'> <!-- Menu -->
47 <a class='dropdown-toggle' href='#' data-toggle='dropdown'>documentation<b class='caret'></b></a>
48 <ul class='dropdown-menu'>
49 <li class='dropdown-submenu'> <!-- Submenu -->
50 <a tabindex='-1' href='#'>Gitblit GO</a>
51 <ul class='dropdown-menu'>
52 <li><a href='setup_go.html'>setup GO</a></li>
53 <li><a href='upgrade_go.html'>upgrade GO</a></li>
54 </ul></li> <!-- End Submenu -->
55 <li class='divider'></li>
56 <li class='dropdown-submenu'> <!-- Submenu -->
57 <a tabindex='-1' href='#'>Gitblit WAR</a>
58 <ul class='dropdown-menu'>
59 <li><a href='setup_war.html'>setup WAR</a></li>
60 <li><a href='upgrade_war.html'>upgrade WAR</a></li>
61 </ul></li> <!-- End Submenu -->
62 <li class='divider'></li>
63 <li class='dropdown-submenu'> <!-- Submenu -->
64 <a tabindex='-1' href='#'>Server Configuration</a>
65 <ul class='dropdown-menu'>
66 <li><a href='administration.html'>administration</a></li>
67 <li><a href='setup_authentication.html'>authentication</a></li>
68 <li><a href='setup_hooks.html'>push hooks</a></li>
69 <li><a href='setup_lucene.html'>lucene indexing</a></li>
70 <li><a href='setup_proxy.html'>reverse proxies</a></li>
71 <li><a href='setup_clientmenus.html'>client app menus</a></li>
72 <li><a href='setup_bugtraq.html'>bugtraq</a></li>
73 <li><a href='setup_mirrors.html'>mirrors</a></li>
74 <li><a href='setup_scaling.html'>scaling</a></li>
5287d2 75 <li><a href='setup_fail2ban.html'>fail2ban</a></li>
48fe87 76 <li class='divider'></li>
M 77 <li><a href='setup_viewer.html'>Gitblit as a viewer</a></li>
78 </ul></li> <!-- End Submenu -->
79 <li class='divider'></li>
80 <li class='dropdown-submenu'> <!-- Submenu -->
81 <a tabindex='-1' href='#'>Client Usage</a>
82 <ul class='dropdown-menu'>
83 <li><a href='setup_transport_http.html'>using HTTP/HTTPS</a></li>
84 <li><a href='setup_transport_ssh.html'>using SSH</a></li>
85 <li><a href='eclipse_plugin.html'>using the Eclipse plugin</a></li>
86 </ul></li> <!-- End Submenu -->
87 <li class='divider'></li>
88 <li class='dropdown-submenu'> <!-- Submenu -->
89 <a tabindex='-1' href='#'>Tickets</a>
90 <ul class='dropdown-menu'>
91 <li><a href='tickets_overview.html'>overview</a></li>
92 <li><a href='tickets_using.html'>using</a></li>
93 <li><a href='tickets_barnum.html'>barnum</a></li>
94 <li><a href='tickets_setup.html'>setup</a></li>
95 <li><a href='tickets_replication.html'>replication & advanced administration</a></li>
96 </ul></li> <!-- End Submenu -->
97 <li class='divider'></li>
98 <li class='dropdown-submenu'> <!-- Submenu -->
99 <a tabindex='-1' href='#'>Plugins</a>
100 <ul class='dropdown-menu'>
101 <li><a href='plugins_overview.html'>overview</a></li>
102 <li><a href='plugins_extensions.html'>extension points</a></li>
103 </ul></li> <!-- End Submenu -->
104 <li class='divider'></li>
105 <li><a href='federation.html'>federation</a></li>
106 <li class='divider'></li>
107 <li><a href='properties.html'>settings</a></li>
108 <li><a href='faq.html'>faq</a></li>
109 <li class='divider'></li>
110 <li><a href='design.html'>design</a></li>
111 <li><a href='rpc.html'>rpc</a></li>
112 </ul></li> <!-- End Menu -->
113 <li class='dropdown'> <!-- Menu -->
114 <a class='dropdown-toggle' href='#' data-toggle='dropdown'>releases<b class='caret'></b></a>
115 <ul class='dropdown-menu'>
116 <li><a href='releasenotes.html'>release notes</a></li>
117 <li><a href='releases.html'>release history</a></li>
118 </ul></li> <!-- End Menu -->
119 <li class='dropdown'> <!-- Menu -->
120 <a class='dropdown-toggle' href='#' data-toggle='dropdown'>downloads<b class='caret'></b></a>
121 <ul class='dropdown-menu'>
5287d2 122 <li><a href='http://dl.bintray.com/gitblit/releases/gitblit-1.7.0.zip'>Gitblit GO (Windows)</a></li>
M 123 <li><a href='http://dl.bintray.com/gitblit/releases/gitblit-1.7.0.tar.gz'>Gitblit GO (Linux/OSX)</a></li>
124 <li><a href='http://dl.bintray.com/gitblit/releases/gitblit-1.7.0.war'>Gitblit WAR</a></li>
48fe87 125 <li class='divider'></li>
M 126 <li><a href='https://registry.hub.docker.com/u/jmoger/gitblit/'>Gitblit GO (Docker)</a></li>
127 <li class='divider'></li>
128 <li><a href='http://plugins.gitblit.com'>Plugins Registry</a></li>
129 <li class='divider'></li>
5287d2 130 <li><a href='http://dl.bintray.com/gitblit/releases/manager-1.7.0.zip'>Gitblit Manager</a></li>
M 131 <li><a href='http://dl.bintray.com/gitblit/releases/fedclient-1.7.0.zip'>Federation Client</a></li>
48fe87 132 <li class='divider'></li>
5287d2 133 <li><a href='http://dl.bintray.com/gitblit/releases/gbapi-1.7.0.zip'>API Library</a></li>
48fe87 134 <li class='divider'></li>
M 135 <li><a href='https://bintray.com/gitblit/releases/gitblit'>Bintray (1.4.0+)</a></li>
136 <li><a href='https://code.google.com/p/gitblit/downloads/list?can=1'>GoogleCode (pre-1.4.0)</a></li>
137 <li class='divider'></li>
138 <li><a href='http://gitblit.github.io/gitblit-maven'>Maven Repository</a></li>
139 </ul></li> <!-- End Menu -->
140 <li class='dropdown'> <!-- Menu -->
141 <a class='dropdown-toggle' href='#' data-toggle='dropdown'>links<b class='caret'></b></a>
142 <ul class='dropdown-menu'>
143 <li><a href='https://dev.gitblit.com'>dev.gitblit.com (self-hosted)</a></li>
144 <li class='divider'></li>
145 <li><a href='http://plugins.gitblit.com'>Plugins Registry</a></li>
146 <li class='divider'></li>
147 <li><a href='https://github.com/gitblit/gitblit'>Github</a></li>
5287d2 148 <li><a href='https://github.com/gitblit/gitblit'>Issues</a></li>
48fe87 149 <li><a href='http://groups.google.com/group/gitblit'>Discussion</a></li>
M 150 <li><a href='https://twitter.com/gitblit'>Twitter</a></li>
151 <li><a href='http://www.ohloh.net/p/gitblit'>Ohloh</a></li>
152 <li class='divider'></li>
584328 153 <li><a href='https://vimeo.com/86164723'>Gitblit Tickets screencast</a></li>
M 154 <li><a href='https://asciinema.org/a/9342'>Gitblit SSH and Plugin Management asciicast</a></li>
155 <li><a href='http://episodes.gitminutes.com/2014/05/gitminutes-29-james-moger-on-gitblit.html'>GitMinutes #29: James Moger on Gitblit</a></li>
156 <li class='divider'></li>
48fe87 157 <li><a href='https://twitter.com/JamesMoger'>@JamesMoger</a></li>
M 158 </ul></li> <!-- End Menu -->
159 <li class='divider-vertical'></li>
160 <li><a href='https://plus.google.com/114464678392593421684?prsrc=3' class='gpluspage'><img src='https://ssl.gstatic.com/images/icons/gplus-16.png' width='16' height='16 style='order: 0;'/></a></li><li><div class='gplusone'><g:plusone size='small' href='http://gitblit.com'></g:plusone></div></li>
161                         </ul>
162                     </div><!--/.nav-collapse -->
163                 </div>
164             </div>
165         </div><!-- end Navigation Bar -->
166 <div class='container'>
167 <!-- Begin Markdown -->
168 <h2 class="section" id='H1'><a href="#H1" class="sectionlink"><i class="icon-share-alt"> </i></a>Gitblit GO Installation & Setup</h2>
169 <ol>
5287d2 170   <li>Download and unzip Gitblit GO <a href="http://dl.bintray.com/gitblit/releases/gitblit-1.7.0.zip">1.7.0 (Windows)</a> or <a href="http://dl.bintray.com/gitblit/releases/gitblit-1.7.0.tar.gz">1.7.0 (Linux/OSX)</a>.<br/><em>It is best to eliminate spaces in the path name.</em></li>
48fe87 171   <li>The server itself is configured through a simple text file.<br/>Open <code>data/gitblit.properties</code> in your favorite text editor and make sure to review and set:
M 172   <ul>
173     <li><em>server.httpPort</em> and <em>server.httpsPort</em></li>
174     <li><em>server.storePassword</em> (do not enter <em>#</em> characters)<br/><strong>https</strong> is strongly recommended because passwords are insecurely transmitted form your browser/git client using Basic authentication!</li>
175     <li><em>git.packedGitLimit</em> (set larger than the size of your largest repository)</li>
176   </ul></li>
5287d2 177   <li>Execute <code>authority.cmd</code> or <code>java -cp gitblit.jar com.gitblit.authority.Launcher --baseFolder data</code> from a command-line<br/><strong>NOTE:</strong> The Authority is a Swing GUI application. Use of this tool is not required as Gitblit GO will startup and create SSL certificates itself, BUT use of this tool allows you to control the identification metadata used in the generated self-signed certificates. Skipping this step will result in certificates with default metadata.
48fe87 178   <ol>
M 179     <li>fill out the fields in the <em>new certificate defaults</em> dialog</li>
180     <li>enter the store password used in <em>server.storePassword</em> when prompted. This generates an SSL certificate for <strong>localhost</strong>.</li>
181     <li>you may want to generate an SSL certificate for the hostname or ip address hostnames you are serving from<br/><strong>NOTE:</strong> You can only have <strong>one</strong> SSL certificate specified for a port.</li>
182     <li>exit the authority app</li>
183   </ol></li>
184   <li>Execute <code>gitblit.cmd</code> or <code>java -jar gitblit.jar --baseFolder data</code> from a command-line</li>
185   <li>Open your browser to <a href="http://localhost:8080">http://localhost:8080</a> or <a href="https://localhost:8443">https://localhost:8443</a> depending on your chosen configuration.</li>
186   <li>Enter the default administrator credentials: <strong>admin / admin</strong> and click the <em>Login</em> button<br/><strong>NOTE:</strong> Make sure to change the administrator username and/or password!!</li>
187 </ol>
188 <h3 class="section" id='H2'><a href="#H2" class="sectionlink"><i class="icon-share-alt"> </i></a>GO Data Location</h3><p>By default, Gitblit GO stores all data (users, settings, repositories, etc) in the <code>data</code> subfolder of your GO installation. You may specify an external location for your data on the command-line by setting the <em>--baseFolder</em> argument. If you relocate the data folder then you must supply the <em>--baseFolder</em> argument to both GO and the Certificate Authority.</p><p>If you are deploying Gitblit to a *nix platform, you might consider moving the data folder out of the GO installation folder and then creating a symlink named "data" that points to your moved folder.</p>
892246 189 <h4 class="section" id='H3'><a href="#H3" class="sectionlink"><i class="icon-share-alt"> </i></a>Specifying baseFolder via GITBLIT_HOME</h4><p>You can specify <code>GITBLIT_HOME</code> either as an environment variable or as a <code>-DGITBLIT_HOME</code> JVM system property.</p>
5287d2 190 <h3 class="section" id='H4'><a href="#H4" class="sectionlink"><i class="icon-share-alt"> </i></a>Including Other Properties</h3><p>SINCE 1.7.0</p><p>Gitblit supports loading it's settings from multiple properties files. You can achieve this using the <code>include=filename</code> key. This setting supports loading multiple files using a <em>comma</em> as the delimiter. They are processed in the order defined and they may be nested (i.e. your included properties may include properties, etc, etc).</p>
M 191 <h3 class="section" id='H5'><a href="#H5" class="sectionlink"><i class="icon-share-alt"> </i></a>Creating your own Self-Signed SSL Certificate</h3><p>Gitblit GO (and Gitblit Certificate Authority) automatically generates a Certificate Authority (CA) certificate and an ssl certificate signed by this CA certificate that is bound to <em>localhost</em>.</p><p>Remote Eclipse/EGit/JGit clients (&lt; 3.0) will fail to communicate using this certificate because JGit always verifies the hostname of the certificate, regardless of the <em>http.sslVerify=false</em> client-side setting.</p><p>The EGit failure message is something like:</p>
48fe87 192 <pre><code>Cannot get remote repository refs.
M 193 Reason: https:/myserver.com/git/myrepo.git: cannot open git-upload-pack
194 </code></pre><p>If you want to serve your repositories to another machine over https then you will want to generate a new certificate for the hostname or ip address you are serving from.</p><p><strong>NOTE:</strong> The Gitblit Authority is a GUI tool and will require X11 forwarding on headless UNIX boxes.</p>
195 <ol>
196   <li><code>authority.cmd</code> or <code>java -jar authority.jar --baseFolder data</code></li>
197   <li>Click the <em>new ssl certificate</em> button (red rosette in the toolbar in upper left of window)</li>
198   <li>Enter the hostname or ip address</li>
199   <li>Make sure the checkbox <em>serve https with this certificate</em> is checked</li>
200   <li>In the keystore password prompt, enter the <em>server.storePassword</em> password</li>
201 </ol><p>If you decide to change the value of <em>server.storePassword</em> (recommended) <u>after</u> you have already started Gitblit or Gitblit Certificate Authority, then you will have to delete the following files and then restart the Gitblit Certificate Authority app:</p>
202 <ol>
203   <li>data/serverKeyStore.jks</li>
204   <li>data/serverTrustStore.jks</li>
205   <li>data/certs/caKeyStore.jks</li>
206   <li>data/certs/ca.crt</li>
207   <li>data/certs/caRevocationList.crl (optional)</li>
208 </ol>
5287d2 209 <h3 class="section" id='H6'><a href="#H6" class="sectionlink"><i class="icon-share-alt"> </i></a>Client SSL Certificates</h3><p>SINCE 1.2.0</p><p>Gitblit supports X509 certificate authentication. This authentication method relies on your servlet container to validate/verify/trust your client certificate and can be used by your browser and your git client.</p><p>All X509 certificates have a <em>distinguished name (DN)</em> which is a signature of several fields like:</p>
48fe87 210 <pre><code>C=US,O=Gitblit,OU=Gitblit,CN=james
M 211 </code></pre><p>Gitblit must be able to map the DN of the certificate to an <em>existing</em> account username. The default mapping is to extract the <em>common name (CN)</em> value from the DN and use that as the account name. If the CN is a valid account, then the user is authenticated. The servlet container which runs Gitblit validates, verifies, and trusts the certificate passed to Gitblit. If you need to specify an alternative DN mapping you may do so with the <em>git.certificateUsernameOIDs</em> setting, but this mapping must be matched to the user account name.</p><p>How do you make your servlet container trust a client certificate?</p><p>In the WAR variant, you will have to manually setup your servlet container to:</p>
212 <ol>
213   <li>want/need client certificates</li>
214   <li>trust a CA certificate used to sign your client certificates</li>
215   <li>generate client certificates signed by your CA certificate</li>
216 </ol><p>Alternatively, Gitblit GO is designed to facilitate use of client certificate authentication. Gitblit GO ships with a tool that simplifies creation and management of client certificates, Gitblit Certificate Authority.</p>
5287d2 217 <h4 class="section" id='H7'><a href="#H7" class="sectionlink"><i class="icon-share-alt"> </i></a>Creating SSL Certificates with Gitblit Certificate Authority</h4><p>When you generate a new client certificate, a zip file bundle is created which includes a P12 keystore for browsers and a PEM keystore for Git. Both of these are password-protected. Additionally, a personalized README file is generated with setup instructions for popular browsers and Git. The README is generated from <code>data\certs\instructions.tmpl</code> and can be modified to suit your needs.</p>
48fe87 218 <ol>
M 219   <li><code>authority.cmd</code> or <code>java -jar authority.jar --baseFolder data</code></li>
220   <li>Select the user for which to generate the certificate</li>
221   <li>Click the <em>new certificate</em> button and enter the expiration date of the certificate. You must also enter a password for the generated keystore. This password is <em>not</em> the same as the user's login password. This password is used to protect the privatekey and public certificate you will generate for the selected user. You must also enter a password hint for the user.</li>
222   <li>If your mail server settings are properly configured you will have a <em>send email</em> checkbox which you can use to immediately send the generated certificate bundle to the user.</li>
223 </ol>
5287d2 224 <h4 class="section" id='H8'><a href="#H8" class="sectionlink"><i class="icon-share-alt"> </i></a>Certificate Inspection and Advanced Troubleshooting</h4><p>X509 certificates can be confusing and tricky even with the simplified Gitblit Certificate Authority tool. If you find you need more tooling to understand your keystores, certificates, and certificate revocation lists (CRLs), I highly recommend <a href="http://portecle.sourceforge.net">Portecle</a> which can be conveniently launched as a <a href="http://portecle.sourceforge.net/webstart/portecle.jnlp">Java Web Start app</a>.</p>
M 225 <h3 class="section" id='H9'><a href="#H9" class="sectionlink"><i class="icon-share-alt"> </i></a>Running as a Windows Service</h3><p>Gitblit uses <a href="http://commons.apache.org/daemon">Apache Commons Daemon</a> to install and configure its Windows service.</p>
48fe87 226 <ol>
M 227   <li><strong>Review the contents</strong> of the <code>installService.cmd</code> where you may have to change the <u>default keystore password</u>.</li>
228   <li>Set the <em>ARCH</em> value as appropriate for your installed Java Virtual Machine.</li>
229   <li>Add any necessary <em>--StartParams</em> as enumerated below in <strong>Command-Line Parameters</strong>.</li>
230   <li>Execute the script.</li>
231 </ol><p>After service installation you can use the <code>gitblitw.exe</code> utility to control and modify the runtime settings of the service.<br/>Additional service definition options and runtime capabilities of <code>gitblitw.exe</code> (prunmgr.exe) are documented <a href="http://commons.apache.org/daemon/procrun.html">here</a>.</p><p><strong>NOTE:</strong><br/>If you change the name of the service from <em>gitblit</em> you must also change the name of <code>gitblitw.exe</code> to match the new service name otherwise the connection between the service and the utility is lost, at least to double-click execution. </p>
5287d2 232 <h4 class="section" id='H10'><a href="#H10" class="sectionlink"><i class="icon-share-alt"> </i></a>VM Considerations</h4><p>By default, the service installation script configures your Windows service to use your default JVM. This setup usually defaults to a client VM.<br/>If you have installed a JDK, you might consider using the <code>gitblitw.exe</code> utility to manually specify the <em>server</em> VM.</p>
48fe87 233 <ol>
M 234   <li>Execute <code>gitblitw.exe</code></li>
235   <li>On the <em>Java</em> tab uncheck <em>Use default</em>.</li>
236   <li>Manually navigate your filesystem and specify the server VM with the <code>...</code> button<br/><pre>Java Virtual Machine:<br/>C:\Program Files\Java\jre6\bin\server\jvm.dll</pre></li>
237 </ol>
5287d2 238 <h4 class="section" id='H11'><a href="#H11" class="sectionlink"><i class="icon-share-alt"> </i></a>Command-Line Parameters</h4><p>Command-Line parameters override the values in <code>gitblit.properties</code> at runtime.</p>
48fe87 239 <pre><code>--baseFolder           The default base folder for all relative file reference settings
M 240 --repositoriesFolder   Git Repositories Folder
241 --userService          Authentication and Authorization Service (filename or fully qualified classname)
242 --httpPort             HTTP port for to serve. (port &lt;= 0 will disable this connector)
243 --httpsPort            HTTPS port to serve.  (port &lt;= 0 will disable this connector)
244 --sshPort              SSH Daemon port to serve.  (port &lt;= 0 will disable this daemon)
245 --gitPort              Git Daemon port to serve.  (port &lt;= 0 will disable this daemon)
246 --alias                Alias in keystore of SSL cert to use for https serving
247 --storePassword        Password for SSL (https) keystore.
248 --shutdownPort         Port for Shutdown Monitor to listen on. (port &lt;= 0 will disable this monitor)
249 --dailyLogFile         Redirect logging to a rolling, daily log file instead of stdout
250 --tempFolder           Folder for server to extract built-in webapp
251 </code></pre><p><strong>Example</strong></p>
252 <pre><code>java -jar gitblit.jar --userService c:/myrealm.config --storePassword something --baseFolder c:/data
253 </code></pre>
5287d2 254 <h4 class="section" id='H12'><a href="#H12" class="sectionlink"><i class="icon-share-alt"> </i></a>Overriding Gitblit GO's Log4j Configuration</h4><p>You can override Gitblit GO's default Log4j configuration with a command-line parameter to the JVM.</p>
48fe87 255 <pre><code>java -Dlog4j.configuration=file:///home/james/log4j.properties -jar gitblit.jar &lt;optional_gitblit_args&gt;
M 256 </code></pre><p>You can not use override the default log4j configuration <em>AND</em> specify the <code>--dailyLogFile</code> parameter. For reference, here is <a href="https://github.com/gitblit/gitblit/blob/master/src/log4j.properties">Gitblit's default Log4j configuration</a>. It includes some file appenders that are disabled by default. 
257 <!-- End Markdown -->
5287d2 258 <div ><ul class="pager"> <li class="next"><a href="upgrade_go.html">upgrade GO &rarr;</a></li></ul></div><footer class="footer"><p class="pull-right">generated 2015-11-22</p>
48fe87 259 <p>The content of this page is licensed under the <a href="http://creativecommons.org/licenses/by/3.0">Creative Commons Attribution 3.0 License</a>.</p>
M 260 </footer>
261 </div>
262 <!-- Google Analytics -->
263 <script type="text/javascript">
264     var _gaq = _gaq || [];
265     _gaq.push(['_setAccount', 'UA-24377072-1']);
266     _gaq.push(['_trackPageview']);
267
268     (function() {
269         var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
270         ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
271         var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
272     })();
273 </script>
274
275 </body>
276 </html>