⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 urltrans.h

📁 The Kannel Open Source WAP and SMS gateway works as both an SMS gateway, for implementing keyword b
💻 H
字号:
/* ====================================================================  * The Kannel Software License, Version 1.0  *  * Copyright (c) 2001-2004 Kannel Group   * Copyright (c) 1998-2001 WapIT Ltd.    * All rights reserved.  *  * Redistribution and use in source and binary forms, with or without  * modification, are permitted provided that the following conditions  * are met:  *  * 1. Redistributions of source code must retain the above copyright  *    notice, this list of conditions and the following disclaimer.  *  * 2. Redistributions in binary form must reproduce the above copyright  *    notice, this list of conditions and the following disclaimer in  *    the documentation and/or other materials provided with the  *    distribution.  *  * 3. The end-user documentation included with the redistribution,  *    if any, must include the following acknowledgment:  *       "This product includes software developed by the  *        Kannel Group (http://www.kannel.org/)."  *    Alternately, this acknowledgment may appear in the software itself,  *    if and wherever such third-party acknowledgments normally appear.  *  * 4. The names "Kannel" and "Kannel Group" must not be used to  *    endorse or promote products derived from this software without  *    prior written permission. For written permission, please   *    contact org@kannel.org.  *  * 5. Products derived from this software may not be called "Kannel",  *    nor may "Kannel" appear in their name, without prior written  *    permission of the Kannel Group.  *  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE  * DISCLAIMED.  IN NO EVENT SHALL THE KANNEL GROUP OR ITS CONTRIBUTORS  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,   * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT   * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR   * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,   * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE   * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,   * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  * ====================================================================  *  * This software consists of voluntary contributions made by many  * individuals on behalf of the Kannel Group.  For more information on   * the Kannel Group, please see <http://www.kannel.org/>.  *  * Portions of this software are based upon software originally written at   * WapIT Ltd., Helsinki, Finland for the Kannel project.   */ /* * urltrans.h - URL translations * * The SMS gateway receives service requests sent as SMS messages and uses * a web server to actually perform the requests. The first word of the * SMS message usually specifies the service, and for each service there is * a URL that specifies the web page or cgi-bin that performs the service.  * Thus, in effect, the gateway `translates' SMS messages to URLs. * * urltrans.h and urltrans.c implement a data structure for holding a list * of translations and formatting a SMS request into a URL. It is used as * follows: * * 1. Create a URLTranslation object with urltrans_create. * 2. Add translations into it with urltrans_add_one or urltrans_add_cfg. * 3. Receive SMS messages, and translate them into URLs with  *    urltrans_get_url. * 4. When you are done, free the object with urltrans_destroy. * * See below for more detailed instructions for using the functions. * * Lars Wirzenius for WapIT Ltd. */#ifndef URLTRANS_H#define URLTRANS_H#include "gwlib/gwlib.h"#include "msg.h"#include "numhash.h"#include "gwlib/regex.h"/* * This is the data structure that holds the list of translations. It is * opaque and is defined in and usable only within urltrans.c. */typedef struct URLTranslationList URLTranslationList;/* * This is the data structure that holds one translation. It is also * opaque, and is accessed via some of the functions below. */typedef struct URLTranslation URLTranslation;enum {    TRANSTYPE_GET_URL = 0,    TRANSTYPE_POST_URL,    TRANSTYPE_POST_XML,    TRANSTYPE_TEXT,    TRANSTYPE_FILE,    TRANSTYPE_EXECUTE,    TRANSTYPE_SENDSMS};/* * Create a new URLTranslationList object. Return NULL if the creation failed, * or a pointer to the object if it succeded. * * The object is empty: it contains no translations. */URLTranslationList *urltrans_create(void);/* * Destroy a URLTranslationList object. */void urltrans_destroy(URLTranslationList *list);/* * Add a translation to the object. The group is parsed internally. * * There can be several patterns for the same keyword, but with different * patterns. urltrans_get_url will pick the pattern that best matches the * actual SMS message. (See urltrans_get_pattern for a description of the * algorithm.) * * There can only be one pattern with keyword "default", however. * * Sendsms-translations do not use keyword. Instead they use username and * password * * Return -1 for error, or 0 for OK. */int urltrans_add_one(URLTranslationList *trans, CfgGroup *grp);/* * Add translations to a URLTranslation object from a Config object * (see config.h). Translations are added from groups in `cfg' that * contain variables called "keyword" and "url". For each such group, * urltrans_add_one is called. * * Return -1 for error, 0 for OK. If -1 is returned, the URLTranslation * object may have been partially modified. */int urltrans_add_cfg(URLTranslationList *trans, Cfg *cfg);/* * Find the translation that corresponds to a given text string * * Use the translation with pattern whose keyword is the same as the first * word of the text and that has the number of `%s' fields as the text * has words after the first one. If no such pattern exists, use the * pattern whose keyword is "default". If there is no such pattern, either, * return NULL. * * If 'smsc' is set, only accept translation with no 'accepted-smsc' set or * with matching smsc in that list. */URLTranslation *urltrans_find(URLTranslationList *trans, Octstr *text,     	    	    	      Octstr *smsc, Octstr *sender, Octstr *receiver);/* * Find the translation that corresponds to a given name * * Use the translation with service whose name is the same as the first * word of the text. If no such pattern exists, return NULL. */URLTranslation *urltrans_find_service(URLTranslationList *trans, Msg *msg); /* * find matching URLTranslation for the given 'username', or NULL * if not found. Password must be checked afterwards */URLTranslation *urltrans_find_username(URLTranslationList *trans,     	    	    	    	       Octstr *name);/* * Return a pattern given contents of an SMS message. Find the appropriate * translation pattern and fill in the missing parts from the contents of * the SMS message. * * `sms' is the SMS message that is being translated. * * Return NULL if there is a failure. Otherwise, return a pointer to the * pattern, which is stored in dynamically allocated memory that the * caller should free when the pattern is no longer needed. * * The pattern is URL, fixed text or file name according to type of urltrans */Octstr *urltrans_get_pattern(URLTranslation *t, Msg *sms);/* * Return the type of the translation, see enumeration above */int urltrans_type(URLTranslation *t);/* * Return prefix and suffix of translations, if they have been set. */Octstr *urltrans_prefix(URLTranslation *t);Octstr *urltrans_suffix(URLTranslation *t);/* * Return default sender number, or NULL if not set. */Octstr *urltrans_default_sender(URLTranslation *t);/* * Return (a recommended) faked sender number, or NULL if not set. */Octstr *urltrans_faked_sender(URLTranslation *t);/* * Return maximum number of SMS messages that should be generated from * the web page directed by the URL translation. */int urltrans_max_messages(URLTranslation *t);/* * Return the concatenation status for SMS messages that should be generated * from the web page directed by the URL translation. (1=enabled) */int urltrans_concatenation(URLTranslation *t);/* * Return (recommended) delimiter characters when splitting long * replies into several messages */Octstr *urltrans_split_chars(URLTranslation *t);/* * return a string that should be added after each sms message if it is * except for the last one. */Octstr *urltrans_split_suffix(URLTranslation *t);/* * Return if set that should not send 'empty reply' messages */int urltrans_omit_empty(URLTranslation *t);/* * return a string that should be inserted to each SMS, if any */Octstr *urltrans_header(URLTranslation *t);/* * return a string that should be appended to each SMS, if any */Octstr *urltrans_footer(URLTranslation *t);/* * return the name, username or password string, or NULL if not set * (used only with TRANSTYPE_SENDSMS) */Octstr *urltrans_name(URLTranslation *t);Octstr *urltrans_username(URLTranslation *t);Octstr *urltrans_password(URLTranslation *t);/* Return forced smsc ID for send-sms user, if set */Octstr *urltrans_forced_smsc(URLTranslation *t);/* Return default smsc ID for send-sms user, if set */Octstr *urltrans_default_smsc(URLTranslation *t);/* Return allow and deny IP strings, if set. */Octstr *urltrans_allow_ip(URLTranslation *t);Octstr *urltrans_deny_ip(URLTranslation *t);/* Return allowed and denied prefixes */Octstr *urltrans_allowed_prefix(URLTranslation *t);Octstr *urltrans_denied_prefix(URLTranslation *t);Octstr *urltrans_allowed_recv_prefix(URLTranslation *t);Octstr *urltrans_denied_recv_prefix(URLTranslation *t);/* Return white and black to number list */Numhash *urltrans_white_list(URLTranslation *t);Numhash *urltrans_black_list(URLTranslation *t);regex_t *urltrans_white_list_regex(URLTranslation *t);regex_t *urltrans_black_list_regex(URLTranslation *t);/* Return value of true (!0) or false (0) variables */int urltrans_assume_plain_text(URLTranslation *t);int urltrans_accept_x_kannel_headers(URLTranslation *t);int urltrans_strip_keyword(URLTranslation *t);int urltrans_send_sender(URLTranslation *t);#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -