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

手机WAP编程

开发平台:

WINDOWS

  1. /*
  2.  * wap_push_ppg_pushuser.h: Header of push user authentication module.
  3.  *
  4.  * Only WAP-165-PushArchOverview-19991108-a, an informal document, mentions
  5.  * pi authentication. (See chapter 13.) So this is definitely left for 
  6.  * implementors.
  7.  * Basic authentication is defined in rfc 2617. Note that https connections
  8.  * are handled by our http module.
  9.  *
  10.  * By Aarno Syv鋘en for Wiral Ltd
  11.  */
  12. #ifndef WAP_PUSH_PPG_PUSHUSER_H
  13. #define WAP_PUSH_PPG_PUSHUSER_H
  14. #include "gwlib/gwlib.h"
  15. /*
  16.  * This function initializes the module and push users data stucture, contain-
  17.  * ing authentication data for all push user accounts. This function MUST be
  18.  * called before any other functions of this module.
  19.  */
  20. int wap_push_ppg_pushuser_list_add(List *l, long number_of_pushes, 
  21.                                    long number_of_users);
  22. /*
  23.  * This function does clean up for module shutdown. This module MUST be called
  24.  * when the caller of this module is shut down.
  25.  */
  26. void wap_push_ppg_pushuser_list_destroy(void);
  27. /*
  28.  * This function does authentication possible before compiling the control 
  29.  * document. This means:
  30.  *           a) password authentication by url or by headers (it is, by basic
  31.  *              authentication response, see rfc 2617, chapter 2) 
  32.  *           b) if this does not work, basic authentication by challenge - 
  33.  *              response 
  34.  *           c) enforcing various ip lists
  35.  *
  36.  * Check does ppg allows a connection from this at all, then try to find username 
  37.  * and password from headers, then from url. If both fails, try basic authentica-
  38.  * tion. Then check does this user allow a push from this ip, then check the pass-
  39.  * word.
  40.  *
  41.  * For protection against brute force and partial protection for denial of serv-
  42.  * ice attacks, an exponential backup algorithm is used. Time when a specific ip  
  43.  * is allowed to reconnect, is stored in Dict next_try. If an ip tries to recon-
  44.  * nect before this (three attemps are allowed, then exponential seconds are add-
  45.  * ed to the limit) we make a new challenge. We do the corresponding check before
  46.  * testing passwords; after all, it is an authorization failure that causes a new
  47.  * challenge. 
  48.  *
  49.  * Rfc 2617, chapter 1 states that if we do not accept credentials of an user's, 
  50.  * we must send a new challenge to the user.
  51.  *
  52.  * Output an authenticated username.
  53.  * This function should be called only when there are a push users list; the 
  54.  * caller is responsible for this.
  55.  */
  56. int wap_push_ppg_pushuser_authenticate(HTTPClient *client, List *cgivars, 
  57.                                        Octstr *ip, List *headers, 
  58.                                        Octstr **username);
  59. /*
  60.  * This function checks phone number for allowed prefixes, black lists and 
  61.  * white lists. Note that the phone number necessarily follows the interna-
  62.  * tional format (this is checked by our pap compiler).
  63.  */
  64. int wap_push_ppg_pushuser_client_phone_number_acceptable(Octstr *username, 
  65.     Octstr *number);
  66. int wap_push_ppg_pushuser_search_ip_from_wildcarded_list(Octstr *haystack, 
  67.     Octstr *needle, Octstr *list_sep, Octstr *ip_sep);
  68. #endif