diff --git a/bin/server.js b/bin/server.js index 727feb359518a86e30ea1d91d9a3830676b56c50..b45f94b35d1f4f9d51cbc5a0f315272ad11061be 100644 --- a/bin/server.js +++ b/bin/server.js @@ -8,6 +8,16 @@ var config = require('../config'), http = require('http'), nodecoin = require('../lib/nodecoin'); +// Bootstraps models +nodecoin.database.init(); +nodecoin.database.connect(config, function (err) { + if(!err) + console.log("Connected to MongoDB."); + else + console.log("Error connecting to DB: " + err); +}); + +// Init Express app var app = nodecoin.express.app(config); http.createServer(app).listen(app.get('port'), function(){ diff --git a/config.js b/config.js index 5f33f0f166d1891618095b92cf0dd96a3f8cba4a..1b9b1f09d76ff5d2857830a365f3ac61b8b532da 100644 --- a/config.js +++ b/config.js @@ -3,3 +3,11 @@ exports.server = { ipv4address: '', ipv6address: '' }; + +exports.db = { + //port : 27017, // optional + database : "nodecoin", + host : "localhost" +}; + +exports.initKeys = []; \ No newline at end of file diff --git a/lib/amendments.js b/lib/amendments.js index 73808e918171db99628b67093a428c5592529970..70141090399abd6bed8b16b28df6c819f9a7e441 100644 --- a/lib/amendments.js +++ b/lib/amendments.js @@ -1,12 +1,12 @@ -var fs = require('fs'), -util = require('util'), -async = require('async'), -orm = require('orm'), -_ = require('underscore'), -stream = require('stream'); +var fs = require('fs'), +util = require('util'), +async = require('async'), +mongoose = require('mongoose'), +PublicKey = mongoose.model('PublicKey'), +_ = require('underscore'), +stream = require('stream'); module.exports.init = function (initKeys, req, res) { - var PublicKey = req.models.PublicKey; var pubkeys = []; async.forEach(initKeys, function (initkey, done) { var pk = new PublicKey({ raw:initkey.data }); diff --git a/lib/entities/PrivateKey.js b/lib/entities/PrivateKey.js deleted file mode 100644 index 7b96b253ffc460dc962f9119173fce8a8e736209..0000000000000000000000000000000000000000 --- a/lib/entities/PrivateKey.js +++ /dev/null @@ -1,46 +0,0 @@ -var async = require('async'), -orm = require('orm'), -_ = require('underscore'); - -module.exports = function (db, cb) { - - var PrivateKey = db.define("privkey", { - raw: Buffer, - fingerprint: {type: "text", size: 40}, - name: String, - email: String, - comment: String, - created: Date, - updated: Date - }); - - PrivateKey.search = function (motif, done) { - var obj = this; - var found = []; - async.parallel({ - byName: function(callback){ - obj.find({ name: orm.like("%" + motif + "%")}, function (err, keys) { - found.push(keys); - callback(); - }); - }, - byEmail: function(callback){ - obj.find({ email: orm.like("%" + motif + "%")}, function (err, keys) { - found.push(keys); - callback(); - }); - }, - byComment: function(callback){ - obj.find({ comment: orm.like("%" + motif + "%")}, function (err, keys) { - found.push(keys); - callback(); - }); - } - }, - function(err) { - done(err, _(found).flatten()); - }); - }; - - return cb(); -}; \ No newline at end of file diff --git a/lib/entities/PublicKey.js b/lib/entities/PublicKey.js deleted file mode 100644 index 63e1c04b02474fccadd8b22dd003f1d0c12ecf61..0000000000000000000000000000000000000000 --- a/lib/entities/PublicKey.js +++ /dev/null @@ -1,119 +0,0 @@ -var async = require('async'), -orm = require('orm'), -sys = require('sys'), -jpgp = require('../jpgp'), -_ = require('underscore'); - -module.exports = function (db, cb) { - - var PublicKey = db.define("pubkey", { - raw: {type: "text", size: 50000}, - fingerprint: {type: "text", size: 40}, - name: String, - email: String, - comment: String, - created: Date, - updated: Date - }, { - methods: { - construct: function(done) { - var obj = this; - jpgp().certificate(obj.raw).parse(function (err, stdout, stderr) { - if(stderr) - sys.print('stderr: \n' + stderr); - if (err !== null) { - console.log('exec error: ' + err); - } - var k = JSON.parse(stdout).data; - obj.fingerprint = k.fingerprint; - var uid = k.uids[0].uid; - var extract = uid.match(/([\s\S]*) \(([\s\S]*)\) <([\s\S]*)>/); - if(extract && extract.length === 4){ - obj.name = extract[1]; - obj.comment = extract[2]; - obj.email = extract[3]; - } - else{ - extract = uid.match(/([\s\S]*) <([\s\S]*)>/); - if(extract && extract.length === 3){ - obj.name = extract[1]; - obj.comment = ''; - obj.email = extract[2]; - } - } - done(err); - }); - } - } - }); - - PublicKey.search = function (motif, done) { - var obj = this; - var found = []; - var fprPattern = motif.match(/^0x(.*)$/); - var searchByUID = { - byName: function(callback){ - obj.find({ name: orm.like("%" + motif + "%")}, function (err, keys) { - found.push(keys); - callback(); - }); - }, - byEmail: function(callback){ - obj.find({ email: orm.like("%" + motif + "%")}, function (err, keys) { - found.push(keys); - callback(); - }); - }, - byComment: function(callback){ - obj.find({ comment: orm.like("%" + motif + "%")}, function (err, keys) { - found.push(keys); - callback(); - }); - } - }; - var searchByFingerprint = { - byFingerprint: function (callback) { - var fpr = fprPattern ? fprPattern[1] : ""; - obj.find({ fingerprint: orm.like("%" + fpr + "%")}, function (err, keys) { - found.push(keys); - callback(); - }); - } - }; - var searchFunc = fprPattern ? searchByFingerprint : searchByUID; - async.parallel(searchFunc, function(err) { - var pubKeys = {}; - var foundKeys = _(found).flatten(); - async.each(foundKeys, function (key, done) { - pubKeys[key.id] = key; - done(); - }, function (err) { - done(err, _(pubKeys).values()); - }); - }); - }; - - PublicKey.verify = function (asciiArmored, signature, done) { - jpgp() - .publicKey(asciiArmored) - .data(asciiArmored) - .noCarriage() - .signature(signature) - .verify(function (err, stdout, stderr) { - if(!err && !stderr){ - var verified = JSON.parse(stdout).data; - if(verified){ - done(); - } - else{ - done("Signature does not match.\n" + err + "\n" + stdout + "\n" + stderr); - } - } - else{ - done(err + "\n" + stderr); - } - }); - }; - - return cb(); -}; \ No newline at end of file diff --git a/lib/entities/load.js b/lib/entities/load.js deleted file mode 100644 index f040b3f760f786139e2c36367b7550493c29d869..0000000000000000000000000000000000000000 --- a/lib/entities/load.js +++ /dev/null @@ -1,18 +0,0 @@ -var async = require('async'), -orm = require('orm'), -_ = require('underscore'); - -module.exports = function (db, cb) { - - async.parallel({ - pubkey: function(callback){ - db.load(__dirname + '/PublicKey', function (err) { - return callback(err); - }); - } - }, - function(err) { - // loaded ! - return cb(); - }); -}; \ No newline at end of file diff --git a/lib/nodecoin.js b/lib/nodecoin.js index 132c9eba85a4d154adf9774e9f27653859072e38..f32cc1bf8293719b0035b12560578fd43c85b0ad 100644 --- a/lib/nodecoin.js +++ b/lib/nodecoin.js @@ -1,16 +1,30 @@ -var pks = require('./pks'), -amend = require('./amendments'), -express = require('express'), -orm = require('orm'), -async = require('async'), -config = require('../config'), -path = require('path'), -_ = require('underscore'), -nodecoin = require('../lib/nodecoin'); -configurer = require('../lib/configurer'); +var express = require('express'); +var fs = require('fs'); +var async = require('async'); +var config = require('../config'); +var path = require('path'); +var mongoose = require('mongoose'); +var _ = require('underscore'); +var nodecoin = require('../lib/nodecoin'); +var configurer = require('../lib/configurer'); -module.exports.pks = pks; -module.exports.amendments = amend; +module.exports.database = { + init: function () { + var models_path = __dirname + '/../app/models'; + fs.readdirSync(models_path).forEach(function (file) { + if (~file.indexOf('.js')) require(models_path + '/' + file); + }); + }, + + connect: function (config, done) { + mongoose.connect('mongodb://' + config.db.host + (config.db.port ? ':' + config.db.port : '') + '/' + config.db.database); + var db = mongoose.connection; + db.on('error', console.error.bind(console, 'connection error:')); + db.once('open', function (err) { + done(err); + }); + } +}; module.exports.express = { route: function(app){ @@ -20,6 +34,9 @@ module.exports.express = { res.end(); } + var amend = require('./amendments'); + var pks = require('./pks'); + app.get( '/pks/lookup', pks.lookup); app.get( '/pks/add', pks.add.get); app.post( '/pks/add', pks.add.post); @@ -39,16 +56,8 @@ module.exports.express = { app.get( '/udc/transactions/view/:transaction_id', notImplemented); }, - app: function (someConfig) { + app: function (config) { var app = express(); - var config = someConfig || { - server: { port: 8001 }, - db: { - database : "nodecoin_test", - protocol : "sqlite", - dropAll: false - } - }; configurer(config).parseFiles(function (err) { if(!err){ @@ -69,44 +78,6 @@ module.exports.express = { app.use(express.methodOverride()); app.use(express.cookieParser('your secret here')); app.use(express.session()); - app.use(orm.express(config.db, { - define: function (db, models) { - - db.load(__dirname + '/entities/load', function (err) { - // loaded ! - var PublicKey = db.models.pubkey; - var PrivateKey = db.models.privkey; - - function createTables(callback){ - PublicKey.sync(function (err2) { - if(!err) - console.log("Table 'PublicKey' created."); - callback(err); - }); - } - - function dropTables(callback){ - PublicKey.drop(function (err2) { - if(!err) - console.log("Table 'PublicKey' dropped."); - callback(err); - }); - } - - if(config.db.dropAll){ - dropTables(function (err2) { - createTables(function (err3) {}); - }); - } - else{ - createTables(function (err2) {}); - } - - models.PublicKey = PublicKey; - models.PrivateKey = PrivateKey; - }); - } - })); app.use(app.router); // development only diff --git a/lib/pks.js b/lib/pks.js index d5a8660757e987e2bba3bb5826abbf98690a85d5..8e0b2bdec0b38c365cc9c620ddac54c90e7119b9 100644 --- a/lib/pks.js +++ b/lib/pks.js @@ -1,9 +1,10 @@ -var fs = require('fs'), -util = require('util'), -async = require('async'), -orm = require('orm'), -_ = require('underscore'), -stream = require('stream'); +var fs = require('fs'), +util = require('util'), +async = require('async'), +mongoose = require('mongoose'), +PublicKey = mongoose.model('PublicKey'), +_ = require('underscore'), +stream = require('stream'); function processRawKey (pubkey, done) { async.parallel([ @@ -20,7 +21,7 @@ module.exports.lookup = function (req, res) { var op = req.query.op; var pattern = req.query.search; if(pattern !== undefined){ - req.models.PublicKey.search(pattern, function (err, foundKeys) { + PublicKey.search(pattern, function (err, foundKeys) { switch(op){ case 'get': var count = foundKeys.length; @@ -126,7 +127,6 @@ function getAsciiArmoredMessages(body, files, callback) { module.exports.add.post = function (req, res) { getAsciiArmoredMessages(req.body, req.files, function (err, aaPubkey, aaSignature) { if(!err){ - var PublicKey = req.models.PublicKey; var pubKeys = []; PublicKey.verify(aaPubkey, aaSignature, function (err) { if(!err){ diff --git a/package.json b/package.json index 6b02f9077bef574a1ac559ed5571fb82b22014a9..3b96d94e1a832a7669b0cb908ef825db2ac3f2d3 100644 --- a/package.json +++ b/package.json @@ -31,9 +31,7 @@ "express": "", "commander": "", "ejs": "", - "orm": "", - "mysql" : "2.0.0-alpha7", - "sqlite3" : "", + "mongoose": "", "async": "", "underscore": "" }, diff --git a/test/data/cgeek.pub b/test/data/cgeek.pub new file mode 100644 index 0000000000000000000000000000000000000000..5a59413bae27773d2ce71c408e9da10dda71ced7 --- /dev/null +++ b/test/data/cgeek.pub @@ -0,0 +1,43 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.12 (GNU/Linux) + +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 +ao8cQfpq60JVtGMseERMCbPZEi+Ggg== +=kwCy +-----END PGP PUBLIC KEY BLOCK----- \ No newline at end of file diff --git a/test/data/cgeek.pub.asc b/test/data/cgeek.pub.asc new file mode 100644 index 0000000000000000000000000000000000000000..e4c02ed0f205bb4e0e9cec560477c026d7b26f29 --- /dev/null +++ b/test/data/cgeek.pub.asc @@ -0,0 +1,56 @@ +-----BEGIN PGP MESSAGE----- +Version: GnuPG v1.4.12 (GNU/Linux) + +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 +i88h2Fv/Gw== +=vAtp +-----END PGP MESSAGE----- diff --git a/test/data/lolcat.pub b/test/data/lolcat.pub new file mode 100644 index 0000000000000000000000000000000000000000..5de57a9bcb9d07f9bbec9701de0dd30d651358b8 --- /dev/null +++ b/test/data/lolcat.pub @@ -0,0 +1,31 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.12 (GNU/Linux) + +mQENBFHHC/EBCADWTLSN7EGP+n30snndS3ZNcB02foL+0opcS6LK2coPDJLg2noo +keJRHZxF3THmZQrKwZOjiuDBinOc5DWlzIS/gD/RaXwntgPFlGKBlBU+g255fr28 +ziSb5Y1lW4N//nUFdPZzoMmPgRj0b17T0UPCoMR8ZZ/Smk5LINbQwt+A+LEoxEdE +Vcq+Tyc0OlEabqO6RFqiKDRiPhGPiCwVQA3yPjb6iCp5gTchObCxCnDbxA0Mfj9F +mHrGbepNHGXxStO4xT0woCb7y02S1E8K08kOc5Bq9e1Yj5I/mdaw4Hn/Wp28lZl1 +mnO1u1z9ZU/rcglhEyaEOTwasheb44QcdGSfABEBAAG0TUxvTCBDYXQgKHVkaWQy +O2M7Q0FUO0xPTDsyMDAwLTA0LTE5O2UrNDMuNzAtMDc5LjQyOzA7KSA8Y2VtLm1v +cmVhdUBnbWFpbC5jb20+iQE9BBMBCAAnBQJRxwvxAhsDBQkLR5jvBQsJCAcDBRUK +CQgLBRYCAwEAAh4BAheAAAoJEOnKt20ZqGUeZYcH/0ItH4b/O0y7V1Jzc1DZAdn4 +iDiI7/SF3fN4f6cJCu/SOVb+ERFIb6JK+HNHdVAcMHKaPW625R0FahHUkcXWkkGm +Q6+sLIsVZwVN1oeZtlD12cq9A4UJyfJUXkinMKkI8xpdV8J7s5wFRavOS/qaF5be +ah0Z+IGwQK0nuXxWpT6UZWbpUfXPQB2Mz2/rpjSWKwO3X4FwwOfDiuZExyH2JPDY +shdPcj/x+gnzYW9XfWCJw3rOK42vtM+aLtUpJO0Jh6X/sj/iqyS4rPB4DVCmEgSX +Px1P+kqnsz3aNTOIujXS8Faz+TC+eNhn+z3SoTl5gBlNNM171fWFr0BR3nIfIu65 +AQ0EUccL8QEIAPAQaxK6s4DjDHiOwrMotvb479QD5PsHU6S0VG0+naoPlNJb2d5w +YhnFAn4aYLiXx4IIl38rHnV+yWATOUe2rdCe4enTXkxyWJVaxIcNJLFpUjHYGbrC +nNwiXpuQfSDuRN/wcVNSBKXhWNUPY9IsbgERWhS5YTFnuQcBjMqDwF6JImQ8O4nZ +wno811nqK1XaMuLVvXZAsO1Vi1k3NArM5+jdlq9e3BA0NcHJmGEcQdTw0Tk5Oq6r +mE8ux7pS0bn6OUkkseR5DyRlFtzqi4wp30GeggeFExx7ZCVuctpJX9ZoC3cJoZT0 +s3LuUtV0EW50yCtP+3Vpkek2WtjfVbM6kDkAEQEAAYkBJQQYAQgADwUCUccL8QIb +DAUJC0eY7wAKCRDpyrdtGahlHg7+B/95xEoSrFQ7/mc7g6sbisvx3s547gUXXYSu +FHS03IMDWJrfGKqXtBf9ETBx4OLeBXY7z1lL4WCN6/xtrL+mSQ9dbDqdXv/1EhkS +v0s+IvJ34KYGAkFXSCoTE7rnkPwQjoMYVSFkf5e8g9adyKvndq/QSPNuv+FPL6sH +m1N9nmus5Ebr0zTVDmmfoqzokuDfHm5h6YrkFscMGjrCKWuXSiTaGj9Hm3MqeZ3T +Kva5isa/h0h7Ai3wJ5XJpMrFNN6BU/wIt7fM2hsNAOwaG+WUfgjYEkOua8gPPtpL +ZJJPb/89yrs9F7JkLi/oiAl5VpItm+hlFpLe1TE7oa6k53eZ2a+V +=rOj9 +-----END PGP PUBLIC KEY BLOCK----- diff --git a/test/data/snow.pub b/test/data/snow.pub new file mode 100644 index 0000000000000000000000000000000000000000..8193565e1eaa501084fa9bd17decba36bc63e56a --- /dev/null +++ b/test/data/snow.pub @@ -0,0 +1,42 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.12 (GNU/Linux) + +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 +CKXqhQsOxtUFEg0/Rxy2cEKHpb290yw= +=AaRc +-----END PGP PUBLIC KEY BLOCK----- diff --git a/test/data/uchiha.pub b/test/data/uchiha.pub new file mode 100644 index 0000000000000000000000000000000000000000..539ab945b9314f6be7e39b3b7ebea05ac3f73f25 --- /dev/null +++ b/test/data/uchiha.pub @@ -0,0 +1,31 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.12 (GNU/Linux) + +mQENBFHG4x4BCADi8J4sSpIv5q2gREBwMj1TCUFDvQDx8/WivLKJ+LgmC2zwuuMD +Yo9YwZBmMe/orZJRSDwslKUARtFzmSui2CR3b4EEr1Hhz9coyqHsF9lYdht2YU7i +08FOdppRJdk7XuHCABZ+mXeG8WnNMP+9QjRAh3sFDkWpji9iL5ZmzlDx6UMXq3lM +SvN3VC32X+K2HoQgesm3fTjCBmQik2Ayvp89Ikc2wAWM5/B7RCwdHTTysVOE0Kkx +IIkeus76p+5pvLzrZOvM18ToLxV7KThxVvHn+dj2iOMuteY3BylN+XL1J/nBYkOC +fsCigMClbWj7IptqDZWmqRbzYgcrOYa8SezxABEBAAG0VVRvYmkgVWNoaXdhICh1 +ZGlkMjtjO1VDSElXQTtPQklUTzsyMDAwLTA5LTMwO2UrMzUuNjkrMTM5LjY5OzAp +IDxjZW0ubW9yZWF1QGdtYWlsLmNvbT6JAT0EEwEIACcFAlHG4x4CGwMFCQs75EIF +CwkIBwMFFQoJCAsFFgIDAQACHgECF4AACgkQJFehWHyg7ZxljwgAkkV+cXO8kXXC +qXdo9hwSprQwbHHfwsovhIvZI9E4Tpce0TXaebflCecDwsPgGyeP8xPUX8pZAvYY +w5klREvKn7Vu6NiGrE07k7EUCIs+kkPTXeRAv/NpMfJoUOdh+da0ybs+nTO1lJV+ +cEGqz0OX8yIwrlwhrkvnlFWRE/oe3NoJ9f0N7sMXejhs8aTGClXU87GiUAoQ0XC1 +U8BPLjprkne5RMsSVHj3HbVzVQXmreNVDNsvtJVTskGxUE7IzIK80fBZP7OmC+bi +ZuwTqXekF6SCqOJjlIsDY4uIL/cCQRkhM1kmeeHcGOQT+6auPtpHXniRxUNOoi7V +CWg/HS2r9rkBDQRRxuMeAQgA+jCWHHx/kPQxghMBuio36RoR63qQSFxpp2Lx5HIk +UYhpHE0oGOEEiBG0HrKIv7Qz+4Cs1VHSDCplD+vtRS9PkjOopSxE+ROHjIfT0fcj +kYT14m2Ftmcqs5/Vw9qBHLhJQPyqIR4TMVuDP5/1LIfnv/EUoisAFcpT86CFK1jO +GtdTALxDKIk6mlsiPCXD7jlSWw3btJlwydeudTVYBq5OhC/DLREn2vgtvqcWjvi4 +X/ttEWB35EzP11s6gRTv3ldVlXQ13Db+gHrjExRn848bRu0R1RzgcpsXOVeyzlzM +KFJDXueyCOdiVAyEVPmLHKojwaP+UHlEnwI/v5OMva1VsQARAQABiQElBBgBCAAP +BQJRxuMeAhsMBQkLO+RCAAoJECRXoVh8oO2cgiQIAKCqxY4LVbHYDywkwI4dAFp4 +bFlqKDURKzEq8nfDliBLmFrDAv9lFEBbNii7Y6b3FxaijUTPlJbU9RX8xtPO6bbA +ujJPyHsi/hBZjqWCqbajbwoNMYzu9nbtB2DfxZKYnVijjmb15WuXVC+GN4M+ZCtw ++SNrpFTBPUUl4LjBRvUJ9DhjbD2+FlqXfDiRLKma0658s2PQZhqajiEswDyo1fAh +OykaWCE5pW0DHl2Fizc77/QDe7iQa8ZRWp8Q/w0FJE2bXb3Paxtd40XURVOGRmtN +vLPTKXIgxFi2dTCBQz6oTeajOjun6x6BUJVUbnJ40YmlqYbXqHyI9AcVMMEsLdw= +=ZdXC +-----END PGP PUBLIC KEY BLOCK----- diff --git a/test/main.js b/test/main.js index 46cc8be88877278e592f37f6a9cb195e9cf931cc..992f15fd24209bc645039f863b311f1f5292e31e 100644 --- a/test/main.js +++ b/test/main.js @@ -3,16 +3,26 @@ var should = require('should'); var request = require('supertest'); var nodecoin = require('../lib/nodecoin'); -var app = nodecoin.express.app({ +var config = { server: { port: 8001 }, db: { - database : "nodecoin_test.db", - protocol : "sqlite", - dropAll: true + database : "nodecoin_test", + host: "localhost" }, initKeys: [] +}; + +// Bootstraps models +nodecoin.database.init(); +nodecoin.database.connect(config, function (err) { + if(!err) + console.log("Connected to MongoDB."); + else + console.log("Error connecting to DB: " + err); }); +var app = nodecoin.express.app(config); + var gets = [ {should: 501, url: '/udc/amendments/view/[000001]/members'}, {should: 501, url: '/udc/amendments/view/[000001]/self'},