index.js 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. /*
  2. servera index file
  3. */
  4. var argvs = require("optimist").argv;
  5. var path = require("path");
  6. var fs = require("fs-extra");
  7. var _ = require("lodash");
  8. var options = {
  9. pwd: argvs.datadir || process.env.PWD,
  10. dirname: argvs.dirname || __dirname,
  11. port: argvs.port || 3004,
  12. verbose: argvs.verbose || false,
  13. debug: argvs.debug || false,
  14. origin: argvs.origin || process.env.APP_DOMAIN || (Math.floor(Math.random() * 0xffffffff)),
  15. }
  16. options.configfile = argvs.configfile || path.join(options.pwd, "/servera.config.json")
  17. try {
  18. options = Object.assign(require(options.configfile), options);
  19. } catch (e) {
  20. !!options.verbose ? console.log("no file:", options.configfile) : null;
  21. options.noconfigfile = true;
  22. }
  23. !!options.verbose ? console.log("using config:", options) : null;
  24. if (argvs.help) {
  25. console.log("--datadir", options.pwd);
  26. console.log("--dirname", options.dirname);
  27. console.log("--port", options.port);
  28. console.log("--verbose", options.verbose);
  29. console.log("--debug", options.debug);
  30. console.log("--origin", options.origin);
  31. console.log("--configfile", options.noconfigfile ? "not found" : "", options.configfile);
  32. console.log("--repl", argvs.repl);
  33. console.log("--client", argvs.client);
  34. console.log("--init");
  35. process.exit()
  36. }
  37. if (argvs.init) {
  38. console.log("INIT");
  39. var fs = require("graceful-fs");
  40. if (!fs.existsSync(path.join(options.pwd, "/views"))) {
  41. fs.mkdirSync(path.join(options.pwd, "/views"))
  42. fs.copyFileSync(path.join(options.dirname, "/views/index.html"), path.join(options.pwd, "/views/index.html"))
  43. }
  44. console.log(fs);
  45. process.exit();
  46. }
  47. var server = require("aserver")(options);
  48. server = require("aserver-extend")(server);
  49. server = require("aserver-tools")(server);
  50. server.rooten = {};
  51. server.options = options;
  52. server.add_action("NOPE server.init.first", function(app) {
  53. app.use(server.ratelimit({
  54. max: 120,
  55. windowMs: 120 * 1000,
  56. delayAfter: 100
  57. }));
  58. }, 7)
  59. server.add_action("server.init.first", function(app) {
  60. app.use(function(req, res, next) {
  61. console.log(req.method, req.url);
  62. next();
  63. });
  64. }, 7)
  65. var tool = {};
  66. /*tool.template = function template(str, obj) {
  67. return str.replace(/\{\{([a-zA-Z0-9]*)\}\}/gi, function(a, m) {
  68. return obj[m] ? obj[m] : m
  69. })
  70. }*/
  71. tool._ = require("lodash");
  72. tool.util = require("util");
  73. //tool = require("./clienta")(tool);
  74. //tool = require("./dist/lib_src")(tool, false)
  75. server.tool = tool
  76. //require("./serverstd")(server);
  77. //require("./plugins/buckets/bucketstd")(server);
  78. try {
  79. var ff = fs.readdirSync(path.join(options.pwd, "./node_modules")).map(function(file) {
  80. console.log("FIII", file);
  81. return {
  82. file: file,
  83. isa: fs.readdirSync(path.join(options.pwd, "./node_modules/", file)).filter(function(filea) {
  84. return filea === "electra.json"
  85. })
  86. }
  87. }).filter(function(f) {
  88. return f.isa.length > 0
  89. })
  90. ff.map(function(ffa) {
  91. console.log("**** loading module: ", ffa.file)
  92. require(ffa.file)(server);
  93. })
  94. } catch (e) {
  95. console.log("ERROR:", e)
  96. }
  97. server.add_action("server.init", function(app) {
  98. /* app.get("/plugins/:plugin/:file", function(req, res, next) {
  99. res.render(path.join(options.dirname, "./plugins/", req.params.plugin, req.params.file + ".html"), Object.assign({
  100. req: req,
  101. tool: tool,
  102. }, tool));
  103. })
  104. app.get("/", function(req, res, next) {
  105. res.render("index.html", Object.assign({
  106. req: req,
  107. tool: tool,
  108. }, tool));
  109. })
  110. app.get("/tester", function(req, res, next) {
  111. res.render("test.html", Object.assign({
  112. req: req,
  113. tool: tool,
  114. }, tool));
  115. })
  116. */
  117. app.get("/", function(req, res, next) {
  118. res.send({
  119. "status": "ok"
  120. })
  121. })
  122. });
  123. server.add_action("request.init", function(req, res, next) {
  124. console.log("req.url", req.ip, req.url, req.parts)
  125. });
  126. try {
  127. require(path.join(options.pwd, "/server.js"))(server);
  128. } catch (e) {
  129. !!options.verbose ? console.log("no file:", path.join(options.pwd, "/server.js"), e) : null;
  130. }
  131. if (argvs.repl) {
  132. var repl = require("repl");
  133. var cmdline = repl.start({
  134. prompt: '> '
  135. });
  136. cmdline.context.server = server;
  137. cmdline.context.options = options;
  138. Object.defineProperty(cmdline.context, 'rooten', {
  139. enumerable: true,
  140. get: function get() {
  141. return server.rooten;
  142. }
  143. });
  144. function bb(arg) {
  145. this.name = arg
  146. }
  147. bb.prototype.test = function() {
  148. return this.name;
  149. }
  150. cmdline.context.bb = bb;
  151. cmdline.context.alle =
  152. cmdline.context.app = server;
  153. cmdline.context._ = _;
  154. }
  155. if (argvs.client) {
  156. console.log("client code to come");
  157. } else {
  158. server.startit();
  159. }
  160. //
  161. function sttttttt() {
  162. AWS = require("aws-sdk");
  163. app.aws = AWS;
  164. AWS.config.update({
  165. region: "eu-west-1",
  166. credentials: new AWS.CognitoIdentityCredentials({
  167. IdentityPoolId: "eu-west-1:5343270a-03fd-4856-ad07-25f1e2c78246"
  168. })
  169. });
  170. var s3 = new AWS.S3({
  171. apiVersion: '2006-03-01',
  172. params: {
  173. Bucket: "a.tum.dk"
  174. }
  175. });
  176. app.s3 = s3;
  177. app.s3.upload({
  178. Key: "data/test.json",
  179. Body: "{}",
  180. ContentType: "application/json",
  181. "headers": {
  182. "Access-Control-Allow-Origin": "*"
  183. },
  184. ACL: 'public-read'
  185. }, function(err, data) {
  186. console.log("err", err, data);
  187. })
  188. }