328 Octstr *meta_group, *meta_param;
342 if (request->sms.msgdata) {
354 while (pos < pattern_len) {
356 if (c ==
'%' && pos + 1 < pattern_len)
362 if (pos == pattern_len)
367 for (j = 0; j < num_words; ++j) {
378 if (request->sms.msgdata) {
410 switch (request->sms.coding) {
461 if (request->sms.foreign_id == NULL)
470 if (request->sms.smsc_id == NULL)
512 if (request->sms.service == NULL)
586 for (j = nextarg; j < num_words; ++j) {
606 if (nextarg >= num_words)
616 if (nextarg >= num_words)
709 if (request->sms.meta_data != NULL) {
764 if (request->sms.sms_type !=
report_mo) {
768 pattern = request->sms.dlr_url;
1000 int is_sms_service, regex_flag = REG_EXTENDED;
1001 Octstr *accepted_smsc_regex;
1002 Octstr *accepted_account_regex;
1003 Octstr *allowed_prefix_regex;
1004 Octstr *denied_prefix_regex;
1005 Octstr *allowed_receiver_prefix_regex;
1006 Octstr *denied_receiver_prefix_regex;
1013 if (grpname == NULL)
1027 memset(ot, 0,
sizeof(*ot));
1029 if (is_sms_service) {
1049 }
else if (post_url != NULL) {
1053 }
else if (post_xml != NULL) {
1057 }
else if (
file != NULL) {
1060 }
else if (
text != NULL) {
1063 }
else if (exec != NULL) {
1073 error(0,
"Configuration group `sms-service' " 1074 "did not specify get-url, post-url, post-xml, file or text.");
1086 if (tmp == NULL && keyword_regex == NULL) {
1087 error(0,
"Group 'sms-service' must include either 'keyword' or 'keyword-regex'.");
1090 if (tmp != NULL && keyword_regex != NULL) {
1091 error(0,
"Group 'sms-service' may inlcude either 'keyword' or 'keyword-regex'.");
1101 }
else if (tmp != NULL) {
1105 regex_flag |= REG_ICASE;
1110 if (aliases != NULL) {
1127 if (keyword_regex != NULL && (ot->
keyword_regex = gw_regex_comp(keyword_regex, regex_flag)) == NULL) {
1134 if (ot->
name == NULL)
1139 if (accepted_smsc != NULL) {
1144 if (accepted_account != NULL) {
1149 if (accepted_smsc_regex != NULL) {
1150 if ( (ot->
accepted_smsc_regex = gw_regex_comp(accepted_smsc_regex, REG_EXTENDED)) == NULL)
1155 if (accepted_account_regex != NULL) {
1171 allowed_receiver_prefix_regex =
cfg_get(grp,
octstr_imm(
"allowed-receiver-prefix-regex"));
1172 if (allowed_receiver_prefix_regex != NULL) {
1180 denied_receiver_prefix_regex =
cfg_get(grp,
octstr_imm(
"denied-receiver-prefix-regex"));
1181 if (denied_receiver_prefix_regex != NULL) {
1206 error(0,
"Password required for send-sms user");
1210 if (ot->
name == NULL)
1217 info(0,
"Redundant default-smsc for send-sms user %s",
1232 if (allowed_prefix_regex != NULL) {
1239 if (denied_prefix_regex != NULL) {
1282 warning(0,
"Service : suffix and prefix are only used if both are set.");
1286 warning(0,
"Service : suffix and prefix are only used if type is 'get-url'.");
1293 error(0,
"Unsupported value 'forced-priority = %ld' for send-sms user %s," 1294 " allowed range is (0..3).",
1304 error(0,
"Unsupported value 'max-priority = %ld' for send-sms user %s," 1305 " allowed range is (0..3).",
1314 error(0,
"Couldn't create a URLTranslation.");
1375 const int IS_OKAY = 0;
1376 const int NOT_OKAY = -1;
1385 if (n - 1 == t->
args)
1401 const int IS_ALLOWED = 0;
1402 const int NOT_ALLOWED = -1;
Dict * dict_create(long size_hint, void(*destroy_value)(void *))
int urltrans_add_cfg(URLTranslationList *trans, Cfg *cfg)
regex_t * urltrans_black_list_regex(URLTranslation *t)
void error(int err, const char *fmt,...)
void info(int err, const char *fmt,...)
Octstr * urltrans_deny_ip(URLTranslation *t)
URLTranslation * urltrans_find(URLTranslationList *trans, Msg *msg)
Octstr * urltrans_suffix(URLTranslation *t)
regex_t * accepted_smsc_regex
static long count_occurences(Octstr *str, Octstr *pat)
Octstr * urltrans_allowed_recv_prefix(URLTranslation *t)
Octstr * urltrans_forced_smsc(URLTranslation *t)
void * gwlist_search(List *list, void *pattern, int(*cmp)(void *, void *))
Octstr * urltrans_alt_charset(URLTranslation *t)
Numhash * urltrans_black_list(URLTranslation *t)
int urltrans_forced_priority(URLTranslation *t)
regex_t * allowed_prefix_regex
regex_t * urltrans_white_list_regex(URLTranslation *t)
gw_assert(wtls_machine->packet_to_send !=NULL)
Octstr * urltrans_footer(URLTranslation *t)
void dict_put(Dict *dict, Octstr *key, void *value)
int accept_x_kannel_headers
void gwlist_append(List *list, void *item)
Octstr * urltrans_default_smsc(URLTranslation *t)
Octstr * urltrans_password(URLTranslation *t)
void octstr_append(Octstr *ostr1, const Octstr *ostr2)
struct tm gw_gmtime(time_t t)
long gwlist_len(List *list)
Octstr * urltrans_allowed_prefix(URLTranslation *t)
Octstr * urltrans_split_chars(URLTranslation *t)
void * gwlist_get(List *list, long pos)
Octstr * urltrans_faked_sender(URLTranslation *t)
void octstr_append_char(Octstr *ostr, int ch)
long octstr_search(const Octstr *haystack, const Octstr *needle, long pos)
#define cfg_get(grp, varname)
static Octstr * default_smsc(WAPPushUser *u)
Octstr * allowed_recv_prefix
void uuid_unparse(const uuid_t uu, char *out)
regex_t * urltrans_denied_prefix_regex(URLTranslation *t)
Octstr * urltrans_dlr_url(URLTranslation *t)
Octstr * urltrans_username(URLTranslation *t)
void numhash_destroy(Numhash *table)
void octstr_append_cstr(Octstr *ostr, const char *cstr)
Octstr * urltrans_denied_prefix(URLTranslation *t)
static regex_t * black_list_regex
regex_t * white_list_regex
#define octstr_get_cstr(ostr)
#define octstr_copy(ostr, from, len)
void octstr_binary_to_hex(Octstr *ostr, int uppercase)
int urltrans_assume_plain_text(URLTranslation *t)
regex_t * allowed_receiver_prefix_regex
long octstr_search_char(const Octstr *ostr, int ch, long pos)
Numhash * numhash_create(const char *seek_url)
static int check_num_args(URLTranslation *t, List *words)
regex_t * urltrans_allowed_prefix_regex(URLTranslation *t)
Octstr * urltrans_header(URLTranslation *t)
static void strip_keyword(Msg *request)
Octstr * octstr_imm(const char *cstr)
int does_prefix_match(Octstr *prefix, Octstr *number)
int numhash_find_number(Numhash *table, Octstr *nro)
static regex_t * white_list_regex
int urltrans_dlr_mask(URLTranslation *t)
void * gwlist_extract_first(List *list)
void grp_dump(CfgGroup *grp)
void * dict_get(Dict *dict, Octstr *key)
void octstr_delete(Octstr *ostr1, long pos, long len)
int uuid_is_null(const uuid_t uu)
Octstr * urltrans_fill_escape_codes(Octstr *pattern, Msg *request)
#define octstr_duplicate(ostr)
List * cfg_get_multi_group(Cfg *cfg, Octstr *name)
static URLTranslation * create_onetrans(CfgGroup *grp)
int octstr_item_match(void *item, void *pattern)
void warning(int err, const char *fmt,...)
List * octstr_split_words(const Octstr *ostr)
Octstr * urltrans_default_sender(URLTranslation *t)
int urltrans_add_one(URLTranslationList *trans, CfgGroup *grp)
Octstr * octstr_format(const char *fmt,...)
void octstr_destroy(Octstr *ostr)
int urltrans_omit_empty(URLTranslation *t)
#define octstr_create(cstr)
void octstr_destroy_item(void *os)
int fields_to_dcs(Msg *msg, int mode)
Octstr * urltrans_split_suffix(URLTranslation *t)
#define SMS_PARAM_UNDEFINED
int urltrans_send_sender(URLTranslation *t)
int urltrans_type(URLTranslation *t)
int urltrans_accept_x_kannel_headers(URLTranslation *t)
Octstr * urltrans_denied_recv_prefix(URLTranslation *t)
Numhash * urltrans_white_list(URLTranslation *t)
Octstr * urltrans_allow_ip(URLTranslation *t)
Octstr * cfg_get_group_name(CfgGroup *grp)
long octstr_len(const Octstr *ostr)
void dict_destroy(Dict *dict)
regex_t * denied_receiver_prefix_regex
regex_t * accepted_account_regex
void octstr_append_decimal(Octstr *ostr, long value)
int cfg_get_bool(int *n, CfgGroup *grp, Octstr *varname)
URLTranslationList * urltrans_create(void)
static int check_allowed_translation(URLTranslation *t, Octstr *smsc, Octstr *sender, Octstr *receiver, Octstr *account)
URLTranslation * urltrans_find_service(URLTranslationList *trans, Msg *msg)
URLTranslation * urltrans_find_username(URLTranslationList *trans, Octstr *name)
int urltrans_strip_keyword(URLTranslation *t)
void debug(const char *place, int err, const char *fmt,...)
int cfg_get_integer(long *n, CfgGroup *grp, Octstr *varname)
Octstr * denied_recv_prefix
#define MSG_PARAM_UNDEFINED
int octstr_str_compare(const Octstr *ostr, const char *str)
int urltrans_max_messages(URLTranslation *t)
void octstr_format_append(Octstr *os, const char *fmt,...)
regex_t * black_list_regex
regex_t * denied_prefix_regex
static URLTranslation * find_default_translation(URLTranslationList *trans, Octstr *smsc, Octstr *sender, Octstr *receiver, Octstr *account)
Octstr * urltrans_prefix(URLTranslation *t)
void urltrans_destroy(URLTranslationList *trans)
int octstr_get_char(const Octstr *ostr, long pos)
int urltrans_max_priority(URLTranslation *t)
Octstr * urltrans_name(URLTranslation *t)
static Octstr * forced_smsc(WAPPushUser *u)
static URLTranslation * find_translation(URLTranslationList *trans, Msg *msg)
List * octstr_split(const Octstr *os, const Octstr *sep)
static XMLRPCDocument * msg
Octstr * urltrans_get_pattern(URLTranslation *t, Msg *request)
int urltrans_concatenation(URLTranslation *t)
void octstr_url_encode(Octstr *ostr)
static List * get_matching_translations(URLTranslationList *trans, Octstr *msg)
static void destroy_onetrans(void *ot)
static void destroy_keyword_list(void *list)
int octstr_compare(const Octstr *ostr1, const Octstr *ostr2)
void gwlist_destroy(List *list, gwlist_item_destructor_t *destructor)