File inc/user.inc.php changed (mode: 100644) (index c50a7bf..b66dea8) |
... |
... |
function rg_user_pass_valid($db, $uid, $pass) |
945 |
945 |
/* |
/* |
946 |
946 |
* Set session cookie |
* Set session cookie |
947 |
947 |
*/ |
*/ |
948 |
|
function rg_user_set_session_cookie($db, $uid, $sess_time, $lock_ip, $domain) |
|
|
948 |
|
function rg_user_set_session_cookie($db, $uid, $sess_time, $lock_ip, $https, |
|
949 |
|
$domain) |
949 |
950 |
{ |
{ |
950 |
|
rg_log_enter("user_set_session_cookie: uid=$uid"); |
|
|
951 |
|
rg_log_enter("user_set_session_cookie: uid=$uid domain=$domain"); |
951 |
952 |
|
|
952 |
|
$secure = FALSE; |
|
953 |
|
if (isset($_SERVER['HTTPS'])) { |
|
|
953 |
|
if ($https) { |
954 |
954 |
$secure = TRUE; |
$secure = TRUE; |
955 |
955 |
$cookie_name = 'sids'; |
$cookie_name = 'sids'; |
956 |
956 |
} else { |
} else { |
|
957 |
|
$secure = FALSE; |
957 |
958 |
$cookie_name = 'sidu'; |
$cookie_name = 'sidu'; |
958 |
959 |
} |
} |
959 |
960 |
|
|
|
... |
... |
function rg_user_set_session_cookie($db, $uid, $sess_time, $lock_ip, $domain) |
974 |
975 |
/* |
/* |
975 |
976 |
* Auto login the user |
* Auto login the user |
976 |
977 |
*/ |
*/ |
977 |
|
function rg_user_auto_login($db, $uid, $lock_ip, $domain, &$ui) |
|
|
978 |
|
function rg_user_auto_login($db, $uid, $lock_ip, $https, $domain, &$ui) |
978 |
979 |
{ |
{ |
979 |
980 |
rg_prof_start("user_auto_login"); |
rg_prof_start("user_auto_login"); |
980 |
981 |
rg_log_enter("user_auto_login: uid=$uid lock_ip=$lock_ip"); |
rg_log_enter("user_auto_login: uid=$uid lock_ip=$lock_ip"); |
|
... |
... |
function rg_user_auto_login($db, $uid, $lock_ip, $domain, &$ui) |
991 |
992 |
} |
} |
992 |
993 |
|
|
993 |
994 |
rg_user_set_session_cookie($db, $uid, $ui['session_time'], |
rg_user_set_session_cookie($db, $uid, $ui['session_time'], |
994 |
|
$lock_ip, $domain); |
|
|
995 |
|
$lock_ip, $https, $domain); |
995 |
996 |
|
|
996 |
997 |
$ret = TRUE; |
$ret = TRUE; |
997 |
998 |
break; |
break; |
|
... |
... |
function rg_user_auto_login($db, $uid, $lock_ip, $domain, &$ui) |
1005 |
1006 |
/* |
/* |
1006 |
1007 |
* Helper for rg_user_login_by_user_pass for db |
* Helper for rg_user_login_by_user_pass for db |
1007 |
1008 |
*/ |
*/ |
1008 |
|
function rg_user_login_by_user_pass_db($db, $user, $pass, $lock_ip, $domain, |
|
1009 |
|
&$ui) |
|
|
1009 |
|
function rg_user_login_by_user_pass_db($db, $user, $pass, $lock_ip, $https, |
|
1010 |
|
$domain, &$ui) |
1010 |
1011 |
{ |
{ |
1011 |
1012 |
global $rg_account_email_confirm; |
global $rg_account_email_confirm; |
1012 |
1013 |
|
|
1013 |
1014 |
rg_prof_start('user_login_by_user_pass_db'); |
rg_prof_start('user_login_by_user_pass_db'); |
1014 |
1015 |
rg_log_enter('user_login_by_user_pass_db: user=' . $user |
rg_log_enter('user_login_by_user_pass_db: user=' . $user |
1015 |
|
. ' lock_ip=' . $lock_ip . ' domain=' . $domain); |
|
|
1016 |
|
. ' lock_ip=' . $lock_ip . ' https=' . $https |
|
1017 |
|
. ' domain=' . $domain); |
1016 |
1018 |
|
|
1017 |
1019 |
$ui = rg_user_empty(); |
$ui = rg_user_empty(); |
1018 |
1020 |
|
|
|
... |
... |
function rg_user_login_by_user_pass_db($db, $user, $pass, $lock_ip, $domain, |
1054 |
1056 |
* Authorize a user |
* Authorize a user |
1055 |
1057 |
*/ |
*/ |
1056 |
1058 |
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, |
1057 |
|
$lock_ip, $domain, &$ui) |
|
|
1059 |
|
$lock_ip, $https, $domain, &$ui) |
1058 |
1060 |
{ |
{ |
1059 |
1061 |
global $rg_login_functions; |
global $rg_login_functions; |
1060 |
1062 |
|
|
|
... |
... |
function rg_user_login_by_user_pass_helper($db, $user, $pass, $login_token, |
1064 |
1066 |
rg_prof_start('user_login_by_user_pass_helper'); |
rg_prof_start('user_login_by_user_pass_helper'); |
1065 |
1067 |
rg_log_enter('user_login_by_user_pass_helper: user=' . $user |
rg_log_enter('user_login_by_user_pass_helper: user=' . $user |
1066 |
1068 |
. ' login_token=' . $login_token . ' lock_ip=' . $lock_ip |
. ' login_token=' . $login_token . ' lock_ip=' . $lock_ip |
1067 |
|
. ' domain=' . $domain); |
|
|
1069 |
|
. ' https=' . $https . ' domain=' . $domain); |
1068 |
1070 |
|
|
1069 |
1071 |
$ui = rg_user_empty(); |
$ui = rg_user_empty(); |
1070 |
1072 |
|
|
|
... |
... |
function rg_user_login_by_user_pass_helper($db, $user, $pass, $login_token, |
1079 |
1081 |
|
|
1080 |
1082 |
while (1) { |
while (1) { |
1081 |
1083 |
$r = rg_user_login_by_user_pass_db($db, $user, $pass, |
$r = rg_user_login_by_user_pass_db($db, $user, $pass, |
1082 |
|
$lock_ip, $domain, $ui); |
|
|
1084 |
|
$lock_ip, $https, $domain, $ui); |
1083 |
1085 |
if ($r === TRUE) |
if ($r === TRUE) |
1084 |
1086 |
break; |
break; |
1085 |
1087 |
|
|
|
... |
... |
function rg_user_login_by_user_pass_helper($db, $user, $pass, $login_token, |
1260 |
1262 |
} |
} |
1261 |
1263 |
rg_event_signal_daemon('', 0); |
rg_event_signal_daemon('', 0); |
1262 |
1264 |
|
|
1263 |
|
rg_user_auto_login($db, $ui['uid'], $lock_ip, $domain, $ui); |
|
|
1265 |
|
rg_user_auto_login($db, $ui['uid'], $lock_ip, $https, $domain, |
|
1266 |
|
$ui); |
1264 |
1267 |
|
|
1265 |
1268 |
$ret['ok'] = 1; |
$ret['ok'] = 1; |
1266 |
1269 |
break; |
break; |
|
... |
... |
function rg_user_login_by_user_pass_helper($db, $user, $pass, $login_token, |
1272 |
1275 |
} |
} |
1273 |
1276 |
|
|
1274 |
1277 |
function rg_user_login_by_user_pass($db, $user, $pass, $login_token, |
function rg_user_login_by_user_pass($db, $user, $pass, $login_token, |
1275 |
|
$lock_ip, $domain, &$ui) |
|
|
1278 |
|
$lock_ip, $https, $domain, &$ui) |
1276 |
1279 |
{ |
{ |
1277 |
1280 |
rg_prof_start('user_login_by_user_pass'); |
rg_prof_start('user_login_by_user_pass'); |
1278 |
1281 |
rg_log_enter('rg_user_login_by_user_pass'); |
rg_log_enter('rg_user_login_by_user_pass'); |
1279 |
1282 |
|
|
1280 |
1283 |
while (1) { |
while (1) { |
1281 |
1284 |
$ret = rg_user_login_by_user_pass_helper($db, $user, $pass, |
$ret = rg_user_login_by_user_pass_helper($db, $user, $pass, |
1282 |
|
$login_token, $lock_ip, $domain, $ui); |
|
|
1285 |
|
$login_token, $lock_ip, $https, $domain, $ui); |
1283 |
1286 |
if ($ret['ok'] == 1) |
if ($ret['ok'] == 1) |
1284 |
1287 |
break; |
break; |
1285 |
1288 |
|
|
|
... |
... |
function rg_user_login_by_user_pass($db, $user, $pass, $login_token, |
1290 |
1293 |
$lt = substr($pass, -6); |
$lt = substr($pass, -6); |
1291 |
1294 |
$pass2 = substr($pass, 0, -6); |
$pass2 = substr($pass, 0, -6); |
1292 |
1295 |
$ret = rg_user_login_by_user_pass_helper($db, $user, $pass2, |
$ret = rg_user_login_by_user_pass_helper($db, $user, $pass2, |
1293 |
|
$lt, $lock_ip, $domain, $ui); |
|
|
1296 |
|
$lt, $lock_ip, $https, $domain, $ui); |
1294 |
1297 |
if ($ret['ok'] == 1) |
if ($ret['ok'] == 1) |
1295 |
1298 |
break; |
break; |
1296 |
1299 |
|
|
|
... |
... |
function rg_user_login_by_user_pass($db, $user, $pass, $login_token, |
1298 |
1301 |
$lt = substr($pass, -8); |
$lt = substr($pass, -8); |
1299 |
1302 |
$pass2 = substr($pass, 0, -8); |
$pass2 = substr($pass, 0, -8); |
1300 |
1303 |
$ret = rg_user_login_by_user_pass_helper($db, $user, $pass2, |
$ret = rg_user_login_by_user_pass_helper($db, $user, $pass2, |
1301 |
|
$lt, $lock_ip, $domain, $ui); |
|
|
1304 |
|
$lt, $lock_ip, $https, $domain, $ui); |
1302 |
1305 |
break; |
break; |
1303 |
1306 |
} |
} |
1304 |
1307 |
|
|
|
... |
... |
function rg_user_http_git($db, $rg, $paras) |
2331 |
2334 |
} |
} |
2332 |
2335 |
$authd = rg_user_login_by_user_pass($db, $u, $p, |
$authd = rg_user_login_by_user_pass($db, $u, $p, |
2333 |
2336 |
'' /*login_token*/, TRUE /*lock IP*/, |
'' /*login_token*/, TRUE /*lock IP*/, |
2334 |
|
$rg['hostname'], $rg['login_ui']); |
|
|
2337 |
|
$rg['https'], $rg['hostname'], $rg['login_ui']); |
2335 |
2338 |
break; |
break; |
2336 |
2339 |
} |
} |
2337 |
2340 |
|
|
2338 |
|
$host = isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : ''; |
|
|
2341 |
|
$host = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : ''; |
2339 |
2342 |
// TODO: not clear if passing here login_ui is correct |
// TODO: not clear if passing here login_ui is correct |
2340 |
2343 |
$r = rg_repo_fetch_push_helper($db, $host, $rg['ip'], |
$r = rg_repo_fetch_push_helper($db, $host, $rg['ip'], |
2341 |
2344 |
$rg['login_ui'], $prefix, $user, $repo, $service); |
$rg['login_ui'], $prefix, $user, $repo, $service); |
|
... |
... |
function rg_user_http_git($db, $rg, $paras) |
2466 |
2469 |
rg_git_info_pack("\x02", 'date/time: ' . gmdate('Y-m-d H:i:s') |
rg_git_info_pack("\x02", 'date/time: ' . gmdate('Y-m-d H:i:s') |
2467 |
2470 |
. ' (UTC), debug id ' . $rg_log_sid . '.'); |
. ' (UTC), debug id ' . $rg_log_sid . '.'); |
2468 |
2471 |
// If user does not connect to the correct URL, correct them |
// If user does not connect to the correct URL, correct them |
2469 |
|
if (!empty($host) && (strcasecmp($host, $rg['hostname']) != 0)) |
|
2470 |
|
rg_git_info_pack("\x02", 'Please use ' . $rg['hostname'] |
|
|
2472 |
|
if (!empty($host) && (strcasecmp($host, $rg['hostname_port']) != 0)) |
|
2473 |
|
rg_git_info_pack("\x02", 'Please use ' . $rg['hostname_port'] |
2471 |
2474 |
. ' instead of ' . $host . '.'); |
. ' instead of ' . $host . '.'); |
2472 |
2475 |
putenv('ROCKETGIT_SHOW_INFO=0'); |
putenv('ROCKETGIT_SHOW_INFO=0'); |
2473 |
2476 |
*/ |
*/ |
|
... |
... |
function rg_user_http_git($db, $rg, $paras) |
2495 |
2498 |
rg_git_info_pack("\x02", 'date/time: ' . gmdate('Y-m-d H:i:s') |
rg_git_info_pack("\x02", 'date/time: ' . gmdate('Y-m-d H:i:s') |
2496 |
2499 |
. ' (UTC), debug id ' . $rg_log_sid . '.'); |
. ' (UTC), debug id ' . $rg_log_sid . '.'); |
2497 |
2500 |
// If user does not connect to the correct URL, correct them |
// If user does not connect to the correct URL, correct them |
2498 |
|
if (!empty($host) && (strcasecmp($host, $rg['hostname']) != 0)) |
|
2499 |
|
rg_git_info_pack("\x02", 'Please use ' . $rg['hostname'] |
|
|
2501 |
|
if (!empty($host) && (strcasecmp($host, $rg['hostname_port']) != 0)) |
|
2502 |
|
rg_git_info_pack("\x02", 'Please use ' . $rg['hostname_port'] |
2500 |
2503 |
. ' instead of ' . $host . '.'); |
. ' instead of ' . $host . '.'); |
2501 |
2504 |
putenv('ROCKETGIT_SHOW_INFO=0'); |
putenv('ROCKETGIT_SHOW_INFO=0'); |
2502 |
2505 |
|
|
File root/index.php changed (mode: 100644) (index 449892b..3594bf9) |
... |
... |
$rg['bug'] = array("bug_id" => 0); |
58 |
58 |
$rg['debug'] = isset($rg_allow_debug) ? |
$rg['debug'] = isset($rg_allow_debug) ? |
59 |
59 |
rg_var_uint('rg_debug') | intval(rg_var_cookie_re('rg_debug', '/[^0-9]/')) : 0; |
rg_var_uint('rg_debug') | intval(rg_var_cookie_re('rg_debug', '/[^0-9]/')) : 0; |
60 |
60 |
if ($rg['debug'] == 1) |
if ($rg['debug'] == 1) |
61 |
|
setcookie('rg_debug', '1', 0, '/', $_SERVER['SERVER_NAME'], |
|
|
61 |
|
setcookie('rg_debug', '1', 0, '/', $rg['hostname'], |
62 |
62 |
FALSE /*secure*/, FALSE /*httponly*/); |
FALSE /*secure*/, FALSE /*httponly*/); |
63 |
63 |
$rg['https'] = strcmp(rg_var_str('HTTPS'), 'on') == 0 ? 1 : 0; |
$rg['https'] = strcmp(rg_var_str('HTTPS'), 'on') == 0 ? 1 : 0; |
64 |
64 |
|
|
|
... |
... |
if ($r === FALSE) { |
116 |
116 |
$hostname = rg_state_get($db, 'hostname'); |
$hostname = rg_state_get($db, 'hostname'); |
117 |
117 |
$http_allow = rg_state_get($db, 'http_allow'); |
$http_allow = rg_state_get($db, 'http_allow'); |
118 |
118 |
$https_allow = rg_state_get($db, 'https_allow'); |
$https_allow = rg_state_get($db, 'https_allow'); |
119 |
|
if (isset($_SERVER['SERVER_NAME'])) { |
|
|
119 |
|
if (isset($_SERVER['HTTP_HOST'])) { |
|
120 |
|
// We trust HTTP_HOST: somehow the user managed to get here |
|
121 |
|
$sn = $_SERVER['HTTP_HOST']; |
|
122 |
|
$_t = explode(':', $sn); |
|
123 |
|
if (isset($_t[1])) { |
|
124 |
|
$sn = $_t[0]; |
|
125 |
|
$port = $_t[1]; |
|
126 |
|
} else { |
|
127 |
|
$port = $rg['https'] == 1 ? 443 : 80; |
|
128 |
|
} |
|
129 |
|
} else if (isset($_SERVER['SERVER_NAME']) |
|
130 |
|
&& (strcmp($_SERVER['SERVER_NAME'], '_') != 0)) { |
120 |
131 |
$sn = $_SERVER['SERVER_NAME']; |
$sn = $_SERVER['SERVER_NAME']; |
121 |
132 |
$port = $_SERVER['SERVER_PORT']; |
$port = $_SERVER['SERVER_PORT']; |
|
133 |
|
} else if (isset($_SERVER['SERVER_ADDR'])) { |
|
134 |
|
$sn = $_SERVER['SERVER_ADDR']; |
|
135 |
|
$port = $_SERVER['SERVER_PORT']; |
|
136 |
|
} else { |
|
137 |
|
$sn = php_uname('n'); |
|
138 |
|
$port = 80; |
|
139 |
|
} |
122 |
140 |
|
|
123 |
|
if (strcmp($sn, 'rg.domain.tld') == 0) { |
|
124 |
|
$sn = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : ''; |
|
125 |
|
$_t = explode(':', $sn); |
|
126 |
|
if (isset($_t[1])) { |
|
127 |
|
$sn = $_t[0]; |
|
128 |
|
$port = $_t[1]; |
|
129 |
|
rg_log('DEBUG: HTTP_HOST: we have port [' . $sn . ']' |
|
130 |
|
. ' [' . $port . ']'); |
|
131 |
|
} |
|
132 |
|
} |
|
133 |
|
if (empty($sn)) |
|
134 |
|
$sn = php_uname('n'); |
|
135 |
|
|
|
136 |
|
if ($hostname === FALSE) { |
|
137 |
|
$hostname = $sn; |
|
138 |
|
} else if (empty($hostname)) { |
|
139 |
|
$hostname = $sn; |
|
140 |
|
rg_state_set($db, 'hostname', $hostname); |
|
141 |
|
} |
|
|
141 |
|
if ($hostname === FALSE) { |
|
142 |
|
$hostname = $sn; |
|
143 |
|
} else if (empty($hostname)) { |
|
144 |
|
$hostname = $sn; |
|
145 |
|
rg_state_set($db, 'hostname', $hostname); |
|
146 |
|
} |
142 |
147 |
|
|
143 |
|
if ($rg['https'] == 1) { |
|
144 |
|
if ($https_allow === FALSE) { |
|
145 |
|
$https_allow = $port; |
|
146 |
|
} else if (strcmp($https_allow, '') == 0) { |
|
147 |
|
$https_allow = $port; |
|
148 |
|
rg_state_set($db, 'https_allow', $https_allow); |
|
149 |
|
} |
|
150 |
|
} else { |
|
151 |
|
if ($http_allow === FALSE) { |
|
152 |
|
$http_allow = $port; |
|
153 |
|
} else if (strcmp($http_allow, '') == 0) { |
|
154 |
|
$http_allow = $port; |
|
155 |
|
rg_state_set($db, 'http_allow', $http_allow); |
|
156 |
|
} |
|
|
148 |
|
if ($rg['https'] == 1) { |
|
149 |
|
if ($https_allow === FALSE) { |
|
150 |
|
$https_allow = $port; |
|
151 |
|
} else if (strcmp($https_allow, '') == 0) { |
|
152 |
|
$https_allow = $port; |
|
153 |
|
rg_state_set($db, 'https_allow', $https_allow); |
|
154 |
|
} |
|
155 |
|
} else { |
|
156 |
|
if ($http_allow === FALSE) { |
|
157 |
|
$http_allow = $port; |
|
158 |
|
} else if (strcmp($http_allow, '') == 0) { |
|
159 |
|
$http_allow = $port; |
|
160 |
|
rg_state_set($db, 'http_allow', $http_allow); |
157 |
161 |
} |
} |
158 |
162 |
} |
} |
|
163 |
|
|
159 |
164 |
rg_log('DEBUG: hostname=' . $hostname . ' http_allow=' . $http_allow |
rg_log('DEBUG: hostname=' . $hostname . ' http_allow=' . $http_allow |
160 |
165 |
. ' https_allow=' . $https_allow); |
. ' https_allow=' . $https_allow); |
161 |
166 |
rg_base_url_build($hostname, $http_allow, $https_allow); |
rg_base_url_build($hostname, $http_allow, $https_allow); |
162 |
167 |
rg_log('DEBUG: base_url=' . rg_base_url()); |
rg_log('DEBUG: base_url=' . rg_base_url()); |
163 |
168 |
$rg['hostname'] = $hostname; |
$rg['hostname'] = $hostname; |
|
169 |
|
$rg['hostname_port'] = |
|
170 |
|
rg_base_url_host_port($hostname, $port, $rg['https'] == 0 ? 80 : 443); |
164 |
171 |
$rg['http_allow'] = $http_allow; |
$rg['http_allow'] = $http_allow; |
165 |
172 |
$rg['https_allow'] = $https_allow; |
$rg['https_allow'] = $https_allow; |
166 |
173 |
$rg['base_url'] = rg_base_url(); |
$rg['base_url'] = rg_base_url(); |
|
... |
... |
if (($rg['login_ui']['uid'] == 0) && (strncmp($rg['sid'], "X", 1) != 0)) |
246 |
253 |
$rg['sid'] = ""; |
$rg['sid'] = ""; |
247 |
254 |
if (empty($rg['sid'])) { |
if (empty($rg['sid'])) { |
248 |
255 |
$rg['sid'] = rg_user_set_session_cookie($db, 0 /*uid*/, 600, |
$rg['sid'] = rg_user_set_session_cookie($db, 0 /*uid*/, 600, |
249 |
|
FALSE /*lock_ip*/, $rg['hostname']); |
|
|
256 |
|
FALSE /*lock_ip*/, $rg['https'], $rg['hostname']); |
250 |
257 |
rg_log("User has no sid, generate one [" . $rg['sid'] . "]"); |
rg_log("User has no sid, generate one [" . $rg['sid'] . "]"); |
251 |
258 |
} |
} |
252 |
259 |
|
|