all: updated FSF address in GPL text
[sip-router] / modules / imc / imc_cmd.h
1 /*
2  * $Id$
3  *
4  * imc module - instant messaging conferencing implementation
5  *
6  * Copyright (C) 2006 Voice Sistem S.R.L.
7  *
8  * This file is part of Kamailio, a free SIP server.
9  *
10  * Kamailio 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  * Kamailio 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 
21  * along with this program; if not, write to the Free Software 
22  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
23  *
24  * History:
25  * ---------
26  */
27
28
29
30
31 #ifndef _IMC_CMD_H_
32 #define _IMC_CMD_H_
33
34 #include "../../parser/parse_uri.h"
35 #include "../../str.h"
36 #include "imc_mng.h"
37
38 #define IMC_CMD_START           '#'
39 #define IMC_CMD_START_STR       "#"
40
41 #define IMC_CMDID_CREATE        1
42 #define IMC_CMDID_INVITE        2
43 #define IMC_CMDID_JOIN          3
44 #define IMC_CMDID_EXIT          4
45 #define IMC_CMDID_ACCEPT        5
46 #define IMC_CMDID_DENY          6
47 #define IMC_CMDID_REMOVE        7
48 #define IMC_CMDID_DESTROY       8
49 #define IMC_CMDID_HELP          9
50 #define IMC_CMDID_LIST          10
51 #define IMC_CMDID_UNKNOWN       11
52
53 #define IMC_CMD_CREATE  "create"
54 #define IMC_CMD_INVITE  "invite"
55 #define IMC_CMD_JOIN    "join"
56 #define IMC_CMD_EXIT    "exit"
57 #define IMC_CMD_ACCEPT  "accept"
58 #define IMC_CMD_DENY    "deny"
59 #define IMC_CMD_REMOVE  "remove"
60 #define IMC_CMD_DESTROY "destroy"
61 #define IMC_CMD_LIST    "list"
62
63 #define IMC_ROOM_PRIVATE                "private"
64 #define IMC_ROOM_PRIVATE_LEN    (sizeof(IMC_ROOM_PRIVATE)-1)
65
66 #define IMC_HELP_MSG    "\r\n"IMC_CMD_START_STR IMC_CMD_CREATE" <room_name> - \
67 create new conference room\r\n\
68 "IMC_CMD_START_STR IMC_CMD_JOIN" [<room_name>] - \
69 join the conference room\r\n\
70 "IMC_CMD_START_STR IMC_CMD_INVITE" <user_name> [<room_name>] - \
71 invite a user to join a conference room\r\n\
72 "IMC_CMD_START_STR IMC_CMD_ACCEPT" - \
73 accept invitation to join a conference room\r\n\
74 "IMC_CMD_START_STR IMC_CMD_DENY" - \
75 deny invitation to join a conference room\r\n\
76 "IMC_CMD_START_STR IMC_CMD_REMOVE" <user_name> [<room_name>] - \
77 remove an user from the conference room\r\n\
78 "IMC_CMD_START_STR IMC_CMD_LIST" - \
79 list members is a conference room\r\n\
80 "IMC_CMD_START_STR IMC_CMD_EXIT" [<room_name>] - \
81 exit from a conference room\r\n\
82 "IMC_CMD_START_STR IMC_CMD_DESTROY" [<room_name>] - \
83 destroy conference room\r\n"
84
85 #define IMC_HELP_MSG_LEN (sizeof(IMC_HELP_MSG)-1)
86
87
88 #define IMC_CMD_MAX_PARAM   5
89 typedef struct _imc_cmd
90 {
91         str name;
92         int type;
93         str param[IMC_CMD_MAX_PARAM];
94 } imc_cmd_t, *imc_cmd_p;
95
96 int imc_parse_cmd(char *buf, int len, imc_cmd_p cmd);
97
98 int imc_handle_create(struct sip_msg* msg, imc_cmd_t *cmd,
99                 struct sip_uri *src, struct sip_uri *dst);
100 int imc_handle_join(struct sip_msg* msg, imc_cmd_t *cmd,
101                 struct sip_uri *src, struct sip_uri *dst);
102 int imc_handle_invite(struct sip_msg* msg, imc_cmd_t *cmd,
103                 struct sip_uri *src, struct sip_uri *dst);
104 int imc_handle_accept(struct sip_msg* msg, imc_cmd_t *cmd,
105                 struct sip_uri *src, struct sip_uri *dst);
106 int imc_handle_deny(struct sip_msg* msg, imc_cmd_t *cmd,
107                 struct sip_uri *src, struct sip_uri *dst);
108 int imc_handle_remove(struct sip_msg* msg, imc_cmd_t *cmd,
109                 struct sip_uri *src, struct sip_uri *dst);
110 int imc_handle_list(struct sip_msg* msg, imc_cmd_t *cmd,
111                 struct sip_uri *src, struct sip_uri *dst);
112 int imc_handle_exit(struct sip_msg* msg, imc_cmd_t *cmd,
113                 struct sip_uri *src, struct sip_uri *dst);
114 int imc_handle_destroy(struct sip_msg* msg, imc_cmd_t *cmd,
115                 struct sip_uri *src, struct sip_uri *dst);
116 int imc_handle_unknown(struct sip_msg* msg, imc_cmd_t *cmd,
117                 str *src, str *dst);
118 int imc_handle_help(struct sip_msg* msg, imc_cmd_t *cmd,
119                 str *src, str *dst);
120 int imc_handle_message(struct sip_msg* msg, str *msgbody,
121                 struct sip_uri *src, struct sip_uri *dst);
122
123 #endif