@saltcorn/server 0.9.5-beta.27 → 0.9.5-beta.28

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.
package/locales/en.json CHANGED
@@ -1414,5 +1414,7 @@
1414
1414
  "Do not wrap response in a success object": "Do not wrap response in a success object",
1415
1415
  "Use table description instead of name as header": "Use table description instead of name as header",
1416
1416
  "Description header": "Description header",
1417
- "Lazy load views": "Lazy load views"
1417
+ "Lazy load views": "Lazy load views",
1418
+ "Log IP address": "Log IP address",
1419
+ "Record the request IP address in log messages": "Record the request IP address in log messages"
1418
1420
  }
package/package.json CHANGED
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "name": "@saltcorn/server",
3
- "version": "0.9.5-beta.27",
3
+ "version": "0.9.5-beta.28",
4
4
  "description": "Server app for Saltcorn, open-source no-code platform",
5
5
  "homepage": "https://saltcorn.com",
6
6
  "main": "index.js",
7
7
  "license": "MIT",
8
8
  "dependencies": {
9
9
  "@aws-sdk/client-s3": "^3.451.0",
10
- "@saltcorn/base-plugin": "0.9.5-beta.27",
11
- "@saltcorn/builder": "0.9.5-beta.27",
12
- "@saltcorn/data": "0.9.5-beta.27",
13
- "@saltcorn/admin-models": "0.9.5-beta.27",
14
- "@saltcorn/filemanager": "0.9.5-beta.27",
15
- "@saltcorn/markup": "0.9.5-beta.27",
16
- "@saltcorn/plugins-loader": "0.9.5-beta.27",
17
- "@saltcorn/sbadmin2": "0.9.5-beta.27",
10
+ "@saltcorn/base-plugin": "0.9.5-beta.28",
11
+ "@saltcorn/builder": "0.9.5-beta.28",
12
+ "@saltcorn/data": "0.9.5-beta.28",
13
+ "@saltcorn/admin-models": "0.9.5-beta.28",
14
+ "@saltcorn/filemanager": "0.9.5-beta.28",
15
+ "@saltcorn/markup": "0.9.5-beta.28",
16
+ "@saltcorn/plugins-loader": "0.9.5-beta.28",
17
+ "@saltcorn/sbadmin2": "0.9.5-beta.28",
18
18
  "@socket.io/cluster-adapter": "^0.2.1",
19
19
  "@socket.io/sticky": "^1.0.1",
20
20
  "adm-zip": "0.5.10",
package/routes/admin.js CHANGED
@@ -2865,6 +2865,7 @@ admin_config_route({
2865
2865
  "development_mode",
2866
2866
  "log_sql",
2867
2867
  "log_client_errors",
2868
+ "log_ip_address",
2868
2869
  "log_level",
2869
2870
  ...(isRoot || tenants_set_npm_modules ? ["npm_available_js_code"] : []),
2870
2871
  ],
package/routes/page.js CHANGED
@@ -135,7 +135,13 @@ router.get(
135
135
  "/:pagename",
136
136
  error_catcher(async (req, res) => {
137
137
  const { pagename } = req.params;
138
- getState().log(3, `Route /page/${pagename} user=${req.user?.id}`);
138
+ const state = getState();
139
+ state.log(
140
+ 3,
141
+ `Route /page/${pagename} user=${req.user?.id}${
142
+ state.getConfig("log_ip_address", false) ? ` IP=${req.ip}` : ""
143
+ }`
144
+ );
139
145
  const tic = new Date();
140
146
  const { page, pageGroup } = findPageOrGroup(pagename);
141
147
  if (page) await runPage(page, req, res, tic);
@@ -144,7 +150,7 @@ router.get(
144
150
  if ((page || pageGroup) && !req.user) {
145
151
  res.redirect(`/auth/login?dest=${encodeURIComponent(req.originalUrl)}`);
146
152
  } else {
147
- getState().log(2, `Page ${pagename} not found or not authorized`);
153
+ state.log(2, `Page ${pagename} not found or not authorized`);
148
154
  res
149
155
  .status(404)
150
156
  .sendWrap(
package/routes/tenant.js CHANGED
@@ -96,6 +96,7 @@ const tenant_form = (req, base_url) =>
96
96
  label: req.__("Application name"),
97
97
  input_type: "text",
98
98
  postText: text("." + base_url),
99
+ attributes: { autofocus: true },
99
100
  },
100
101
  ],
101
102
  });
package/routes/utils.js CHANGED
@@ -203,7 +203,15 @@ const setTenant = (req, res, next) => {
203
203
  } else {
204
204
  db.runWithTenant(other_domain, () => {
205
205
  setLanguage(req, res, state);
206
- state.log(5, `${req.method} ${req.originalUrl}`);
206
+ if (state.logLevel >= 5)
207
+ state.log(
208
+ 5,
209
+ `${req.method} ${req.originalUrl}${
210
+ state.getConfig("log_ip_address", false)
211
+ ? ` IP=${req.ip}`
212
+ : ""
213
+ }`
214
+ );
207
215
  next();
208
216
  });
209
217
  }
@@ -216,7 +224,15 @@ const setTenant = (req, res, next) => {
216
224
  } else {
217
225
  db.runWithTenant(ten, () => {
218
226
  setLanguage(req, res, state);
219
- state.log(5, `${req.method} ${req.originalUrl}`);
227
+ if (state.logLevel >= 5)
228
+ state.log(
229
+ 5,
230
+ `${req.method} ${req.originalUrl}${
231
+ state.getConfig("log_ip_address", false)
232
+ ? ` IP=${req.ip}`
233
+ : ""
234
+ }`
235
+ );
220
236
  next();
221
237
  });
222
238
  }
package/routes/view.js CHANGED
@@ -45,7 +45,12 @@ router.get(
45
45
  const view = await View.findOne({ name: viewname });
46
46
  const role = req.user && req.user.id ? req.user.role_id : 100;
47
47
  const state = getState();
48
- state.log(3, `Route /view/${viewname} user=${req.user?.id}`);
48
+ state.log(
49
+ 3,
50
+ `Route /view/${viewname} user=${req.user?.id}${
51
+ state.getConfig("log_ip_address", false) ? ` IP=${req.ip}` : ""
52
+ }`
53
+ );
49
54
  if (!view) {
50
55
  req.flash("danger", req.__(`No such view: %s`, text(viewname)));
51
56
  state.log(2, `View ${viewname} not found`);
@@ -207,7 +212,9 @@ router.post(
207
212
  const state = getState();
208
213
  state.log(
209
214
  3,
210
- `Route /view/${viewname} viewroute ${route} user=${req.user?.id}`
215
+ `Route /view/${viewname} viewroute ${route} user=${req.user?.id}${
216
+ state.getConfig("log_ip_address", false) ? ` IP=${req.ip}` : ""
217
+ }`
211
218
  );
212
219
 
213
220
  const view = await View.findOne({ name: viewname });
@@ -240,7 +247,12 @@ router.post(
240
247
  const role = req.user && req.user.id ? req.user.role_id : 100;
241
248
  const query = { ...req.query };
242
249
  const state = getState();
243
- state.log(3, `Route /view/${viewname} POST user=${req.user?.id}`);
250
+ state.log(
251
+ 3,
252
+ `Route /view/${viewname} POST user=${req.user?.id}${
253
+ state.getConfig("log_ip_address", false) ? ` IP=${req.ip}` : ""
254
+ }`
255
+ );
244
256
  const view = await View.findOne({ name: viewname });
245
257
  if (!view) {
246
258
  req.flash("danger", req.__(`No such view: %s`, text(viewname)));