Diff for /mozptch/datamodul.pas between versions 1.1 and 1.2

version 1.1, 2004/03/14 12:49:07 version 1.2, 2004/03/28 17:08:58
Line 9 Line 9
 # ========  # ========
 #  #
 # $Log$  # $Log$
   # Revision 1.2  2004/03/28 17:08:58  oertel
   # src: started with multi language interface
   # messages in the new file mozptch.msg
   # new command line option -l <lang>
   #
 # Revision 1.1  2004/03/14 12:49:07  oertel  # Revision 1.1  2004/03/14 12:49:07  oertel
 # Initial commit version 9.29  # Initial commit version 9.29
 #  #
Line 51  type  Line 56  type 
   function findOrCreateMozProf : string;    function findOrCreateMozProf : string;
   function getAppdataDir: string;    function getAppdataDir: string;
   procedure writelog(logstr: string);    procedure writelog(logstr: string);
     function getMsg(key : string) : string;
   
 const  const
  do_sendmail_check:Boolean = true;   do_sendmail_check:Boolean = true;
Line 64  const  Line 70  const 
  MOZPROGDIR='c:\programme\mozilla';   MOZPROGDIR='c:\programme\mozilla';
  *)   *)
  MOZPTCHINICONST='mozptch.ini';   MOZPTCHINICONST='mozptch.ini';
    MOZPTCHMSGCONST='mozptch.msg';
   
   
 var  var
Line 79  var  Line 86  var 
   logfeil : TextFile;    logfeil : TextFile;
   intFehler : integer;    intFehler : integer;
   mozsltdir, completeMozDir, localMozAppdataDir : string;    mozsltdir, completeMozDir, localMozAppdataDir : string;
  mozptchiniFileName : string;   mozptchiniFileName, mozptchMsgFileName : string;
   verify_user_at_sendmail : boolean;    verify_user_at_sendmail : boolean;
   checkuser_imap_folder, patchPrefs : boolean;    checkuser_imap_folder, patchPrefs : boolean;
   execute_before, execute_after, copy_to_profile_from : string;    execute_before, execute_after, copy_to_profile_from : string;
     mozptchmsg: TMeminiFile;
     syslang, logfilename : string;
   
 implementation  implementation
   
Line 109  begin  Line 118  begin 
   on e : exception do    on e : exception do
   begin    begin
 //   loggingToFile := false;  //   loggingToFile := false;
   ShowMessage('Fehler: Beim Schreiben in logfile.'    showMessage(Format(getMsg('err_write_to_log'),[logfilename, e.Message]));
                    +' '+e.Message  
                    +' Bitte wenden Sie sich an die Hotline.'  
                    +' Bitte geben Sie die Datei c:\tmp\maileinr.log mit');  
   end;    end;
  end;   end;
 end;  end;
Line 146  begin  Line 152  begin 
 end;  end;
   
 (*####################################################################  (*####################################################################
   # language
   ####################################################################*)
   
   function getSystemLanguage : String;
   {$IFDEF MSWINDOWS}
   var
     Ident: Integer;
     MyLang: PChar;
   const
     Size: Integer = 250;
   begin
     GetMem(MyLang, Size);
     Ident:=GetSystemDefaultLangID;
     VerLanguageName(Ident, MyLang, Size);
     getSystemLanguage:=copy(StrPas(MyLang),1,2);
     FreeMem(MyLang);
   end;
   {$ELSE}
    {$IFDEF LINUX}
   var
   begin
    getSystemLanguage:=copy(GetEnvironmentVariable('LANG'),1,2);
   end;
    {$ENDIF}
   {$ENDIF}
   
   procedure chooseMessageLang;
   var
    tmpLangStr : string;
   begin
    tmpLangStr := AnsiLowerCase(getSystemLanguage);
    if CompareStr(mozptchmsg.ReadString('messages'
                                    ,tmpLangStr
                                    ,'Message not found')
                                    ,'Message not found') = 0 then
     syslang := 'en'
    else
     syslang := tmpLangStr;
   end;
   
   function openMsgFile : boolean;
   begin
    try
     openMsgFile := true;
     mozptchMsgFileName := ExtractFilePath(Application.ExeName)
                              + MOZPTCHMSGCONST;
     if not FileExists(mozptchMsgFileName) then
     begin
      ShowMessage('Error: Messagefile: '+mozptchMsgFileName+
                 ' not found.'
                       +' Please contact your system administrator.'
                       +' Program will be terminated.');
      application.terminate;
      exit;
     end;
     mozptchmsg := TMemIniFile.Create(mozptchMsgFileName);
    except
     openMsgFile := false;
     ShowMessage('Error: Messagefile: '+mozptchMsgFileName+
                 ' could not opened.'
                       +' Please contact your system administrator.'
                       +' Program will be terminated.');
      application.terminate;
      exit;
    end;
   end;
   
   function getMsg(key : string) : string;
   var
    tmpstr : string;
   begin
    tmpstr := mozptchmsg.ReadString('messages'
                                    ,key+'_'+syslang
                                    ,'Message not found');
    getMsg := AnsiReplaceStr(tmpstr,'\n',#10#13);
   end;
   
   
   (*####################################################################
 # windows directorys  # windows directorys
 ####################################################################*)  ####################################################################*)
   
   
 // Funktion wo liegt application-Data  // Funktion wo liegt application-Data
   
   {$IFDEF MSWINDOWS}
 procedure FreePidl(pidl: PItemIDList);  procedure FreePidl(pidl: PItemIDList);
 var  var
   allocator: IMalloc;    allocator: IMalloc;
Line 178  begin  Line 264  begin 
   FreePIDL(pidl);    FreePIDL(pidl);
 end;  end;
   
   {$ELSE}
    {$IFDEF LINUX}
   function getAppdataDir: string;
   begin
    // has to be written....
   end;
   
    {$ENDIF}
   {$ENDIF}
   
 (*####################################################################  (*####################################################################
 # tools to check input validty  # tools to check input validty
Line 186  end;  Line 281  end; 
 function checkInputData : boolean;  function checkInputData : boolean;
 begin  begin
  checkInputData := true;   checkInputData := true;
 // Teste soweit Möglich auf gültigkeit  // Check for validty and complete input data
   if not DirectoryExists(mozprofparentdir) then    if not DirectoryExists(mozprofparentdir) then
   begin    begin
    System.MkDir(mozprofparentdir);     System.MkDir(mozprofparentdir);
Line 194  begin  Line 289  begin 
   end;    end;
   if not DirectoryExists(mozprofparentdir) then    if not DirectoryExists(mozprofparentdir) then
   begin    begin
   writelog('Das zu verwendende Zielverzeichnis '+    writelog(Format(getMsg('target_dir_does_not_exist'),[mozprofparentdir]));
              mozprofparentdir+' konnte nicht gefunden werden !'+#10#13+    ShowMessage(Format(getMsg('target_dir_does_not_exist'),[mozprofparentdir]));
              'Bitte wenden Sie sich an Ihren Vorort-Betreuer.'+#10#13+  
              'Das Programm wird jetzt beendet.');  
   MessageBox(0, PointerAufString('Das zu verwendende Zielverzeichnis '+  
              mozprofparentdir+' konnte nicht gefunden werden !'+#10#13+  
              'Bitte wenden Sie sich an Ihren Vorort-Betreuer.'+#10#13+  
              'Das Programm wird jetzt beendet.'),  
              'ACHTUNG!', MB_OK);  
    checkInputData := false;     checkInputData := false;
    exit;     exit;
   end;    end;
  writelog('Verzeichnis '+mozprofparentdir+' existiert.');   writelog(Format(getMsg('target_dir_exists'),[mozprofparentdir]));
   hostresolved := false;    hostresolved := false;
   DataModule1.TcpSocke.Host := sHost;    DataModule1.TcpSocke.Host := sHost;
   DataModule1.TcpSocke.ReadTimeOut := 3000; // 3 Sekunden Timeout    DataModule1.TcpSocke.ReadTimeOut := 3000; // 3 Sekunden Timeout
Line 219  begin  Line 307  begin 
   end;    end;
   if not hostresolved then    if not hostresolved then
   begin    begin
   writelog('Der zu verwendende Hostname '+#10#13+    writelog(Format(getMsg('host_not_resolved'),[sHost]));
              sHost+#10#13+' ist nicht bekannt !'+#10#13+    showMessage(Format(getMsg('host_not_resolved'),[sHost]));
              'Bitte wenden Sie sich an Ihren Vorort-Betreuer.'+#10#13+  
              'Das Programm wird jetzt beendet.');  
   MessageBox(0, PointerAufString('Der zu verwendende Hostname '+#10#13+  
              sHost+#10#13+' ist nicht bekannt !'+#10#13+  
              'Bitte wenden Sie sich an Ihren Vorort-Betreuer.'+#10#13+  
              'Das Programm wird jetzt beendet.'),  
              'ACHTUNG!', MB_OK);  
    checkInputData := false;     checkInputData := false;
    exit;     exit;
   end;    end;
     writelog(Format(getMsg('host_resolved'),[sHost]));
   writelog('Server '+sHost+' konnte resolved werden');    writelog('Server '+sHost+' konnte resolved werden');
   try    try
    DataModule1.TcpSocke.connect;     DataModule1.TcpSocke.connect;
   except    except
   writelog('Der zu verwendende Host '+#10#13+    writelog(Format(getMsg('host_not_reached_at_port25'),[sHost]));
              sHost+#10#13+' konnte nicht erreicht werden !'+#10#13+    ShowMessage(Format(getMsg('host_not_reached_at_port25'),[sHost]));
              '( TCP Connect auf Port 25 fehlgeschlagen )'+#10#13+  
              'Bitte wenden Sie sich an Ihren Vorort-Betreuer.'+#10#13+  
              'Das Programm wird jetzt beendet.');  
   MessageBox(0, PointerAufString('Der zu verwendende Host '+#10#13+  
              sHost+#10#13+' konnte nicht erreicht werden !'+#10#13+  
              '( TCP Connect auf Port 25 fehlgeschlagen )'+#10#13+  
              'Bitte wenden Sie sich an Ihren Vorort-Betreuer.'+#10#13+  
              'Das Programm wird jetzt beendet.'),  
              'ACHTUNG!', MB_OK);  
    checkInputData := false;     checkInputData := false;
    exit;     exit;
   end;    end;
   DataModule1.TcpSocke.Disconnect;    DataModule1.TcpSocke.Disconnect;
  writelog('Server '+sHost+' konnte über Port 25 erreicht werden.');   writelog(Format(getMsg('host_connected_at_port25'),[sHost]));
   
   if verify_user_at_sendmail then    if verify_user_at_sendmail then
   begin    begin
Line 260  begin  Line 333  begin 
     DataModule1.sendmail.Username := sUname;      DataModule1.sendmail.Username := sUname;
     DataModule1.sendmail.Connect;      DataModule1.sendmail.Connect;
     DataModule1.sendmail.Verify(sUname);      DataModule1.sendmail.Verify(sUname);
    writelog('Auf dem Server '+sHost+' User '+sUname+' von sendmail gefunden');     writelog(Format(getMsg('verify_user_success'),[sHost,sUname]));
     DataModule1.sendmail.Disconnect;      DataModule1.sendmail.Disconnect;
    except     except
    writelog('Der zu verwendende Benutzername '+#10#13+     writelog(Format(getMsg('verify_user_failed'),[sUname,sHost]));
                sUname+#10#13+     showMessage(Format(getMsg('verify_user_failed'),[sUname,sHost]));
                'konnte vom Mailsystem auf '+sHost+' nicht gefunden werden !'+#10#13+  
                'Bitte wenden Sie sich an Ihren Vorort-Betreuer.'+#10#13+  
                'Das Programm wird jetzt beendet.' +#10#13+  
                '(Hinweis: Diese Prüfung kann mittels des Eintrags '+  
                'verify_user_at_sendmail=false in der Sektion '+  
                '[general_configuration] von mozptch.ini '+  
                'umgangen werden)');  
    MessageBox(0, PointerAufString('Der zu verwendende Benutzername '+#10#13+  
                sUname+#10#13+  
                'konnte vom Mailsystem auf '+sHost+' nicht gefunden werden !'+#10#13+  
                'Bitte wenden Sie sich an Ihren Vorort-Betreuer.'+#10#13+  
                'Das Programm wird jetzt beendet.' +#10#13+  
                '(Hinweis: Diese Prüfung kann mittels des Eintrags '+  
                'verify_user_at_sendmail=false in der Sektion '+  
                '[general_configuration] von mozptch.ini '+  
                'umgangen werden)'),  
                'ACHTUNG!', MB_OK);  
     checkInputData := false;      checkInputData := false;
     exit;      exit;
    end;     end;
   end    end
  else writelog('Die Prüfung auf Existenz des Users auf dem Server wurde nicht durchgeführt.');   else writelog(getMsg('verify_user_diabled'));
 (*  (*
   
   // test ob mozilla läuft......    // test ob mozilla läuft......
Line 1694  end;  Line 1750  end; 
 procedure TDataModule1.DataModuleCreate(Sender: TObject);  procedure TDataModule1.DataModuleCreate(Sender: TObject);
 var  var
   InstallNewMail: boolean;    InstallNewMail: boolean;
  mozptchini: TMeminiFile;   mozptchini : TMeminiFile;
   i : integer;    i : integer;
   tmpString : String;    tmpString : String;
 begin  begin
Line 1703  begin  Line 1759  begin 
  setLogProcedure(logwrapper);   setLogProcedure(logwrapper);
   // Logfile eröffnen    // Logfile eröffnen
   if DirectoryExists('c:\tmp') then    if DirectoryExists('c:\tmp') then
   assignfile(logfeil,'c:\tmp\maileinr.log')    logfilename := 'c:\tmp\maileinr.log'
   else    else
   assignfile(logfeil,GetEnvironmentVariable('TEMP')+'\maileinr.log');    logfilename := GetEnvironmentVariable('TEMP')+'\maileinr.log';
   assignfile(logfeil,logfilename);
   rewrite(logfeil);    rewrite(logfeil);
  writeln(logfeil,  'Maileinrichtung am '+DateTimeTostr(now));   writeln(logfeil,  'Started at '+DateTimeTostr(now));
   closeFile(logfeil);    closeFile(logfeil);
   writeVerinfoToLog;    writeVerinfoToLog;
   
     OpenMsgFile;
     chooseMessageLang;
     writelog(getMsg('langselect'));
   
  // mozptchini als parameter übergeben ?   // mozptchini als parameter übergeben ?
    mozptchiniFileName := ExtractFilePath(Application.ExeName)
                              + MOZPTCHINICONST;
  if (paramcount > 0)then   if (paramcount > 0)then
  begin   begin
   for i := 1 to paramcount do    for i := 1 to paramcount do
Line 1720  begin  Line 1783  begin 
     if paramcount <= i+1 then      if paramcount <= i+1 then
     begin      begin
      mozptchiniFileName := paramstr(i+1);       mozptchiniFileName := paramstr(i+1);
     end  
     else  
     begin  
      mozptchiniFileName := ExtractFilePath(Application.ExeName)  
                            + MOZPTCHINICONST;  
     end;      end;
    // -s parameter for silent (non interactive)     // -s parameter for silent (non interactive)
    if (paramstr(i) = '-s') then interactive := false;     if (paramstr(i) = '-s') then interactive := false;
  end    // -l parameter for manual language selection
 end    if (paramstr(i) = '-l') then
 else     if paramcount <= i+1 then
 begin     begin
  mozptchiniFileName := ExtractFilePath(Application.ExeName)      syslang := paramstr(i+1);
                        + MOZPTCHINICONST;     end;
   end;
  end;   end;
  if not FileExists(mozptchiniFileName) then   if not FileExists(mozptchiniFileName) then
  begin   begin
     ShowMessage(Format(getMsg('err_conf_not_found'),[mozptchiniFileName, logfilename]));
     writelog(Format(getMsg('err_conf_not_found'),[mozptchiniFileName, logfilename]));
     (*
   ShowMessage('Fehler: Konfigurationsdatei: '+mozptchiniFileName+    ShowMessage('Fehler: Konfigurationsdatei: '+mozptchiniFileName+
               ' nicht gefunden.'                ' nicht gefunden.'
                     +' Progamm wird abgebrochen.'                      +' Progamm wird abgebrochen.'
Line 1747  begin  Line 1809  begin 
                     +' Progamm wird abgebrochen.'                      +' Progamm wird abgebrochen.'
                     +' Bitte wenden Sie sich an die Hotline.'                      +' Bitte wenden Sie sich an die Hotline.'
                     +' Bitte geben Sie die Datei c:\tmp\maileinr.log mit');                      +' Bitte geben Sie die Datei c:\tmp\maileinr.log mit');
   *)
    application.terminate;     application.terminate;
    exit;     exit;
  end   end
  else   else
  begin   begin
  writelog('Verwende Konfigurationsdatei: '+mozptchiniFileName);   writelog(Format(getMsg('conf_file_name'),[mozptchiniFileName]));
  end;   end;
   
   InstallNewMail := True;    InstallNewMail := True;
Line 1806  begin  Line 1869  begin 
   sHelpVar7 := getVariableValue('%HelpVar7%');    sHelpVar7 := getVariableValue('%HelpVar7%');
   sHelpVar8 := getVariableValue('%HelpVar8%');    sHelpVar8 := getVariableValue('%HelpVar8%');
   localMozAppdataDir := getAppdataDir+'\mozilla';    localMozAppdataDir := getAppdataDir+'\mozilla';
  writelog('localMozAppdataDir ist '+localMozAppdataDir);   writelog('localMozAppdataDir is '+localMozAppdataDir);
   sHelpVar9 := getVariableValue('%HelpVar9%');    sHelpVar9 := getVariableValue('%HelpVar9%');
   sHelpVar10 := getVariableValue('%HelpVar10%');    sHelpVar10 := getVariableValue('%HelpVar10%');
   //sreplyToAdress := getVariableValue('%replyToAdress%');    //sreplyToAdress := getVariableValue('%replyToAdress%');
Line 1823  begin  Line 1886  begin 
   // where einstell.slt is    // where einstell.slt is
   mozmailsltdir := getVariableValue('%mozmailsltdir%');    mozmailsltdir := getVariableValue('%mozmailsltdir%');
   
     // special code for customer hupsi
   if ('1' = ValueOfEnvVar ('TELEPC')) then telearbeitsplatz := true    if ('1' = ValueOfEnvVar ('TELEPC')) then telearbeitsplatz := true
   else telearbeitsplatz := false;    else telearbeitsplatz := false;
   if telearbeitsplatz then    if telearbeitsplatz then
Line 1844  begin  Line 1908  begin 
     writelog('host von bonifax auf hlh2 gesetzt....');      writelog('host von bonifax auf hlh2 gesetzt....');
    end;     end;
   end;    end;
     // end of special code for customer hupsi
   
   writelog('sHome = '+sHome);    writelog('sHome = '+sHome);
   writelog('sUname = '+sUname);    writelog('sUname = '+sUname);
Line 1862  begin  Line 1927  begin 
    begin     begin
      if InstallNewMail = false then Application.Terminate;       if InstallNewMail = false then Application.Terminate;
      FUser := TFUser.Create(Application);       FUser := TFUser.Create(Application);
     FUser.Caption := 'Hinweise zum Mail-Einrichtungsprogramm';      FUser.Caption := getMsg('title_info_about_configuration');
     FUser.TextViewer1.text :=      FUser.CheckBoxPatchPrefs.Caption := getMsg('CheckBoxPatchPrefs_caption');
       'Sie sind dabei, Mozilla / Mail für Benutzer<br>'      FUser.TextViewer1.text := Format(getMsg('main_user_info_about_configuration')
       +'<b><font color=red>'+sUname+'</font></b><br>'                                       ,[sUname,sHome,mozprofparentdir]);
       +'mit dem Heimatverzeichnis<br>'  
       +'<b><font color=red>'+sHome+'</font></b><br>'  
       +'in das Zielverzeichnis<br>'  
       +'<b><font color=red>'+mozprofparentdir+'</font></b><br>'  
       +'zu installieren.<br><br>'  
       +'<font color=red>Wichtiger Hinweis: </font><br>'  
       +'<b>BITTE BEENDEN SIE ALLE LAUFENDEN MOZILLA-ANWENDUNGEN</b><br>'  
       +'Wird die Mail-Einrichtung bei laufendem Mozilla durchgeführt,<br>'  
       +'werden die Änderungen des Mail-Einrichtungsprogramms nicht dauerhaft übernommen.';  
      if FUser.ShowModal = mrCancel then       if FUser.ShowModal = mrCancel then
      begin       begin
       writelog('Programm terminated by user after Info');        writelog('Programm terminated by user after Info');
Line 1886  begin  Line 1942  begin 
      else       else
       patchPrefs := false;        patchPrefs := false;
      FUser.Release;       FUser.Release;
     writelog('Info gezeigt');      writelog('showed main user info');
    end     end
    else     else
    begin     begin
Line 1894  begin  Line 1950  begin 
    end;     end;
    startConfiguration;     startConfiguration;
    if interactive then     if interactive then
     MessageDlg('Maileinrichtung abgeschlossen', mtInformation, [mbOK], 0);      MessageDlg(getMsg('process_finished'), mtInformation, [mbOK], 0);
   end    end
   else    else
   begin    begin
   writelog('Inputdaten fehlerhaft oder unvollständig. Programmabruch');    writelog(getMsg('err_Input_data_not_complete_or_wrong'));
    exit;     exit;
   end;    end;
   

Removed from v.1.1  
changed lines
  Added in v.1.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>