poniedziałek, 9 lipca 2012

Pobranie ścieżki DocumentRoot z konfiguracji Apache w InstallShield - Get DocumentRoot from Apache Config File

Niedawno potrzebna była mi kolejna funkcja zwracająca ścieżkę do DocumentRoot z konfiguracji serwera Apache, oto ona:
Nagłówek funkcji

export prototype BOOL GetApacheDocRoot(STRING /*plik konfiguracyjny Apache*/, BYREF STRING /*DocRootPath*/, BOOL /*bLog*/);

Parametry funkcji:
  • ścieżka wraz z plikiem konfiguracyjnym np; httpd.conf
  • referencja do zmiennej przechowująca ścieżkę
  • bLog - czy zapisywać do logu
Zwracane wartość: true/false

A oto ciało funkcji:

function BOOL GetApacheDocRoot(szApacheConfigFile, svApacheDocRoot, bLog)
BOOL bResult;
LIST lsApache;
string szLine,szNewLine, szDocRoot;
int i;
begin
 if (bLog) then WriteLog(0,"* Pobieranie scieżki do DocumentRoot z konfiguracji Apache..."); endif;
 bResult = FALSE;
 if (Is(FILE_EXISTS,szApacheConfigFile)) then
  lsApache = ListCreate(STRINGLIST);
  ListReadFromFile ( lsApache, szApacheConfigFile ); //Odczyt Apache Conf
  if (ListCount(lsApache)>0) then       
   ListSetIndex(lsApache,LISTFIRST);        
   for i=0 to ListCount(lsApache)-1      
    ListCurrentString ( lsApache, szLine );
    szLine = StrTrim(szLine);
    if (StrFind(szLine,"DocumentRoot")>=0) then
     szNewLine = szLine;
     szNewLine = StrTrim(szNewLine);
     if (StrFind(szNewLine,"DocumentRoot")=0) then
      StrSub(szDocRoot,szNewLine, StrLength("DocumentRoot")+1,     StrLength(szNewLine));
      szDocRoot = StrTrim(szDocRoot);            
      bResult = TRUE;    
      if (bLog) then WriteLog(2,"DocumentRoot : "+szDocRoot); endif;
      StrReplace(szDocRoot,"\"","",0);
      StrReplace(szDocRoot,"/","\\",0);
      StrRemoveLastSlash(szDocRoot);
      svApacheDocRoot = szDocRoot;
     endif;  
    endif;
    ListSetIndex(lsApache,LISTNEXT);
   endfor;
  endif;  
 endif;

 ListDestroy(lsApache);

 return bResult;
end;

Brak komentarzy:

Publikowanie komentarza