jcatala.net

Compartint el coneixement

UNIX

GNU/Linux

Drupal i PHP

XHTML/CSS

Python

Android

Viatges

Off Topic



El meu Twitter El meu Flickr El meu Youtube El meu Instagram El meu Linkedin El meu Tumblr El RSS de la pagina
Logo Jcatala

Cercar amb find però excloure els fitxers sense permisos

20 de Octubre de 2016 per joan

Ací el truquet del dia, l'apunte per a no oblidar-ho. Es tracta de com "drush" a tot el sistema operatiu però exclou totes les línies de "Access denied":

$ find / ! -readable -prune -o -name drush -print

La cadena en qüestió "-name drush" es pot modificar per altres cerques.

Configuració automàtica Wifi a FreeBSD

7 de Octubre de 2016 per joan

Cal carregar els drivers a l'arranc, al fitxer /boot/loader.conf:

if_urtw_load="YES"

O bé, al portàtil Lenovo X201i:

iwnfw_load="YES"
if_iwn_load="YES"

iwn6050="YES"
legal.intel_iwn.license_ack=1
wlan_ccmp_load="YES"
wlan_tkip_load="YES"

wlan_wep_load="YES"
wlan_ccmp_load="YES"
wlan_tkip_load="YES"

Al fitxer /etc/wpa_supplicant.conf especifiquem el SSID i el PSK:

network={
        ssid="LA_TEUA_WIFI"
        psk="LA_TEUA_CONTRASENYA"
}

Escoltar CDs i DVDs d'àudio a FreeBSD

5 de Octubre de 2016 per joan

Avui havia ficat un CD que tenia per casa antic d'una banda que m'agraden molt i no podia per problemes de permís a /dev/cd0 amb l'aplicació VLC.

Per a donar-li permissos correctament, caldrà tenir a /etc/rc.conf:

devfs_system_ruleset="devfsrules_common"

Al fitxer /etc/devfs.conf haurem d'afegir:

# Allow operator group to access CD/DVD
own         /dev/acd0    root:operator
perm     /dev/acd0       0660
own         /dev/acd1    root:operator
perm     /dev/acd1       0660
own         /dev/cd0     root:operator
perm     /dev/cd0        0660
own         /dev/cd1     root:operator
perm     /dev/cd1        0660

I també a /etc/devfs.rules:

add path 'acd[0-9]*' mode 0660 group operator
add path 'cd[0-9]*'  mode 0660 group operator

I, encara que ja ho tenia per a l'automuntatge de les fotos de la meua càmera Canon 1100D, finalment també cal afegir a /boot/loader.conf:

fuse_load="YES"

Esborrar el fitxer settings.php al hosting de 1and1

4 de Octubre de 2016 per joan

I ací el truquet del dia: de vegades a 1and1 no es pot esborrar el fitxer settings.php encara que li dones tots els permissos perquè són generats pel propi CMS Drupal.

El truc està en donar-li permissos al directori superior:

/sites$ chmod -R 777 default
/sites$ cd default/
/sites/default$ rm settings.php

I ja.

Limitant el número de caràcters a les descripcions de les notícies de Klaku

26 de Setembre de 2016 per joan

Limitant el número de caràcters a les descripcions de les notícies de Klaku
Per tal de maquetar bé el llistat de notícies populars i notícies pendents o ĵuŝaj novaĵoj, aleshores tant des del PHP/MySQL he limitat a 180 caràcters des de la part del Frontend de Bootstrap com ara, he limitat el formulari d'inserció de les notícies.

El javascript que controla el textarea fent un contador i, si es passa de 180 caràcters atura l'escriptura i pinta el text de color roig:

<script type="text/javascript">
function limita(elEvento, maximoCaracteres) {
  var elemento = document.getElementById("camp_priskribo");

  // Obtener la tecla pulsada
  var evento = elEvento || window.event;
  var codigoCaracter = evento.charCode || evento.keyCode;
  // Permitir utilizar las teclas con flecha horizontal
  if(codigoCaracter == 37 || codigoCaracter == 39) {
    return true;
  }

  // Permitir borrar con la tecla Backspace y con la tecla Supr.
  if(codigoCaracter == 8 || codigoCaracter == 46) {
    return true;
  }
  else if(elemento.value.length >= maximoCaracteres ) {
    return false;
  }
  else {
    return true;
  }
}

function actualizaInfo(maximoCaracteres) {
  var elemento = document.getElementById("camp_priskribo");
  var info = document.getElementById("info");

  if(elemento.value.length >= maximoCaracteres ) {
    info.innerHTML = "<font color='red'>Maksimume "+maximoCaracteres+" literojn</font>";
  }
  else {
    info.innerHTML = "Eblas skribi "+(maximoCaracteres-elemento.value.length)+" pliajn literojn";
  }
}
</script>

I el HTML de Bootstrap és el següent:

<textarea class="form-control" id="camp_priskribo" name="camp_priskribo" placeholder="Skribu la titolon"  onkeypress="return limita(event, 180);" onkeyup="actualizaInfo(180)"></textarea>

<div id="info">Eblas skribi maksimume 180 literojn</div>

Script amb Python per a crear al vol un llistat de més de 100 VirtualHosts per a l'Apache Web Server

21 de Setembre de 2016 per joan

Python per a generar els VirtualHosts a Apache Web Server
Avui hem fet un script per a exportar 120 webs que tenim a un servidor amb NGINX a un altra amb Apache Web Server, per a provar el rendiment, entre d'altres coses. Com tenim una base de dades amb el nom dels dominis, el codi del directori on els tenim albergats, hem fet un script per a que ens munte els VirtualHosts automàticament.

Repensant KLAKU des de zero amb Bootstrap, PHP i Javascript

20 de Setembre de 2016 per joan

KLAKU.NET

Després d'un estiu on cada setmana anava avançant alguna funcionalitat durant algunes hores lliures que trobava, vaig anar fent coses com Migrant un Drupal complet a un nou Drupal o nodes entre distints Drupals && Evolució, anades d'olla i millores al projecte web Klaku.net && Exportant tots els valors dels vots de Vote up/down de Drupal a una base de dades externa && Exportem dades des de Drupal 6 a un repositori central CSV i importem en les noves taules ara ja tenim funcionant KLAKU amb Bootstrap i PHP des de zero.

El sistema de puntuació es made in Joan sense widgets ni snippets externets, els ususaris i contrasenyes són els usuaris de l'antiga Klaku amb Drupal, encara que ara amb encriptació SHA1 més un algoritme propi per complicar-ho més, jeje, també les notícies, les categories i els comentaris són heretats de l'antiga web.

Encara queden algunes coses per fer, com urls netes, un sistema anti-spam, i altres coses, i també vindran problemes i petades màximes de coses que tal vegada no s'han analitzat bé, però ja està tot en marxa i a bon ritme ho anirem implementant.

Canviant des de la consola característiques dels camps de les taules a MySQL

19 de Setembre de 2016 per joan

Canviant les característiques dels camps de les taules a MySQL

Ahir vaig detectar que les contrasenyes dels usuaris de Klaku, amb SHA1 i un algoritme de cifrat propi, eren massa llargues, i necessitava ampliar les característiques del camp de les contrasenyes. Per això aquestos apunts d'ací baix per a canviar, des de la consola del terminal, alguns camps de les meues taules i les seues característiques.

La manera de renombrar el nom i les característiques d'un camp seria:

ALTER TABLE nom_de_la_taula CHANGE camp camp_canviar noves_propietats;

Tal com veieu a la captura del terminal, ho vaig fer amb:

ALTER TABLE uzanto CHANGE pasvorto pasvorto varchar(200);

Si vullguerem afegir una columna que siga la clau primària:

ALTER TABLE nom_de_la_taula ADD PRIMARY KEY(nom_columna);

Si vullguerem que una taula numèrica tinga un valor autoincremental a partir del número 390 (per exemple) seria:

ALTER TABLE nom_de_la_taula AUTO_INCREMENT=390;

Si volem canviar el nom i el tipus de data d'una columna (el primer exemple que he mostrat):

ALTER TABLE nom_de_la_taula CHANGE nom_antic_columna nom_nou_columna VARCHAR(20);

Mostrant un block colapsat dins d'un Panel de Drupal fàcilment

16 de Setembre de 2016 per joan

Mostrant un block colapsat dins d'un Panel de Drupal fàcilment

La idea és fer un formulari de satisfacció baix de totes les pàgines, però que ens aparega colapsat, i quan l'usuari fa clic sobre el títol, es desplega i et mostra el formulari pertinent.

Caldrà tenir instal·lat el Webform, per als formularis, el Panels Style Collapsible i el Collapsiblock, perquè els webform els transformarem a Block, i el farem amb l'efecte "collapsible".

L'afegim al Panel, com de costum, a la secció 'miscelanious', i una vegada el tenim posicionat, modifiquem la part de l'estil i li direm collapsible. I ja està.

Mostrant un block colapsat dins d'un Panel de Drupal fàcilment

Si volem que el formulari no es mostre a totes i cada una de les webs, anirem a la part de configuració del Block (perquè recorda que hem convertit eixa regió del Panel en un block) i afegim les pàgines que volem amagar, com de costum es fa als Blocks de Drupal.

Finalment, com que tenim una web amb el mòdul i18n en dues llengues, he tocat les regles de visibilitat per a que es mostre un formulari en castellà quan estem a la llengua espanyol, i un formulari en català quan l'usuari navega en català.

Un script monitoritzador que m'avisa si tinc el meu servidor web caigut

15 de Setembre de 2016 per joan

Avui hem preparat un script que ens avisa de si caigudes les 118 webs que portem. La idea no és monitoritzar cada web per separat, sinó directament el servidor web.

L'script en qüestió mira l'estat 200, si és distint aleshores ens envia un correu. Ací tens el llistat de tots els estats de l'HTTP. I ací el codi:

#!/usr/local/bin/bash
url="LA_TEUA_WEB.net";
response=$(curl -s -I -L $url | grep HTTP);

status=${response#* };
status=${status:0:3};

if [ "$status" != "200" ]
then
   echo "ATENCIÓ: LES WEBS MUNICIPALS ESTAN CAIGUDES. HI HA ALGUN PROBLEMA AL SERVIDOR WEB." | mail -s "LES WEBS NO ESTAN FUNCIONANT" "EL_TEU_EMAIL@dipcas.es"
fi

He ficat l'script al directori /usr/bin de la meua Raspberry domèstica amb FreeBSD que tinc 24x7 funcionant, nuvolet.benicass.im. A continuació li donem permisos totals d'execusió:

# chmod 777 /usr/bin/script_pwm_caigut.sh

Finalment afegim una línea al crontab per a que es vaja executant cada 5 minuts:

*/5 * * * *     /usr/bin/script_pwm_caigut.sh

I ja està pujat al meu repositori d'scripts del GIT https://github.com/joancatala/scripts-sepam
Ja tenim configurat el robotet.