Changeset 282:f092dbf9c3c2 in verona


Ignore:
Timestamp:
Sep 8, 2011 10:45:31 AM (22 months ago)
Author:
Vadim Lebedev <vadim@…>
Branch:
default
Message:

add support for RFC5626

Files:
3 edited

Legend:

Unmodified
Added
Removed
  • misc/vtims.py

    r278 r282  
    4646USERNAME="Vadim Lebedev" 
    4747PUBLIC_IP_ADDR  = "217.128.124.171" 
     48#PUBLIC_IP_ADDR = MYIPADDR 
    4849if True: 
    4950   #testsip3 server 
     
    5253   TARGET=imspasswd.TARGET1 
    5354   ZNDI = "0" + NDI 
     55 
    5456   USERNAME=ZNDI 
    55 #   PREFIX="974682000" 
    56 #   SUFFIX=".DGP.9TALK@sfr.fr" 
    57 #   USER="+33999" + NDI 
    58    PREFIX="" 
    59    SUFFIX=".TST.DGP@sfr.fr" 
     57   if imspasswd.MODE9BOX: 
     58      PREFIX="" 
     59      SUFFIX=".TST.DGP@sfr.fr" 
     60   elif imspasswd.NEWSPECS: 
     61      PREFIX="974682000" 
     62      SUFFIX=".DGP.9TALK@sfr.fr" 
     63   else: 
     64      PREFIX="999" 
     65      PREFPREFIX = "999" 
     66      SUFFIX=".TST.9TALK@sfr.fr" 
     67 
     68   if imspasswd.RFC5626: 
     69      USERFC5626 = 1 << 11 
     70   else: 
     71      USERFC5626 = 0 
     72 
    6073   USER="+33" + PREFIX + NDI 
    61 #   IMSUSERID="NDI" + ZNDI + ".TST.9TALK@sfr.fr" 
     74   PREFUSER = "+33" + PREFPREFIX + NDI 
    6275   IMSUSERID="NDI" + ZNDI + SUFFIX 
    6376   SERVER="ims.mnc010.mcc208.3gppnetwork.org" 
    6477   PROXY="<sip:91.68.5.52;lr>" 
     78   #PROXY="<sip:172.22.43.69:5062;lr>"   # In PROLOG office behind 9BOX 
    6579   REALM="sfr.fr" 
     80   TRANSPORT = 17  # IPPROTO_UDP 
     81   if imspasswd.PROTOCOL == "tcp": 
     82      TRANSPORT = 6 # IPPROTO_TCP 
    6683else: 
    6784   # external server 
     
    87104    cfg.audio_codecs="PCMA,PCMU" 
    88105    cfg.local_audio_rtp_port = "16384" 
     106    cfg.sip_id = '"<urn:uuid:00000000-0000-1000-8000-AABBCCDDEEFF>"' 
    89107    cfg.ptime=20 
     108    cfg.transport = TRANSPORT 
    90109    if 0 < API.init(): 
    91110       print "Init failed\n" 
     
    93112def reg1(): 
    94113    global VLID 
     114  
    95115    API.addAuthInfo(USER, IMSUSERID, PASSWD, REALM) 
    96     VLID = API.addVline(USERNAME, USER, SERVER, PROXY, 3600, verona.PH_LINE_MOBILITY_PHONE+verona.PH_NORTCP_ATTR) 
     116    VLID = API.addVline(USERNAME, USER, SERVER, PROXY, 3600, verona.PH_LINE_MOBILITY_PHONE+verona.PH_NORTCP_ATTR + USERFC5626) 
    97117    print "vlid = ", VLID 
    98118 
     
    132152 
    133153def addcustomizations(): 
    134     prefid = "<sip:%s@%s;user=phone>" % (USER, SERVER) 
    135     API.addCustomHeader("INVITE", "P-Preferred-Identity", prefid)  
     154    prefid = "<sip:%s@%s;user=phone>" % (PREFUSER, SERVER) 
     155    prefid = "<sip:%s@%s>" % (PREFUSER, SERVER) 
     156    prefid = "<tel:%s>"   %  PREFUSER 
     157    API.addCustomHeader("INVITE", "P-Preferred-Identity", prefid) 
     158    if imspasswd.RFC5626: 
     159       API.addCustomHeader("REGISTER,INVITE", "Suppported", "path, outbound") 
    136160 
    137161def setup(): 
  • phapi/phapi.c

    r281 r282  
    15481548                ph_replace_contact(invite, vl->contact); 
    15491549        } 
     1550        if (vl->mobility & PH_USE_RFC5626) 
     1551                ph_replace_contact(invite, vl->contact); 
     1552 
    15501553 
    15511554 
     
    23122315        osip_contact_parse(ctct, vl->contact); 
    23132316        if (inside) 
    2314                 osip_uri_param_add(&ctct->url->url_params, osip_strdup(param), osip_strdup(value)); 
     2317                osip_uri_param_add(&ctct->url->url_params, osip_strdup(param), value ? osip_strdup(value) : 0); 
    23152318        else 
    2316                 osip_contact_param_add(ctct, osip_strdup(param), osip_strdup(value)); 
     2319                osip_contact_param_add(ctct, osip_strdup(param), value ? osip_strdup(value) : 0); 
    23172320 
    23182321        osip_free(vl->contact); 
     
    29472950} 
    29482951 
     2952static void ph_fix_reg_contact(struct vline* vl, char **rcontact) 
     2953{ 
     2954        osip_contact_t* ctct = 0; 
     2955        char regid[16]; 
     2956        int fixit = (PH_USE_RFC5626 == (vl->mobility & PH_USE_RFC5626)); 
     2957 
     2958        *rcontact = vl->contact; 
     2959 
     2960        if (!fixit) 
     2961                return; 
     2962 
     2963 
     2964 
     2965        if (osip_contact_init(&ctct)) 
     2966                return; 
     2967 
     2968        if (osip_contact_parse(ctct, vl->contact)) 
     2969                goto err; 
     2970 
     2971        snprintf(regid, 16, "%d", ph_vline2vlid(vl) ); 
     2972        if (osip_contact_param_add(ctct, osip_strdup("reg-id"), osip_strdup(regid))) 
     2973                goto err; 
     2974 
     2975        if (osip_contact_param_add(ctct, osip_strdup("+sip.instance"), osip_strdup(phcfg.sip_id))) 
     2976                goto err; 
     2977 
     2978        osip_contact_to_str(ctct, rcontact); 
     2979 
     2980err: 
     2981        osip_contact_free(ctct); 
     2982} 
     2983 
    29492984PHAPI_EXPORT int 
    29502985phvlRegister(int vlid) 
     
    29913026        }  else { 
    29923027#if 1 
    2993                 vl->rid = eXosip_register_build_initial_register(utmp, server, vl->contact, vl->regTimeout, &msg); 
     3028                char *rcontact; 
     3029 
     3030                ph_fix_reg_contact(vl, &rcontact); 
     3031 
     3032                vl->rid = eXosip_register_build_initial_register(utmp, server, rcontact, vl->regTimeout, &msg); 
    29943033                if (vl->proxy) 
    29953034                        osip_message_set_route(msg, vl->proxy); 
     3035                if (rcontact != vl->contact) 
     3036                        osip_free(rcontact); 
    29963037        } 
    29973038#else 
     
    33433384                add_contact_param(vl, "user", "phone", TRUE); 
    33443385 
     3386        if ((mobility & PH_USE_RFC5626) == PH_USE_RFC5626) { 
     3387                // add_contact_param(vl, "ob", 0, TRUE); 
     3388        } 
    33453389 
    33463390        vl->mobility = mobility; 
  • phapi/phapi.h

    r279 r282  
    174174#define PH_ANONYMOUS_CALL (1 << 9) 
    175175#define PH_NORTCP_ATTR (1 << 10) 
     176#define PH_USE_RFC5626 (1 << 11) 
    176177 
    177178typedef struct _phStream 
     
    197198  PH_LINE_MOBILITY_MOBILE, 
    198199  PH_LINE_MOBILITY_PHONE, 
    199   PH_LINE_MOBILITY_MASK = 255 
     200  PH_LINE_MOBILITY_MASK = 3 
    200201}; 
    201202#define checkmobility(m, v) ((((m) & PH_LINE_MOBILITY_MASK) == (v))) 
     
    12631264  char http_proxy_user[128]; 
    12641265  char http_proxy_passwd[128]; 
     1266 
     1267  char sip_id[128];  // Used for RFC5626 functionality 
     1268 
    12651269#ifdef WIN32 
    12661270  void* videoHandle; 
Note: See TracChangeset for help on using the changeset viewer.