ar3sw0rmed

ACONECTARSE.COM EXPOSED

Sep 29th, 2011
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 29.39 KB | None | 0 0
  1. HOST:ACONECTARSE.COM
  2.  
  3. CONFIGURATION host.configuration
  4.  
  5. <?
  6.  
  7. /****************************************************************
  8. Nombre : hosting.conf
  9.  
  10. Tarea : Definicion de las constantes utilizadas en el sistema
  11. de hosting gratuito.
  12.  
  13. Las definiciones son vбlidas para todos aquellos
  14. scripts que formen parte del servicio de hosting
  15. gratuito que estйn implementados en PHP.
  16.  
  17. Archivos con la documentacion del sistema:
  18.  
  19. - docs/LEAME.txt
  20. - docs/Documentacion - Hosting Gratuito.pdf
  21.  
  22. Version: 0.4
  23.  
  24. Pefijos definidos:
  25.  
  26. APP --> nombre de un archivo/programa.
  27. CONF --> Valor de configuraciуn de alguna caracterнstica.
  28. PATH --> Ruta de acceso archivos/programas.
  29. TEXT -->
  30. WEB --> URL's para enlaces dentro de la web.
  31.  
  32. ****************************************************************/
  33.  
  34.  
  35. /*** NOMBRE DE LAS APLICACIONES ***/
  36.  
  37. // Biblioteca con las funciones de manejo de LDAP.
  38. define('APP_LIB_LDAP','conn_ldap.php');
  39.  
  40. // Biblioteca con las funciones de soporte para el sistema.
  41. define('APP_LIB_SUPPORT_FUNCTIONS','newfunc.php');
  42.  
  43. // Programa que se encarga de enviar el mail con los datos del alta del usuario.
  44. define('APP_MAIL_ALTA','mandamail_alta.pl');
  45.  
  46. // Programa que se encarga de enviar el mail cuando el user modifica su password.
  47. define('APP_MAIL_PASS','mandamail_password.pl');
  48.  
  49. // Programa que se encarga de crear la pбgina temporal por defecto del usuario habilitado.
  50. define('APP_DEFAULT_USER_FILES','crea_index.pl');
  51.  
  52.  
  53. /*** RUTAS DE ACCESO A ACHIVOS/PROGRAMAS ***/
  54.  
  55. // Ruta de acceso al directorio donde se almacenan los usuarios de HOSTING.
  56. define('PATH_HOSTING','/arr01/Hosting/');
  57.  
  58. // Ruta de acceso al directorio donde se almacena los scripts que manejan el HOSTING.
  59. define('PATH_HOSTING_HOME', PATH_HOSTING . 'w/w/w/www.aconectarse.com/html/hosting/');
  60.  
  61. // Ruta de acceso al directorio de la documentacion
  62. define('PATH_DOCS_HOME', PATH_HOSTING_HOME . 'docs/');
  63.  
  64. // Ruta de acceso al directorio de las utilidades de apoyo del sistema. Ej: mandamail_alta.pl, etc.
  65. define('PATH_UTILS_HOME', PATH_HOSTING_HOME . 'utils/');
  66.  
  67. // Ruta de acceso al archivo de log.
  68. define('PATH_LOGFILE', '/var/log/qmail/aconectarse.com/hosting.log');
  69.  
  70.  
  71. /*** CONFIGURACION ***/
  72.  
  73. // Espacio para el usuario . EN [MBytes]
  74. define('CONF_USER_QUOTA','10');
  75.  
  76. // Cantidad de caracteres que se utilizan para generar la password aleatoria.
  77. define('CONF_NEW_PASS','5');
  78.  
  79. // Usuario utilizado para ejecutar los scripts y/o comandos.
  80. define('CONF_EXEC_USER','hosting');
  81.  
  82. // Password del usuario.
  83. define('CONF_EXEC_PASS','hosting');
  84.  
  85. // IP del server donde se ejecutan los scripts.
  86. define('CONF_EXEC_IP_ADDR','192.168.220.160');
  87.  
  88. // Casilla de mail del soporte del servicio.
  89. define('CONF_SUPPORT_MAIL','soporte@aconectarse.com');
  90.  
  91. // IP's publicas que se aceptan para que el usuario se conecte por FTP.
  92. // El caracter | (pipe) sirve de separador, para tener mбs de una.
  93. define('CONF_PUBLICAS','200.69.153.0/255.255.255.0|200.69.154.0/255.255.255.0|200.69.155.0/255.255.255.0|200.80.208.0/255.255.255.0|200.80.209.0/255.255.255.0|200.80.252.0/255.255.255.0|200.80.253.0/255.255.255.0|200.80.254.0/255.255.255.0');
  94.  
  95. // IP Publica del webserver.
  96. define('CONF_WEBSERVER','200.69.128.99');
  97.  
  98. // Nombre del stylesheet.
  99. define('CONF_STYLE','styles_ac.css');
  100.  
  101. // Cantidad de DIAS que se permite que un usario este sin responder el mail.
  102. define('CONF_TOLERANCIA','15');
  103.  
  104. /*** LINK's URL ***/
  105.  
  106. // URL Absoluta del sitio.
  107. define('WEB_HOME_DIR','http://www.aconectarse.com/');
  108. // define('WEB_HOME_DIR','http://nuevo.aconectarse.com/');
  109.  
  110.  
  111. // URL de la pagina de abajo.
  112. define('WEB_BOTTOM_FRAME','http://www.aconectarse.com/');
  113.  
  114. // URL con los datos de los numeros de telefonos.
  115. define('WEB_CONNECT','http://www.aconectarse.com/html/ciudades.shtml');
  116.  
  117. // URL de Mi cuenta
  118. define('WEB_ACCOUNT','http://www.aconectarse.com/html/micuenta.php');
  119.  
  120. /*** TEXT (mensajes, tнtulos, etc) ***/
  121.  
  122. // Nombre del Sitio.
  123. define('TEXT_COMPANY','Aconectarse.com');
  124.  
  125. // Nombre del Servicio.
  126. define('TEXT_SERVICE','Tu Sitio Web');
  127.  
  128. // Delimitador.
  129. define('TEXT_DELIMETER','::');
  130.  
  131. ?>
  132.  
  133.  
  134. #######################################################################################
  135.  
  136.  
  137. <?
  138. /****************************************************************
  139. Nombre : pass_mod.php
  140.  
  141. Tarea : Se encarga de modificar la contraseсa del usuario.
  142.  
  143. Tiene 2 modos de ejecucion:
  144.  
  145. (1) Cuando el ususario se olvido su contraseсa y
  146. no puede entrar al sitio.
  147. En ese caso se le genera una nueva (random) y
  148. se le manda esa contraeсa a su casilla de mail.
  149.  
  150. (2) Cuando quiera modificarla. Esto es estando dentro
  151. del sistemas, elige en el menu y debe ingresar su
  152. contraseсa vieja y la nueva.
  153.  
  154. Recibe :
  155.  
  156. Archivos con la documentacion del sistema:
  157.  
  158. - docs/LEAME.txt
  159. - docs/Documentacion - Hosting Gratuito.pdf
  160.  
  161. ****************************************************************/
  162.  
  163. // Nombre del archivo/script.
  164. define('FILE_NAME','pass_mod.php');
  165.  
  166. // Archivo con las constantes utilizadas.
  167. include("hosting.conf");
  168.  
  169. /*** CUERPO PRINCIPAL ***/
  170.  
  171. switch($tipo){
  172.  
  173. case "random":
  174.  
  175. $estado_user = check_uid($dominio);
  176.  
  177. switch($estado_user) {
  178.  
  179. case 0: /*** USER OK. ***/
  180.  
  181. /*** Genero la contraseсa nueva ***/
  182. $new_pass = Random_Password(CONF_NEW_PASS);
  183.  
  184. /*** Modifico la Contraseсa ***/
  185. $estado_modif = modificar_password_rand($dominio,$new_pass,&$error);
  186.  
  187. switch($estado_modif) {
  188.  
  189. case 0: /*** CAMBIO DE PASS OK. ***/
  190.  
  191. /*** Me traigo algunos atributos del usuario para mandarle el mail. ***/
  192. obtener_campos($dominio,&$nombre,&$email);
  193.  
  194. /*** Controlo que el nombre no tenga espacios. ***/
  195. $nombre_correcto=check_name($nombre);
  196.  
  197. system("perl " . PATH_UTILS_HOME . APP_MAIL_PASS . " $email $nombre_correcto $new_pass");
  198.  
  199. $msj="Hemos enviado un mail a: " .$email ." con tu nueva contraseсa. | Te Esperamos!!";
  200.  
  201. /*** Inicio una sesiуn para pasarle a show_page info del usuario. ***/
  202. session_start();
  203.  
  204. if(!session_is_registered('mensaje'))
  205. {
  206. session_register("mensaje");
  207. $mensaje = $msj;
  208.  
  209. session_register("nombre_user");
  210. $nombre_user = $nombre;
  211. }
  212.  
  213. // Se modificу la contraseсa correctamente. Muestro la info de que todo salio OK!
  214. header("Location: show_page?page=pass&tipo=rand_ok");
  215.  
  216. break;
  217.  
  218. case 1: /*** NO SE PUDO MODIFICAR LA CONTRASEСA. ***/
  219.  
  220. /*** Inicio una sesiуn para pasarle a show_page info del error. ***/
  221. session_start();
  222.  
  223. /*** Ahora mensaje tiene el error devuelto por modificar_passaword_rand() ***/
  224. $mensaje=$error;
  225.  
  226. if(!session_is_registered('mensaje'))
  227. {
  228. session_register("mensaje");
  229. }
  230.  
  231. // NO se pudo modificar la contraseсa. Muestro la info del error.
  232. header("Location: show_page?page=pass&tipo=rand_fail");
  233.  
  234. break;
  235.  
  236. case 2: /*** FATAL ***/
  237. echo "Error FATAL!";
  238. break;
  239.  
  240. } // FIN DEL switch($estado_modif)
  241.  
  242. break;
  243.  
  244. case 1: /*** NO EXISTE ESE DOMINIO. ***/
  245. $mensaje="El Dominio es inexistente. Por Favor, intente de nuevo";
  246.  
  247. /*** Inicio una sesiуn para pasarle a show_page info del error. ***/
  248. session_start();
  249.  
  250. /*** Ahora mensaje tiene el error devuelto por modificar_passaword_rand() ***/
  251.  
  252. if(!session_is_registered('mensaje'))
  253. {
  254. session_register("mensaje");
  255. }
  256.  
  257. // NO se pudo modificar la contraseсa. Muestro la info del error.
  258. header("Location: show_page?page=pass&tipo=rand_fail");
  259.  
  260. break;
  261.  
  262. case 2: /*** FATAL ***/
  263. echo "Error Fatal.";
  264. break;
  265.  
  266. } // FIN DEL switch($estado_user)
  267.  
  268. break;
  269. case "user" :
  270. session_start();
  271.  
  272. if (!session_is_registered("uid")){
  273.  
  274. echo "Permiso denegado (Su sessi&oacute;n no esta registrada)";
  275. exit();
  276.  
  277. } else {
  278.  
  279. include "header.inc";
  280.  
  281. /*** SE PASA EL LA VAR ERROR PARA LLENARLA ***/
  282. mostrar_header($uid,$Nombre);
  283. modificar_password($uid,$old,$new,$conf,&$error);
  284.  
  285. /*** SE VERIFICA QUE ESTE TODO BIEN ***/
  286. if($error != "OK")
  287. {
  288. /*** SE MUESTRAN LOS CAMPOS Y SE INDICA EL ERROR ***/
  289. //show_form_modif_pass($uid,$error,$old,$new,$conf);
  290. echo "ERROR AL MODIFICAR LA CONTRASEСA!! " . $error;
  291.  
  292. exit();
  293. }
  294. else /*** SE MODIFICO MAGNIFICAMENTE ***/
  295. {
  296. echo "<BR><BR><BR><font color=white><center><B>Contrase&ntilde;a modificada con exito !</B></FONT></center>";
  297. exit();
  298. }
  299. }
  300. }
  301.  
  302. /*** FIN DEL CUERPO PRINCIPAL ***/
  303.  
  304. /*** DEFINICION DE FUNCIONES ***/
  305.  
  306. /****************************************/
  307. /* REALIZA LA MODIFICACION DEL PASSWORD */
  308. /****************************************/
  309. function modificar_password($uid,$old,$new,$conf,$error)
  310. {
  311. if($new != $conf)
  312. {
  313. $error="<center><h6>La contrase&ntilde;a nueva no corresponde con su confirmaci&oacute;n</h6></center>";
  314. return;
  315. }
  316.  
  317. include(PATH_UTILS_HOME . APP_LIB_SUPPORT_FUNCTIONS);
  318. include(PATH_UTILS_HOME . APP_LIB_LDAP);
  319.  
  320. $conn = connect_ldap_write();
  321.  
  322. /*** Error al conectarse a LDAP. (escritura) ***/
  323. if ( $conn == -1 )
  324. {
  325. $mensaje = "Imposible conectarse a nuestros servidores de datos. | Intente m&aacute;s tarde. | Muchas Gracias.";
  326.  
  327. if(!session_is_registered('mensaje'))
  328. {
  329. session_register("mensaje");
  330. }
  331.  
  332. // Hubo algъn problema con el ldap. Llamo a show_page, para
  333. // que informe al user.
  334. header("Location: show_page.php?page=ldap&tipo=connect_err");
  335. }
  336.  
  337. $r = bind_ldap($conn);
  338.  
  339. /*** Error al bindearse a LDAP. ***/
  340. if ( $conn == -1 )
  341. {
  342. ldap_close($conn);
  343.  
  344. $mensaje = "Imposible establecer contacto con nuestros servidores de datos. | Intente m&aacute;s tarde. | Muchas Gracias.";
  345.  
  346. if(!session_is_registered('mensaje'))
  347. {
  348. session_register("mensaje");
  349. }
  350.  
  351. // Hubo algъn problema con el ldap. Llamo a show_page, para
  352. // que informe al user.
  353. header("Location: show_page.php?page=ldap&tipo=bind_err");
  354. }
  355.  
  356. $letra=obtengo_letra($uid);
  357.  
  358. $busca="ou=".$letra.",ou=ftp,dc=techtel,dc=com";
  359. $sr=ldap_search($conn,$busca,"uid=".$uid."");
  360.  
  361. if (ldap_count_entries($conn,$sr) == 0)
  362. {
  363. $error="<center><h5>Ese usuario no existe ... por favor verifique sus datos y contбctese con el soporte...</h5></center>";
  364. ldap_close($conn);
  365. return;
  366. }
  367.  
  368. $info=ldap_get_entries($conn, $sr);
  369. $passwenc="{SHA}".base64_encode(mHash(MHASH_SHA1, $old));
  370. if($info[0]["userpassword"][0] == $passwenc)
  371. {
  372. $passwenc="{SHA}".base64_encode(mHash(MHASH_SHA1, $new));
  373. $entry[userPassword]=$passwenc;
  374. $dn=$info[0]["dn"];
  375. $r=ldap_mod_replace($conn,$dn,$entry);
  376. if($r == TRUE)
  377. {
  378. $error="OK";
  379. ldap_close($conn);
  380. return;
  381. }
  382. else
  383. {
  384. $error="Ha habido un error ... no se pudo modificar el password ... intente m&aacute;s tarde.";
  385. ldap_close($conn);
  386. return;
  387. }
  388. }
  389. else
  390. {
  391. $error="El password actual es incorrecto.";
  392. ldap_close($conn);
  393. return;
  394. }
  395. ldap_close($conn);
  396. }
  397.  
  398. /****************************************************************
  399. Funciуn : get_uid
  400.  
  401. Tarea : Busca el uid del usuario, a partir de su e-mail.
  402. Por razones de escala se busca en todas las ramas
  403. de LDAP por separado. Esto hace al algoritmo un poco
  404. mбs complejo, pero permite que la cantidad de
  405. usuarios crezca sin afectar a la performance.
  406.  
  407.  
  408. Recibe : email = dir de mail con la que se registrу.
  409. error = carga la descripciуn del error encontrado.
  410.  
  411. Retorna : 0 = OK
  412. 1 = Error en algun campo. La descripciуn del error
  413. va en $mensaje.
  414.  
  415. ****************************************************************/
  416. function get_uid($email,$error)
  417. {
  418. //$ramas="a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","09","otros";
  419.  
  420. /* Cantidad de veces que se encuentra la casilla de mail ($mail) regisrada como usuario de hosting gratuito. */
  421. $ocurrencias=0;
  422.  
  423. $conn = connect_ldap();
  424. $r = bind_ldap($conn);
  425.  
  426. $dn="ou=ftp,dc=techtel,dc=com";
  427. $filtro="(&(mail=" . $email .") (businessCategory=hostingfree))";
  428.  
  429. $sr=ldap_search($conn,$dn,$filtro);
  430.  
  431. for($i=0; $i < $ramas["count"]; $i++)
  432. {
  433.  
  434. $dn="ou=ftp,dc=techtel,dc=com";
  435.  
  436. $sr=ldap_search($conn,$dn,$filtro);
  437.  
  438. /*** Obtengo la cantidad de entradas para la rama. ***/
  439. $entradas=ldap_count_entries($conn,$sr);
  440.  
  441. switch($entradas) {
  442.  
  443. case 0: /***
  444. Si no encuentra nada, no problem es solo una rama, pero hay que
  445. contemplarla para que no caiga en el default.
  446. ***/
  447. break;
  448.  
  449. case 1:
  450. $info=ldap_get_entries($conn, $sr);
  451. $ocurrencias++;
  452. break;
  453.  
  454. default: /***
  455. Todos los demбs casos. Significa que en una misma rama encontrу
  456. mбs de una vez el mismo mail registrado.
  457. ***/
  458.  
  459. $info=ldap_get_entries($conn, $sr);
  460. $ocurrencias = $ocurrencias + $entradas;
  461. break;
  462. }
  463.  
  464. }
  465.  
  466. switch($ocurrencias) {
  467.  
  468. case 0:
  469. /*** No se encontrу el mail. ***/
  470. $error="La casilla de e-mail que ha especificado no existe ... por favor verif&iacute;quela.";
  471. break;
  472.  
  473. case 1:
  474. /*** Perfecto. Una sola ocurrencia. ***/
  475. break;
  476.  
  477. default: /*** Hay que hacerle seleccionar una cuenta? ***/
  478.  
  479. break;
  480.  
  481. }
  482. }
  483.  
  484.  
  485. /*** A PARTIR DE ACA PASSWORD RANDOM ***/
  486.  
  487.  
  488. /****************************************************************
  489. Funciуn : check_uid
  490.  
  491. Tarea : Busca el uid del usuario.
  492.  
  493. Recibe : dominio = dominio del user que quiere modificar su
  494. contraseсa.
  495.  
  496. Retorna : 0 = OK
  497. 1 = No existe el dominio.
  498. 2 = Error inesperado. Encontrу en la misma rama de
  499. LDAP 2 o mбs uid iguales.
  500.  
  501. ****************************************************************/
  502. function check_uid($dominio)
  503. {
  504.  
  505. include(PATH_UTILS_HOME . APP_LIB_SUPPORT_FUNCTIONS);
  506. include(PATH_UTILS_HOME . APP_LIB_LDAP);
  507.  
  508.  
  509.  
  510. $conn = connect_ldap_read();
  511.  
  512. /*** Error al conectarse a LDAP. (solo lectura) ***/
  513. if ( $conn == -1 )
  514. {
  515. $mensaje = "Imposible conectarse a nuestros servidores de datos. | Intente m&aacute;s tarde. | Muchas Gracias.";
  516.  
  517. if(!session_is_registered('mensaje'))
  518. {
  519. session_register("mensaje");
  520. }
  521.  
  522. // Hubo algъn problema con el ldap. Llamo a show_page, para
  523. // que informe al user.
  524. header("Location: show_page.php?page=ldap&tipo=connect_err");
  525. }
  526.  
  527. $r = bind_ldap($conn);
  528.  
  529. /*** Error al bindearse a LDAP. ***/
  530. if ( $conn == -1 )
  531. {
  532. ldap_close($conn);
  533.  
  534. $mensaje = "Imposible establecer contacto con nuestros servidores de datos. | Intente m&aacute;s tarde. | Muchas Gracias.";
  535.  
  536. if(!session_is_registered('mensaje'))
  537. {
  538. session_register("mensaje");
  539. }
  540.  
  541. // Hubo algъn problema con el ldap. Llamo a show_page, para
  542. // que informe al user.
  543. header("Location: show_page.php?page=ldap&tipo=bind_err");
  544. }
  545.  
  546. $letra=obtengo_letra($dominio);
  547.  
  548. $dn="ou=".$letra.",ou=ftp,dc=techtel,dc=com";
  549. $filtro="uid=".$dominio;
  550.  
  551. $sr=ldap_search($conn,$dn,$filtro);
  552.  
  553. $entradas=ldap_count_entries($conn,$sr);
  554.  
  555. switch($entradas) {
  556.  
  557. case 0: /*** No encuentra nada. ***/
  558. return 1;
  559. break;
  560.  
  561. case 1: /*** Existe! ***/
  562. return 0;
  563. break;
  564.  
  565. default: /*** Encontrу mбs de una entrada, muy loco, pero hay que tenerlo en cuenta. ***/
  566. return 2;
  567. break;
  568. }
  569. }
  570.  
  571. /****************************************************************
  572. Funciуn : obtener_campos
  573.  
  574. Tarea : Busca en el LDAP los campos requeridos.
  575.  
  576. Recibe : nombre = nombre del usuario.
  577. email = direccion de correo electrуnico.
  578.  
  579. Retorna : 0 = OK
  580. 1 = No existe el dominio.
  581. 2 = Error inesperado. Encontrу en la misma rama de
  582. LDAP 2 o mбs uid iguales.
  583.  
  584. ****************************************************************/
  585. function obtener_campos($dominio,$nombre,$email)
  586. {
  587.  
  588. /*** Intento conectarme a LDAP ***/
  589. $conn = connect_ldap_read();
  590.  
  591. /*** Error al conectarse a LDAP. (solo lectura) ***/
  592. if ( $conn == -1 )
  593. {
  594. $mensaje = "Imposible conectarse a nuestros servidores de datos. | Intente m&aacute;s tarde. | Muchas Gracias.";
  595.  
  596. if(!session_is_registered('mensaje'))
  597. {
  598. session_register("mensaje");
  599. }
  600.  
  601. // Hubo algъn problema con el ldap. Llamo a show_page, para
  602. // que informe al user.
  603. header("Location: show_page.php?page=ldap&tipo=connect_err");
  604. }
  605.  
  606. $r = bind_ldap($conn);
  607.  
  608. /*** Error al bindearse a LDAP. ***/
  609. if ( $conn == -1 )
  610. {
  611. ldap_close($conn);
  612.  
  613. $mensaje = "Imposible establecer contacto con nuestros servidores de datos. | Intente m&aacute;s tarde. | Muchas Gracias.";
  614.  
  615. if(!session_is_registered('mensaje'))
  616. {
  617. session_register("mensaje");
  618. }
  619.  
  620. // Hubo algъn problema con el ldap. Llamo a show_page, para
  621. // que informe al user.
  622. header("Location: show_page.php?page=ldap&tipo=bind_err");
  623. }
  624.  
  625. $letra=obtengo_letra($dominio);
  626.  
  627. $dn="ou=".$letra.",ou=ftp,dc=techtel,dc=com";
  628. $filtro="uid=".$dominio;
  629.  
  630. $sr=ldap_search($conn,$dn,$filtro);
  631.  
  632. $entradas=ldap_count_entries($conn,$sr);
  633.  
  634. switch($entradas) {
  635.  
  636. case 0: /*** No encuentra nada. ***/
  637. return 1;
  638. break;
  639.  
  640. case 1: /*** Existe! ***/
  641. $info = ldap_get_entries($conn, $sr);
  642.  
  643. $nombre = utf8_decode(info[0]["cn"][0]);
  644. $email = $info[0]["mail"][0];
  645. return 0;
  646. break;
  647.  
  648. default: /*** Encontrу mбs de una entrada, muy loco, pero hay que tenerlo en cuenta. ***/
  649. return 2;
  650. break;
  651. }
  652. }
  653. /****************************************************************
  654. Funciуn : Random_Password
  655.  
  656. Tarea : Genera una contraseсa de manera aleatoria.
  657.  
  658. Recibe : largo = cantidad de caracteres para la contraseсa.
  659.  
  660. Retorna : pass = Password Aleatoria.
  661.  
  662. ****************************************************************/
  663. function Random_Password($largo) {
  664.  
  665. /*** Valor semilla ***/
  666. srand(date("s"));
  667.  
  668. /*** Los caracterecteres que se usarбn para la contraseсa ***/
  669. $posibles = "abcdefghijklmnopqrstuvwxyz0123456789";
  670.  
  671. /*** Me aseguro que estй vacнa. ***/
  672. $pass = "";
  673.  
  674. while( (strlen($pass)) < $largo )
  675. {
  676. /*** Obtengo un caracter al azar de $posibles ***/
  677. $pass .= substr($posibles,(rand()%(strlen($posibles))),1);
  678. }
  679.  
  680. return($pass);
  681. }
  682.  
  683. /****************************************************************
  684. Funciуn : modificar_password_rand
  685.  
  686. Tarea : Cambia en la cuenta del usuario en LDAP su contraseсa.
  687.  
  688. Recibe : uid = cantidad de caracteres para la contraseсa.
  689. pass = Contraseсa nueva.
  690.  
  691. Retorna : 0 = OK
  692. 1 = Error al intentar modificar la contraseсa.
  693. 2 = Error inesperado.
  694.  
  695. ****************************************************************/
  696. function modificar_password_rand($uid,$passwd,$error)
  697. {
  698.  
  699. /*** Intento conectarme a LDAP ***/
  700. $conn = connect_ldap_write();
  701.  
  702. /*** Error al conectarse a LDAP. (escritura) ***/
  703. if ( $conn == -1 )
  704. {
  705. $mensaje = "Imposible conectarse a nuestros servidores de datos. | Intente m&aacute;s tarde. | Muchas Gracias.";
  706.  
  707. if(!session_is_registered('mensaje'))
  708. {
  709. session_register("mensaje");
  710. }
  711.  
  712. // Hubo algъn problema con el ldap. Llamo a show_page, para
  713. // que informe al user.
  714. header("Location: show_page.php?page=ldap&tipo=connect_err");
  715. }
  716.  
  717. $r = bind_ldap($conn);
  718.  
  719. /*** Error al bindearse a LDAP. ***/
  720. if ( $conn == -1 )
  721. {
  722. ldap_close($conn);
  723.  
  724. $mensaje = "Imposible establecer contacto con nuestros servidores de datos. | Intente m&aacute;s tarde. | Muchas Gracias.";
  725.  
  726. if(!session_is_registered('mensaje'))
  727. {
  728. session_register("mensaje");
  729. }
  730.  
  731. // Hubo algъn problema con el ldap. Llamo a show_page, para
  732. // que informe al user.
  733. header("Location: show_page.php?page=ldap&tipo=bind_err");
  734. }
  735.  
  736. $letra = obtengo_letra($uid);
  737.  
  738. $busca= "ou=" . $letra . ",ou=ftp,dc=techtel,dc=com";
  739. $sr=ldap_search($conn,$busca,"uid=".$uid."");
  740.  
  741. if ( ldap_count_entries($conn,$sr) == 0 )
  742. {
  743. $error="El usuario ingresado es inexsitente. Verifique sus datos e intente nuevamente.";
  744. ldap_close($conn);
  745. return 1;
  746. }
  747.  
  748. $info = ldap_get_entries($conn, $sr);
  749. // Me aseguro que estй limpia.
  750. $passwenc ="";
  751. $passwenc = "{SHA}".base64_encode(mHash(MHASH_SHA1,$passwd));
  752.  
  753. $entry[userPassword]=$passwenc;
  754.  
  755. $dn=$info[0]["dn"];
  756. $r = ldap_mod_replace($conn,$dn,$entry);
  757.  
  758. if($r == TRUE)
  759. {
  760. $error="";
  761. ldap_close($conn);
  762. return 0;
  763. }
  764. else
  765. {
  766. $error="Ha habido un error y no se pudo modificar su contrase&ntilde;a. Por favor, intente nuevamente.";
  767. ldap_close($conn);
  768. return 1;
  769. }
  770.  
  771. ldap_close($conn);
  772. return 2;
  773. }
  774.  
  775. /****************************************************************
  776. Funciуn : check_name
  777.  
  778. Tarea : Controla el nombre del usuario. En el caso que tenga
  779. un espacio lo escapa ( \ ).
  780.  
  781. Recibe : nombre
  782.  
  783. Retorna : nombre
  784.  
  785. ****************************************************************/
  786. function check_name ($nombre)
  787. {
  788. $separado=explode(" ",$nombre);
  789.  
  790. $cant=count($separado);
  791.  
  792. /*** Me aseguro que estй vacнa. ***/
  793. $new_nombre = "";
  794.  
  795. if ( $cant == 1 )// No hay ningъn espacio.
  796. {
  797. $new_nombre=$a[0];
  798. }
  799. else
  800. {
  801. // Hay espacios. Recorro el array concatenando las partes
  802. // con un \ en el medio.
  803. for ( $i=0; $i < $cant ; $i++)
  804. {
  805. $new_nombre = $new_nombre . $separado[$i];
  806. $new_nombre = $new_nombre . "\ ";
  807. }
  808.  
  809. // Hardcoding para sacar el \ del final.
  810. $len = strlen($new_nombre);
  811. $new_nombre = substr($new_nombre,0,($len - 2));
  812. }
  813.  
  814. return $new_nombre;
  815. }
  816. ?>
  817.  
  818.  
  819. <?
  820.  
  821. /****************************************************************
  822. Nombre : login.php
  823.  
  824. Tarea : Valida el ingreso del usuario al sistema de
  825. configuracion de su sitio web.
  826.  
  827. Primero efectua la conprobaciуn de que se estй
  828. conectando por los DialUP de Aconectarse.com
  829.  
  830. Archivos con la documentacion del sistema:
  831.  
  832. - docs/LEAME.txt
  833. - docs/Documentacion - Hosting Gratuito.pdf
  834.  
  835. Version: 0.4
  836.  
  837. ****************************************************************/
  838.  
  839.  
  840. // Nombre del archivo/script.
  841. define('FILE_NAME','login.php');
  842.  
  843. include("hosting.conf");
  844.  
  845. include(PATH_UTILS_HOME . APP_LIB_SUPPORT_FUNCTIONS);
  846.  
  847. session_start();
  848.  
  849. if(!session_is_registered('uid_hosting')){
  850. echo "Permiso denegado (Su sesi&oacute;n no est&aacute; registrada).";
  851. exit();
  852. }
  853.  
  854. if ( verifica_ip($REMOTE_ADDR) ){
  855. // El usuario se esta intentando loguear con una IP que no es de Aconectarse.com
  856. header("Location: show_page?page=login&tipo=error_dialup");
  857. }
  858. else{
  859.  
  860. /*** Se pasa la variable error por referencia para cargarle los msg de error dentro de la funciуn ***/
  861. $uid=$uid_hosting;
  862. $password=$password_hosting;
  863. $ret_val = verifica_user($uid,$password,&$error,&$Nombre);
  864.  
  865. switch($ret_val){
  866.  
  867. case "OK" :
  868. $data="";
  869.  
  870. $data = FILE_NAME . " " . $uid . " " . $REMOTE_ADDR . " " . "LOGIN OK \n";
  871.  
  872. log_write($data);
  873.  
  874. // Crea la nueva sesion y va directo al menu.
  875.  
  876. //session_start();
  877.  
  878. if (!session_is_registered('uid')){
  879. session_register("uid");
  880. session_register("Nombre");
  881. }
  882.  
  883. header("Location: menu.php");
  884.  
  885. break;
  886.  
  887. case "PASSERROR":
  888. $data="";
  889.  
  890. $data = FILE_NAME . " " . $uid . " " . $REMOTE_ADDR . " " . "PASSWORD ERROR \n";
  891.  
  892. log_write($data);
  893.  
  894. // Crea la sesion y vuleve a mostrar el form, con el error encontrado.
  895.  
  896. session_start();
  897.  
  898. if (!session_is_registered('uid')){
  899. session_register("uid");
  900. session_register("error");
  901. }
  902.  
  903. header("Location: show_page.php?page=login&tipo=error_pass");
  904.  
  905. break;
  906.  
  907. case "NOTINIT" :
  908. $data="";
  909.  
  910. $data = FILE_NAME . " " . $uid . " " . $REMOTE_ADDR . " " . "LOGIN FAIL. NO MAIL REPLY. \n";
  911.  
  912. log_write($data);
  913.  
  914.  
  915. session_start();
  916.  
  917. if (!session_is_registered('error')){
  918. session_register("error");
  919. }
  920.  
  921. header("Location: show_page.php?page=login&tipo=error_incompleta");
  922.  
  923. break;
  924.  
  925. case "NOTEXISTS":
  926. $data="";
  927.  
  928. $data = FILE_NAME . " " . $uid . " " . $REMOTE_ADDR . " " . "LOGIN FAIL. USER INEXISTENTE. \n";
  929.  
  930. log_write($data);
  931.  
  932. session_start();
  933.  
  934. if (!session_is_registered('error')){
  935. session_register("error");
  936. }
  937.  
  938. header("Location: show_page.php?page=login&tipo=error_incompleta");
  939.  
  940. break;
  941. }
  942.  
  943. exit;
  944. }
  945.  
  946. /****************************************************************
  947. Funciуn : verifica_user
  948.  
  949. Tarea : Controla si el usuario estб habilitado para ingresar.
  950.  
  951. Recibe : uid
  952. password
  953. error
  954. Nombre
  955.  
  956. Retorna : 0 = OK
  957. 1 = Error en algun campo. La descripciуn del error
  958. va en $mensaje.
  959.  
  960. ****************************************************************/
  961. function verifica_user($uid,$password,$error,$Nombre)
  962. {
  963.  
  964. /**** UTILIZA LAS FUNCIONES DE LDAP ***/
  965. include(PATH_UTILS_HOME . APP_LIB_LDAP);
  966.  
  967. $conn =connect_ldap_simon();
  968.  
  969. /*** Error al conectarse a LDAP. (solo lectura) ***/
  970. if ( $conn == -1 ){
  971. $mensaje = "Imposible conectarse a nuestros servidores de datos. | Intente m&aacute;s tarde. | Muchas Gracias.";
  972. session_start();
  973.  
  974. if(!session_is_registered('mensaje')){
  975. session_register("mensaje");
  976. }
  977.  
  978. // Hubo algъn problema con el ldap. Llamo a show_page, para
  979. // que informe al user.
  980. header("Location: show_page.php?page=ldap&tipo=connect_err");
  981. }
  982.  
  983. $r = bind_ldap_simon($conn);
  984.  
  985. /*** Error al bindearse a LDAP. ***/
  986. if ( $conn == -1 ){
  987. ldap_close($conn);
  988.  
  989. $mensaje = "Imposible establecer contacto con nuestros servidores de datos. | Intente m&aacute;s tarde. | Muchas Gracias.";
  990. session_start();
  991.  
  992. if(!session_is_registered('mensaje')){
  993. session_register("mensaje");
  994. }
  995.  
  996. // Hubo algъn problema con el ldap. Llamo a show_page, para
  997. // que informe al user.
  998. header("Location: show_page.php?page=ldap&tipo=bind_err");
  999. }
  1000.  
  1001. $letra = obtengo_letra($uid);
  1002.  
  1003. /*** Lo busco en la rama FTP de SIMON ***/
  1004. $busca = "ou=" . $letra . ",db=Usuarios,dc=techtel,dc=com";
  1005.  
  1006. $sr = ldap_search($conn,$busca,"uid=".$uid."");
  1007. $entradas = ldap_count_entries($conn,$sr);
  1008.  
  1009. if ($entradas == 0){
  1010. $error="Hay un error en sus datos ... por favor verif&iacute;quelos... | Recuerde que debe ingresar como nombre de usuario el dominio completo: EJ: tuya.tupp.com.ar";
  1011. ldap_close($conn);
  1012. return "NOTEXISTS";
  1013. }
  1014.  
  1015. /*** Se encripta el password ****/
  1016. $passwordenc="{SHA}".base64_encode(mHash(MHASH_SHA1, $password));
  1017. //$passwordenc=$password;
  1018.  
  1019. $info=ldap_get_entries($conn,$sr);
  1020.  
  1021. /*** Se fija si el usuario pertenece al hosting free ***/
  1022. if ($entradas != 0 && $info[0]["businesscategory"][0] != "hostingfree"){
  1023. $error="Hay un error en sus datos ... por favor verif&iacute;quelos... | Recuerde que debe ingresar como nombre de usuario el dominio completo: EJ: tuya.tupp.com.ar";
  1024. ldap_close($conn);
  1025. return "NOTEXISTS";
  1026. }
  1027.  
  1028. if($info[0]["uid"][0] == $uid && $info[0]["userpassword"][0] == $passwordenc && $info[0]["ftpstatus"][0] == "enabled"){
  1029. $Nombre = utf8_decode($info[0]["cn"][0]);
  1030. ldap_close($conn);
  1031. return "OK";
  1032.  
  1033. } /* Si algo anduvo mal se fija que fue */
  1034. else if($info[0]["userpassword"][0] != $passwordenc){
  1035. $error="Su contrase&ntilde;a es incorrecta... intente nuevamente.";
  1036. ldap_close($conn);
  1037. return "PASSERROR";
  1038. }
  1039. else if($info[0]["ftpstatus"][0] == "disabled"){
  1040. $Nombre = utf8_decode($info[0]["cn"][0]);
  1041. $error = $Nombre . ", todav&iacute;a no has respondido el e-mail que te hemos enviado a: " . $info[0]["mail"][0] . " | Ten&eacute;s que hacerlo para habilitar tu cuenta correctmente. | Muchas Gracias.";
  1042. ldap_close($conn);
  1043. return "NOTINIT";
  1044. }
  1045.  
  1046. ldap_close($conn);
  1047. }
  1048.  
  1049. ?>
  1050.  
Add Comment
Please, Sign In to add comment