edición general
imparsifal

imparsifal

En menéame desde junio de 2011

11,47 Karma
615 Ranking
398 Enviadas
86 Publicadas
818 Comentarios
408 Notas

Ganador del concurso de microrrelatos de Menéame en mayo [18]

  1. #10 Poder se puede pero no está permitido y los que votan negativo desde la barra de direcciones se pueden llevar un strike.

Artículo para escribir comentarios de prueba [57]

  1. meneame.net

Error 500 en el envío de enlaces [5]

  1. #4 Si no me equivoco, no se pueden mandar enlaces al propio Menéame. Osea que el error sería que no detecte que es cursiva y te lo permita.
  1. ¿Dónde te da el error? ¿Al enviar un link? ¿Artículo?
  1. Ya está actualizado. Espero feedback si sigue dando error.

BEI apoya la conexión eléctrica entre España y Francia con 1600 millones de euros [3]

  1. #1 Esta tarde me pongo. Pero la pista que das es clave. Gracias

Artículo para escribir comentarios de prueba [57]

El desastre de la programación de Menéame [211]

  1. #117 si se abre, se abre y ya evolucinaremos
  1. #81 okay, te mando la semana que viene un email que tengo que hablarlo con @benjami y ver como lo enfocamos (lo teníamos pensado para el verano).
  1. #75 Yo no he hecho Menéame, remember. Y lo mío es el negocio no el código. Creo que hay mil cosas que mejorar.
  1. #74 Necesito un voluntario al que pasarle las claves de Bitbucket y que haga un fork en Github para que creemos allí, entre todos, el nuevo Menéame. A mí no me da la vida.
  1. #56 Gracias por la ayuda @migrad Tienes un detalle en forma de karma en tu cuenta :-)
  1. Creo que ya funciona. Ya me decís.
  1. #48 Ahora regex101 no da error:

    preg_match_all('/b((http|https)://)?[a-z0-9-]+(.[a-z0-9-]+)+([/?#][^s"]*)?/i', $content, $result, PREG_PATTERN_ORDER);
  1. #49 Pues sí, eso es lo que vamos a hacer.
  1. #43 Lo he dejado así:
    preg_match_all('/b((http|https)://)?[a-z0-9-]+(.[a-z0-9-]+)+([/?#][^s"]*)?/i', $content, $result, PREG_PATTERN_ORDER);

    Ahora ya funciona. A ver si controla todo bien
  1. #40 Yo lo que he visto es que comentado la linea ya no hay error:
    // preg_match_all('/((http|https)://)?[a-zA-Z0-9./?:@-_=#]+.([a-zA-Z0-9&./?:@-_=#])*/', $content, $result, PREG_PATTERN_ORDER);
    Voy a hacer lo que me indicas a ver
  1. #37

    public static function checkBlockedDomainsInContent($content)
    {
    global $db, $current_user;

    $urlBlocked = false;

    if ($current_user->isAdmin() === false) {
    preg_match_all('/((http|https)://)?[a-zA-Z0-9./?:@-_=#]+.([a-zA-Z0-9&./?:@-_=#])*/', $content, $result, PREG_PATTERN_ORDER);
    $urls = $result[0];

    if (count($urls) > 0) {
    $hostnameBanQuery = sprintf('SELECT DISTINCT(ban_text) FROM bans WHERE ban_type = "%s" AND (ban_expire IS NULL OR ban_expire >= NOW())', 'hostname');
    $banHostnames = $db->get_col($hostnameBanQuery);

    foreach ($urls as $url) {
    $url = (!str_contains($url, 'http')) ? 'https://' . $url : $url;
    $url = self::checkUrlRedirection($url);

    $domain = strtolower(str_ireplace('www.', '', parse_url($url, PHP_URL_HOST)));
    if (strpos($domain, 'meditize') !== false) {
    syslog(LOG_INFO, '[MEDITIZE] User: ' . $current_user->user_login);
    }
    if (in_array($domain, $banHostnames)) {
    $urlBlocked = true;
    break;
    }
    }
    }
    }

    return $urlBlocked;

    }
  1. #35 Por eso se lo sata el rol de Admin

    if ($current_user->isAdmin() === false) {
    ...
    if (in_array($domain, $banHostnames)) {
    $urlBlocked = true;
    break;
    }
    }
  1. Creo que el problema es que detecta el comentario que lleva "." como una dirección web
  1. Aquí la clase LinkValidator

    <?php
    // The source code packaged with this file is Free Software, Copyright (C) 2005 by
    // Ricardo Galli <gallir at uib dot es>.
    // It's licensed under the AFFERO GENERAL PUBLIC LICENSE unless stated otherwise.
    // You can get copies of the licenses here:
    // www.affero.org/oagpl.html
    // AFFERO GENERAL PUBLIC LICENSE is also included in the file called "COPYING".

    use SnipeBanBuilderCensorWords;

    require_once mnminclude . 'favorites.php';
    require_once mnminclude . 'mail.php';


    class LinkValidator
    {
    /**
    * @var Link
    */
    public $link;

    public $user;
    public $user_id;
    public $errorCallback;
    public $warningCallback;

    public $error;
    public $warning;

    public $userDrafts;
    public $userVotes;
    public $userLinks;
    public $userSent;
    public $userSentRecent;
    public $linksQueded;

    public function __construct(Link $link)
    {
    global $current_user;

    $this->link = $link;
    $this->user = $current_user;
    $this->user_id = $current_user->user_id;
    }

    public function fixUrl()
    {
    $this->link->url = preg_replace('/#.*$/', '', clean_input_url(urldecode($this->link->url)));

    if (!preg_match('#^http(s)?://#', $this->link->url)) {
    $this->link->url = 'http://' . $this->link->url;
    }

    $this->fixUrlAmp();

    return $this;
    }

    public function fixUrlAmp()
    {
    $url = parse_url($this->link->url);

    if (!strstr($url['host'], '.cdn.ampproject.org')) {
    return;
    }

    $path = preg_replace('#^/([a-z]/)+#', '', $url['path']);
    $path = preg_replace('#^(amp|m).#', 'www.', $path);
    $path = preg_replace('#/amp$#', '', $path);
    $path = str_replace(['.amp.', '/amp/'], ['.', '/'], $path);

    $this->link->url = 'http://' . $path;
    }

    public function checkUrl()
    {
    $host = parse_url($this->link->url, PHP_URL_HOST);

    if (empty($host) || (gethostbyname($host) === $host)) {
    $this->setError(_('La URL enviada…   » ver todo el comentario
  1. Más información.

    Si comentamos estas líneas de comment_ajax.php desaparece el error:

    if (LinkValidator::checkBlockedDomainsInContent($_POST['comment_content'])) {
    syslog(LOG_NOTICE, "Meneame: comment not inserted, banned link ($current_user->user_login)");
    return _('El servidor tiene aplicado un BAN');
    }
    if (LinkValidator::checkBlockedWordsInContent($_POST['comment_content'])) {
    syslog(LOG_NOTICE, "Meneame: comment not inserted, banned words ($current_user->user_login)");
    return _('Tu comentario no será publicado porque contiene palabras no permitidas.');
    }
  1. #31 Aquí os dejo el comment.php

    <?php
    require_once __DIR__ . '/../../../oauth2/init.php';
    require_once __DIR__ . '/../api.php';
    require_once __DIR__ . '/../common.php';
    global $db, $globals, $current_user;

    $link_id = $_GET["link_id"];
    $link = Link::from_db($link_id);

    $comment = $_GET["comment"];
    $reply_to = (isset($_GET["reply_to"]) ? $_GET["reply_to"] : '');
    $process = (!is_numeric($reply_to)) ? 'newcomment' : 'editcomment';

    $api_meneame = new API_Meneame();
    $current_user = new UserAuth();
    $current_user->Authenticate($api_meneame->user->user_login);

    $token_expires = $api_meneame->token_expires;
    $user_id = $api_meneame->user_id;
    $user = $api_meneame->user;
    if ($process == 'editcomment') {
    /** @var Comment $commentFromDb */
    $commentFromDb = Comment::from_db($reply_to);
    if ($commentFromDb) {
    $security_key = md5($commentFromDb->randkey.$api_meneame->site_key);
    }
    } else {
    $security_key = $api_meneame->security_key;
    }

    $user_key = $api_meneame->user_key;
    $cookies = $api_meneame->cookies;
    $randkey = $api_meneame->randkey;
    $base_url = $api_meneame->base_url;

    $url_new_comment = $link->get_permalink(true);
    $url_edit_comment = $base_url . "backend/comment_ajax?id=".$reply_to."&link=".$link_id."&user=".$user_id;
    $url = (!is_numeric($reply_to)) ? $url_new_comment : $url_edit_comment;

    $comment = str_replace('<p>', '', $comment);
    $comment = str_replace('</p>', PHP_EOL, $comment);


    if (LinkValidator::checkBlockedWordsInContent($comment)){
    API_Meneame::sendResponse(500, 'error', 'Tu comentario no será publicado porque contiene palabras no permitidas.');
    } else if (true === LinkValidator::checkBlockedDomainsInContent($comment)) {
    API_Meneame::sendResponse(500, 'error', 'El servidor tiene aplicado un BAN.');
    } else {
    $query_var = array( 'key' => $security_key,
    'process' => $process,
    'randkey' =>…   » ver todo el comentario
  1. A ver, ya lo he dicho varias veces pero lo hago de nuevo: No hay programador contratado en Menéme

    En octubre, cuando entré, la empresa perdía 4.000€ mensuales y se iba a malvender a un grupo mediático que iba a acabar con el Menéame que conocemos.

    Desde entonces, hemos conseguido poner las cuentas al día, cambiar la estructura societaria por una más acorde con el espíritu de Menéame, añadir nuevos espacios de contenidos y poner muchas decisiones en manos de la comunidad a través del Consejo consultivo.

    Ahora la empresa no pierde dinero, es más diversa en contenidos y se autogestiona más que antes. Pero, seguimos sin tener dinero para contratar a un programador.

    ¿Quién se encarga de los cambios y el mantenimiento? Pues hay dos personas, @kutto que trabaja en otra empresa y nos ayuda (conoce muy bien el código) con las migraciones y otros temas complejos. Ha sido quién ha migrado de AWS a Digital Ocean, primero el servidor principal, luego el que hace el cálculo de karma y otros procesos y esta semana la Base de datos. Con eso nos hemos ahorrado el 50% de los costes en infraestructura y tenemos droplets mucho mejores.

    El resto de las cosas las hago yo que no conozco la plataforma. Yo tengo otro trabajo (el que me paga el sueldo cada mes) y a veces no estoy disponible 100% aunque ya ha echado más horas aquí con otros temas que nos son de programación que en el resto de mis actividades.

    En el futuro cercano (este año) queremos tener un programador a media jornada y además en verano vamos a hacer el código accesible a todos. Si no está hecho ya es porque tengo que crear un fork desde bitbucket y no he tenido tiempo.

    Así que con este error, como con el de las cookies, como con el del malware (creo que no me dejo ninguno más relevante) tendréis que tener paciencia.
« anterior1

menéame