== README = Installing debshots TODO = Supported URL paths (aka routes) /screenshots/:package_inital/:package/:(id)_:size.png * package = name of the package * id = numerical ID of the screenshot * size = "large" or "small" * Returns a PNG image of a screenshot * Should be served as a static asset /image/:(id)_:size.png * id = numerical ID of the screenshot * size = "large" or "small" * Returns a PNG image of a screenshot * Usually used for unapproved images that should just be shown to the uploader /about * Return an informational HTML page /packages * Return a list of packages with pagination /packages/with_screenshots * Return a list of packages with pagination * Select only those packages that have screenshots. /packages/without_screenshots * Return a list of packages with pagination * Select only those packages that do not have screenshots. /packages/games_without_screenshots (deprecated) * Return a list of packages with pagination * Select only those packages that belong to Debian's "games" section /json/packages * Return a JSON data structure of all packages /json/screenshots * Return a JSON data structure containing packages and screenshots /json/packages-without-screenshots * Return a JSON data structure of those packages that do not have any screenshots /packages/moderate * Return a HTML page showing packages that need moderation * Must only be available to logged in moderators /upload * Return a HTML page containing an upload form for new screenshots /guidelines (deprecated) * Return a HTML page showing general guidelines for creating screenshots * Should just redirect to the /upload page /upload/:package * ?? /uploadfile * ?? /login * Show a login form /logout * Logout the user by invalidating the cookie session. /package/:package * Show details of a certain package /json/package/:package * Return a JSON data structure containing details of a certain package /thumbnail/:package /thumbnail-404/:package (deprecated) * Return a small (160x120 pixel) PNG screenshot file of a package * If the package does not have any screenshots then return a 404 code /thumbnail-with-version/:package/:version * Return a small (160x120 pixel) PNG screenshot file of a package * If the package does not have any screenshots then return a 404 code * Prefer screenshots of a certain version /screenshot/:package /screenshot-404/:package (deprecated) * Return a small (320x240 pixel) PNG screenshot file of a package * If the package does not have any screenshots then return a 404 code /screenshot-with-version/:package/:version * Return a large (320x240 pixel) PNG screenshot file of a package * If the package does not have any screenshots then return a 404 code * Prefer screenshots of a certain version /delete_screenshot/:screenshot * Users: request deletion of a screenshot * Moderators: delete a screenshot /approve_screenshot/:screenshot * Users: 403 * Moderators: approve a screenshot /keep_screenshot/:screenshot * Users: 403 * Moderators: re-approve a screenshot that was requested for deletion /rss * Return an RSS feed of new uploads of screenshots == Elasticsearch = Install Get it from https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.6.deb Also: apt-get install openjdk-7-jre-headless = Configure Edit /etc/elasticsearch/elasticsearch.yml for single-server usage: - cluster.name: ... - node.name: ... - index.number_of_shards: 1 - index.number_of_replicas: 0 - discovery.zen.ping.multicast.enabled: false = Add useful plugins /usr/share/elasticsearch/bin/plugin -install mobz/elasticsearch-head URL: serve:9200/_plugin/head /usr/share/elasticsearch/bin/plugin -install lukas-vlcek/bigdesk URL: serve:9200/_plugin/bigdesk = Install River (that feeds PostgreSQL data into ElasticSearch): Get the PostgreSQL ODBC driver from wget http://jdbc.postgresql.org/download/postgresql-9.3-1100.jdbc41.jar (according to http://jdbc.postgresql.org/download.html) cp postgresql-9.3-1100.jdbc41.jar /usr/share/elasticsearch/plugins/river-jdbc /usr/share/elasticsearch/bin/plugin -install river-jdbc -url http://bit.ly/1iovWV9 (according to https://github.com/jprante/elasticsearch-river-jdbc) Fix permissions after plugin installation: chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/plugins Restart Elasticsearch. curl -XPUT 'localhost:9200/_river/debshots_jdbc_river/_meta' -d '{ "type" : "jdbc", "jdbc" : { "driver" : "org.postgresql.Driver", "url" : "jdbc:postgresql://localhost:5432/debshots", "user" : "debshots", "password" : "shootme", "sql" : "select id as _id,name,description from packages", "strategy" : "simple", "poll" : "5m" }, "index" : { "index" : "debshots", "type" : "jdbc" } }' Should return: {"ok":true,"_index":"_river","_type":"my_jdbc_river","_id":"_meta","_version":1} TODO: Tire versus Rivers