PageRenderTime 34ms CodeModel.GetById 1ms RepoModel.GetById 0ms app.codeStats 1ms

/01.Source/01.CORE/includes/core/admin_access.php

http://creative-portal.googlecode.com/
PHP | 230 lines | 181 code | 22 blank | 27 comment | 33 complexity | 7b8934ff9eb10acc3643058e3fa68019 MD5 | raw file
Possible License(s): BSD-3-Clause
  1. <?php
  2. /**
  3. * @Project NUKEVIET 3.0
  4. * @Author VINADES.,JSC (contact@vinades.vn)
  5. * @Copyright (C) 2010 VINADES.,JSC. All rights reserved
  6. * @Createdate 1-27-2010 5:25
  7. */
  8. if ( ! defined( 'NV_MAINFILE' ) ) die( 'Stop!!!' );
  9. /**
  10. * nv_admin_checkip()
  11. *
  12. * @return
  13. */
  14. function nv_admin_checkip ( )
  15. {
  16. global $global_config, $client_info;
  17. if ( $global_config['block_admin_ip'] and file_exists( NV_ROOTDIR . "/" . NV_DATADIR . "/admin_config.php" ) )
  18. {
  19. include ( NV_ROOTDIR . "/" . NV_DATADIR . "/admin_config.php" );
  20. if ( empty( $array_adminip ) )
  21. {
  22. return true;
  23. }
  24. foreach ( $array_adminip as $ip_i => $array_ip )
  25. {
  26. if ( $array_ip['begintime'] < NV_CURRENTTIME and ( $array_ip['endtime'] == 0 or $array_ip['endtime'] > NV_CURRENTTIME ) )
  27. {
  28. if ( preg_replace( $array_ip['mask'], "", $client_info['ip'] ) == preg_replace( $array_ip['mask'], "", $ip_i ) )
  29. {
  30. return true;
  31. }
  32. }
  33. }
  34. return false;
  35. }
  36. else
  37. {
  38. return true;
  39. }
  40. }
  41. /**
  42. * nv_set_authorization()
  43. *
  44. * @return
  45. */
  46. function nv_set_authorization ( )
  47. {
  48. $auth_user = $auth_pw = "";
  49. if ( nv_getenv( 'PHP_AUTH_USER' ) )
  50. {
  51. $auth_user = nv_getenv( 'PHP_AUTH_USER' );
  52. }
  53. elseif ( nv_getenv( 'REMOTE_USER' ) )
  54. {
  55. $auth_user = nv_getenv( 'REMOTE_USER' );
  56. }
  57. elseif ( nv_getenv( 'AUTH_USER' ) )
  58. {
  59. $auth_user = nv_getenv( 'AUTH_USER' );
  60. }
  61. elseif ( nv_getenv( 'HTTP_AUTHORIZATION' ) )
  62. {
  63. $auth_user = nv_getenv( 'HTTP_AUTHORIZATION' );
  64. }
  65. elseif ( nv_getenv( 'Authorization' ) )
  66. {
  67. $auth_user = nv_getenv( 'Authorization' );
  68. }
  69. if ( nv_getenv( 'PHP_AUTH_PW' ) )
  70. {
  71. $auth_pw = nv_getenv( 'PHP_AUTH_PW' );
  72. }
  73. elseif ( nv_getenv( 'REMOTE_PASSWORD' ) )
  74. {
  75. $auth_pw = nv_getenv( 'REMOTE_PASSWORD' );
  76. }
  77. elseif ( nv_getenv( 'AUTH_PASSWORD' ) )
  78. {
  79. $auth_pw = nv_getenv( 'AUTH_PASSWORD' );
  80. }
  81. if ( strcmp( substr( $auth_user, 0, 6 ), 'Basic ' ) == 0 )
  82. {
  83. $usr_pass = base64_decode( substr( $auth_user, 6 ) );
  84. if ( ! empty( $usr_pass ) && strpos( $usr_pass, ':' ) !== false )
  85. {
  86. list( $auth_user, $auth_pw ) = explode( ':', $usr_pass );
  87. }
  88. unset( $usr_pass );
  89. }
  90. return array(
  91. 'auth_user' => $auth_user, 'auth_pw' => $auth_pw
  92. );
  93. }
  94. /**
  95. * nv_admin_checkfirewall()
  96. *
  97. * @return
  98. */
  99. function nv_admin_checkfirewall ( )
  100. {
  101. global $global_config;
  102. if ( $global_config['admfirewall'] and file_exists( NV_ROOTDIR . "/" . NV_DATADIR . "/admin_config.php" ) )
  103. {
  104. include ( NV_ROOTDIR . "/" . NV_DATADIR . "/admin_config.php" );
  105. if ( empty( $adv_admins ) )
  106. {
  107. return true;
  108. }
  109. $auth = nv_set_authorization();
  110. if ( empty( $auth['auth_user'] ) || empty( $auth['auth_pw'] ) ) return false;
  111. $md5_auth_user = md5( $auth['auth_user'] );
  112. if ( isset( $adv_admins[$md5_auth_user] ) )
  113. {
  114. $array_us = $adv_admins[$md5_auth_user];
  115. if ( $array_us['password'] == md5( $auth['auth_pw'] ) and $array_us['begintime'] < NV_CURRENTTIME and ( $array_us['endtime'] == 0 or $array_us['endtime'] > NV_CURRENTTIME ) )
  116. {
  117. return true;
  118. }
  119. }
  120. return false;
  121. }
  122. else
  123. {
  124. return true;
  125. }
  126. }
  127. /**
  128. * nv_admin_checkdata()
  129. *
  130. * @param mixed $adm_session_value
  131. * @return
  132. */
  133. function nv_admin_checkdata ( $adm_session_value )
  134. {
  135. global $db;
  136. $admin_info = array();
  137. $strlen = ( NV_CRYPT_SHA1 == 1 ) ? 40 : 32;
  138. $array_admin = unserialize( $adm_session_value );
  139. if ( isset( $array_admin['admin_id'] ) and is_numeric( $array_admin['admin_id'] ) and $array_admin['admin_id'] > 0 and isset( $array_admin['checknum'] ) and preg_match( "/^[a-z0-9]{" . $strlen . "}$/", $array_admin['checknum'] ) )
  140. {
  141. $query = "SELECT * FROM `" . NV_AUTHORS_GLOBALTABLE . "` WHERE `admin_id` = " . $array_admin['admin_id'] . " AND `lev`!=0 AND `is_suspend`=0";
  142. $result = $db->sql_query( $query );
  143. $numrows = $db->sql_numrows( $result );
  144. if ( $numrows != 1 ) return array();
  145. $row = $db->sql_fetchrow( $result );
  146. $db->sql_freeresult( $result );
  147. if ( strcasecmp( $array_admin['checknum'], $row['check_num'] ) == 0 and //check_num
  148. isset( $array_admin['current_agent'] ) and ! empty( $array_admin['current_agent'] ) and strcasecmp( $array_admin['current_agent'], $row['last_agent'] ) == 0 and //user_agent
  149. isset( $array_admin['current_ip'] ) and ! empty( $array_admin['current_ip'] ) and strcasecmp( $array_admin['current_ip'], $row['last_ip'] ) == 0 and //IP
  150. isset( $array_admin['current_login'] ) and ! empty( $array_admin['current_login'] ) and strcasecmp( $array_admin['current_login'], intval( $row['last_login'] ) ) == 0 ) //current_login
  151. {
  152. if ( empty( $row['files_level'] ) )
  153. {
  154. $allow_files_type = array();
  155. $allow_modify_files = $allow_create_subdirectories = $allow_modify_subdirectories = 0;
  156. }
  157. else
  158. {
  159. list( $allow_files_type, $allow_modify_files, $allow_create_subdirectories, $allow_modify_subdirectories ) = explode( "|", $row['files_level'] );
  160. $allow_files_type = ! empty( $allow_files_type ) ? explode( ",", $allow_files_type ) : array();
  161. }
  162. $admin_info['admin_id'] = intval( $row['admin_id'] );
  163. $admin_info['level'] = intval( $row['lev'] );
  164. $admin_info['position'] = $row['position'];
  165. $admin_info['current_login'] = intval( $row['last_login'] );
  166. $admin_info['last_login'] = intval( $array_admin['last_login'] );
  167. $admin_info['current_agent'] = $row['last_agent'];
  168. $admin_info['last_agent'] = $array_admin['last_agent'];
  169. $admin_info['current_ip'] = $row['last_ip'];
  170. $admin_info['last_ip'] = $array_admin['last_ip'];
  171. $admin_info['editor'] = $row['editor'];
  172. $admin_info['allow_files_type'] = $allow_files_type;
  173. $admin_info['allow_modify_files'] = intval( $allow_modify_files );
  174. $admin_info['allow_create_subdirectories'] = intval( $allow_create_subdirectories );
  175. $admin_info['allow_modify_subdirectories'] = intval( $allow_modify_subdirectories );
  176. $query = "SELECT * FROM `" . NV_USERS_GLOBALTABLE . "` WHERE `userid` = " . $admin_info['admin_id'] . " AND `active`='1'";
  177. $result = $db->sql_query( $query );
  178. $numrows = $db->sql_numrows( $result );
  179. if ( $numrows != 1 ) return array();
  180. $row = $db->sql_fetchrow( $result );
  181. $db->sql_freeresult( $result );
  182. $admin_info['userid'] = $row['userid'];
  183. $admin_info['username'] = $row['username'];
  184. $admin_info['email'] = $row['email'];
  185. $admin_info['full_name'] = $row['full_name'];
  186. $admin_info['view_mail'] = intval( $row['view_mail'] );
  187. $admin_info['regdate'] = intval( $row['regdate'] );
  188. $admin_info['sig'] = $row['sig'];
  189. $admin_info['gender'] = $row['gender'];
  190. $admin_info['photo'] = $row['photo'];
  191. $admin_info['birthday'] = intval( $row['birthday'] );
  192. $admin_info['website'] = $row['website'];
  193. $admin_info['location'] = $row['location'];
  194. $admin_info['yim'] = $row['yim'];
  195. $admin_info['telephone'] = $row['telephone'];
  196. $admin_info['fax'] = $row['fax'];
  197. $admin_info['mobile'] = $row['mobile'];
  198. $admin_info['in_groups'] = nv_user_groups( $row['in_groups'] );
  199. $admin_info['current_openid'] = '';
  200. $admin_info['last_openid'] = $row['last_openid'];
  201. $admin_info['st_login'] = ! empty( $row['password'] ) ? true : false;
  202. $admin_info['valid_question'] = ( ! empty( $row['question'] ) and ! empty( $row['answer'] ) ) ? true : false;
  203. $admin_info['current_mode'] = 3;
  204. }
  205. }
  206. return $admin_info;
  207. }
  208. ?>