Introduction
Introduction Statistics Contact Development Disclaimer Help
first commit - seedlinux - Torrent indexing tool opensource torrents with share…
Log
Files
Refs
README
---
commit ae7071ce130a7c4060c471515a90e9deb2d886c4
Author: Jay Scott <[email protected]>
Date: Sun, 25 Jun 2017 16:45:20 +0100
first commit
Diffstat:
A .gitignore | 58 ++++++++++++++++++++++++++++++
A README.md | 32 +++++++++++++++++++++++++++++…
A app.js | 57 +++++++++++++++++++++++++++++…
A bin/www | 90 +++++++++++++++++++++++++++++…
A package-lock.json | 452 +++++++++++++++++++++++++++++…
A package.json | 20 ++++++++++++++++++++
A public/images/logo.png | 0
A public/stylesheets/style.css | 109 +++++++++++++++++++++++++++++…
A routes/index.js | 9 +++++++++
A routes/torrents.js | 9 +++++++++
A views/error.twig | 7 +++++++
A views/index.twig | 6 ++++++
A views/layout.twig | 53 ++++++++++++++++++++++++++++++
13 files changed, 902 insertions(+), 0 deletions(-)
---
diff --git a/.gitignore b/.gitignore
@@ -0,0 +1,58 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# Runtime data
+pids
+*.pid
+*.seed
+*.pid.lock
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+
+# nyc test coverage
+.nyc_output
+
+# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task…
+.grunt
+
+# Bower dependency directory (https://bower.io/)
+bower_components
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (http://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directories
+node_modules/
+jspm_packages/
+
+# Typescript v1 declaration files
+typings/
+
+# Optional npm cache directory
+.npm
+
+# Optional eslint cache
+.eslintcache
+
+# Optional REPL history
+.node_repl_history
+
+# Output of 'npm pack'
+*.tgz
+
+# Yarn Integrity file
+.yarn-integrity
+
+# dotenv environment variables file
+.env
diff --git a/README.md b/README.md
@@ -0,0 +1,32 @@
+# Seed Linux
+
+Seedlinux is a WIP application to list open source torrents that need help wit…
+
+### Data import
+
+If you are using MongoDB directly installed on your local machine or else wher…
+
+
+Pull the latest MongoDB docker image.
+
+```bash
+docker pull mongo
+```
+Run the docker image in a throw away container.
+
+```bash
+docker run -p 27017:27017 -ti --rm mongo`
+```
+Seed the data using mongo-import tool.
+
+```bash
+mongoimport --db seedlinux --collection torrents --drop --file ./data/dataset.…
+```
+
+### Stuff used to make this:
+
+ * [Docker](https://hub.docker.com/_/mongo/) image for MongoDB.
+ * [MongoDB import](https://docs.mongodb.com/getting-started/shell/import-dat…
+ * [ExpressJS](https://expressjs.com) web framework.
+ * [Bulma](http://bulma.io/) CSS framework.
+
diff --git a/app.js b/app.js
@@ -0,0 +1,57 @@
+var express = require('express');
+var path = require('path');
+var favicon = require('serve-favicon');
+var logger = require('morgan');
+var cookieParser = require('cookie-parser');
+var bodyParser = require('body-parser');
+
+var index = require('./routes/index');
+var torrents = require('./routes/torrents');
+
+// MongoDB
+var mongo = require('mongodb');
+var monk = require('monk');
+var db = monk('localhost:27017/seedlinux');
+
+var app = express();
+
+// view engine setup
+app.set('views', path.join(__dirname, 'views'));
+app.set('view engine', 'twig');
+
+// uncomment after placing your favicon in /public
+//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
+app.use(logger('dev'));
+app.use(bodyParser.json());
+app.use(bodyParser.urlencoded({ extended: false }));
+app.use(cookieParser());
+app.use(express.static(path.join(__dirname, 'public')));
+
+// db access
+app.use(function(req,res,next){
+ req.db = db;
+ next();
+});
+
+app.use('/', index);
+app.use('/torrents', torrents);
+
+// catch 404 and forward to error handler
+app.use(function(req, res, next) {
+ var err = new Error('Not Found');
+ err.status = 404;
+ next(err);
+});
+
+// error handler
+app.use(function(err, req, res, next) {
+ // set locals, only providing error in development
+ res.locals.message = err.message;
+ res.locals.error = req.app.get('env') === 'development' ? err : {};
+
+ // render the error page
+ res.status(err.status || 500);
+ res.render('error');
+});
+
+module.exports = app;
diff --git a/bin/www b/bin/www
@@ -0,0 +1,90 @@
+#!/usr/bin/env node
+
+/**
+ * Module dependencies.
+ */
+
+var app = require('../app');
+var debug = require('debug')('seedlinux:server');
+var http = require('http');
+
+/**
+ * Get port from environment and store in Express.
+ */
+
+var port = normalizePort(process.env.PORT || '3000');
+app.set('port', port);
+
+/**
+ * Create HTTP server.
+ */
+
+var server = http.createServer(app);
+
+/**
+ * Listen on provided port, on all network interfaces.
+ */
+
+server.listen(port);
+server.on('error', onError);
+server.on('listening', onListening);
+
+/**
+ * Normalize a port into a number, string, or false.
+ */
+
+function normalizePort(val) {
+ var port = parseInt(val, 10);
+
+ if (isNaN(port)) {
+ // named pipe
+ return val;
+ }
+
+ if (port >= 0) {
+ // port number
+ return port;
+ }
+
+ return false;
+}
+
+/**
+ * Event listener for HTTP server "error" event.
+ */
+
+function onError(error) {
+ if (error.syscall !== 'listen') {
+ throw error;
+ }
+
+ var bind = typeof port === 'string'
+ ? 'Pipe ' + port
+ : 'Port ' + port;
+
+ // handle specific listen errors with friendly messages
+ switch (error.code) {
+ case 'EACCES':
+ console.error(bind + ' requires elevated privileges');
+ process.exit(1);
+ break;
+ case 'EADDRINUSE':
+ console.error(bind + ' is already in use');
+ process.exit(1);
+ break;
+ default:
+ throw error;
+ }
+}
+
+/**
+ * Event listener for HTTP server "listening" event.
+ */
+
+function onListening() {
+ var addr = server.address();
+ var bind = typeof addr === 'string'
+ ? 'pipe ' + addr
+ : 'port ' + addr.port;
+ debug('Listening on ' + bind);
+}
diff --git a/package-lock.json b/package-lock.json
@@ -0,0 +1,452 @@
+{
+ "name": "seedlinux",
+ "version": "0.0.1",
+ "lockfileVersion": 1,
+ "dependencies": {
+ "accepts": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz",
+ "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo="
+ },
+ "array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.…
+ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-…
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
+ },
+ "basic-auth": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.1.0.tg…
+ "integrity": "sha1-RSIe5Cn37h5QNb4/UVM/HN/SmIQ="
+ },
+ "body-parser": {
+ "version": "1.17.2",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.17.2…
+ "integrity": "sha1-+IkqvI+eYn1Crtr7yma/WrmRBO4=",
+ "dependencies": {
+ "debug": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz",
+ "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4="
+ }
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansio…
+ "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI="
+ },
+ "bson": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/bson/-/bson-1.0.4.tgz",
+ "integrity": "sha1-k8ENOeqltYQVy8QFLz5T5WKwtyw="
+ },
+ "buffer-shims": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.…
+ "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E="
+ },
+ "bytes": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz",
+ "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk="
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tg…
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+ },
+ "content-disposition": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-di…
+ "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ="
+ },
+ "content-type": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.…
+ "integrity": "sha1-t9ETrueo3Se9IRM8TcJSnfFyHu0="
+ },
+ "cookie": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
+ "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s="
+ },
+ "cookie-parser": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.…
+ "integrity": "sha1-D+MfoZ0AC5X0qt8fU/3CuKIDuqU="
+ },
+ "cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signat…
+ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.…
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+ },
+ "debug": {
+ "version": "2.6.8",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz",
+ "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw="
+ },
+ "depd": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz",
+ "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM="
+ },
+ "destroy": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
+ },
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
+ },
+ "encodeurl": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz",
+ "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA="
+ },
+ "es6-promise": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.2.1.…
+ "integrity": "sha1-7FYjOGgDKQkgcXDDlEjiREndH8Q="
+ },
+ "escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.…
+ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
+ },
+ "etag": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.0.tgz",
+ "integrity": "sha1-b2Ma7zNtbEY2K1F2QETOIWvjwFE="
+ },
+ "express": {
+ "version": "4.15.3",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.15.3.tgz",
+ "integrity": "sha1-urZdDwOqgMNYQIly/HAPkWlEtmI=",
+ "dependencies": {
+ "debug": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz",
+ "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4="
+ }
+ }
+ },
+ "finalhandler": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.…
+ "integrity": "sha1-70fneVDpmXgOhgIqVg4yF+DQzIk=",
+ "dependencies": {
+ "debug": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz",
+ "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4="
+ }
+ }
+ },
+ "foreachasync": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.…
+ "integrity": "sha1-VQKYfchxS+M5IJfzLgBxyd7gfPY="
+ },
+ "forwarded": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz",
+ "integrity": "sha1-Ge+YdMSuHCl7zweP3mOgm2aoQ2M="
+ },
+ "fresh": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz",
+ "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44="
+ },
+ "http-errors": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.…
+ "integrity": "sha1-X4uO2YrKVFZWv1cplzh/kEpyIlc="
+ },
+ "iconv-lite": {
+ "version": "0.4.15",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.t…
+ "integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es="
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+ },
+ "ipaddr.js": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.3.0.tgz",
+ "integrity": "sha1-HgOlL9rYOou7KyXL9JmLTP/NPew="
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ },
+ "locutus": {
+ "version": "2.0.9",
+ "resolved": "https://registry.npmjs.org/locutus/-/locutus-2.0.9.tgz",
+ "integrity": "sha1-4mWvHoX9GRc+dDhjc4iFYHg6Avw="
+ },
+ "media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.…
+ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
+ },
+ "merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descri…
+ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
+ },
+ "methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
+ },
+ "mime": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz",
+ "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM="
+ },
+ "mime-db": {
+ "version": "1.27.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz",
+ "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE="
+ },
+ "mime-types": {
+ "version": "2.1.15",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.t…
+ "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0="
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yD…
+ },
+ "mongodb": {
+ "version": "2.2.29",
+ "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-2.2.29.tgz",
+ "integrity": "sha512-MrQvIsN6zN80I4hdFo8w46w51cIqD2FJBGsUfApX9GmjXA1aCcl…
+ },
+ "mongodb-core": {
+ "version": "2.1.13",
+ "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-2.1.…
+ "integrity": "sha512-mbcvqLLZwVcpTrsfBDY3hRNk2SDNJWOvKKxFJSc0pnUBhYojymB…
+ },
+ "monk": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/monk/-/monk-6.0.1.tgz",
+ "integrity": "sha512-R3fD134A/Y5kx2TPs3knFJxLc8b5kTs4Cqo3N3P/dsZjx5JMJpL…
+ },
+ "monk-middleware-cast-ids": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/monk-middleware-cast-ids/-/monk-…
+ "integrity": "sha1-QMQOWmyzPM7cKJIglDJ17ohhxSk="
+ },
+ "monk-middleware-fields": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/monk-middleware-fields/-/monk-mi…
+ "integrity": "sha1-/2N6819ZSIecyyvhWpE2CRG+psE="
+ },
+ "monk-middleware-handle-callback": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/monk-middleware-handle-callback/…
+ "integrity": "sha1-+r+TduzfAMnjbImwWuoIEri4Ohw="
+ },
+ "monk-middleware-options": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/monk-middleware-options/-/monk-m…
+ "integrity": "sha1-WNrhxRjUZjbr3/UG+t/Hc7tEKIY="
+ },
+ "monk-middleware-query": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/monk-middleware-query/-/monk-mid…
+ "integrity": "sha1-qSbGd9SlYgxiFRsKVtDAwVFnWHQ="
+ },
+ "monk-middleware-wait-for-connection": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/monk-middleware-wait-for-connect…
+ "integrity": "sha1-MSlY0w5Yi1fQl1TdfJe0hDMWg1o="
+ },
+ "morgan": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.8.2.tgz",
+ "integrity": "sha1-eErHc05KRTqcbm6GgKkyknXItoc="
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ },
+ "negotiator": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tg…
+ "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.…
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+ },
+ "on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.…
+ "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc="
+ },
+ "on-headers": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tg…
+ "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c="
+ },
+ "parseurl": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz",
+ "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY="
+ },
+ "path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-…
+ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
+ },
+ "process-nextick-args": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-n…
+ "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M="
+ },
+ "proxy-addr": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.4.tg…
+ "integrity": "sha1-J+VF9pYKRKYn2bREZ+NcG2tM4vM="
+ },
+ "qs": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
+ "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM="
+ },
+ "range-parser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.…
+ "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
+ },
+ "raw-body": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.2.0.tgz",
+ "integrity": "sha1-mUl2z2pQlqQRYoQEkvC9xdbn+5Y="
+ },
+ "readable-stream": {
+ "version": "2.2.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-strea…
+ "integrity": "sha1-BwV6y+JGeyIELTb5jFrVBwVOlbE="
+ },
+ "require_optional": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/require_optional/-/require_optio…
+ "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUk…
+ },
+ "resolve-from": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.…
+ "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c="
+ },
+ "safe-buffer": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.…
+ "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c="
+ },
+ "semver": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
+ "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8="
+ },
+ "send": {
+ "version": "0.15.3",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.15.3.tgz",
+ "integrity": "sha1-UBP5+ZAj31DRvZiSwZ4979HVMwk=",
+ "dependencies": {
+ "debug": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz",
+ "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4="
+ }
+ }
+ },
+ "serve-favicon": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.…
+ "integrity": "sha1-WYaxewUCZCtkHCH4GLGszjICXSM="
+ },
+ "serve-static": {
+ "version": "1.12.3",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12…
+ "integrity": "sha1-n0uhni8wMMVH+K+ZEHg47DjVseI="
+ },
+ "setprototypeof": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-…
+ "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ="
+ },
+ "statuses": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
+ "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4="
+ },
+ "string_decoder": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-…
+ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6…
+ "dependencies": {
+ "safe-buffer": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.…
+ "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIww…
+ }
+ }
+ },
+ "twig": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/twig/-/twig-0.10.3.tgz",
+ "integrity": "sha1-Z2BOCOGSDr8vr4CpAeJWGJyKPGc="
+ },
+ "type-is": {
+ "version": "1.6.15",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz",
+ "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA="
+ },
+ "unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-…
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+ },
+ "utils-merge": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.…
+ "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg="
+ },
+ "vary": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.1.tgz",
+ "integrity": "sha1-Z1Neu2lMHVIldFeYRmUyP1h+jTc="
+ },
+ "walk": {
+ "version": "2.3.9",
+ "resolved": "https://registry.npmjs.org/walk/-/walk-2.3.9.tgz",
+ "integrity": "sha1-MbTbZnjyrgHDnqn7hyWpAx5Vins="
+ }
+ }
+}
diff --git a/package.json b/package.json
@@ -0,0 +1,20 @@
+{
+ "name": "seedlinux",
+ "version": "0.0.1",
+ "description": "Linux torrent information",
+ "private": true,
+ "scripts": {
+ "start": "node ./bin/www"
+ },
+ "dependencies": {
+ "body-parser": "~1.17.1",
+ "cookie-parser": "~1.4.3",
+ "debug": "~2.6.3",
+ "express": "~4.15.2",
+ "mongodb": "^2.2.29",
+ "monk": "^6.0.1",
+ "morgan": "~1.8.1",
+ "serve-favicon": "~2.4.2",
+ "twig": "~0.10.3"
+ }
+}
diff --git a/public/images/logo.png b/public/images/logo.png
Binary files differ.
diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css
@@ -0,0 +1,109 @@
+body {
+ font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Ar…
+}
+.logo {
+
+}
+.logo img {
+ width:120px;
+}
+.container {
+ padding-top:50px;
+ max-width: 968px;
+}
+.section {
+ margin-top:40px;
+ border: 1px solid #efefef;
+ border-radius: 5px;
+}
+.status-header {
+ padding: 40px 40px 80px 40px;
+}
+.status-header .indicator {
+ display: inline-block;
+ width: 15px;
+ height: 15px;
+ border-radius: 100%;
+ margin-right: 20px;
+ background: #17d766;
+ background: -moz-linear-gradient(top, #17d766 0%, #17d766 50%, #16cf62 51%,…
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#1…
+ background: -webkit-linear-gradient(top, #17d766 0%,#17d766 50%,#16cf62 51%…
+ background: -ms-linear-gradient(top, #17d766 0%,#17d766 50%,#16cf62 51%,#16…
+ background: linear-gradient(to bottom, #17d766 0%,#17d766 50%,#16cf62 51%,#…
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#17d766',…
+ opacity: 0.8;
+ filter:alpha(opacity=80);
+}
+.status-header .title {
+ display: inline-block;
+}
+.status-header .subtitle {
+ display: block;
+ margin-left: 35px;
+}
+.status-uptime {
+ border-top: 1px solid #efefef;
+ border-bottom: 1px solid #efefef;
+ padding: 15px 95px 0 95px;
+ margin: 0 -20px -20px -20px;
+}
+.status-uptime .title {
+ display: inline-block;
+ font-size: 14px;
+ color: #bbb;
+}
+.status-uptime .uptime {
+ display: inline-block;
+ margin-left: 60px;
+ font-size: 14px;
+ color: #bbb;
+}
+.status-list {
+ padding:95px;
+}
+.status-list .label {
+ font-size: 16px;
+ font-weight: bold;
+}
+.status-list .amount {
+ font-size: 16px;
+ font-weight: bold;
+ color: #bbb;
+}
+.status-tweets {
+}
+.status-tweets .twitter {
+ padding: 0 15px 15px 15px;
+ margin: -20px -20px 50px -20px;
+ border-bottom: 1px solid #efefef;
+}
+.status-tweets .icon {
+ display: inline-block;
+ padding-left:20px;
+ color: #11bff2;
+}
+.status-tweets .username {
+ display: inline-block;
+ padding-left: 30px;
+}
+.status-tweets .updates {
+ padding: 0 40px 40px 40px;
+}
+.status-tweets .update {
+ padding-top: 40px;
+}
+.status-tweets .update .timestamp {
+ font-weight: bold;
+ color: #bbb;
+}
+.status-tweets .updates .event {
+ font-size: 16px;
+ line-height: 1.6;
+}
+.status-footer {
+ padding-left: 20px;
+}
+.status-footer a {
+ padding: 0 10px;
+}
diff --git a/routes/index.js b/routes/index.js
@@ -0,0 +1,9 @@
+var express = require('express');
+var router = express.Router();
+
+/* GET home page. */
+router.get('/', function(req, res, next) {
+ res.render('index', { title: 'Express' });
+});
+
+module.exports = router;
diff --git a/routes/torrents.js b/routes/torrents.js
@@ -0,0 +1,9 @@
+var express = require('express');
+var router = express.Router();
+
+/* GET torrents listing. */
+router.get('/', function(req, res, next) {
+ res.send('List of all torrents');
+});
+
+module.exports = router;
diff --git a/views/error.twig b/views/error.twig
@@ -0,0 +1,7 @@
+{% extends 'layout.twig' %}
+
+{% block body %}
+ <h1>{{message}}</h1>
+ <h2>{{error.status}}</h2>
+ <pre>{{error.stack}}</pre>
+{% endblock %}
diff --git a/views/index.twig b/views/index.twig
@@ -0,0 +1,6 @@
+{% extends 'layout.twig' %}
+
+{% block body %}
+ <h1>{{title}}</h1>
+ <p>Welcome to {{title}}</p>
+{% endblock %}
diff --git a/views/layout.twig b/views/layout.twig
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <title>{{ title }}</title>
+ <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/aj…
+ <link rel='stylesheet' href='/stylesheets/style.css' />
+</head>
+
+<body>
+ <div class="container">
+
+ <div class="logo">
+ <a href="/">
+ <img src="/images/logo.png">
+ </a>
+ </div>
+
+ <div class="section">
+ <table class="table">
+ <thead>
+ <tr>
+ <th><abbr title="Position">Pos</abbr></th>
+ <th>Name</th>
+ <th><abbr title="Seeders">S</abbr></th>
+ <th><abbr title="Leachers">L</abbr></th>
+ <th>Description</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <th>1</th>
+ <td>Ubuntu 17.04 <strong>(C)</strong></td>
+ <td>190</td>
+ <td>23</td>
+ <td>Qualification for the yada yda ydayydaydaydya</td>
+ </tr>
+ <tr>
+ <th>2</th>
+ <td>Void Linux 22062017</td>
+ <td>38</td>
+ <td>20</td>
+ <td>Qualification for the yada yda ydayydaydaydya</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+</body>
+</html>
You are viewing proxied material from jay.scot. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.