No description
Only the given architectures are considered. This reduces the amount of computing required when updating the database from Debian repositories. And it probably limits the packages to those being availble on the more popular desktop architectures like amd64 and i386. |
||
|---|---|---|
| app | ||
| bin | ||
| config | ||
| db | ||
| lib | ||
| log | ||
| public | ||
| test | ||
| vendor/assets | ||
| .gitignore | ||
| .project | ||
| config.ru | ||
| debshots.komodoproject | ||
| debshots2.sublime-project | ||
| Gemfile | ||
| Gemfile.lock | ||
| Rakefile | ||
| README.Developer | ||
| README.rdoc | ||
== 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
== Using Xapian
Ruby gem "xapian" does not exist. Debian only has bindings for Ruby 1.9.x.
Xapian may be lightweight and nice but is too much hassle.
== 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