jabberd2  2.3.1
Data Structures | Typedefs | Enumerations | Functions | Variables
mod_privacy.c File Reference

XEP-0016 Privacy Lists and XEP-0191 Simple Comunications Blocking. More...

#include "sm.h"

Go to the source code of this file.

Data Structures

struct  zebra_st
 zebra data for a single user More...
 
struct  zebra_list_st
 
struct  zebra_item_st
 
struct  privacy_st
 
union  xhashv
 session packet handling More...
 

Typedefs

typedef struct zebra_stzebra_t
 
typedef struct zebra_list_stzebra_list_t
 
typedef struct zebra_item_stzebra_item_t
 
typedef struct privacy_stprivacy_t
 

Enumerations

enum  zebra_item_type_t { zebra_NONE, zebra_JID, zebra_GROUP, zebra_S10N }
 
enum  zebra_block_type_t {
  block_NONE = 0x00, block_MESSAGE = 0x01, block_PRES_IN = 0x02, block_PRES_OUT = 0x04,
  block_IQ = 0x08
}
 

Functions

static void _privacy_free_z (zebra_t z)
 
static void _privacy_user_free (zebra_t *z)
 
static int _privacy_user_load (mod_instance_t mi, user_t user)
 
static int _privacy_action (user_t user, zebra_list_t zlist, jid_t jid, pkt_type_t ptype, int in)
 returns 0 if the packet should be allowed, otherwise 1 More...
 
static mod_ret_t _privacy_in_router (mod_instance_t mi, pkt_t pkt)
 check incoming packets More...
 
static mod_ret_t _privacy_out_router (mod_instance_t mi, pkt_t pkt)
 check outgoing packets More...
 
static void _privacy_result_builder (xht zhash, const char *name, void *val, void *arg)
 add a list to the return packet More...
 
static void _privacy_lists_result_builder (const char *name, int namelen, void *val, void *arg)
 add a list to the return packet More...
 
static void _unblock_jid (user_t user, storage_t st, zebra_list_t zlist, jid_t jid)
 remove jid deny ocurrences from the privacy list, unblock all if no jid given to match, then update unblocked contact with presence information More...
 
static mod_ret_t _privacy_in_sess (mod_instance_t mi, sess_t sess, pkt_t pkt)
 list management requests More...
 
static void _privacy_user_delete (mod_instance_t mi, jid_t jid)
 
static void _privacy_free (module_t mod)
 
DLLEXPORT int module_init (mod_instance_t mi, const char *arg)
 

Variables

static int ns_PRIVACY = 0
 
static int ns_BLOCKING = 0
 

Detailed Description

XEP-0016 Privacy Lists and XEP-0191 Simple Comunications Blocking.

Author
Robert Norris
Date:
2005/08/17 07:48:28
Revision:
1.32

Definition in file mod_privacy.c.

Typedef Documentation

typedef struct zebra_st* zebra_t

Definition at line 33 of file mod_privacy.c.

typedef struct zebra_list_st* zebra_list_t

Definition at line 34 of file mod_privacy.c.

typedef struct zebra_item_st* zebra_item_t

Definition at line 35 of file mod_privacy.c.

typedef struct privacy_st * privacy_t

Enumeration Type Documentation

Enumerator
zebra_NONE 
zebra_JID 
zebra_GROUP 
zebra_S10N 

Definition at line 37 of file mod_privacy.c.

Enumerator
block_NONE 
block_MESSAGE 
block_PRES_IN 
block_PRES_OUT 
block_IQ 

Definition at line 44 of file mod_privacy.c.

Function Documentation

static void _privacy_free_z ( zebra_t  z)
static
static void _privacy_user_free ( zebra_t z)
static

Definition at line 118 of file mod_privacy.c.

References _privacy_free_z().

Referenced by _privacy_user_load().

static int _privacy_user_load ( mod_instance_t  mi,
user_t  user 
)
static
static int _privacy_action ( user_t  user,
zebra_list_t  zlist,
jid_t  jid,
pkt_type_t  ptype,
int  in 
)
static
static mod_ret_t _privacy_in_router ( mod_instance_t  mi,
pkt_t  pkt 
)
static
static mod_ret_t _privacy_out_router ( mod_instance_t  mi,
pkt_t  pkt 
)
static
static void _privacy_result_builder ( xht  zhash,
const char *  name,
void *  val,
void *  arg 
)
static
static void _privacy_lists_result_builder ( const char *  name,
int  namelen,
void *  val,
void *  arg 
)
static

add a list to the return packet

Definition at line 593 of file mod_privacy.c.

References pkt_st::nad, nad_find_elem(), nad_find_scoped_namespace(), nad_insert_elem(), nad_set_attr(), zebra_list_st::name, and uri_PRIVACY.

Referenced by _privacy_in_sess().

static void _unblock_jid ( user_t  user,
storage_t  st,
zebra_list_t  zlist,
jid_t  jid 
)
static
static mod_ret_t _privacy_in_sess ( mod_instance_t  mi,
sess_t  sess,
pkt_t  pkt 
)
static

list management requests

Definition at line 658 of file mod_privacy.c.

References _privacy_lists_result_builder(), _privacy_result_builder(), _unblock_jid(), sess_st::A, sess_st::available, zebra_item_st::block, block_IQ, block_MESSAGE, block_NONE, block_PRES_IN, block_PRES_OUT, zebra_st::def, zebra_item_st::deny, sess_st::E, zebra_item_st::from, pkt_st::from, zebra_item_st::group, module_st::index, zebra_list_st::items, zebra_item_st::jid, user_st::jid, sess_st::jid, jid_compare_full(), jid_free(), jid_full(), jid_new(), jid_search(), jid_user(), zebra_list_st::last, zebra_st::lists, log_debug, module_st::mm, mod_instance_st::mod, mod_HANDLED, mod_PASS, user_st::module_data, sess_st::module_data, pkt_st::nad, nad_add_namespace(), NAD_AVAL, NAD_AVAL_L, nad_find_attr(), nad_find_elem(), nad_find_scoped_namespace(), nad_insert_elem(), nad_set_attr(), zebra_list_st::name, zebra_item_st::next, sess_st::next, pkt_st::ns, ns_BLOCKING, ns_PRIVACY, zebra_item_st::order, zebra_list_st::p, sess_st::p, pkt_create(), pkt_dup(), pkt_free(), pkt_id(), pkt_id_new(), pkt_IQ, pkt_IQ_SET, pkt_router(), pkt_sess(), pmalloco(), pool_cleanup(), pool_free(), pool_new, pres_trust(), zebra_item_st::prev, pstrdup(), pstrdupx(), user_st::sessions, pkt_st::sm, user_st::sm, mm_st::sm, sm_st::st, stanza_err_BAD_REQUEST, stanza_err_INTERNAL_SERVER_ERROR, stanza_err_ITEM_NOT_FOUND, zebra_item_st::to, pkt_st::to, zebra_item_st::type, pkt_st::type, uri_PRIVACY, urn_BLOCKING, sess_st::user, xhash_get(), xhash_getx(), xhash_put(), xhash_walk(), xhash_zap(), zebra_GROUP, zebra_JID, zebra_S10N, and ZONE.

Referenced by module_init().

static void _privacy_user_delete ( mod_instance_t  mi,
jid_t  jid 
)
static

Definition at line 1311 of file mod_privacy.c.

References jid_user(), log_debug, mod_instance_st::sm, sm_st::st, and ZONE.

Referenced by module_init().

static void _privacy_free ( module_t  mod)
static

Definition at line 1318 of file mod_privacy.c.

References feature_unregister(), module_st::mm, mm_st::sm, sm_unregister_ns(), and uri_PRIVACY.

Referenced by module_init().

DLLEXPORT int module_init ( mod_instance_t  mi,
const char *  arg 
)

Variable Documentation

int ns_PRIVACY = 0
static

Definition at line 30 of file mod_privacy.c.

Referenced by _privacy_in_sess(), and module_init().

int ns_BLOCKING = 0
static

Definition at line 31 of file mod_privacy.c.

Referenced by _privacy_in_sess(), and module_init().