Return TypeFunction nameArguments
hzEcodehdsSphere::ReadSphere(hzXmlNode*,)

Declared in file: hzDissemino.h
Defined in file : hdsConfig.cpp

Function Logic:

0:START 1:InitJS_Events hzXmlNode::NameEQ 2:!pRoot->NameEQ(sphereCfg) 3:hzXmlNode::txtName hzLogger::Log 4:Return E_SYNTAX 5:ai.Valid(); 6:ai.NameEQ(name) 7:hzAttrset::Value m_Name hzAttrset::NameEQ 8:ai.NameEQ(basedir) 9:hzAttrset::Value m_Basedir hzAttrset::NameEQ 10:ai.NameEQ(logroot) 11:hzAttrset::Value m_Logroot hzAttrset::NameEQ 12:ai.NameEQ(sslPvtKey) 13:hzAttrset::Value m_dfltSSL_PvtKey hzAttrset::NameEQ 14:ai.NameEQ(sslCert) 15:hzAttrset::Value m_dfltSSL_Cert hzAttrset::NameEQ 16:ai.NameEQ(sslCertCA) 17:hzAttrset::Value m_dfltSSL_CertCA hzAttrset::NameEQ 18:ai.NameEQ(portSTD) 19:hzAttrset::Value hzAttrset::Value atoi m_nCommonPortSTD hzAttrset::NameEQ 20:ai.NameEQ(portSSL) 21:hzAttrset::Value hzAttrset::Value atoi m_nCommonPortSSL 22:hzXmlNode::Fname hzXmlNode::Line hzAttrset::Name hzAttrset::Value hzLogger::Log rc 23:(m_dfltSSL_PvtKey||m_dfltSSL_Cert||m_dfltSSL_CertCA)&&!(m_dfltSSL_PvtKey&&m_dfltSSL_Cert&&m_dfltSSL_CertCA) 24:rc hzXmlNode::Fname hzXmlNode::Line hzLogger::Log 25:rc!=E_OK 26:Return rc 27:rc==E_OK&&pN; 28:!pN->NameEQ(webapp) 29:rc hzXmlNode::Fname hzXmlNode::Line hzXmlNode::txtName hzLogger::Log 30:portSSL portSTD bOpFlags ai 31:ai.Valid(); 32:ai.NameEQ(name) 33:hzAttrset::Value name hzAttrset::NameEQ 34:ai.NameEQ(domain) 35:hzAttrset::Value domain hzAttrset::NameEQ 36:ai.NameEQ(subdom) 37:hzAttrset::Value subdom hzAttrset::NameEQ 38:ai.NameEQ(basedir) 39:hzAttrset::Value baseDir hzAttrset::NameEQ 40:ai.NameEQ(rootfile) 41:hzAttrset::Value rootFile hzAttrset::NameEQ 42:ai.NameEQ(robot) 43:hzAttrset::ValEQ bOpFlags hzAttrset::NameEQ 44:ai.NameEQ(index) 45:hzAttrset::ValEQ bOpFlags hzAttrset::NameEQ 46:ai.NameEQ(login) 47:hzAttrset::ValEQ bOpFlags hzAttrset::NameEQ 48:ai.NameEQ(sslPvtKey) 49:hzAttrset::Value pvtKey hzAttrset::NameEQ 50:ai.NameEQ(sslCert) 51:hzAttrset::Value cert hzAttrset::NameEQ 52:ai.NameEQ(sslCertCA) 53:hzAttrset::Value certCA hzAttrset::NameEQ 54:ai.NameEQ(portSTD) 55:hzAttrset::Value hzAttrset::Value atoi portSTD hzAttrset::NameEQ 56:ai.NameEQ(portSSL) 57:hzAttrset::Value hzAttrset::Value atoi portSSL 58:hzXmlNode::Fname hzXmlNode::Line hzAttrset::Name hzAttrset::Value hzLogger::Log rc 59:portSTD 60:portSTD>0xffff 61:rc hzXmlNode::Fname hzXmlNode::Line hzLogger::Log 62:!m_nCommonPortSTD 63:rc hzXmlNode::Fname hzXmlNode::Line hzLogger::Log 64:portSSL 65:portSSL>0xffff 66:rc hzXmlNode::Fname hzXmlNode::Line hzLogger::Log 67:!m_nCommonPortSSL 68:rc hzXmlNode::Fname hzXmlNode::Line hzLogger::Log 69:rc!=E_OK 70:hdsSphere::AddApplication rc 71:rc==E_OK 72:hzLogger::Log 73:hzLogger::Log 74:subdom 75:hdsSphere::AddApplication rc 76:rc==E_OK 77:hzLogger::Log 78:hzLogger::Log 79:rc==E_OK&&nA<=_hzGlobal_Dissemino->Count(); 80:hdsSphere::GetApplication pApp 81:pApp->m_nPortSTD||pApp->m_nPortSSL 82:pApp hzLogger::Log 83:hdbADP::InitStandard 84:pApp->m_OpFlags&DS_APP_SITEINDEX 85:hdbADP::InitSiteIndex 86:hdsApp::SetStdTypeValidations hzLogger::Log hdsApp::ReadWebappCfg rc 87:rc==E_OK 88:hdsApp::SetupMasterMenu hzLogger::Log hdsApp::CheckProject rc 89:Return rc

Function body:

hzEcode hdsSphere::ReadSphere (hzXmlNode* pRoot)
{
   _hzfunc("hdsSphere::ReadSphere") ;
   hzDocXml        X ;
   hzXmlNode*      pN ;
   hdsApp*         pApp ;
   hzAttrset       ai ;
   hzDomain        domain ;
   hzDomain        subdom ;
   hzString        name ;
   hzString        baseDir ;
   hzString        rootFile ;
   hzString        cookieBase ;
   hzString        pvtKey ;
   hzString        cert ;
   hzString        certCA ;
   uint32_t        nA ;
   uint32_t        portSTD ;
   uint32_t        portSSL ;
   uint32_t        bOpFlags ;
   hzEcode         rc = E_OK ;
   InitJS_Events() ;
   if (!pRoot->NameEQ("sphereCfg"))
       { m_pLog->Log("Expected root tag of <sphereCfg>. Tag <%s> disallowed\n", pRoot->txtName()) ; return E_SYNTAX ; }
   /*
   **  ** Get sphere parameters 
   **      */
   for (ai = pRoot ; ai.Valid() ; ai.Advance())
   {
       if      (ai.NameEQ("name"))         m_Name = ai.Value() ;
       else if (ai.NameEQ("basedir"))      m_Basedir = ai.Value() ;
       else if (ai.NameEQ("logroot"))      m_Logroot = ai.Value() ;
       else if (ai.NameEQ("sslPvtKey"))    m_dfltSSL_PvtKey = ai.Value() ;
       else if (ai.NameEQ("sslCert"))      m_dfltSSL_Cert = ai.Value() ;
       else if (ai.NameEQ("sslCertCA"))    m_dfltSSL_CertCA = ai.Value() ;
       else if (ai.NameEQ("portSTD"))      m_nCommonPortSTD = ai.Value() ? atoi(ai.Value()) : 0;
       else if (ai.NameEQ("portSSL"))      m_nCommonPortSSL = ai.Value() ? atoi(ai.Value()) : 0;
       else
       {
           m_pLog->Log("File %s Line %d <sphereCfg> tag: Expect name|basedir|sslPvtKey|sslCert|sslCertCA|portSTD|portSSL only. Invalid param (%s=%s)\n",
               pRoot->Fname(), pRoot->Line(), ai.Name(), ai.Value()) ;
           rc = E_SYNTAX ;
       }
   }
   if ((m_dfltSSL_PvtKey || m_dfltSSL_Cert || m_dfltSSL_CertCA) && !(m_dfltSSL_PvtKey && m_dfltSSL_Cert && m_dfltSSL_CertCA))
       { rc = E_SYNTAX ; m_pLog->Log("File %s Line %d <sphereCfg> Must set NONE or ALL SSL params\n", pRoot->Fname(), pRoot->Line()) ; }
   if (rc != E_OK)
       return rc ;
   /*
   **  ** Get initial parameters for each application
   **      */
   for (pN = pRoot->GetFirstChild() ; rc == E_OK && pN ; pN = pN->Sibling())
   {
       if (!pN->NameEQ("webapp"))
           { rc = E_SYNTAX ; m_pLog->Log("File %s Line %d. Expected <webapp> tag, not <%s>\n", pN->Fname(), pN->Line(), pN->txtName()) ; break ; }
       bOpFlags = portSTD = portSSL = 0;
       for (ai = pN ; ai.Valid() ; ai.Advance())
       {
           if      (ai.NameEQ("name"))         name = ai.Value() ;
           else if (ai.NameEQ("domain"))       domain = ai.Value() ;
           else if (ai.NameEQ("subdom"))       subdom = ai.Value() ;
           else if (ai.NameEQ("basedir"))      baseDir = ai.Value() ;
           else if (ai.NameEQ("rootfile"))     rootFile = ai.Value() ;
           else if (ai.NameEQ("robot"))        bOpFlags |= ai.ValEQ("true") ? DS_APP_ROBOT : 0;
           else if (ai.NameEQ("index"))        bOpFlags |= ai.ValEQ("true") ? DS_APP_SITEINDEX : 0;
           else if (ai.NameEQ("login"))        bOpFlags |= ai.ValEQ("true") ? DS_APP_SUBSCRIBERS : 0;
           else if (ai.NameEQ("sslPvtKey"))    pvtKey = ai.Value() ;
           else if (ai.NameEQ("sslCert"))      cert = ai.Value() ;
           else if (ai.NameEQ("sslCertCA"))    certCA = ai.Value() ;
           else if (ai.NameEQ("portSTD"))      portSTD = ai.Value() ? atoi(ai.Value()) : 0;
           else if (ai.NameEQ("portSSL"))      portSSL = ai.Value() ? atoi(ai.Value()) : 0;
           else
           {
               m_pLog->Log("File %s Line %d <webapp> tag: Expect name|domain|basedir|rootfile|index|portSTD|portSSL only. Invalid param (%s=%s)\n",
                   pRoot->Fname(), pRoot->Line(), ai.Name(), ai.Value()) ;
               rc = E_SYNTAX ;
           }
       }
       if (portSTD)
       {
           if (portSTD > 0xffff)
               { rc = E_SYNTAX ; m_pLog->Log("File %s Line %d <webapp> HTTP port illegal (%u)\n", pRoot->Fname(), pRoot->Line(), portSTD) ; }
       }
       else
       {
           if (!m_nCommonPortSTD)
               { rc = E_SYNTAX ; m_pLog->Log("File %s Line %d <webapp> No HTTP port set in the Sphere or the APP\n", pRoot->Fname(), pRoot->Line()) ; }
       }
       if (portSSL)
       {
           if (portSSL > 0xffff)
               { rc = E_SYNTAX ; m_pLog->Log("File %s Line %d <webapp> HTTP port illegal (%u)\n", pRoot->Fname(), pRoot->Line(), portSTD) ; }
       }
       else
       {
           if (!m_nCommonPortSSL)
               { rc = E_SYNTAX ; m_pLog->Log("File %s Line %d <webapp> No HTTP port set in the Sphere or the APP\n", pRoot->Fname(), pRoot->Line()) ; }
       }
       if (rc != E_OK)
           break ;
       rc = _hzGlobal_Dissemino->AddApplication(domain, baseDir, rootFile, pvtKey, cert, certCA, portSTD, portSSL, bOpFlags) ;
       if (rc == E_OK)
           m_pLog->Log("Added webapp %s %s %s\n", *domain, *baseDir, *rootFile) ;
       else
           m_pLog->Log("Failed to ADD webapp %s %s %s\n", *domain, *baseDir, *rootFile) ;
       if (subdom)
       {
           rc = _hzGlobal_Dissemino->AddApplication(subdom, baseDir, rootFile, pvtKey, cert, certCA, portSTD, portSSL, bOpFlags) ;
           if (rc == E_OK)
               m_pLog->Log("Added webapp %s %s %s\n", *subdom, *baseDir, *rootFile) ;
           else
               m_pLog->Log("Failed to ADD webapp %s %s %s\n", *subdom, *baseDir, *rootFile) ;
       }
   }
   for (nA = 1; rc == E_OK && nA <&eq; _hzGlobal_Dissemino->Count() ; nA++)
   {
       pApp = _hzGlobal_Dissemino->GetApplication(nA) ;
       if (pApp->m_nPortSTD || pApp->m_nPortSSL)
       {
           pApp->m_OpFlags |= DS_APP_BYPROXY ;
           m_pLog->Log("Webapp %s:- Hosted by proxy\n", *pApp->m_Appname) ;
           continue ;
       }
       pApp->m_ADP.InitStandard(pApp->m_Appname) ;
       if (pApp->m_OpFlags & DS_APP_SITEINDEX)
           pApp->m_ADP.InitSiteIndex("../data") ;
       pApp->SetStdTypeValidations() ;
       m_pLog->Log("Webapp %s:- Standard Types created\n", *pApp->m_Appname) ;
       rc = pApp->ReadWebappCfg() ;
       if (rc == E_OK)
       {
           pApp->SetupMasterMenu() ;
           m_pLog->Log("Webapp %s:- Data Model Editing initialized\n", *pApp->m_Domain) ;
           rc = pApp->CheckProject() ;
       }
   }
   return rc ;
}