source: protocols/account.h @ af6b7fa

Last change on this file since af6b7fa was 3ac6d9f, checked in by Dennis Kaarsemaker <dennis@…>, at 2016-03-23T06:44:13Z

Support for locked-down accounts

In certain situations, e.g. when working with pregenerated
configurations, it is useful to be able lock down accounts so they
cannot be deleted and authentication information (user, password,
server) cannot be changed.

We mark such sensitive settings with ACC_SET_LOCKABLE and will refuse to
change them if the account is locked by setting the ACC_FLAG_LOCKED
flag.

This flag is stored in the xml files as account attribute locked="true".

  • Property mode set to 100644
File size: 2.8 KB
Line 
1/********************************************************************\
2  * BitlBee -- An IRC to other IM-networks gateway                     *
3  *                                                                    *
4  * Copyright 2002-2013 Wilmer van der Gaast and others                *
5  \********************************************************************/
6
7/* Account management functions                                         */
8
9/*
10  This program is free software; you can redistribute it and/or modify
11  it under the terms of the GNU General Public License as published by
12  the Free Software Foundation; either version 2 of the License, or
13  (at your option) any later version.
14
15  This program is distributed in the hope that it will be useful,
16  but WITHOUT ANY WARRANTY; without even the implied warranty of
17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  GNU General Public License for more details.
19
20  You should have received a copy of the GNU General Public License with
21  the Debian GNU/Linux distribution in /usr/share/common-licenses/GPL;
22  if not, write to the Free Software Foundation, Inc., 51 Franklin St.,
23  Fifth Floor, Boston, MA  02110-1301  USA
24*/
25
26#ifndef _ACCOUNT_H
27#define _ACCOUNT_H
28
29typedef struct account {
30        struct prpl *prpl;
31        char *user;
32        char *pass;
33        char *server;
34        char *tag;
35
36        int auto_connect;
37        int auto_reconnect_delay;
38        int reconnect;
39        int flags;
40
41        set_t *set;
42        GHashTable *nicks;
43
44        struct bee *bee;
45        struct im_connection *ic;
46        struct account *next;
47} account_t;
48
49account_t *account_add(bee_t *bee, struct prpl *prpl, char *user, char *pass);
50account_t *account_get(bee_t *bee, const char *id);
51account_t *account_by_tag(bee_t *bee, const char *tag);
52void account_del(bee_t *bee, account_t *acc);
53void account_on(bee_t *bee, account_t *a);
54void account_off(bee_t *bee, account_t *a);
55
56char *set_eval_account(set_t *set, char *value);
57char *set_eval_account_reconnect_delay(set_t *set, char *value);
58int account_reconnect_delay(account_t *a);
59
60int protocol_account_islocal(const char* protocol);
61
62typedef enum {
63        ACC_SET_OFFLINE_ONLY = 0x02,    /* Allow changes only if the acct is offline. */
64        ACC_SET_ONLINE_ONLY = 0x04,     /* Allow changes only if the acct is online. */
65        ACC_SET_LOCKABLE = 0x08         /* Setting cannot be changed if the account is locked down */
66} account_set_flag_t;
67
68typedef enum {
69        ACC_FLAG_AWAY_MESSAGE = 0x01,   /* Supports away messages instead of just states. */
70        ACC_FLAG_STATUS_MESSAGE = 0x02, /* Supports status messages (without being away). */
71        ACC_FLAG_HANDLE_DOMAINS = 0x04, /* Contact handles need a domain portion. */
72        ACC_FLAG_LOCAL = 0x08,          /* Contact list is local. */
73        ACC_FLAG_LOCKED = 0x10,         /* Account is locked (cannot be deleted, certain settings can't changed) */
74} account_flag_t;
75
76#endif
Note: See TracBrowser for help on using the repository browser.