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

📄 mconfig.c

📁 彩信MMS的全部代码
💻 C
📖 第 1 页 / 共 2 页
字号:
/*
 * Copyright (C) Obigo AB, 2002-2005.
 * All rights reserved.
 *
 * This software is covered by the license agreement between
 * the end user and Obigo AB, and may be 
 * used and copied only in accordance with the terms of the 
 * said agreement.
 *
 * Obigo AB assumes no responsibility or 
 * liability for any errors or inaccuracies in this software, 
 * or any consequential, incidental or indirect damage arising
 * out of the use of the software.
 *
 */





























#include "cansilib.h"   
#include "cmnconf.h"    
#include "cmntypes.h"   
#include "aapicmn.h"    
#include "gmem.h"       

#include "mmsconf.h"    
#include "mmstypes.h"   
#include "aapimms.h"    
#include "msig.h"       
#include "mmem.h"       
#include "mconfig.h"    
#include "mcpdu.h"      
#include "mcwap.h"      
#include "mcpost.h"     
#include "mcget.h"      
#include "mnotify.h"    


#define MMS_MIN_PORT    1
#define MMS_MAX_PORT    65535










#define IS_ADDRESS_LETTER(x) ((IS_HOST_LETTER(x)) || (x) == '@' || (x) == '+')


#define IS_URI_LETTER(x) ( \
    ((x) >= '0' && (x) <= '9') || \
    ((x) >= 'a' && (x) <= 'z') || \
    ((x) >= 'A' && (x) <= 'Z') || \
    (x) == '.' || (x) == '-' || (x) == '_' || (x) == '?' || (x) == '%' || \
    (x) == '/' || (x) == '~' || (x) == ':' || (x) == ';' || (x) == '@' || \
    (x) == '&' || (x) == '=' || (x) == '+' || (x) == ',' || (x) == '$')












static UINT32 cfgIntValues[MMS_CFG_TOTAL_INT];




static char *cfgStrValues[MMS_CFG_TOTAL_STR];




static const char *myValidSchemes[] =
{
    "",
    "http://",
    "https://",
    NULL
};


static void afterChangeCheckInt(MmsConfigInt key);
static void afterChangeCheckStr(MmsConfigStr key);
static void cfgMain(MmsSignal *sig);
static CMN_BOOL checkIntValue(MmsConfigInt key, UINT32 value);
static CMN_BOOL checkStrValue(MmsConfigStr key, const char *value);
static CMN_BOOL validAddress(const char *address);
static CMN_BOOL validHostName(const char *hostName);
static CMN_BOOL validUri(const char *uri);
static CMN_BOOL validScheme(const char *scheme);
static CMN_BOOL validName(const char *name);









static void afterChangeCheckInt(MmsConfigInt key)
{
    switch (key)
    {
    case MMS_CFG_DISCONNECT_ON_IDLE :
        mmsWapConnectionCheck();
        break;
    case MMS_CFG_IMMEDIATE_RETRIEVAL :
        msrNotifyImmediateCheck();
        break;
    default : 
        break;
    } 
} 







static void afterChangeCheckStr(MmsConfigStr key)
{
    switch (key)
    {
    case MMS_CFG_CLIENT_HTTP_HEADER :
    case MMS_CFG_CLIENT_USER_AGENT :
        cohPostSetHttpHeader();
        cohGetSetHttpHeader();
        break;
    default:
        break;
    } 
} 








UINT32 cfgGetInt(MmsConfigInt key)
{
    if (key < 0 || key >= MMS_CFG_TOTAL_INT)
    {
        MMS_LOG_I(("%s(%d): Invalid MmsConfigInt %d.\n", __FILE__, __LINE__, key));
        MMSa_error(MMS_RESULT_ERROR);
        return MMS_INVALID_CFG_VARIABLE;
    } 
    
    return cfgIntValues[key];
} 









char *cfgGetStr(MmsConfigStr key)
{
    if (key < 0 || key >= MMS_CFG_TOTAL_STR)
    {
        return NULL;
    } 
    
    return cfgStrValues[key];
} 






void cfgInit(void)
{
    int i = 0;
    
    for (i = 0; i < MMS_CFG_TOTAL_INT; i++)
    {
        cfgIntValues[i] = 0;
    } 

    
    cfgIntValues[MMS_CFG_DELIVERY_REPORT] = MMS_DELIVERY_REPORT_YES;
    cfgIntValues[MMS_CFG_DISCONNECT_ON_IDLE] = MMS_DISCONNECT_ON_IDLE;
    cfgIntValues[MMS_CFG_EXTERNAL_DRM_PARSER] = MMS_DEFAULT_EXTERNAL_DRM_PARSER;
    cfgIntValues[MMS_CFG_EXTRA_NOTIFY_RESP] = MMS_DEFAULT_EXTRA_NOTIFY_RESP;
    cfgIntValues[MMS_CFG_FROM_ADDRESS_TYPE] = MMS_ADDRESS_PLMN;
    cfgIntValues[MMS_CFG_GET_RETRY] = MMS_DEFAULT_GET_RETRY;
    cfgIntValues[MMS_CFG_MAX_DOWNLOAD_SIZE] = MMS_DEFAULT_MAX_DOWNLOAD_SIZE;
    cfgIntValues[MMS_CFG_NO_SMS_NOTIFY_RESP] = MMS_NO_SMS_NOTIFY_RESP;
    cfgIntValues[MMS_CFG_PORT] = MMS_PORT;
    cfgIntValues[MMS_CFG_POST_RETRY] = MMS_DEFAULT_POST_RETRY;
    cfgIntValues[MMS_CFG_PROXY_RELAY_VERSION] = MMS_DEFAULT_PROXY_RELAY_VERSION;
    cfgIntValues[MMS_CFG_READ_REPORT_MULTIPART_MIXED] = MMS_DEFAULT_READ_REPORT_MULTIPART_MIXED;
    cfgIntValues[MMS_CFG_STANDARD_NOTIFICATION_URI] = MMS_DEFAULT_STANDARD_NOTIFICATION_URI;
    cfgIntValues[MMS_CFG_USE_RECEPTION_DATE] = MMS_DEFAULT_USE_RECEPTION_DATE;
    
    
    cfgIntValues[MMS_CFG_IMMEDIATE_RETRIEVAL] = FALSE;
    cfgIntValues[MMS_CFG_IMM_RET_RETRY_ATTEMPTS] = MMS_DEFAULT_IMM_RET_RETRY_ATTEMPTS;
    cfgIntValues[MMS_CFG_IMM_RET_RETRY_TIMEOUT] = MMS_DEFAULT_IMM_RET_RETRY_TIMEOUT;
    cfgIntValues[MMS_CFG_CLASS_PERSONAL] = TRUE; 
    cfgIntValues[MMS_CFG_CLASS_ADVERTISEMENT] = FALSE; 
    cfgIntValues[MMS_CFG_CLASS_INFORMATIONAL] = TRUE;
    cfgIntValues[MMS_CFG_CLASS_AUTO] = TRUE; 
    cfgIntValues[MMS_CFG_ANONYMOUS_SENDER] = FALSE;
    cfgIntValues[MMS_CFG_MAX_SIZE_OF_MSG] = MMS_MAX_MSG_SIZE;
    
    for (i = 0; i < MMS_CFG_TOTAL_STR; i++)
    {
        cfgStrValues[i] = NULL;
    } 
    
    cfgStrValues[MMS_CFG_SCHEME] = M_ALLOC(sizeof(MMS_DEFAULT_SCHEME));
    cfgStrValues[MMS_CFG_CLIENT_USER_AGENT] = M_ALLOC(sizeof(MMS_DEFAULT_USER_AGENT));
    cfgStrValues[MMS_CFG_CLIENT_HTTP_HEADER] = M_ALLOC(sizeof(MMS_DEFAULT_HTTP_HEADER));
    cfgStrValues[MMS_CFG_PROXY_RELAY] = M_ALLOC(sizeof(MMS_PROXY_RELAY));
    cfgStrValues[MMS_CFG_POST_URI] = M_ALLOC(sizeof(MMS_POST_URI));
    cfgStrValues[MMS_CFG_GET_URI] = M_ALLOC(sizeof(MMS_DEFAULT_GET_URI));
    if (cfgStrValues[MMS_CFG_SCHEME] == NULL ||
        cfgStrValues[MMS_CFG_CLIENT_USER_AGENT] == NULL ||
        cfgStrValues[MMS_CFG_CLIENT_HTTP_HEADER] == NULL ||
        cfgStrValues[MMS_CFG_PROXY_RELAY] == NULL ||
        cfgStrValues[MMS_CFG_POST_URI] == NULL ||
        cfgStrValues[MMS_CFG_GET_URI] == NULL)
    {
        MMS_LOG_I(("%s(%d): Not enough memory.\n", __FILE__, __LINE__));
        MMSa_error(MMS_RESULT_RESTART_NEEDED);
        return;
    } 

    strcpy( cfgStrValues[MMS_CFG_SCHEME], MMS_DEFAULT_SCHEME);
    strcpy( cfgStrValues[MMS_CFG_CLIENT_USER_AGENT], MMS_DEFAULT_USER_AGENT);
    strcpy( cfgStrValues[MMS_CFG_CLIENT_HTTP_HEADER], MMS_DEFAULT_HTTP_HEADER);
    strcpy( cfgStrValues[MMS_CFG_PROXY_RELAY], MMS_PROXY_RELAY);
    strcpy( cfgStrValues[MMS_CFG_POST_URI], MMS_POST_URI);
    strcpy( cfgStrValues[MMS_CFG_GET_URI], MMS_DEFAULT_GET_URI);

    
    cfgStrValues[MMS_CFG_TEXT_FROM] = M_ALLOC(sizeof(MMS_RR_TEXT_FROM));
    cfgStrValues[MMS_CFG_TEXT_TO] = M_ALLOC(sizeof(MMS_RR_TEXT_TO));
    cfgStrValues[MMS_CFG_TEXT_READ] = M_ALLOC(sizeof(MMS_RR_TEXT_READ));
    cfgStrValues[MMS_CFG_TEXT_MSGID] = M_ALLOC(sizeof(MMS_RR_TEXT_MSGID));
    cfgStrValues[MMS_CFG_TEXT_SENT] = M_ALLOC(sizeof(MMS_RR_TEXT_SENT));
    cfgStrValues[MMS_CFG_TEXT_YOUR_MSG] = M_ALLOC(sizeof(MMS_RR_TEXT_YOUR_MSG));
    cfgStrValues[MMS_CFG_TEXT_WAS_READ] = M_ALLOC(sizeof(MMS_RR_TEXT_WAS_READ));
    cfgStrValues[MMS_CFG_TEXT_SUBJECT] = M_ALLOC(sizeof(MMS_RR_TEXT_SUBJECT));
    if (cfgStrValues[MMS_CFG_TEXT_FROM] == NULL ||
        cfgStrValues[MMS_CFG_TEXT_TO] == NULL ||
        cfgStrValues[MMS_CFG_TEXT_READ] == NULL ||
        cfgStrValues[MMS_CFG_TEXT_MSGID] == NULL ||
        cfgStrValues[MMS_CFG_TEXT_SENT] == NULL ||
        cfgStrValues[MMS_CFG_TEXT_YOUR_MSG] == NULL ||
        cfgStrValues[MMS_CFG_TEXT_WAS_READ] == NULL ||
        cfgStrValues[MMS_CFG_TEXT_SUBJECT] == NULL)
    {
        MMS_LOG_I(("%s(%d): Not enough memory.\n", __FILE__, __LINE__));
        MMSa_error(MMS_RESULT_RESTART_NEEDED);
        return;
    } 

    strcpy( cfgStrValues[MMS_CFG_TEXT_FROM],     MMS_RR_TEXT_FROM);
    strcpy( cfgStrValues[MMS_CFG_TEXT_TO],       MMS_RR_TEXT_TO);
    strcpy( cfgStrValues[MMS_CFG_TEXT_READ],     MMS_RR_TEXT_READ);
    strcpy( cfgStrValues[MMS_CFG_TEXT_MSGID],    MMS_RR_TEXT_MSGID);
    strcpy( cfgStrValues[MMS_CFG_TEXT_SENT],     MMS_RR_TEXT_SENT);
    strcpy( cfgStrValues[MMS_CFG_TEXT_YOUR_MSG], MMS_RR_TEXT_YOUR_MSG);
    strcpy( cfgStrValues[MMS_CFG_TEXT_WAS_READ], MMS_RR_TEXT_WAS_READ);
    strcpy( cfgStrValues[MMS_CFG_TEXT_SUBJECT],  MMS_RR_TEXT_SUBJECT);

    mSignalRegisterDst(M_FSM_CORE_CONFIG, cfgMain);
    
    MMS_LOG_I(("MMS FSM CORE CONFIG: initialized\n"));
} 






static void cfgMain(MmsSignal *sig) 
{
    MmsConfigInt iKey;
    MmsConfigStr sKey;
    
    switch (sig->type)
    {
#ifdef MMS_STANDARD_INTERFACE
    case MMS_SIG_CORE_GET_CONFIG_INT :
        iKey = (MmsConfigInt)sig->u_param1;
        if (iKey < 0 || iKey >= MMS_CFG_TOTAL_INT)
        {
            MMS_LOG_I(("cfgMain: Illegal int key (%d)\n", (int)iKey));
            MMSa_getConfigIntResponse(MMS_RESULT_CONFIG_VARIABLE_NOT_FOUND, iKey, 0);
        }
        else
        {
            MMSa_getConfigIntResponse(MMS_RESULT_OK, iKey, cfgIntValues[iKey]);
        } 
        break;
    case MMS_SIG_CORE_GET_CONFIG_STR :
        sKey = (MmsConfigStr)sig->u_param1;
        if (sKey < 0 || sKey >= MMS_CFG_TOTAL_STR)
        {
            MMS_LOG_I(("cfgMain: Illegal string key (%d)\n", (int)sKey));
            MMSa_getConfigStrResponse(MMS_RESULT_CONFIG_VARIABLE_NOT_FOUND, 
                sKey, NULL);
        }
        else
        {
#ifdef MMS_RETAIN_ADAPTER_PARAMETERS
            
            char *tmp = NULL;

            if (cfgStrValues[sKey] != NULL)
            {

⌨️ 快捷键说明

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