Return TypeFunction nameArguments
hzEcodehzWebhost::Login(void)

Declared in file: hzHttpClient.h
Defined in file : hzHttpClient.cpp

Function Logic:

0:START 1:m_Opflags&HZ_WEBSYNC_AUTH_BASIC 2:Return E_OK 3:!(m_Opflags&(HZ_WEBSYNC_AUTH_POST|HZ_WEBSYNC_AUTH_GET)) 4:!m_Authsteps.Count()&&!m_Authform.Count() 5:Return E_OK 6:rc==E_OK&&ias.Valid(); 7:hzList::Iter::Element url 8:url==m_Authpage 9:bAuthpage 10:hzHttpClient::GetPage rc 11:rc!=E_OK 12:rc 13:rc!=E_OK 14:Return rc 15:!bAuthpage&&m_Authpage 16:hzWebhost::Download pDoc 17:!pDoc 18:Return E_NOTFOUND 19:m_Authform.Count() 20:m_Repos 21:S ofstream::open ofstream::fail 22:os.fail() 23:Return E_WRITEFAIL 24:items items items close ofstream::clear 25:hzHttpClient::PostForm rc 26:rc!=E_OK 27:Return rc 28:m_Repos 29:S ofstream::open ofstream::fail 30:os.fail() 31:Return E_WRITEFAIL 32:items items items close 33:Return rc

Function body:

hzEcode hzWebhost::Login (void)
{
   _hzfunc("hzWebhost::Login") ;
   hzList<hzUrl>::Iter     ias ;
   hzList<hzPair>::Iter    inv ;
   hzVect<hzString>        hdrs ;
   ofstream    os ;
   hzDocument* pDoc ;
   hzPair      P ;
   hzUrl       url ;
   hzString    S ;
   hzString    etag ;
   HttpRC      hRet ;
   bool        bAuthpage = false ;
   hzEcode     rc = E_OK ;
   threadLog("Starting Login Sequence\n") ;
   if (m_Opflags & HZ_WEBSYNC_AUTH_BASIC)
       { threadLog("Basis Authentication. No login process required\n") ; return E_OK ; }
   if (!(m_Opflags & (HZ_WEBSYNC_AUTH_POST | HZ_WEBSYNC_AUTH_GET)))
   {
       threadLog("No Authentication method\n") ;
       if (!m_Authsteps.Count() && !m_Authform.Count())
           { threadLog("No Authentication steps or form submission. No login process required\n") ; return E_OK ; }
   }
   for (ias = m_Authsteps ; rc == E_OK && ias.Valid() ; ias++)
   {
       url = ias.Element() ;
       if (url == m_Authpage)
           bAuthpage = true ;
       rc = HC.GetPage(hRet, url, etag) ;
       if (rc != E_OK)
           { rc = E_NOTFOUND ; threadLog("Could not download %s\n", *url) ; }
   }
   if (rc != E_OK)
       return rc ;
   if (!bAuthpage && m_Authpage)
   {
       pDoc = Download(m_Authpage) ;
       if (!pDoc)
           { threadLog("Could not download %s\n", *url) ; return E_NOTFOUND ; }
   }
   if (m_Authform.Count())
   {
       if (m_Repos)
       {
           S = m_Repos + "/login_form" ;
           os.open(*S) ;
           if (os.fail())
               { threadLog("Cannot write out header file %s\n", *S) ; return E_WRITEFAIL ; }
           os << HC.m_Header ;
           os << "\r\n\r\n" ;
           os << HC.m_Content ;
           os.close() ;
           os.clear() ;
       }
       rc = HC.PostForm(hRet, m_Authpage, hdrs, m_Authform) ;
       if (rc != E_OK)
           { threadLog("Could not post form to %s\n", *m_Authpage) ; return rc ; }
       if (m_Repos)
       {
           S = m_Repos + "/login_response" ;
           os.open(*S) ;
           if (os.fail())
               { threadLog("Cannot write out header file %s\n", *S) ; return E_WRITEFAIL ; }
           os << HC.m_Header ;
           os << "\r\n\r\n" ;
           os << HC.m_Content ;
           os.close() ;
       }
   }
   return rc ;
}