Publi

  • Programación a lo «Monaguillo»… y todos lo hemos hecho.

    16378234577_bf1602f3ef_k

    Antes de nada, vamos a poner antecedentes. Para los que no conozcáis a este humorista:


    Bueno, que este hombre tiene un estilo muy particular, es nervioso y dice las cosas como le vienen y personalmente me río mucho con él, por lo que ya podéis estar siguiéndole en Twitter.

    En programación, es una cosa que suelo hablar con amigos y colegas de trabajo y es un concepto que se puede aplicar a muchas áreas de conocimiento.… Leer artículo completo

  • Servidor web seguro (HTTPS) en C usando openSSL (pruebas)

    Hace unos días veíamos un ejemplo de un cliente web SSL con ayuda de openSSL. Ahora vamos a hacer un servidor al que se pueda conectar. Se trata sólo de una prueba de concepto, nada que podamos utilizar en el mundo real, pero está bien para ver cómo funciona la biblioteca.

    Creando un certificado auto-firmado

    Lo primero que vamos a hacer es crear una llave y un certificado para utilizarlos.… Leer artículo completo

  • Conexión segura a un servidor web (HTTPS) en C usando openSSL

    Bueno, el código no tiene mucha más explicación. El objetivo es poder conectar a un servidor web a través de un protocolo seguro y recibir datos, pero también que podamos ver si hay algún problema con el certificado, verificar el algoritmo de cifrado y los datos del certificado, verificar los certificados intermedios, etc.

    Si ignoramos SSL, lo que tenemos que hacer es conectar con un servidor a través de un puerto determinado (como estamos en web, sería el puerto 80, por defecto), y mandarle una serie de datos:

    GET / HTTP/1.1[CRLF]
    Host: openssl.org[CRLF]
    User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:37.0) Gecko/20100101 Firefox/37.0[CRLF]
    [CRLF]

    Por ejemplo.… Leer artículo completo

  • Mini servidor web con Bash y netcat para páginas en mantenimiento

    Foto: MTSOfan (Flickr CC-by)

    Cuando estamos trabajando en un servidor web, sobre todo si ya está siendo usado y hay páginas alojadas en él, y necesitamos irremediablemente pararlo todo para trabajar no podemos dejarlo todo tirado esperando que los usuarios no se enfaden (y peor, esperando que los buscadores no se enfaden, porque la ley de Murphy dice que aunque pares el servidor 10 minutos, va a venir Google a rastrear la página y colocar en tu resumen un precioso:

    …y cargarse todo el SEO de la página.… Leer artículo completo

  • 20 Cosas chulas que se pueden hacer en una terminal de GNU/Linux

    Un poco como continuación de un post de hace casi 2 años, en el que comentaba ejemplos de cosas que se pueden hacer con Bash en una o dos líneas de código.

    Ahora quiero hacer cosas un poco más complejas (y alguna que otra sencilla, pero curiosa), en una nueva sección de códigos para copiar y pegar en vuestros terminales:

    Servidores

    Montar un servidor FTP rápido

    Ésta es una solución para un apaño, para el caso en que necesitemos activar un servidor FTP para pasar un fichero a alguien, o para que nos pasen algún fichero… o por ejemplo por si queremos instalar un plugin en WordPress rápidamente y somos unos paranoicos de la seguridad (y por tanto no queremos dejar un servidor FTP corriendo siempre).… Leer artículo completo

  • Enviar e-mails con adjuntos desde la terminal con sendmail [Bash script]

    En varias ocasiones, he necesitado enviar un e-mail a un compañero de trabajo (o a mí mismo) con información recién extraída de un servidor (por ejemplo un CSV de base de datos o información subida desde la web) y lo que he hecho al final ha sido bajármelo por SSH y una vez en mi ordenador he enviado el archivo donde ha sido necesario. Si eres como yo, que siempre tengo una sesión SSH abierta en mi servidor, ganarás un par de minutos con este script.… Leer artículo completo

  • Experimentos: Instalando Magento desde SSH


    Magento es un software hecho en PHP para gestión integral de e-commerce. [Link a wikipedia]. Existen una versión comercial y una versión open, llamada Community Edition, y es esta última con la que vamos a experimentar.

    Hay miles de guías por Internet para instalar Magento. Esta no pretende ser la más completa, pero sí una chuleta rápida para mis futuras instalaciones y experimentos. Aunque me alegraré mucho si a alguien le resulta útil.… Leer artículo completo

  • Magia en Bash 50 ejemplos en una sola linea (o dos)

    Bash es una de las herramientas más potentes que tenemos a nuestro alcance, aunque no sólo de bash trata el artículo, sino de trucos para consola, one-liner como dirían muchos (aunque habrá algunos two-liners) que podemos utilizar y pueden hacernos la vida un poco más fácil:

    Cadenas de texto

    Trim

    Es una herramienta que utilizaremos para recortar nuestra cadena basándonos en los a la ìzquierda y a la derecha, en este caso nos basaremos en los espacios, que es uno de sus usos más comunes (así podemos obtener la cadena limpia tanto por delante como por detrás.… Leer artículo completo

  • Instalar y configurar un servidor LAMP

    Lámpara de bajo consumoEn esta ocasión el servidor LAMP a instalar corresponderá con Linux + Apache + MySQL + PHP, intentaré dejarlo todo funcionando.

    Éste es el servidor local que suelo utilizar para mis proyectos web, de todas formas no me quiero meter en necesidades muy avanzadas, ni de seguridad (es un servidor local para hacer pruebas, desarrollar webs, y correr servicios locales; no un servidor de producción), si el servidor está cerrado al exterior, mejor.… Leer artículo completo

  • Creando un servidor que acepte múltiples clientes simultáneos en C

    5989707041_64de393f6b_oPara hacer una prueba de esto, crearemos un servidor al que nos podremos conectar por telnet y pedir cierta información a través de comandos. El ejemplo soporta los siguientes comandos (en mayúsculas):

    • DATE: Pide la fecha al servidor
    • TIME: Pide la hora al servidor
    • HOLA: Saluda y me dice mi IP
    • EXIT: Cierra el cliente actual
    • CERRAR: Cierra el servidor.
    • Cualquier otra cosa se manda repetida (ECHO)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    /**
    *************************************************************
    * @file servtcp.c
    * @brief Breve descripción
    * Ejemplo de un cliente TCP usando threads
    *
    *
    * @author Gaspar Fernández <blakeyed@totaki.com>
    * @version 0.1Beta
    * @date 13 ene 2011
    * Historial de cambios:
    *   20110113 - Versión inicial
    *
    *
    *************************************************************/


    #include <fcntl.h>
    #include <string.h>
    #include <stdlib.h>
    #include <errno.h>
    #include <stdio.h>
    #include <netinet/in.h>
    #include <resolv.h>
    #include <sys/socket.h>
    #include <sys/types.h>
    #include <sys/wait.h>
    #include <arpa/inet.h>
    #include <unistd.h>
    #include <pthread.h>
    #include <string.h>

    /** Puerto  */
    #define PORT       7000

    /** Número máximo de hijos */
    #define MAX_CHILDS 3

    /** Longitud del buffer  */
    #define BUFFERSIZE 512

    int AtiendeCliente(int socket, struct sockaddr_in addr);
    int DemasiadosClientes(int socket, struct sockaddr_in addr);
    void error(int code, char *err);
    void reloj(int loop);

    int main(int argv, char** argc){

        int socket_host;
        struct sockaddr_in client_addr;
        struct sockaddr_in my_addr;
        struct timeval tv;      /* Para el timeout del accept */
        socklen_t size_addr = 0;
        int socket_client;
        fd_set rfds;        /* Conjunto de descriptores a vigilar */
        int childcount=0;
        int exitcode;

        int childpid;
        int pidstatus;

        int activated=1;
        int loop=0;
        socket_host = socket(AF_INET, SOCK_STREAM, 0);
        if(socket_host == -1)
          error(1, "No puedo inicializar el socket");
       
        my_addr.
    Leer artículo completo