From 9037f0d00889ce2b1135263df9bbe6216c2a1280 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Thu, 27 Jun 2013 09:39:00 +0100 Subject: [PATCH] Manage static content for planet.openstreetmap.org --- cookbooks/planet/files/default/cgi/HEADER.cgi | 128 ++++++++++++++++++ .../planet/files/default/html/HEADER.html | 3 + cookbooks/planet/files/default/html/logo.png | Bin 0 -> 27178 bytes .../planet/files/default/html/robots.txt | 8 ++ cookbooks/planet/files/default/html/style.css | 54 ++++++++ cookbooks/planet/recipes/default.rb | 20 +++ 6 files changed, 213 insertions(+) create mode 100755 cookbooks/planet/files/default/cgi/HEADER.cgi create mode 100644 cookbooks/planet/files/default/html/HEADER.html create mode 100644 cookbooks/planet/files/default/html/logo.png create mode 100644 cookbooks/planet/files/default/html/robots.txt create mode 100644 cookbooks/planet/files/default/html/style.css diff --git a/cookbooks/planet/files/default/cgi/HEADER.cgi b/cookbooks/planet/files/default/cgi/HEADER.cgi new file mode 100755 index 000000000..4762f9145 --- /dev/null +++ b/cookbooks/planet/files/default/cgi/HEADER.cgi @@ -0,0 +1,128 @@ +#!/usr/bin/env python + +from time import time +from os import stat, environ +from re import search + +def nice_size(file): + size = stat(file).st_size + KB = 1024. + MB = 1024. * KB + GB = 1024. * MB + TB = 1024. * GB + + if size < KB: + size, suffix = size, '' + elif size < MB: + size, suffix = size/KB, 'KB' + elif size < GB: + size, suffix = size/MB, 'MB' + elif size < TB: + size, suffix = size/GB, 'GB' + else: + size, suffix = size/TB, 'TB' + + if size < 10: + return '%.1f %s' % (round(size,1), suffix) + else: + return '%d %s' % (round(size), suffix) + +def nice_time(time): + if time < 15: + return 'moments' + if time < 90: + return '%d seconds' % time + if time < 60 * 60 * 1.5: + return '%d minutes' % (time / 60.) + if time < 24 * 60 * 60 * 1.5: + return '%d hours' % (time / 3600.) + if time < 7 * 24 * 60 * 60 * 1.5: + return '%d days' % (time / 86400.) + if time < 30 * 24 * 60 * 60 * 1.5: + return '%d weeks' % (time / 604800.) + + return '%d months' % (time / 2592000.) + +def file_info(file, name): + size = nice_size(file) + hash = search(r'\w{32}', open(file+'.md5', 'r').read()).group(0) + date = nice_time(time() - stat(file).st_mtime) + + return '%(name)s
%(size)s, created %(date)s ago.
md5: %(hash)s.' % locals() + +planet_link = file_info('planet/planet-latest.osm.bz2', 'Latest Weekly Planet File') +changesets_link = file_info('planet/changesets-latest.osm.bz2', 'Latest Weekly Changesets') + +print """ + + + + Index of / + + + + +

Planet OSM

+ +

+The files found here are regularly-updated, complete copies of the OpenStreetMap.org +database, and those published before the 12 September 2012 are distributed under a Creative Commons Attribution-ShareAlike 2.0 license, those published after are Open Data Commons Open Database License 1.0 licensed. For more information, see the project wiki. +

+ + + + + + + + + + + + +
+

Complete OSM Data

+
+

Using The Data

+
+

Extracts & Mirrors

+
+

%(planet_link)s

+

%(changesets_link)s

+

+ Each week, a new and complete copy of all data in OpenStreetMap is made + available as a compressed XML file, along with a smaller file with + complete metadata for all changes made since the previous week. +

+
+

+ You are granted permission to use OpenStreetMap data by + the OpenStreetMap License, which also describes + your obligations. +

+

+ You can process the file + or extracts with a variety of tools. Osmosis + is a general-purpose command-line tool for converting the data among different formats + and databases, and Osm2pgsql + is a tool for importing the data into a Postgis database for rendering maps. +

+

+ Processed coastline data + derived from OSM data is also needed for rendering usable maps, and can be found in a + single shapefile (360MB). +

+
+

+ The complete planet is very large, so you may prefer to use one of + several periodic extracts + (individual countries or states) from third parties. GeoFabrik.de + and BBBike.org are two providers + of extracts with up-to-date worldwide coverage. +

+
+ +

+If you find data within OpenStreetMap that you believe is an infringement of someone else's copyright, then please make contact with the OpenStreetMap Data Working Group. +

+""" % locals() diff --git a/cookbooks/planet/files/default/html/HEADER.html b/cookbooks/planet/files/default/html/HEADER.html new file mode 100644 index 000000000..11de6d461 --- /dev/null +++ b/cookbooks/planet/files/default/html/HEADER.html @@ -0,0 +1,3 @@ +

planet.openstreetmap.org

+

If you find data within OpenStreetMap that you believe is an infringement of someone else's copyright, then please make contact with the OpenStreetMap Data Working Group.

+

More Information about Planet.osm

diff --git a/cookbooks/planet/files/default/html/logo.png b/cookbooks/planet/files/default/html/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..65dab465eebabd9f67149a4f7a3c96541021250a GIT binary patch literal 27178 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 literal 0 HcmV?d00001 diff --git a/cookbooks/planet/files/default/html/robots.txt b/cookbooks/planet/files/default/html/robots.txt new file mode 100644 index 000000000..3f3940cbc --- /dev/null +++ b/cookbooks/planet/files/default/html/robots.txt @@ -0,0 +1,8 @@ +#No bz2 chomping bots please + +User-agent: wget +Allow: / + +User-agent: * +Disallow: / + diff --git a/cookbooks/planet/files/default/html/style.css b/cookbooks/planet/files/default/html/style.css new file mode 100644 index 000000000..0a7afa9d0 --- /dev/null +++ b/cookbooks/planet/files/default/html/style.css @@ -0,0 +1,54 @@ +body, +table#about tr * +{ + font-family: sans-serif; + line-height: 1.25em; +} + +body { margin: 2em; } +img#logo { float: left; } +img#logo, h1 { margin: 0 1em 0 0; } +a { white-space: nowrap; } + +li { margin-bottom: 1em; } +body>p { width: 42em; } + +table#about +{ + clear: left; + margin: 3em 0 2em 0; +} + +table tr th { text-align: left; } + +table tr td +{ + padding-right: 1em; + vertical-align: top; +} + +/* first column: icon */ +table tr td:first-child +{ + padding-left: 1em; + padding-right: .25em; +} + +/* last two columns: date and size */ +table tr td + td + td, +table tr td + td + td + td +{ + font-size: 90%; + font-family: monospace; + white-space: pre; +} + +/* override a bunch of the stuff above */ +table#about tr th, +table#about tr td +{ + width: 20em; + padding: 0 1em 0 0; + font-size: 100%; + white-space: normal; +} diff --git a/cookbooks/planet/recipes/default.rb b/cookbooks/planet/recipes/default.rb index 925915f2e..c9e998524 100644 --- a/cookbooks/planet/recipes/default.rb +++ b/cookbooks/planet/recipes/default.rb @@ -41,6 +41,26 @@ template "/etc/cron.d/planet" do mode 0644 end +remote_directory "/store/planet" do + source "html" + owner "root" + group "root" + mode "0755" + files_owner "root" + files_group "root" + files_mode 0644 +end + +remote_directory "/store/planet" do + source "cgi" + owner "root" + group "root" + mode 0755 + files_owner "root" + files_group "root" + files_mode 0755 +end + apache_module "rewrite" do conf "rewrite.conf.erb" end -- 2.43.2