- Sky
- Blueberry
- Slate
- Blackcurrant
- Watermelon
- Strawberry
- Orange
- Banana
- Apple
- Emerald
- Chocolate
- Charcoal
-
Content Count
825 -
Posts on chatbox
24 -
Joined
-
Last visited
-
Days Won
10
1TSR4SC11 last won the day on January 23
1TSR4SC11 had the most liked content!
Community Reputation
311 VeneradoAbout 1TSR4SC11
-
Rank
Payne to the max
- Birthday December 31
Métodos de contacto
-
Sitio web
https://github.com/R4SC11
Información de perfil
-
Sexo
Otro
-
Localización
Falkland Islands
Recent Profile Visitors
14577 profile views
-
Hola a todos. Les traigo este mini mod/fix que permitirá que se pueda cerrar la sesión en caso de estar baneado. Al intentar cerrar sesión, en vez de realizar la acción mencionada, aparece el siguiente mensaje: Usuario suspendido Para solucionar esto, es necesario cambiar esto en el archivo header.php: } elseif ($tsUser->is_banned) { Por lo siguiente: } elseif ($tsUser->is_banned && $_GET['action'] != "login-salir") { Espero que les sirva
-
[MINI MOD] [Risus 1.3] Mostrar información de la suspensión en el inicio de sesión.
1TSR4SC11 posted a topic in Complementos terminados
Hola. He decidido crear este mini mod que permitirá mostrar la información de la suspensión en el mismo inicio de sesión: Antes: Con el mod: (Mostrar el moderador es opcional) Para instalarlo es muy fácil, solamente ir al archivo /inc/class/c.user.php y buscar en la función loginUser: if ($data['user_activo'] == 1) { Para reemplazarlo por: if ($data['user_baneado'] == 1) { $this->uid = $data['user_id']; $banned_data = $this->getUserBanned(); $final_str = "Su cuenta ha sido suspendida"; if ($banned_data['susp_termina'] == 0) { $final_str .= " indefinidamente."; } else if ($banned_data['susp_termina'] == 1) { $final_str .= " permanentemente."; } else { $final_str .= " hasta el día " . date("d/m/y \a \l\a\s H:i:s", $banned_data['susp_termina']) . "."; } $final_str .= "\n" . 'Razón de la suspensión: "' . $banned_data['susp_causa'] . '".'; //Descomentar esto para mostrar quién fue el que lo baneó //$final_str .= "\n" . 'Moderador: ' . $this->getUserName($banned_data['susp_mod']) . '.'; return "0: " . $final_str; } else if ($data['user_activo'] == 1) { -
Aquí la descarga.
-
Aquí la descarga.
-
Enlaces oficiales a todas las versiones de Risus disponibles en GitHub
1TSR4SC11 posted a topic in Novedades e información
Hola. He decidido revisar los commits en GitHub y he logrado recopilar dos versiones de Risus. He hecho esto porque no hay ninguna parte en el foro que lleve a un enlace para descargar estas versiones y el único enlace de descarga disponible lleva a GitHub (lo cual está híper mega bugeado y el rendimiento es incluso inferior a la 1.3, por eso no la incluiré en este post). Tengo entendido por los commits que se ha empezado a subir una alpha en el branch master (una locura, pero bueno). En fin, aquí están los enlaces: Risus 1.2.6 (con fixes de PHP 7): [Código] [Descarga] Risus 1.3.0: [Código] [Descarga] -
[MOD] [Risus 1.3.0] Autenticación en dos pasos (2FA)
1TSR4SC11 replied to 1TSR4SC11's topic in Complementos terminados
Prefiero Signal. Gracias Bot. -
1TSR4SC11 started following [MOD] [Risus 1.3.0] Autenticación en dos pasos (2FA)
-
[MOD] [Risus 1.3.0] Autenticación en dos pasos (2FA)
1TSR4SC11 posted a topic in Complementos terminados
Hola a todos. Hoy les traigo un mod que quería hacer hace tiempo pero como había dejado de visitar Phpost no me había animado a hacerlo. Screenshots Instalación Es una instalación de unos 5 a 15 minutos, lo más tedioso estará en el archivo de clases del usuario. Consultas SQL ALTER TABLE `u_miembros` ADD `user_twofa_en` BOOLEAN NOT NULL DEFAULT FALSE AFTER `user_password`; ALTER TABLE `u_miembros` ADD `user_twofa_secret` CHAR(16) NULL AFTER `user_twofa_en`; ALTER TABLE `u_sessions` ADD `session_twofa_req` BOOLEAN NOT NULL DEFAULT FALSE AFTER `session_autologin`; -- Versión 1.4 ALTER TABLE `u_miembros` ADD `user_twofa_at_count` INT(1) NOT NULL AFTER `user_twofa_secret`, ADD `user_twofa_at_ban_date` INT(12) NOT NULL AFTER `user_twofa_at_count`; Archivo /header.php Buscar: // Banned } elseif($tsUser->is_banned) { Y agregar arriba: //2FA Challenge } else if ($tsUser->has2FAChallenge && $_GET['action'] != "login-salir" && $_GET['action'] != "ratwofa-verifychallenge") { require(TS_ROOT . DIRECTORY_SEPARATOR . 'inc' . DIRECTORY_SEPARATOR . 'class' . DIRECTORY_SEPARATOR . 'c.ratwofa.php'); $myRatwofa = new ratwofa(); $myRatwofa->display_2fa_page(); exit; Archivo /inc/class/c.user.php Buscar: var $session; Agregar debajo o arriba: var $has2FAChallenge = false; var $has2FAEnabled = false; Buscar: // Borrar variable session unset($this->session); Agregar arriba: $this->has2FAChallenge = $this->session->userdata['session_twofa_req'] == 1 ? true : false; $this->has2FAEnabled = (int)$this->info['user_twofa_en'] == 1 ? true : false; Buscar en la función loginUser: $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT user_id, user_password, ' . $pwtype . ' user_activo, user_baneado FROM u_miembros WHERE LOWER(user_name) = \'' . $username . '\' LIMIT 1'); Al lado derecho de: user_baneado Agregar: , user_twofa_en Buscar: // Actualizamos la session $this->session->update($data['user_id'], $remember, TRUE); Cambiar por: // Actualizamos la session $this->session->update($data['user_id'], $remember, TRUE, $data['user_twofa_en'] == 1 ? 'y' : ''); Buscar: function update($user_id = 0, $autologin = FALSE, $force_update = FALSE) { Cambiar por: function update($user_id = 0, $autologin = FALSE, $force_update = FALSE, $twofa_required = '') { Buscar: if (($this->userdata['session_time'] + $this->sess_time_online) >= $this->time_now and $force_update == FALSE) { Cambiar por: if (!isset($_SESSION['2fa']['challenge_ok']) && (($this->userdata['session_time'] + $this->sess_time_online) >= $this->time_now and $force_update == FALSE)) { Buscar: // Datos para actualizar $this->userdata['session_user_id'] = empty($user_id) ? $this->userdata['session_user_id'] : $user_id; Agregar debajo o arriba: if (!isset($_SESSION['2fa']['challenge_ok'])) { $this->userdata['session_twofa_req'] = $twofa_required == 'y' || (isset($this->userdata['session_twofa_req']) && $this->userdata['session_twofa_req'] == 1) ? 1 : 0; } else { $this->userdata['session_twofa_req'] = 0; unset($_SESSION['2fa']['challenge_ok']); } Buscar: session_autologin = \'' . $this->userdata['session_autologin'] . '\' Agregar al lado derecho: , session_twofa_req = \'' . $this->userdata['session_twofa_req'] . '\' Archivo themes\TU TEMA\templates\t.cuenta.tpl Buscar (El siguiente lo pueden poner al lado del <li> que más les guste. En este caso, lo pondré al lado de "Privacidad".): <li{if $tsAccion == 'config'} class="active" {/if}><a href="{$tsConfig.url}/cuenta/config">Privacidad</a></li> Y agregar arriba, abajo, a la izquierda o a la derecha (xD): <li><a onclick="cuenta.chgtab(this)">2FA</a></li> Buscar: {include file='modules/m.cuenta_config.tpl'} Y agregar debajo: {include file='modules/m.cuenta_2fa.tpl'} Luego subir los siguientes archivos a su web/host/etc en sus respectivas carpetas (Click en Archivos + Carpeta Vendor) [Descargar] Changelog: Por hacer: Notas: Para que aparezca el código QR es necesario contar con la librería GD instalada o activada. En caso de no contar con ella, no se mostrará el código QR (Se supone que no debería dar errores). Si utilizan un hosting compartido basta con ir a la configuración de PHP desde el CPanel y activarla. De todas maneras, hay muchos tutoriales online para saber cómo hacerlo especificamente. Es posible aumentar la cantidad de dígitos en el archivo de la clase pero hay que ajustar cosas como el tamaño de la columna de la clave secreta del usuario. Este mod hace uso de: RobThree/TwoFactorAuth y endroid/qr-code. (Y Composer, por supuesto) Gracias por leer -
1TSR4SC11 started following [MOD] [Risus 1.3.0] Páginas Administrables Remake
-
[MOD] [Risus 1.3.0] Páginas Administrables Remake
1TSR4SC11 posted a topic in Complementos terminados
Hola a todos! Hoy me he decidido hacer un "remake" de mi antiguo mod de páginas administrables que publiqué en su momento en el foro. Es algo básico pero puede facilitarle a más de uno la gestión de sus páginas. Screenshots: Instalación: Ejecutar la siguiente consulta SQL: CREATE TABLE `w_pages` ( `page_id` INT NOT NULL AUTO_INCREMENT, `page_title` VARCHAR(60) NULL, `page_url` VARCHAR(35) NOT NULL, `page_body` TEXT NULL, `page_hidden` BOOLEAN NOT NULL DEFAULT FALSE, PRIMARY KEY (`page_id`) ) ENGINE = MyISAM; Abrir el archivo /inc/php/admin.php y agregar arriba de: # TEMAS } elseif ($action == 'temas') { Lo siguiente: // Páginas Administrables } elseif ($action == 'pages') { require TS_ROOT . DIRECTORY_SEPARATOR . TS_CLASS . 'c.pages.php'; $myRaPages = new RaPages(); if (empty($act)) $smarty->assign("pages_list", $myRaPages->get_pages_list()); elseif ($act == 'new') { if ($myRaPages->create_new_page()) $tsCore->redirectTo($tsCore->settings['url'] . '/admin/pages?ref=new_page_added'); } else if ($act == 'delete' && isset($_GET['pag_id']) && $tsAjax == 1) { header('Content-type: application/json'); echo json_encode($myRaPages->deletePage($_GET['pag_id'])); } else if ($act == 'edit') { if (isset($_GET['pag_id'])) { if (!$myRaPages->does_page_exist($_GET['pag_id'], true)) $smarty->assign("tsError", "La página no existe."); else { $smarty->assign("page_data", $myRaPages->get_page_data($_GET['pag_id'], true)); } } else $smarty->assign("tsError", "Debe completar con un identificador."); } else if ($act == 'save' && $tsAjax == 1 && isset($_GET['pag_id'])) { header('Content-type: application/json'); echo json_encode($myRaPages->save_page($_GET['pag_id'])); } Ir al archivo \themes\MI TEMA\templates\t.admin.tpl y buscar: {elseif $tsAction == 'ads'} {include file='admin_mods/m.admin_publicidad.tpl'} Y agregar arriba o debajo: {elseif $tsAction == 'pages'} {include file='admin_mods/m.admin_pages.tpl'} Ir al archivo themes\MI TEMA\templates\admin_mods\m.admin_sidemenu.tpl y buscar: <li id="a_ads"><span class="cat-title"><a href="{$tsConfig.url}/admin/ads">Publicidad</a></span></li> Y agregar debajo: <li id="a_pages"><span class="cat-title"><a href="{$tsConfig.url}/admin/pages">Páginas</a></span></li> Reemplazar los siguientes archivos con los de la descarga: - inc\php\pages.php - themes\MI TEMA\templates\t.pages.tpl Subir/Agregar los siguientes archivos: - inc\class\c.pages.php - themes\MI TEMA\templates\admin_mods\m.admin_pages.tpl [DESCARGAR] Espero que les guste Notas: No olviden actualizar el footer de la página. Para ahorrar un par de bytes pueden eliminar los archivos antiguos que comienzen con m.pages_ en el directorio modules de vuestro tema.