179 lines
4.8 KiB
Text
179 lines
4.8 KiB
Text
== 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
|