vps-deployer 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +151 -0
  3. package/dist/app.d.ts +4 -0
  4. package/dist/app.d.ts.map +1 -0
  5. package/dist/app.js +39 -0
  6. package/dist/app.js.map +1 -0
  7. package/dist/db/db.d.ts +5 -0
  8. package/dist/db/db.d.ts.map +1 -0
  9. package/dist/db/db.js +100 -0
  10. package/dist/db/db.js.map +1 -0
  11. package/dist/helpers/arg.helper.d.ts +7 -0
  12. package/dist/helpers/arg.helper.d.ts.map +1 -0
  13. package/dist/helpers/arg.helper.js +28 -0
  14. package/dist/helpers/arg.helper.js.map +1 -0
  15. package/dist/helpers/cmd_executer.helper.d.ts +7 -0
  16. package/dist/helpers/cmd_executer.helper.d.ts.map +1 -0
  17. package/dist/helpers/cmd_executer.helper.js +88 -0
  18. package/dist/helpers/cmd_executer.helper.js.map +1 -0
  19. package/dist/helpers/common.helper.d.ts +2 -0
  20. package/dist/helpers/common.helper.d.ts.map +1 -0
  21. package/dist/helpers/common.helper.js +15 -0
  22. package/dist/helpers/common.helper.js.map +1 -0
  23. package/dist/helpers/config_files.helper.d.ts +2 -0
  24. package/dist/helpers/config_files.helper.d.ts.map +1 -0
  25. package/dist/helpers/config_files.helper.js +44 -0
  26. package/dist/helpers/config_files.helper.js.map +1 -0
  27. package/dist/helpers/create_systemd_service.helper.d.ts +9 -0
  28. package/dist/helpers/create_systemd_service.helper.d.ts.map +1 -0
  29. package/dist/helpers/create_systemd_service.helper.js +40 -0
  30. package/dist/helpers/create_systemd_service.helper.js.map +1 -0
  31. package/dist/helpers/date.helper.d.ts +2 -0
  32. package/dist/helpers/date.helper.d.ts.map +1 -0
  33. package/dist/helpers/date.helper.js +18 -0
  34. package/dist/helpers/date.helper.js.map +1 -0
  35. package/dist/helpers/email.helper.d.ts +11 -0
  36. package/dist/helpers/email.helper.d.ts.map +1 -0
  37. package/dist/helpers/email.helper.js +144 -0
  38. package/dist/helpers/email.helper.js.map +1 -0
  39. package/dist/helpers/logging.helper.d.ts +9 -0
  40. package/dist/helpers/logging.helper.d.ts.map +1 -0
  41. package/dist/helpers/logging.helper.js +32 -0
  42. package/dist/helpers/logging.helper.js.map +1 -0
  43. package/dist/helpers/remove_systemd_service.helper.d.ts +2 -0
  44. package/dist/helpers/remove_systemd_service.helper.d.ts.map +1 -0
  45. package/dist/helpers/remove_systemd_service.helper.js +21 -0
  46. package/dist/helpers/remove_systemd_service.helper.js.map +1 -0
  47. package/dist/helpers/start_systemd_service.helper.d.ts +2 -0
  48. package/dist/helpers/start_systemd_service.helper.d.ts.map +1 -0
  49. package/dist/helpers/start_systemd_service.helper.js +26 -0
  50. package/dist/helpers/start_systemd_service.helper.js.map +1 -0
  51. package/dist/index.d.ts +2 -0
  52. package/dist/index.d.ts.map +1 -0
  53. package/dist/index.js +132 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/middleware/auth.middleware.d.ts +3 -0
  56. package/dist/middleware/auth.middleware.d.ts.map +1 -0
  57. package/dist/middleware/auth.middleware.js +7 -0
  58. package/dist/middleware/auth.middleware.js.map +1 -0
  59. package/dist/modules/auth/auth.route.d.ts +3 -0
  60. package/dist/modules/auth/auth.route.d.ts.map +1 -0
  61. package/dist/modules/auth/auth.route.js +16 -0
  62. package/dist/modules/auth/auth.route.js.map +1 -0
  63. package/dist/modules/auth/controllers/auth.controller.d.ts +6 -0
  64. package/dist/modules/auth/controllers/auth.controller.d.ts.map +1 -0
  65. package/dist/modules/auth/controllers/auth.controller.js +123 -0
  66. package/dist/modules/auth/controllers/auth.controller.js.map +1 -0
  67. package/dist/modules/auth/views/login.pug +254 -0
  68. package/dist/modules/auth/views/register.pug +298 -0
  69. package/dist/modules/common/views/404.pug +21 -0
  70. package/dist/modules/dashboard/dashboard.route.d.ts +3 -0
  71. package/dist/modules/dashboard/dashboard.route.d.ts.map +1 -0
  72. package/dist/modules/dashboard/dashboard.route.js +29 -0
  73. package/dist/modules/dashboard/dashboard.route.js.map +1 -0
  74. package/dist/modules/dashboard/views/dash.pug +149 -0
  75. package/dist/modules/dashboard/views/layout.pug +94 -0
  76. package/dist/modules/deployer/controllers/deployer.controller.d.ts +6 -0
  77. package/dist/modules/deployer/controllers/deployer.controller.d.ts.map +1 -0
  78. package/dist/modules/deployer/controllers/deployer.controller.js +119 -0
  79. package/dist/modules/deployer/controllers/deployer.controller.js.map +1 -0
  80. package/dist/modules/deployer/deployer.route.d.ts +3 -0
  81. package/dist/modules/deployer/deployer.route.d.ts.map +1 -0
  82. package/dist/modules/deployer/deployer.route.js +13 -0
  83. package/dist/modules/deployer/deployer.route.js.map +1 -0
  84. package/dist/modules/deployer/helper/deployer.d.ts +9 -0
  85. package/dist/modules/deployer/helper/deployer.d.ts.map +1 -0
  86. package/dist/modules/deployer/helper/deployer.js +89 -0
  87. package/dist/modules/deployer/helper/deployer.js.map +1 -0
  88. package/dist/modules/deployer/views/details.pug +157 -0
  89. package/dist/modules/deployer/views/index.pug +108 -0
  90. package/dist/modules/project/controllers/projects.controller.d.ts +12 -0
  91. package/dist/modules/project/controllers/projects.controller.d.ts.map +1 -0
  92. package/dist/modules/project/controllers/projects.controller.js +267 -0
  93. package/dist/modules/project/controllers/projects.controller.js.map +1 -0
  94. package/dist/modules/project/helper/project_file_sys.helper.d.ts +7 -0
  95. package/dist/modules/project/helper/project_file_sys.helper.d.ts.map +1 -0
  96. package/dist/modules/project/helper/project_file_sys.helper.js +93 -0
  97. package/dist/modules/project/helper/project_file_sys.helper.js.map +1 -0
  98. package/dist/modules/project/project.route.d.ts +3 -0
  99. package/dist/modules/project/project.route.d.ts.map +1 -0
  100. package/dist/modules/project/project.route.js +17 -0
  101. package/dist/modules/project/project.route.js.map +1 -0
  102. package/dist/modules/project/views/create.pug +189 -0
  103. package/dist/modules/project/views/details.pug +238 -0
  104. package/dist/modules/project/views/index.pug +114 -0
  105. package/dist/modules/settings/controllers/setting.controller.d.ts +5 -0
  106. package/dist/modules/settings/controllers/setting.controller.d.ts.map +1 -0
  107. package/dist/modules/settings/controllers/setting.controller.js +193 -0
  108. package/dist/modules/settings/controllers/setting.controller.js.map +1 -0
  109. package/dist/modules/settings/settings.route.d.ts +3 -0
  110. package/dist/modules/settings/settings.route.d.ts.map +1 -0
  111. package/dist/modules/settings/settings.route.js +10 -0
  112. package/dist/modules/settings/settings.route.js.map +1 -0
  113. package/dist/modules/settings/views/index.pug +173 -0
  114. package/dist/modules/webhook/controllers/webhook.controller.d.ts +3 -0
  115. package/dist/modules/webhook/controllers/webhook.controller.d.ts.map +1 -0
  116. package/dist/modules/webhook/controllers/webhook.controller.js +72 -0
  117. package/dist/modules/webhook/controllers/webhook.controller.js.map +1 -0
  118. package/dist/modules/webhook/webhook.route.d.ts +3 -0
  119. package/dist/modules/webhook/webhook.route.d.ts.map +1 -0
  120. package/dist/modules/webhook/webhook.route.js +6 -0
  121. package/dist/modules/webhook/webhook.route.js.map +1 -0
  122. package/dist/utils/app_config.d.ts +3 -0
  123. package/dist/utils/app_config.d.ts.map +1 -0
  124. package/dist/utils/app_config.js +5 -0
  125. package/dist/utils/app_config.js.map +1 -0
  126. package/dist/utils/cli.d.ts +2 -0
  127. package/dist/utils/cli.d.ts.map +1 -0
  128. package/dist/utils/cli.js +68 -0
  129. package/dist/utils/cli.js.map +1 -0
  130. package/package.json +80 -0
  131. package/public/favicon.svg +18 -0
  132. package/public/js/deploy.js +36 -0
  133. package/public/js/deployment-details.js +56 -0
  134. package/public/js/login.js +21 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date.helper.d.ts","sourceRoot":"","sources":["../../src/helpers/date.helper.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,GAAI,OAAO,MAAM,KAAG,MAiBhD,CAAC"}
@@ -0,0 +1,18 @@
1
+ export const convertDateToIST = (input) => {
2
+ // Handles timestamps, ISO strings, or Date objects
3
+ const date = new Date(input);
4
+ // Check for invalid dates
5
+ if (isNaN(date.getTime()))
6
+ return "Invalid Date";
7
+ return date.toLocaleString("en-IN", {
8
+ timeZone: "Asia/Kolkata",
9
+ day: "2-digit",
10
+ month: "2-digit",
11
+ year: "numeric",
12
+ hour: "2-digit",
13
+ minute: "2-digit",
14
+ second: "2-digit",
15
+ hour12: true,
16
+ });
17
+ };
18
+ //# sourceMappingURL=date.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date.helper.js","sourceRoot":"","sources":["../../src/helpers/date.helper.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAa,EAAU,EAAE;IACxD,mDAAmD;IACnD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IAE7B,0BAA0B;IAC1B,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAAE,OAAO,cAAc,CAAC;IAEjD,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;QAClC,QAAQ,EAAE,cAAc;QACxB,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,IAAI;KACb,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ type EmailPayload = {
2
+ project: any;
3
+ deployId: string;
4
+ branch: string;
5
+ commit: string;
6
+ author: string;
7
+ };
8
+ export declare const sendDeploymentEmail: ({ project, deployId, branch, commit, author, }: EmailPayload) => Promise<void>;
9
+ export declare const sendDeploymentResultEmail: (deployId: string, status: "success" | "failed") => Promise<void>;
10
+ export {};
11
+ //# sourceMappingURL=email.helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email.helper.d.ts","sourceRoot":"","sources":["../../src/helpers/email.helper.ts"],"names":[],"mappings":"AAGA,KAAK,YAAY,GAAG;IAClB,OAAO,EAAE,GAAG,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAU,gDAMvC,YAAY,kBAsDd,CAAC;AAMF,eAAO,MAAM,yBAAyB,GACpC,UAAU,MAAM,EAChB,QAAQ,SAAS,GAAG,QAAQ,kBAqG7B,CAAC"}
@@ -0,0 +1,144 @@
1
+ import nodemailer from "nodemailer";
2
+ import { getDB } from "../db/db.js";
3
+ export const sendDeploymentEmail = async ({ project, deployId, branch, commit, author, }) => {
4
+ const db = getDB();
5
+ const emailConfig = db
6
+ .prepare(`SELECT * FROM email LIMIT 1`)
7
+ .get();
8
+ if (!emailConfig)
9
+ return;
10
+ const transporter = nodemailer.createTransport({
11
+ host: emailConfig.smtp,
12
+ port: emailConfig.smtp_port,
13
+ secure: emailConfig.smtp_port === 465,
14
+ auth: {
15
+ user: emailConfig.username,
16
+ pass: emailConfig.password,
17
+ },
18
+ });
19
+ const html = `
20
+ <div style="font-family: Arial; padding: 20px;">
21
+ <h2 style="color: #333;">🚀 Deployment Triggered</h2>
22
+
23
+ <p><strong>Project:</strong> ${project.name}</p>
24
+ <p><strong>Branch:</strong> ${branch}</p>
25
+ <p><strong>Deployment ID:</strong> ${deployId}</p>
26
+
27
+ <hr/>
28
+
29
+ <h3>Commit Info</h3>
30
+ <p><strong>Author:</strong> ${author}</p>
31
+ <p><strong>Message:</strong></p>
32
+ <pre style="background:#f4f4f4; padding:10px;">${commit}</pre>
33
+
34
+ <hr/>
35
+
36
+ <p style="font-size: 12px; color: gray;">
37
+ VPS Deployer Notification
38
+ </p>
39
+ </div>
40
+ `;
41
+ const user = db.prepare(`SELECT email FROM user LIMIT 1`).get();
42
+ try {
43
+ await transporter.sendMail({
44
+ from: emailConfig.from,
45
+ to: user.email,
46
+ subject: `🚀 Deployment Triggered - ${project.name}`,
47
+ html,
48
+ });
49
+ }
50
+ catch (err) {
51
+ console.error("Email failed:", err);
52
+ }
53
+ };
54
+ export const sendDeploymentResultEmail = async (deployId, status) => {
55
+ const db = getDB();
56
+ const deployment = db
57
+ .prepare(`
58
+ SELECT d.*, p.name, p.receive_email_notf
59
+ FROM deployment d
60
+ JOIN project p ON d.proj_id = p.id
61
+ WHERE d.id = ?
62
+ `)
63
+ .get(deployId);
64
+ if (!deployment || deployment.receive_email_notf !== 1)
65
+ return;
66
+ const logs = db
67
+ .prepare(`
68
+ SELECT cmd, status
69
+ FROM deployment_logs
70
+ WHERE deploy_id = ?
71
+ `)
72
+ .all(deployId);
73
+ const emailConfig = db
74
+ .prepare(`SELECT * FROM email LIMIT 1`)
75
+ .get();
76
+ if (!emailConfig)
77
+ return;
78
+ const transporter = nodemailer.createTransport({
79
+ host: emailConfig.smtp,
80
+ port: emailConfig.smtp_port,
81
+ secure: emailConfig.smtp_port === 465,
82
+ auth: {
83
+ user: emailConfig.username,
84
+ pass: emailConfig.password,
85
+ },
86
+ });
87
+ const statusColor = status === "success" ? "#28a745" : "#dc3545";
88
+ const logsHtml = logs
89
+ .map((l) => `
90
+ <li>
91
+ <strong>${l.cmd}</strong> →
92
+ <span style="color:${l.status === "success" ? "green" : "red"}">
93
+ ${l.status}
94
+ </span>
95
+ </li>
96
+ `)
97
+ .join("");
98
+ const html = `
99
+ <div style="font-family: Arial; padding: 20px;">
100
+
101
+ <h2 style="color:${statusColor}">
102
+ ${status === "success" ? "✅ Deployment Successful" : "❌ Deployment Failed"}
103
+ </h2>
104
+
105
+ <p><strong>Project:</strong> ${deployment.name}</p>
106
+ <p><strong>Deployment ID:</strong> ${deployId}</p>
107
+
108
+ <hr/>
109
+
110
+ <h3>Command Results</h3>
111
+ <ul>
112
+ ${logsHtml}
113
+ </ul>
114
+
115
+ <hr/>
116
+
117
+ <p>
118
+ View details:
119
+ <a href="http://your-domain/deployment/${deployId}">
120
+ Open Deployment
121
+ </a>
122
+ </p>
123
+
124
+ <p style="font-size:12px; color:gray;">
125
+ VPS Deployer Notification
126
+ </p>
127
+ </div>
128
+ `;
129
+ const user = db.prepare(`SELECT email FROM user LIMIT 1`).get();
130
+ try {
131
+ await transporter.sendMail({
132
+ from: emailConfig.from,
133
+ to: user.email,
134
+ subject: status === "success"
135
+ ? `✅ Deployment Success - ${deployment.name}`
136
+ : `❌ Deployment Failed - ${deployment.name}`,
137
+ html,
138
+ });
139
+ }
140
+ catch (err) {
141
+ console.error("Deployment result email failed:", err);
142
+ }
143
+ };
144
+ //# sourceMappingURL=email.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email.helper.js","sourceRoot":"","sources":["../../src/helpers/email.helper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ type LogLevel = "INFO" | "ERROR" | "WARN" | "DEBUG";
2
+ export declare const writeToLogFile: (message: string, options?: {
3
+ level?: LogLevel;
4
+ source?: string;
5
+ meta?: Record<string, any>;
6
+ }) => void;
7
+ export declare const closeLogger: () => Promise<void>;
8
+ export {};
9
+ //# sourceMappingURL=logging.helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.helper.d.ts","sourceRoot":"","sources":["../../src/helpers/logging.helper.ts"],"names":[],"mappings":"AAIA,KAAK,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;AAepD,eAAO,MAAM,cAAc,GACzB,SAAS,MAAM,EACf,UAAU;IACR,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC5B,SAYF,CAAC;AAEF,eAAO,MAAM,WAAW,QAAO,OAAO,CAAC,IAAI,CAS1C,CAAC"}
@@ -0,0 +1,32 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import { getWorkDirPath } from "./arg.helper.js";
4
+ let writeStream = null;
5
+ const getStream = () => {
6
+ if (writeStream)
7
+ return writeStream;
8
+ const dir = getWorkDirPath();
9
+ const filePath = path.join(dir, "vps-deployer.log");
10
+ writeStream = fs.createWriteStream(filePath, { flags: "a" });
11
+ return writeStream;
12
+ };
13
+ export const writeToLogFile = (message, options) => {
14
+ const stream = getStream();
15
+ const timestamp = new Date().toISOString().replace("T", " ").split(".")[0];
16
+ const level = options?.level || "INFO";
17
+ const source = options?.source || "APP";
18
+ const meta = options?.meta ? ` | ${JSON.stringify(options.meta)}` : "";
19
+ const logLine = `[${timestamp}] [${level}] [${source}] ${message}${meta}\n`;
20
+ stream.write(logLine);
21
+ };
22
+ export const closeLogger = () => {
23
+ return new Promise((resolve) => {
24
+ if (!writeStream)
25
+ return resolve();
26
+ writeStream.end(() => {
27
+ writeStream = null;
28
+ resolve();
29
+ });
30
+ });
31
+ };
32
+ //# sourceMappingURL=logging.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.helper.js","sourceRoot":"","sources":["../../src/helpers/logging.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAIjD,IAAI,WAAW,GAA0B,IAAI,CAAC;AAE9C,MAAM,SAAS,GAAG,GAAG,EAAE;IACrB,IAAI,WAAW;QAAE,OAAO,WAAW,CAAC;IAEpC,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;IAEpD,WAAW,GAAG,EAAE,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAE7D,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,OAAe,EACf,OAIC,EACD,EAAE;IACF,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,MAAM,CAAC;IACvC,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,KAAK,CAAC;IACxC,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEvE,MAAM,OAAO,GAAG,IAAI,SAAS,MAAM,KAAK,MAAM,MAAM,KAAK,OAAO,GAAG,IAAI,IAAI,CAAC;IAE5E,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,GAAkB,EAAE;IAC7C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,CAAC,WAAW;YAAE,OAAO,OAAO,EAAE,CAAC;QAEnC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE;YACnB,WAAW,GAAG,IAAI,CAAC;YACnB,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const removeSystemdService: (serviceName: string) => void;
2
+ //# sourceMappingURL=remove_systemd_service.helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove_systemd_service.helper.d.ts","sourceRoot":"","sources":["../../src/helpers/remove_systemd_service.helper.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,oBAAoB,GAAI,aAAa,MAAM,SAevD,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { execSync } from "child_process";
2
+ import fs from "fs";
3
+ import { writeToLogFile } from "./logging.helper.js";
4
+ export const removeSystemdService = (serviceName) => {
5
+ const serviceFilePath = `/etc/systemd/system/${serviceName}.service`;
6
+ try {
7
+ execSync(`systemctl stop ${serviceName}`, { stdio: "inherit" });
8
+ execSync(`systemctl disable ${serviceName}`, { stdio: "inherit" });
9
+ if (fs.existsSync(serviceFilePath)) {
10
+ fs.unlinkSync(serviceFilePath);
11
+ }
12
+ execSync("systemctl daemon-reload", { stdio: "inherit" });
13
+ writeToLogFile(`Service ${serviceName} removed`, { level: "INFO", source: "SYS" });
14
+ }
15
+ catch (err) {
16
+ console.log(`Failed to remove service: ${err.message}`);
17
+ writeToLogFile(`Failed to remove service: ${err.message}`, { level: "ERROR", source: "SYS" });
18
+ throw err;
19
+ }
20
+ };
21
+ //# sourceMappingURL=remove_systemd_service.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove_systemd_service.helper.js","sourceRoot":"","sources":["../../src/helpers/remove_systemd_service.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,WAAmB,EAAE,EAAE;IAC1D,MAAM,eAAe,GAAG,uBAAuB,WAAW,UAAU,CAAC;IACrE,IAAI,CAAC;QACH,QAAQ,CAAC,kBAAkB,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAChE,QAAQ,CAAC,qBAAqB,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACnE,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACnC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;QACjC,CAAC;QACD,QAAQ,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1D,cAAc,CAAC,WAAW,WAAW,UAAU,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACrF,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,6BAA6B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;QACvD,cAAc,CAAC,6BAA6B,GAAG,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9F,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const startSystemdService: (serviceName: string) => void;
2
+ //# sourceMappingURL=start_systemd_service.helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start_systemd_service.helper.d.ts","sourceRoot":"","sources":["../../src/helpers/start_systemd_service.helper.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,mBAAmB,GAAI,aAAa,MAAM,SAsBtD,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { execSync } from "child_process";
2
+ import fs from "fs";
3
+ import { writeToLogFile } from "./logging.helper.js";
4
+ export const startSystemdService = (serviceName) => {
5
+ const serviceFilePath = `/etc/systemd/system/${serviceName}.service`;
6
+ if (!fs.existsSync(serviceFilePath)) {
7
+ throw new Error(`Service file not found at ${serviceFilePath}. Run "vps-deployer -w <dir> -p <port> -s <key>" first to generate it.`);
8
+ }
9
+ try {
10
+ execSync("systemctl daemon-reload", { stdio: "inherit" });
11
+ execSync(`systemctl enable ${serviceName}`, { stdio: "inherit" });
12
+ execSync(`systemctl start ${serviceName}`, { stdio: "inherit" });
13
+ writeToLogFile(`Service ${serviceName} enabled and started`, {
14
+ level: "INFO",
15
+ source: "SYS",
16
+ });
17
+ }
18
+ catch (err) {
19
+ writeToLogFile(`Failed to start service: ${err.message}`, {
20
+ level: "ERROR",
21
+ source: "SYS",
22
+ });
23
+ throw err;
24
+ }
25
+ };
26
+ //# sourceMappingURL=start_systemd_service.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start_systemd_service.helper.js","sourceRoot":"","sources":["../../src/helpers/start_systemd_service.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,WAAmB,EAAE,EAAE;IACzD,MAAM,eAAe,GAAG,uBAAuB,WAAW,UAAU,CAAC;IACrE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,6BAA6B,eAAe,wEAAwE,CACrH,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,QAAQ,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1D,QAAQ,CAAC,oBAAoB,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAClE,QAAQ,CAAC,mBAAmB,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACjE,cAAc,CAAC,WAAW,WAAW,sBAAsB,EAAE;YAC3D,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,cAAc,CAAC,4BAA4B,GAAG,CAAC,OAAO,EAAE,EAAE;YACxD,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;QACH,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,132 @@
1
+ import { closeDB, initalizeDB } from "./db/db.js";
2
+ import { setPort, setSessKey, setWorkDirPath } from "./helpers/arg.helper.js";
3
+ import { createProxyAndLogConfigs } from "./helpers/config_files.helper.js";
4
+ import { convertDateToIST } from "./helpers/date.helper.js";
5
+ import { closeLogger, writeToLogFile } from "./helpers/logging.helper.js";
6
+ import { getArgs } from "./utils/cli.js";
7
+ import app, { initSessionAndRoutes } from "./app.js";
8
+ import { createSystemdService } from "./helpers/create_systemd_service.helper.js";
9
+ let server = null;
10
+ let isShuttingDown = false;
11
+ async function shutdown(signal) {
12
+ if (isShuttingDown)
13
+ return;
14
+ isShuttingDown = true;
15
+ writeToLogFile(`Shutdown initiated`, {
16
+ level: "WARN",
17
+ source: "SYSTEM",
18
+ meta: { signal, time: convertDateToIST(Date.now()) },
19
+ });
20
+ const exit = async (code) => {
21
+ await closeLogger(); // ensure logs flushed
22
+ process.exit(code);
23
+ };
24
+ if (!server) {
25
+ writeToLogFile(`Server not initialized, closing DB`, {
26
+ source: "SYSTEM",
27
+ });
28
+ closeDB();
29
+ return exit(0);
30
+ }
31
+ server.close(async (err) => {
32
+ if (err) {
33
+ writeToLogFile(`Error closing server`, {
34
+ level: "ERROR",
35
+ source: "SERVER",
36
+ meta: { error: err.message },
37
+ });
38
+ return exit(1);
39
+ }
40
+ try {
41
+ writeToLogFile(`Server closed successfully`, {
42
+ source: "SERVER",
43
+ });
44
+ closeDB();
45
+ writeToLogFile(`DB closed, shutdown complete`, {
46
+ source: "SYSTEM",
47
+ });
48
+ return exit(0);
49
+ }
50
+ catch (e) {
51
+ writeToLogFile(`Error during shutdown`, {
52
+ level: "ERROR",
53
+ source: "SYSTEM",
54
+ meta: { error: e.message },
55
+ });
56
+ return exit(1);
57
+ }
58
+ });
59
+ // hard timeout fallback (no await here)
60
+ setTimeout(() => {
61
+ server?.closeAllConnections();
62
+ process.exit(1);
63
+ }, 10000);
64
+ }
65
+ function main() {
66
+ try {
67
+ if (process.getuid && process.getuid() !== 0) {
68
+ console.error("This command must be run as root. Use sudo.");
69
+ process.exit(1);
70
+ }
71
+ const [path, port, sessKey, isDev, isDaemon] = getArgs();
72
+ setWorkDirPath(path);
73
+ setPort(port);
74
+ setSessKey(sessKey);
75
+ initalizeDB();
76
+ createProxyAndLogConfigs();
77
+ if (isDev || isDaemon) {
78
+ initSessionAndRoutes(app);
79
+ server = app.listen(port, "0.0.0.0", () => {
80
+ writeToLogFile(`Server started`, {
81
+ source: "SERVER",
82
+ meta: { port },
83
+ });
84
+ });
85
+ server.on("connection", (socket) => {
86
+ // VERY IMP : SOMETIMES A OLD STALE CONN WHICH IS IN OS LAYER GETS TO NODE AFTER THE NODE INSTANCE RESTARTS SO SERVER CANT BE CLOSED PROPERLY LEADING INTO FORCE SHUTDOWN INSTEAD OF GRACEFUL
87
+ // USE THIS SETTIMEOUT SO EVEN IF STALE CONN OPENS AGAiN IT GETS CLOSED
88
+ socket.setTimeout(5000);
89
+ socket.on("timeout", () => socket.destroy());
90
+ });
91
+ }
92
+ else {
93
+ createSystemdService({
94
+ serviceName: "vps-deployer",
95
+ execPath: process.argv[1] ?? "",
96
+ args: process.argv.slice(2),
97
+ workingDir: path,
98
+ });
99
+ writeToLogFile(`Systemd service file created. Run "vps-deployer start" to start the service.`, {
100
+ source: "SYSTEM",
101
+ });
102
+ closeDB();
103
+ closeLogger();
104
+ console.log(`Systemd service file created. Run "vps-deployer start" to start the service.`);
105
+ process.exit(0);
106
+ }
107
+ }
108
+ catch (error) {
109
+ console.log(error.message);
110
+ process.exit(1);
111
+ }
112
+ }
113
+ process.on("SIGINT", () => shutdown("SIGINT"));
114
+ process.on("SIGTERM", () => shutdown("SIGTERM"));
115
+ process.on("uncaughtException", (err) => {
116
+ writeToLogFile("Uncaught Exception", {
117
+ level: "ERROR",
118
+ source: "SYSTEM",
119
+ meta: { error: err.message },
120
+ });
121
+ shutdown("uncaughtException");
122
+ });
123
+ process.on("unhandledRejection", (reason) => {
124
+ writeToLogFile("Unhandled Rejection", {
125
+ level: "ERROR",
126
+ source: "SYSTEM",
127
+ meta: { reason },
128
+ });
129
+ shutdown("unhandledRejection");
130
+ });
131
+ main();
132
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Request, Response, NextFunction } from "express";
2
+ export declare const requireAuth: (req: Request, res: Response, next: NextFunction) => void;
3
+ //# sourceMappingURL=auth.middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.middleware.d.ts","sourceRoot":"","sources":["../../src/middleware/auth.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE/D,eAAO,MAAM,WAAW,GAAI,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,SAM1E,CAAC"}
@@ -0,0 +1,7 @@
1
+ export const requireAuth = (req, res, next) => {
2
+ if (!req.session || !req.session.user) {
3
+ return res.redirect("/login");
4
+ }
5
+ next();
6
+ };
7
+ //# sourceMappingURL=auth.middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.middleware.js","sourceRoot":"","sources":["../../src/middleware/auth.middleware.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IAC7E,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACtC,OAAO,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,EAAE,CAAC;AACT,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare const router: import("express-serve-static-core").Router;
2
+ export default router;
3
+ //# sourceMappingURL=auth.route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.route.d.ts","sourceRoot":"","sources":["../../../src/modules/auth/auth.route.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,MAAM,4CAAW,CAAA;AAavB,eAAe,MAAM,CAAA"}
@@ -0,0 +1,16 @@
1
+ import { Router } from "express";
2
+ import { login, register, viewLogin, viewRegister } from "./controllers/auth.controller.js";
3
+ import limitNgin from 'limitngin';
4
+ const router = Router();
5
+ router.use(limitNgin({
6
+ allowedNoOfRequests: 40,
7
+ intervalInSec: 60,
8
+ algorithm: 'sliding_window_counter',
9
+ blocks: 'ip_addr'
10
+ }));
11
+ router.get('/login', viewLogin);
12
+ router.get('/register', viewRegister);
13
+ router.post('/login', login);
14
+ router.post('/register', register);
15
+ export default router;
16
+ //# sourceMappingURL=auth.route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.route.js","sourceRoot":"","sources":["../../../src/modules/auth/auth.route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAC5F,OAAO,SAAS,MAAM,WAAW,CAAA;AAEjC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAA;AACvB,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;IACjB,mBAAmB,EAAE,EAAE;IACvB,aAAa,EAAE,EAAE;IACjB,SAAS,EAAE,wBAAwB;IACnC,MAAM,EAAC,SAAS;CACnB,CAAC,CAAC,CAAA;AAEH,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAC,SAAS,CAAC,CAAA;AAC9B,MAAM,CAAC,GAAG,CAAC,WAAW,EAAC,YAAY,CAAC,CAAA;AACpC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAC,KAAK,CAAC,CAAA;AAC3B,MAAM,CAAC,IAAI,CAAC,WAAW,EAAC,QAAQ,CAAC,CAAA;AAEjC,eAAe,MAAM,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type { Request, Response } from "express";
2
+ export declare const viewLogin: (req: Request, res: Response) => Promise<void>;
3
+ export declare const login: (req: Request, res: Response) => Promise<void>;
4
+ export declare const viewRegister: (_req: Request, res: Response) => Promise<void>;
5
+ export declare const register: (req: Request, res: Response) => Promise<void>;
6
+ //# sourceMappingURL=auth.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.controller.d.ts","sourceRoot":"","sources":["../../../../src/modules/auth/controllers/auth.controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAIjD,eAAO,MAAM,SAAS,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,kBAO1D,CAAC;AAEF,eAAO,MAAM,KAAK,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,kBAmEtD,CAAC;AAEF,eAAO,MAAM,YAAY,GAAU,MAAM,OAAO,EAAE,KAAK,QAAQ,kBAM9D,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,kBA8DzD,CAAC"}