jueves, 7 de julio de 2016

How to fix deTube theme to make it work with Wordpress 4.5.x


If you have an outdated version of WordPress on your site because you can't update deTube theme, then I will show you how to fix it.

There are two fixes to be done, one for the section boxes on the home page and another one for the sidebar.

To fix home page boxes you have to edit the file
wordpress/wp-content/themes/detube/functions.php and add the line $args[‘title’] = ”; below the line $args['posts_per_page'] = $posts_per_page;


/**
* Output a Section Box
*
* @since deTube 1.0
*/

function dp_section_box($args = array()) {
$defaults = array(
'post_type' => 'post',
'cat' => '',
'taxonomies' => array(),
'view' => 'grid-small',
'title' => '',
'link' => '',
'post__in' => '',
'posts_per_page' => '',
'hide_if_empty' => false
);
$args = wp_parse_args($args, $defaults);
extract($args);

$posts_per_page = absint($posts_per_page);

// Set default posts number if no specified
if(empty($posts_per_page)) {
if($view == 'grid-mini')
$posts_per_page = 8;
elseif($view == 'grid-small')
$posts_per_page = 6;
elseif($view == 'grid-medium')
$posts_per_page = 4;
elseif($view == 'list-small')
$posts_per_page = 3;
elseif($view == 'list-medium')
$posts_per_page = 2;
elseif($view == 'list-large')
$posts_per_page = 1;
}

$args['posts_per_page'] = $posts_per_page;
$args['title'] = ''; // fix WP 4.5 compatibility issue

$args = dp_parse_query_args($args);
$query = new WP_Query($args);
...
...
...
Now that we have the section boxe fixed, let's fix the sidebar...

Look for the file wordpress/wp-content/themes/detube/wordpress/wp-content/themes/detube/widgets/widget-posts.php, there go around line 43, below $query_args['no_found_rows'] = true; add the line $query_args['title'] = '';


...
...
...


extract($args);

ob_start();

$title = apply_filters('widget_title', empty($instance['title']) ? __('Recent Posts', 'dp') : $instance['title'], $instance, $this->id_base);

$query_args = $instance;
$query_args['no_found_rows'] = true;
$query_args['title'] = '';
$query_args = dp_parse_query_args($query_args);

$r = new WP_Query( apply_filters( 'dp_widget_posts_args', $query_args ) );

...
...
...

I hope this help some people, if so please let me know in the comments.
PS: I am available for freelance work ;)
Bitcoin donations 1PvQBKRayC7URnwFivrgJS2EVnFptuy9KP




miércoles, 29 de julio de 2009

Como reemplazar Symantec Ghost, con GNU/Linux y algunos script (booteando de la red (pxe))

Esto se generó con la idea de crear un método automático para mantener actualizadas las pcs de un cyber o de cualquier lugar donde exista la necesidad de tener muchas pc iguales y además hay que mantenerlas con el software actualizado permanentemente.

En busca de una solución libre para mantener todos los Windows actualizados y que se realice todo de la forma más automática posible escribimos algunos scripts con los que logramos lo siguiente.

-Todas las PC bootean de la red, si hay alguna actualización o acción que esta PC tenga que realizar arranca en Linux, realiza la tarea (clonado o actualización) y luego reinicia y queda lista para usar.

-En caso que no existan actualizaciones las PCs arracan desde el sistema operativo instalado en el disco.

El sistema de scripts desarrollado nos permite hacer arrancar la PC en Linux y realizar distintas acciones y todas estas se pueden programar con unos scripts desde un servidor, por ej se podría hacer un script que haga que cuando la pc arranque en Linux se ejecute un antivirus para chequear windows y que limpie los virus si encuentra alguno y luego reiniciar la pc y que vuelva a arrancar windows pero esta vez sin virus.

Además otra ventaja que tiene este sistema es que por más que el windows tenga instalado Deep Freeze, no hace falta desfreezar para realizar estas acciones ya que como arrancamos con Linux y montamos la partición podemos escribir en el sistema de archivos y los cambios serán permanentes.

Todo esto se puede aplicar tanto si las PCs clientes tienen instalado Windows o Linux como sistema operativo.

Voy a comenzar a explicando como hacer funcionar este sistema, a quien lea esto le pido que a medida que empiecen a aparecer las dudas (sobre todo en la explicación) me avisen así voy aclarando.

Pasos:

  1. Para que toda esta magia se produzca hay algo que si o si necesitamos..., que las PC clientes arranquen desde la red (pxe), si no cumplimos con este requisito todo esto deja de ser tan interesante. Igualmente casi todas las PCs de hoy por hoy bootean desde la red.

  2. Bajarse los archivos que vamos a necesitar para la instalacion de aca .

  3. Si cumplimos con el paso 1 vamos a comenzar a armar el servidor. Para esto necesitamos:
    • PC con linux instalado

    • Instalar un servidor DHCP (yo lo hice con dnsmaq) y configure estas opciones para que pxe desde la red.

      interface=eth0
      dhcp-boot=pxelinux.0,HOSTNAME,IP_ADD_SERVIDOR


    • Instalar un servidor de tftp (yo en mi gentoo instale net-ftp/atftp) y configurar el directorio root para el servidor tftp (en mi caso /var/lib/tftpboot)

    • Una vez instalado lo anterior poner los siguientes archivos dentro del directorio /var/lib/tftpboot del servidor tftp


      pxelinux.0
      plopInitrfs.gz
      plopBzimage
      pxelinux.cfg/default


    • Instalar el servidor nfs (nfs-utils en gentoo) y configurar los siguientes archivos de configuracion

      /etc/exports


      #(tener en cuenta el rango de ip que estan usando)
      #este directorio es para compartir los archivos del sistema operativo
      /var/lib/nfs/ploplinux/ 192.168.0.0/255.255.0.0(ro,no_subtree_check)

      #este directorio es para crear un espacio donde puden escribir los clientes
      #recordar hacer mkdir -p /var/lib/nfs/tmp y chmod o+rw /var/lib/nfs/tmp
      /var/lib/nfs/tmp/ 192.168.0.0/255.255.0.0(rw,no_subtree_check)



      En ese directorio tiene que estar los archivos para servir a ploplinux (estos archivos se encuentran en el archivo bajado anteriormente dentro del directorio ploplinux) que es la distribución que hemos utilizado en nuestro caso. A esta distribución la hemos modificado para tener algunos comandos mas (como rsync).




      Editar el archivo pxelinux.cfg/default y reemplazar NFS_SERVER_IP_ADDRESS por la ip del servidor nfs que podria ser un servidor distinto del servidor tftp.

      Ahora tenemos en editar el archivo fstab que van a usar las maquinas para montar nuestro servidor nfs, para esto hay que entrar al directorio /var/lib/nfs/ploplinux/ploplinux/ y ahi tiene que estar el archivo etc.sqfs, entonces ejecutamos el siguiente comando "unsquashfs etc.sqfs" (instalar sys-fs/squashfs-tools version 3 en gentoo) esto nos va a crear un directorio squashfs-root, entramos ahi editamos el archivo fstab y cambiamos IPADDRESS por la ip del nuestro servidor nfs, una vez realizado esto grabamos, nos salimos del directorio y ejecutamos "rm etc.sqfs; mksquashfs squashfs-root/ etc.sqfs" y luego "chmod a+r *.sqfs"


      Cualquier duda de como configurar algunos de los servicios anteriores pueden fijarse en instalar ploplinux para bootear desde pxe

  4. Una vez que esta todo configurado vamos a comenzar con una pequeña explicación los scripts dentro del directorio /var/lib/nfs/ploplinux/ploplinux/myscripts

    1)rsyncserver-auto: este script crea el servidor rsync en la PC de la cual vamos a usar como imagen para clonar hacia las demás. Una vez que la pc arranque en este modo va a quedar bloqueada para que nadie la pueda tocar, para desbloquearla escribir "unlock" y luego de darle enter se reiniciará
    2)rsyncclient-auto: este script se conecta automáticamente al servidor rsync, se sincroniza con la PC servidor y cuando termina se reinicia e inicia el sistema operativo. En caso que tengamos windows como sistema operativo, no hace falta desfreezarlo para poder sincronizarlo.
    Tener presente que los script de rsync sirve solamente cuando hacemos actualizaciones sobre una imagen, pero no sirve si hacemos una instalación de cero ya que he experimentado problemas en esos casos y además la PC cliente (con windows) queda con el disco muy fragmentado.
    3)ntfsclone-server: Levanta el servidor sobre la PC deseada y la deja lista para que las demas se clonen de esta misma. En este caso la opción "--pointopoint" hace que el clonado sea unicast, en caso que querramos hacer un clonado multicast borrar esta opción y por default udp-sender se pone en modo multicast. En caso de querer usar modo broadcast cambiarla por --broadcast.
    4)ntfsclone-client: Levanta el cliente que se conecta automáticamente por unicast al servidor y se clona el disco tal cual el servidor. En caso de hacer instalaciones del sistema operativo desde cero esta es la opción más conveniente
    5)changeHostName: Este script lo ejecuta tanto rsyncclient-auto como ntfsclone-client y le cambia al window$ el nombre del host para que cuando prenda no diga "Existe un nombre duplicado en la red"

  5. En la raiz de archivo que nos bajamos al principio hay un script llamado sync_menu.sh, el cual en la cabecera tiene tres variables importantes

    STORES_DIR= en este directorio las mac de nuestra red organizadas por tienda y por departamento, es decir si por ej tengo dos tiendas y dentro de cada tienda tengo un departamento de administracion, entonces dentro del directorio locales creo el directorio tienda1 y dentro de este directorio creo un archivo de texto llamado administracion y ahi pongo las MAC de las PCs de administracion de la tienda 1.

    INIT_MODES=dentro de este directorio van los modo de inicio que vamos a usar para las PCs que inicien desde la red. Esto es una de las partes mas importantes ya que aqui es donde le decimos a un grupo de MAC, que inicien en modo rsync-client y a una MAC en particular que inicie en modo rsync-server y de esta forma automatizamos el proceso.
    Para vincular una imagen con un archivo de inicio tenemos que editar uno de los archivos dentro de este directorio y poner


    default linux
    timeout 1
    prompt 1

    label linux
    kernel plopBzimage
    append initrd=plopInitrfs.gz vga=1 nfsmount=NFS_SERVER_IP_ADDRESS:/var/lib/nfs/ploplinux mode=client-entire


    Prestar atencion a la opcion mode que le pasamos al booteo. Para vincular esta opcion con un script editamos el archivo check_mode.sh dentro de /var/lib/nfs/ploplinux/ploplinux/myscripts y ahi es donde unimos un modo de inicio con un acción que queremos que ejecute la máquina que bootea. Dentro del archivo que nos bajamos al principio hay algunos ejemplos.

    Estamos listo para empezar, para esto ejecutamos el script sync_menu.sh con un usuario con permisos suficientes para leer y escribir en los directorios que hemos estado usando. Cuando el script se ejecuta nos da las siguientes opciones:

    1) Asignarle una tarea a una MAC/PC especifica
    2) Asignarle una tarea a un grupo de PCs
    3) Eliminar las tareas asignadas anteriormente a una MAC/PCs
    4) Listar las MAC/PCs con tareas pendientes



    Estos son solo algunos ejemplos de los scripts que podemos generar y ejecutar, de aqui en más hay via libre para crear!.

    Como ya comente antes las PC que entran en modo servidor se quedan trabadas para que nadie pueda tocarlas, para hacer que finalicen su tarea como servidor, hay que ingresar el password "unlock"


    Con todo esto no hace falta que descongelemos las PC, es decir las podemos clonar y sincronizar congeladas ya que cuando reinician van a estar congeladas y con un nombre de host diferente por lo tanto estan listas para usar.

    Espero que les sirva y tambien espero sus comentarios/dudas ya que es mi primer entrada a un blog y me gustaría saber si a alguien le sirvió para algo.