Sha256: d8777410412f4c695b4b3c369174187d1b829a2e6b36a8d22aac90614f5ecdf7

Contents?: true

Size: 1.31 KB

Versions: 8

Compression:

Stored size: 1.31 KB

Contents

//  The Strawhouse Pattern
//
//  We allow or deny clients according to their IP address. It may keep 
//  spammers and idiots away, but won't stop a real attacker for more 
//  than a heartbeat.

#include <czmq.h>

int main (void) 
{
    //  Create context
    zctx_t *ctx = zctx_new ();
    
    //  Start an authentication engine for this context. This engine
    //  allows or denies incoming connections (talking to the libzmq
    //  core over a protocol called ZAP).
    zauth_t *auth = zauth_new (ctx);
    
    //  Get some indication of what the authenticator is deciding
    zauth_set_verbose (auth, true);
    
    //  Whitelist our address; any other address will be rejected
    zauth_allow (auth, "127.0.0.1");
        
    //  Create and bind server socket
    void *server = zsocket_new (ctx, ZMQ_PUSH);
    zsocket_set_zap_domain (server, "global");
    zsocket_bind (server, "tcp://*:9000");

    //  Create and connect client socket
    void *client = zsocket_new (ctx, ZMQ_PULL);
    zsocket_connect (client, "tcp://127.0.0.1:9000");
    
    //  Send a single message from server to client
    zstr_send (server, "Hello");
    char *message = zstr_recv (client);
    assert (streq (message, "Hello"));
    free (message);
    puts ("Strawhouse test OK");

    zauth_destroy (&auth);
    zctx_destroy (&ctx);
    return 0;
}

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
rbczmq-1.7.9 ext/czmq/examples/security/strawhouse.c
rbczmq-1.7.8 ext/czmq/examples/security/strawhouse.c
rbczmq-1.7.7 ext/czmq/examples/security/strawhouse.c
rbczmq-1.7.6 ext/czmq/examples/security/strawhouse.c
rbczmq-1.7.5 ext/czmq/examples/security/strawhouse.c
rbczmq-1.7.4 ext/czmq/examples/security/strawhouse.c
rbczmq-1.7.3 ext/czmq/examples/security/strawhouse.c
rbczmq-1.7.2 ext/czmq/examples/security/strawhouse.c