List of commits:
Subject Hash Author Date (UTC)
Set the user's last IP also if she never logged in 556ff3e7df07863f977caac1cb25906f8c307583 Catalin(ux) M. BOIE 2020-08-17 06:44:03
Cosmetic d2a744bd020154afa13961f9d3d3da4c51853ff4 Catalin(ux) M. BOIE 2020-08-17 06:42:23
Improved nginx ssl configuration (mostly stapling) a029f78cc3f66605dd95dfcc2abc9976ee1f7076 Catalin(ux) M. BOIE 2020-08-06 05:05:49
Tutorials updates (artifacts and CI) 36ee6f7b792f32a8567c3f2f31088559ab6cd27a Catalin(ux) M. BOIE 2020-08-05 06:16:33
Added Markdown test 23455db9b6ce8a82245f06de6e3d7c7e6b706464 Catalin(ux) M. BOIE 2020-07-31 05:41:46
Some SELinux cosmetic 3bafeaa06231a67dcc66d37b50a6f5411b2bfbf9 Catalin(ux) M. BOIE 2020-07-31 05:41:28
Mostly cosmetic plus some tests 1a538fff7a4886395612471211eeca0c091e6864 Catalin(ux) M. BOIE 2020-07-31 05:41:02
Added a custom Markdown parser 67b9687fb858ba1018d58edd276836a0411acd1e Catalin(ux) M. BOIE 2020-07-31 05:39:49
Add an index variable to rg_template_table f310f34a6c9a2a029d479d14d86e8ea2393ee3dd Catalin(ux) M. BOIE 2020-07-31 05:39:29
Mostly cosmetic in Source page cac471307a58104fbfa7838b34a7e2ffd2e05260 Catalin(ux) M. BOIE 2020-07-31 05:38:48
Do not log bots connections ef9cdff6a0cbd559f1833e46a66cbbbe726d3d99 Catalin(ux) M. BOIE 2020-07-31 05:38:13
Comparison update b67344452d66b2ed8ef53f65470d53f8b40fe59e Catalin(ux) M. BOIE 2020-07-31 05:37:38
Minor fix for a variable type mismatch a0680065333729b91558e77a6df4403ce8f5b1a5 Catalin(ux) M. BOIE 2020-07-31 05:37:20
Minor git fixes a21b35cd0f87b844fe5ce4b8b2e14fab2506296e Catalin(ux) M. BOIE 2020-07-31 05:36:43
Docker updates d3e9cd4e358cac2d4018dcf7dc681288445a679f Catalin(ux) M. BOIE 2020-07-31 05:36:08
Admin report improvements b527baab12e2e08998672559b0f33fc6df15e74c Catalin(ux) M. BOIE 2020-07-31 05:35:25
Cosmetic 30c879d625b094a33bd9a2165c67a8a11e802f42 Catalin(ux) M. BOIE 2020-07-31 05:34:19
Builder, worker and web updates for artifacts c82a7143a24ec987e0d98bb58327ef15bc602d0d Catalin(ux) M. BOIE 2020-07-31 05:30:44
Prevent bots to create accounts 3eacd8103e9a039f3f8585a59c27fdff6fd66ca4 Catalin(ux) M. BOIE 2020-07-08 05:25:37
css: Force the footer to the bottom using flex f89dddc9fa6b2c131448996cc51349e00224eea6 Catalin(ux) M. BOIE 2020-07-04 04:15:03
Commit 556ff3e7df07863f977caac1cb25906f8c307583 - Set the user's last IP also if she never logged in
Author: Catalin(ux) M. BOIE
Author date (UTC): 2020-08-17 06:44
Committer name: Catalin(ux) M. BOIE
Committer date (UTC): 2020-08-17 06:44
Parent(s): d2a744bd020154afa13961f9d3d3da4c51853ff4
Signer:
Signing key:
Signing status: N
Tree: 1b29d30d096239b990aed7435ce69915f3670d1b
File Lines added Lines deleted
inc/admin.inc.php 1 0
inc/ldap_core.inc.php 0 1
inc/login/login.php 2 2
inc/user.inc.php 12 11
tests/user.php 2 0
File inc/admin.inc.php changed (mode: 100644) (index 5d99e24..c0453f1)
... ... function rg_init($db, $rg)
227 227 $rg['init']['pass2'] = rg_var_str('init::pass2'); $rg['init']['pass2'] = rg_var_str('init::pass2');
228 228 $rg['init']['session_time'] = rg_var_uint('init::session_time'); $rg['init']['session_time'] = rg_var_uint('init::session_time');
229 229 $rg['init']['confirmed'] = time(); /* = no need to confirm */ $rg['init']['confirmed'] = time(); /* = no need to confirm */
230 $rg['init']['last_ip'] = $rg['ip'];
230 231
231 232 if (!rg_valid_referer()) { if (!rg_valid_referer()) {
232 233 $errmsg[] = "invalid referer; try again"; $errmsg[] = "invalid referer; try again";
File inc/ldap_core.inc.php changed (mode: 100644) (index f96d472..ba34d06)
... ... function rg_ldap_core_ldif2array($data)
249 249 return $ret; return $ret;
250 250 } }
251 251
252 ?>
File inc/login/login.php changed (mode: 100644) (index a507408..d7ab5d6)
... ... while ($rg['doit'] == 1) {
22 22 } }
23 23
24 24 $r = rg_user_login_by_user_pass($db, $user, $pass, $login_token, $r = rg_user_login_by_user_pass($db, $user, $pass, $login_token,
25 $lock_ip, $rg['https'], $rg['hostname'], $rg['login_ui']);
25 $rg['ip'], $lock_ip, $rg['https'], $rg['hostname'],
26 $rg['login_ui']);
26 27 if ($r['ok'] !== 1) { if ($r['ok'] !== 1) {
27 28 $errmsg[] = $r['errmsg']; $errmsg[] = $r['errmsg'];
28 29 break; break;
 
... ... $rg['forgot_send'] = rg_re_url("/op/forgot_send");
46 47 $rg['create_account'] = rg_re_url("/op/create_account"); $rg['create_account'] = rg_re_url("/op/create_account");
47 48 $rg['rg_form_token'] = rg_token_get($db, $rg, 'login'); $rg['rg_form_token'] = rg_token_get($db, $rg, 'login');
48 49 $_login .= rg_template("user/login.html", $rg, TRUE /*xss*/); $_login .= rg_template("user/login.html", $rg, TRUE /*xss*/);
49 ?>
File inc/user.inc.php changed (mode: 100644) (index 1561c75..26c4e2c)
... ... function rg_user_edit_no_check($db, $d)
560 560 . ', is_admin, rights, session_time' . ', is_admin, rights, session_time'
561 561 . ', confirmed, confirm_token, plan_id' . ', confirmed, confirm_token, plan_id'
562 562 . ', suspended, last_seen, disk_used_mb' . ', suspended, last_seen, disk_used_mb'
563 . ', deleted)'
563 . ', deleted, last_ip)'
564 564 . ' VALUES (@@username@@, @@realname@@, @@salt@@' . ' VALUES (@@username@@, @@realname@@, @@salt@@'
565 565 . ', @@pass@@, @@email@@, @@itime@@' . ', @@pass@@, @@email@@, @@itime@@'
566 566 . ', @@is_admin@@, @@rights@@, @@session_time@@' . ', @@is_admin@@, @@rights@@, @@session_time@@'
567 567 . ', @@confirmed@@, @@confirm_token@@, @@plan_id@@' . ', @@confirmed@@, @@confirm_token@@, @@plan_id@@'
568 568 . ', @@suspended@@, @@last_seen@@' . ', @@suspended@@, @@last_seen@@'
569 569 . ', @@disk_used_mb@@, @@deleted@@' . ', @@disk_used_mb@@, @@deleted@@'
570 . ')'
570 . ', @@last_ip@@)'
571 571 . ' RETURNING uid'; . ' RETURNING uid';
572 572
573 573 $ignore = array(RG_SQL_UNIQUE_VIOLATION); $ignore = array(RG_SQL_UNIQUE_VIOLATION);
 
... ... function rg_user_auto_login($db, $uid, $lock_ip, $https, $domain, &$ui)
1014 1014 /* /*
1015 1015 * Helper for rg_user_login_by_user_pass for db * Helper for rg_user_login_by_user_pass for db
1016 1016 */ */
1017 function rg_user_login_by_user_pass_db($db, $user, $pass, $lock_ip, $https,
1017 function rg_user_login_by_user_pass_db($db, $user, $pass, $ip, $lock_ip, $https,
1018 1018 $domain, &$ui) $domain, &$ui)
1019 1019 { {
1020 1020 global $rg_account_email_confirm; global $rg_account_email_confirm;
 
... ... function rg_user_login_by_user_pass_db($db, $user, $pass, $lock_ip, $https,
1064 1064 * Authorize a user * Authorize a user
1065 1065 */ */
1066 1066 function rg_user_login_by_user_pass_helper($db, $user, $pass, $login_token, function rg_user_login_by_user_pass_helper($db, $user, $pass, $login_token,
1067 $lock_ip, $https, $domain, &$ui)
1067 $ip, $lock_ip, $https, $domain, &$ui)
1068 1068 { {
1069 1069 global $rg_login_functions; global $rg_login_functions;
1070 1070
 
... ... function rg_user_login_by_user_pass_helper($db, $user, $pass, $login_token,
1089 1089
1090 1090 while (1) { while (1) {
1091 1091 $r = rg_user_login_by_user_pass_db($db, $user, $pass, $r = rg_user_login_by_user_pass_db($db, $user, $pass,
1092 $lock_ip, $https, $domain, $ui);
1092 $ip, $lock_ip, $https, $domain, $ui);
1093 1093 if ($r === TRUE) if ($r === TRUE)
1094 1094 break; break;
1095 1095
 
... ... function rg_user_login_by_user_pass_helper($db, $user, $pass, $login_token,
1118 1118 // to set uid into external auth table. // to set uid into external auth table.
1119 1119
1120 1120 rg_log('DEBUG: user not in \'users\' table (ui[uid] 0), add it'); rg_log('DEBUG: user not in \'users\' table (ui[uid] 0), add it');
1121 $ui['last_ip'] = $ip;
1121 1122 $r = rg_user_edit_no_check($db, $ui); $r = rg_user_edit_no_check($db, $ui);
1122 1123 if ($r['ok'] !== 1) { if ($r['ok'] !== 1) {
1123 1124 if ($r['already_exists'] == 0) { if ($r['already_exists'] == 0) {
 
... ... function rg_user_login_by_user_pass_helper($db, $user, $pass, $login_token,
1283 1284 } }
1284 1285
1285 1286 function rg_user_login_by_user_pass($db, $user, $pass, $login_token, function rg_user_login_by_user_pass($db, $user, $pass, $login_token,
1286 $lock_ip, $https, $domain, &$ui)
1287 $ip, $lock_ip, $https, $domain, &$ui)
1287 1288 { {
1288 1289 rg_prof_start('user_login_by_user_pass'); rg_prof_start('user_login_by_user_pass');
1289 1290 rg_log_enter('rg_user_login_by_user_pass'); rg_log_enter('rg_user_login_by_user_pass');
1290 1291
1291 1292 while (1) { while (1) {
1292 1293 $ret = rg_user_login_by_user_pass_helper($db, $user, $pass, $ret = rg_user_login_by_user_pass_helper($db, $user, $pass,
1293 $login_token, $lock_ip, $https, $domain, $ui);
1294 $login_token, $ip, $lock_ip, $https, $domain, $ui);
1294 1295 if ($ret['ok'] == 1) if ($ret['ok'] == 1)
1295 1296 break; break;
1296 1297
 
... ... function rg_user_login_by_user_pass($db, $user, $pass, $login_token,
1301 1302 $lt = substr($pass, -6); $lt = substr($pass, -6);
1302 1303 $pass2 = substr($pass, 0, -6); $pass2 = substr($pass, 0, -6);
1303 1304 $ret = rg_user_login_by_user_pass_helper($db, $user, $pass2, $ret = rg_user_login_by_user_pass_helper($db, $user, $pass2,
1304 $lt, $lock_ip, $https, $domain, $ui);
1305 $lt, $ip, $lock_ip, $https, $domain, $ui);
1305 1306 if ($ret['ok'] == 1) if ($ret['ok'] == 1)
1306 1307 break; break;
1307 1308
 
... ... function rg_user_login_by_user_pass($db, $user, $pass, $login_token,
1309 1310 $lt = substr($pass, -8); $lt = substr($pass, -8);
1310 1311 $pass2 = substr($pass, 0, -8); $pass2 = substr($pass, 0, -8);
1311 1312 $ret = rg_user_login_by_user_pass_helper($db, $user, $pass2, $ret = rg_user_login_by_user_pass_helper($db, $user, $pass2,
1312 $lt, $lock_ip, $https, $domain, $ui);
1313 $lt, $ip, $lock_ip, $https, $domain, $ui);
1313 1314 break; break;
1314 1315 } }
1315 1316
 
... ... function rg_user_edit_high_level($db, &$rg)
1983 1984 $ui['tos'] = 1; $ui['tos'] = 1;
1984 1985 else else
1985 1986 $ui['tos'] = rg_var_uint('tos'); $ui['tos'] = rg_var_uint('tos');
1987 $ui['last_ip'] = $rg['ip'];
1986 1988
1987 1989 $ui['confirm_token'] = rg_id(20); $ui['confirm_token'] = rg_id(20);
1988 1990 if ($rg['target_ui']['uid'] > 0) { if ($rg['target_ui']['uid'] > 0) {
 
... ... function rg_user_http_git($db, $rg, $paras)
2380 2382 break; break;
2381 2383 } }
2382 2384 $authd = rg_user_login_by_user_pass($db, $u, $p, $authd = rg_user_login_by_user_pass($db, $u, $p,
2383 '' /*login_token*/, TRUE /*lock IP*/,
2385 '' /*login_token*/, $rg['ip'], TRUE /*lock IP*/,
2384 2386 $rg['https'], $rg['hostname'], $rg['login_ui']); $rg['https'], $rg['hostname'], $rg['login_ui']);
2385 2387 break; break;
2386 2388 } }
 
... ... function rg_user_delete_account_high_level($db, $rg, $paras)
2686 2688 return $ret; return $ret;
2687 2689 } }
2688 2690
2689 ?>
File tests/user.php changed (mode: 100644) (index 4155f0f..b39996f)
... ... $_u['session_time'] = 3600;
58 58 $_u['confirm_token'] = ""; $_u['confirm_token'] = "";
59 59 $_u['confirmed'] = 0; $_u['confirmed'] = 0;
60 60 $_u['plan_id'] = 1000; $_u['plan_id'] = 1000;
61 $_u['last_ip'] = '?';
61 62 $uid = rg_user_edit($db, $_u); $uid = rg_user_edit($db, $_u);
62 63 if ($uid === FALSE) { if ($uid === FALSE) {
63 64 rg_log("Cannot add user (" . rg_user_error() . ")!"); rg_log("Cannot add user (" . rg_user_error() . ")!");
 
... ... $_u['session_time'] = 3600;
206 207 $_u['confirm_token'] = ""; $_u['confirm_token'] = "";
207 208 $_u['confirmed'] = 0; $_u['confirmed'] = 0;
208 209 $_u['plan_id'] = 1000; $_u['plan_id'] = 1000;
210 $_u['last_ip'] = '?';
209 211 $uid5 = rg_user_edit($db, $_u); $uid5 = rg_user_edit($db, $_u);
210 212 if ($uid5 === FALSE) { if ($uid5 === FALSE) {
211 213 rg_log("Cannot add user5 (" . rg_user_error() . ")!"); rg_log("Cannot add user5 (" . rg_user_error() . ")!");
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/catalinux/rocketgit

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/catalinux/rocketgit

Clone this repository using git:
git clone git://git.rocketgit.com/user/catalinux/rocketgit

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main