index.js 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  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. app.get("/healthcheck", function(req, res, next) {
  123. res.send({
  124. "status": "ok"
  125. })
  126. })
  127. });
  128. server.add_action("request.init", function(req, res, next) {
  129. console.log("req.url", req.ip, req.url, req.parts)
  130. });
  131. try {
  132. require(path.join(options.pwd, "/server.js"))(server);
  133. } catch (e) {
  134. !!options.verbose ? console.log("no file:", path.join(options.pwd, "/server.js"), e) : null;
  135. }
  136. if (argvs.repl) {
  137. var repl = require("repl");
  138. var cmdline = repl.start({
  139. prompt: '> '
  140. });
  141. cmdline.context.server = server;
  142. cmdline.context.options = options;
  143. Object.defineProperty(cmdline.context, 'rooten', {
  144. enumerable: true,
  145. get: function get() {
  146. return server.rooten;
  147. }
  148. });
  149. function bb(arg) {
  150. this.name = arg
  151. }
  152. bb.prototype.test = function() {
  153. return this.name;
  154. }
  155. cmdline.context.bb = bb;
  156. cmdline.context.alle =
  157. cmdline.context.app = server;
  158. cmdline.context._ = _;
  159. }
  160. if (argvs.client) {
  161. console.log("client code to come");
  162. } else {
  163. server.startit();
  164. }
  165. //
  166. function sttttttt() {
  167. AWS = require("aws-sdk");
  168. app.aws = AWS;
  169. AWS.config.update({
  170. region: "eu-west-1",
  171. credentials: new AWS.CognitoIdentityCredentials({
  172. IdentityPoolId: "eu-west-1:5343270a-03fd-4856-ad07-25f1e2c78246"
  173. })
  174. });
  175. var s3 = new AWS.S3({
  176. apiVersion: '2006-03-01',
  177. params: {
  178. Bucket: "a.tum.dk"
  179. }
  180. });
  181. app.s3 = s3;
  182. app.s3.upload({
  183. Key: "data/test.json",
  184. Body: "{}",
  185. ContentType: "application/json",
  186. "headers": {
  187. "Access-Control-Allow-Origin": "*"
  188. },
  189. ACL: 'public-read'
  190. }, function(err, data) {
  191. console.log("err", err, data);
  192. })
  193. }