urltrans.h
上传用户:gzpyjq
上传日期:2013-01-31
资源大小:1852k
文件大小:7k
源码类别:

手机WAP编程

开发平台:

WINDOWS

  1. /*
  2.  * urltrans.h - URL translations
  3.  *
  4.  * The SMS gateway receives service requests sent as SMS messages and uses
  5.  * a web server to actually perform the requests. The first word of the
  6.  * SMS message usually specifies the service, and for each service there is
  7.  * a URL that specifies the web page or cgi-bin that performs the service. 
  8.  * Thus, in effect, the gateway `translates' SMS messages to URLs.
  9.  *
  10.  * urltrans.h and urltrans.c implement a data structure for holding a list
  11.  * of translations and formatting a SMS request into a URL. It is used as
  12.  * follows:
  13.  *
  14.  * 1. Create a URLTranslation object with urltrans_create.
  15.  * 2. Add translations into it with urltrans_add_one or urltrans_add_cfg.
  16.  * 3. Receive SMS messages, and translate them into URLs with 
  17.  *    urltrans_get_url.
  18.  * 4. When you are done, free the object with urltrans_destroy.
  19.  *
  20.  * See below for more detailed instructions for using the functions.
  21.  *
  22.  * Lars Wirzenius for WapIT Ltd.
  23.  */
  24. #ifndef URLTRANS_H
  25. #define URLTRANS_H
  26. #include "gwlib/gwlib.h"
  27. #include "msg.h"
  28. #include "numhash.h"
  29. /*
  30.  * This is the data structure that holds the list of translations. It is
  31.  * opaque and is defined in and usable only within urltrans.c.
  32.  */
  33. typedef struct URLTranslationList URLTranslationList;
  34. /*
  35.  * This is the data structure that holds one translation. It is also
  36.  * opaque, and is accessed via some of the functions below.
  37.  */
  38. typedef struct URLTranslation URLTranslation;
  39. enum {
  40.     TRANSTYPE_GET_URL = 0,
  41.     TRANSTYPE_POST_URL,
  42.     TRANSTYPE_POST_XML,
  43.     TRANSTYPE_TEXT,
  44.     TRANSTYPE_FILE,
  45.     TRANSTYPE_EXECUTE,
  46.     TRANSTYPE_SENDSMS
  47. };
  48. /*
  49.  * Create a new URLTranslationList object. Return NULL if the creation failed,
  50.  * or a pointer to the object if it succeded.
  51.  *
  52.  * The object is empty: it contains no translations.
  53.  */
  54. URLTranslationList *urltrans_create(void);
  55. /*
  56.  * Destroy a URLTranslationList object.
  57.  */
  58. void urltrans_destroy(URLTranslationList *list);
  59. /*
  60.  * Add a translation to the object. The group is parsed internally.
  61.  *
  62.  * There can be several patterns for the same keyword, but with different
  63.  * patterns. urltrans_get_url will pick the pattern that best matches the
  64.  * actual SMS message. (See urltrans_get_pattern for a description of the
  65.  * algorithm.)
  66.  *
  67.  * There can only be one pattern with keyword "default", however.
  68.  *
  69.  * Sendsms-translations do not use keyword. Instead they use username and
  70.  * password
  71.  *
  72.  * Return -1 for error, or 0 for OK.
  73.  */
  74. int urltrans_add_one(URLTranslationList *trans, CfgGroup *grp);
  75. /*
  76.  * Add translations to a URLTranslation object from a Config object
  77.  * (see config.h). Translations are added from groups in `cfg' that
  78.  * contain variables called "keyword" and "url". For each such group,
  79.  * urltrans_add_one is called.
  80.  *
  81.  * Return -1 for error, 0 for OK. If -1 is returned, the URLTranslation
  82.  * object may have been partially modified.
  83.  */
  84. int urltrans_add_cfg(URLTranslationList *trans, Cfg *cfg);
  85. /*
  86.  * Find the translation that corresponds to a given text string
  87.  *
  88.  * Use the translation with pattern whose keyword is the same as the first
  89.  * word of the text and that has the number of `%s' fields as the text
  90.  * has words after the first one. If no such pattern exists, use the
  91.  * pattern whose keyword is "default". If there is no such pattern, either,
  92.  * return NULL.
  93.  *
  94.  * If 'smsc' is set, only accept translation with no 'accepted-smsc' set or
  95.  * with matching smsc in that list.
  96.  */
  97. URLTranslation *urltrans_find(URLTranslationList *trans, Octstr *text, 
  98.                      Octstr *smsc, Octstr *sender, Octstr *receiver);
  99. /*
  100.  * Find the translation that corresponds to a given name
  101.  *
  102.  * Use the translation with service whose name is the same as the first
  103.  * word of the text. If no such pattern exists, return NULL.
  104.  */
  105. URLTranslation *urltrans_find_service(URLTranslationList *trans, Msg *msg); 
  106. /*
  107.  * find matching URLTranslation for the given 'username', or NULL
  108.  * if not found. Password must be checked afterwards
  109.  */
  110. URLTranslation *urltrans_find_username(URLTranslationList *trans, 
  111.                            Octstr *name);
  112. /*
  113.  * Return a pattern given contents of an SMS message. Find the appropriate
  114.  * translation pattern and fill in the missing parts from the contents of
  115.  * the SMS message.
  116.  *
  117.  * `sms' is the SMS message that is being translated.
  118.  *
  119.  * Return NULL if there is a failure. Otherwise, return a pointer to the
  120.  * pattern, which is stored in dynamically allocated memory that the
  121.  * caller should free when the pattern is no longer needed.
  122.  *
  123.  * The pattern is URL, fixed text or file name according to type of urltrans
  124.  */
  125. Octstr *urltrans_get_pattern(URLTranslation *t, Msg *sms);
  126. /*
  127.  * Return the type of the translation, see enumeration above
  128.  */
  129. int urltrans_type(URLTranslation *t);
  130. /*
  131.  * Return prefix and suffix of translations, if they have been set.
  132.  */
  133. Octstr *urltrans_prefix(URLTranslation *t);
  134. Octstr *urltrans_suffix(URLTranslation *t);
  135. /*
  136.  * Return default sender number, or NULL if not set.
  137.  */
  138. Octstr *urltrans_default_sender(URLTranslation *t);
  139. /*
  140.  * Return (a recommended) faked sender number, or NULL if not set.
  141.  */
  142. Octstr *urltrans_faked_sender(URLTranslation *t);
  143. /*
  144.  * Return maximum number of SMS messages that should be generated from
  145.  * the web page directed by the URL translation.
  146.  */
  147. int urltrans_max_messages(URLTranslation *t);
  148. /*
  149.  * Return the concatenation status for SMS messages that should be generated
  150.  * from the web page directed by the URL translation. (1=enabled)
  151.  */
  152. int urltrans_concatenation(URLTranslation *t);
  153. /*
  154.  * Return (recommended) delimiter characters when splitting long
  155.  * replies into several messages
  156.  */
  157. Octstr *urltrans_split_chars(URLTranslation *t);
  158. /*
  159.  * return a string that should be added after each sms message if it is
  160.  * except for the last one.
  161.  */
  162. Octstr *urltrans_split_suffix(URLTranslation *t);
  163. /*
  164.  * Return if set that should not send 'empty reply' messages
  165.  */
  166. int urltrans_omit_empty(URLTranslation *t);
  167. /*
  168.  * return a string that should be inserted to each SMS, if any
  169.  */
  170. Octstr *urltrans_header(URLTranslation *t);
  171. /*
  172.  * return a string that should be appended to each SMS, if any
  173.  */
  174. Octstr *urltrans_footer(URLTranslation *t);
  175. /*
  176.  * return the name, username or password string, or NULL if not set
  177.  * (used only with TRANSTYPE_SENDSMS)
  178.  */
  179. Octstr *urltrans_name(URLTranslation *t);
  180. Octstr *urltrans_username(URLTranslation *t);
  181. Octstr *urltrans_password(URLTranslation *t);
  182. /* Return forced smsc ID for send-sms user, if set */
  183. Octstr *urltrans_forced_smsc(URLTranslation *t);
  184. /* Return default smsc ID for send-sms user, if set */
  185. Octstr *urltrans_default_smsc(URLTranslation *t);
  186. /* Return allow and deny IP strings, if set. */
  187. Octstr *urltrans_allow_ip(URLTranslation *t);
  188. Octstr *urltrans_deny_ip(URLTranslation *t);
  189. /* Return allowed and denied prefixes */
  190. Octstr *urltrans_allowed_prefix(URLTranslation *t);
  191. Octstr *urltrans_denied_prefix(URLTranslation *t);
  192. Octstr *urltrans_allowed_recv_prefix(URLTranslation *t);
  193. Octstr *urltrans_denied_recv_prefix(URLTranslation *t);
  194. /* Return white and black to number list */
  195. Numhash *urltrans_white_list(URLTranslation *t);
  196. Numhash *urltrans_black_list(URLTranslation *t);
  197. /* Return value of true (!0) or false (0) variables */
  198. int urltrans_assume_plain_text(URLTranslation *t);
  199. int urltrans_accept_x_kannel_headers(URLTranslation *t);
  200. int urltrans_strip_keyword(URLTranslation *t);
  201. int urltrans_send_sender(URLTranslation *t);
  202. #endif