Diff for /mozptch/datamodul.pas between versions 1.5 and 1.6

version 1.5, 2004/05/13 15:20:51 version 1.6, 2004/05/30 19:51:15
Line 9 Line 9
 # ========  # ========
 #  #
 # $Log$  # $Log$
# Revision 1.5  2004/05/13 15:20:51  oertel# Revision 1.6  2004/05/30 19:51:15  oertel
# - now (beta) support for firefox and thunderbird# -Linux support ready for delivery (beta)
# - mimetype.tmpl will be created if not present# -New Variables for EmailAddress, ncoming and outgoing server
 # -INI-Files debuged
 # - new bin zip file
 #  #
 # Revision 1.4  2004/04/16 16:52:52  oertel  # Revision 1.4  2004/04/16 16:52:52  oertel
 # src: terminated with multi language interface: (nearly)all messeges now in mozptch.msg  # src: terminated with multi language interface: (nearly)all messeges now in mozptch.msg
Line 39  uses  Line 41  uses 
   SysUtils, Classes,    SysUtils, Classes,
   {$IFDEF MSWINDOWS}    {$IFDEF MSWINDOWS}
   ExtCtrls, shell_func, VersionInfo,  ProcessViewer,    ExtCtrls, shell_func, VersionInfo,  ProcessViewer,
  ShlObj, Windows,  activeX,   ShlObj, Windows,  activeX, UnitFunc,
   Forms,
   {$ENDIF}    {$ENDIF}
  forms, Dialogs, preffile, IniFiles,   {$IFDEF LINUX}
  UnitFunc, Controls, stdctrls, Graphics,DateUtils,strutils,   QForms,
   {$ENDIF}
   QDialogs, preffile, IniFiles,
   QControls, QStdctrls, QGraphics,DateUtils,StrUtils,
   IdMessageClient, IdSMTP, IdBaseComponent, IdComponent, IdTCPConnection,    IdMessageClient, IdSMTP, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, Sockets, IdUDPBase, IdUDPClient, IdDNSResolver,xmlpatch;   IdTCPClient, Sockets, IdUDPBase, IdUDPClient, IdDNSResolver,xmlpatch,
   linux_func, linux_system, WSDLIntf;
   
 type  type
   TDataModule1 = class(TDataModule)    TDataModule1 = class(TDataModule)
Line 70  type  Line 77  type 
                            inifileSection:string);                             inifileSection:string);
   function findOrCreateMozProf : string;    function findOrCreateMozProf : string;
   function getAppdataDir: string;    function getAppdataDir: string;
  procedure writelog(logstr: string);   procedure writelog(logstr: widestring);
  function getMsg(key : string) : string;   function getMsg(key : widestring) : widestring;
   
 const  const
  do_sendmail_check:Boolean = true;   do_sendmail_check:Boolean = true;
Line 86  const  Line 93  const 
  *)   *)
  MOZPTCHINICONST='mozptch.ini';   MOZPTCHINICONST='mozptch.ini';
  MOZPTCHMSGCONST='mozptch.msg';   MOZPTCHMSGCONST='mozptch.msg';
   {$IFDEF MSWINDOWS}
   //pathseparator
    PS='\';
   {$ENDIF}
   {$IFDEF LINUX}
     PS='/';
   {$ENDIF}
   
   
 var  var
Line 93  var  Line 107  var 
   
   sHome, sUname, sTmp, sHost, sSysRoot: string;    sHome, sUname, sTmp, sHost, sSysRoot: string;
   sReplyToAdress, sFullName : string;    sReplyToAdress, sFullName : string;
     sIncomingServer, sOutgoingServer, sEmailAddress : string;
   sHelpVar1,sHelpVar2,sHelpVar3,sHelpVar4,sHelpVar5,    sHelpVar1,sHelpVar2,sHelpVar3,sHelpVar4,sHelpVar5,
   sHelpVar6,sHelpVar7,sHelpVar8,sHelpVar9,sHelpVar10 : string;    sHelpVar6,sHelpVar7,sHelpVar8,sHelpVar9,sHelpVar10 : string;
   mozmaildir, mozmailsubdir, mozmailsltdir, mozprogdir :string;    mozmaildir, mozmailsubdir, mozmailsltdir, mozprogdir :string;
Line 107  var  Line 122  var 
   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;    mozptchmsg: TMeminiFile;
     mozptchmsgfile : string;
     widemozptchmsg: TWideStrings;
   syslang, logfilename : string;    syslang, logfilename : string;
   
 implementation  implementation
   
 uses  uses
AnzName, confDialog, ConfDialog, moz_rdf_edit;
moz_rdf_edit;  
   
 {$R *.xfm}  {$R *.xfm}
   
Line 122  moz_rdf_edit;  Line 138  moz_rdf_edit; 
 ####################################################################*)  ####################################################################*)
   
 // Logger  // Logger
procedure writelog(logstr: string); procedure writelog(logstr: widestring);
 begin  begin
  if not loggingToFile then exit;   if not loggingToFile then exit;
  try   try
   append(logfeil);    append(logfeil);
   writeln(logfeil,logstr);    writeln(logfeil,logstr);
//  flush(logfeil);   //writeln(logstr);
//  closeFile(logfeil);   flush(logfeil);
   closeFile(logfeil);
  except   except
   on e : exception do    on e : exception do
   begin    begin
Line 146  end;  Line 163  end; 
   
   
 procedure writeVerinfoToLog;  procedure writeVerinfoToLog;
   {$IFDEF MSWINDOWS}
 var  var
   S: string;    S: string;
   vi : TVersionInfoRec;    vi : TVersionInfoRec;
   {$ENDIF}
 begin  begin
   {$IFDEF MSWINDOWS}
   S := Application.ExeName;    S := Application.ExeName;
   //vi := ReadVersionInfo(S);    //vi := ReadVersionInfo(S);
   vi := GetVersionInfoRec(S);    vi := GetVersionInfoRec(S);
Line 165  begin  Line 185  begin 
   writelog(vi.ProductVersion);    writelog(vi.ProductVersion);
   writelog(vi.Comments);    writelog(vi.Comments);
   writelog('-----Ende Version-Info-----');    writelog('-----Ende Version-Info-----');
   {$ENDIF}
 end;  end;
   
 (*####################################################################  (*####################################################################
Line 188  begin  Line 209  begin 
 end;  end;
 {$ELSE}  {$ELSE}
  {$IFDEF LINUX}   {$IFDEF LINUX}
 var  
 begin  begin
    //getSystemLanguage:=  SysLocale.
  getSystemLanguage:=copy(GetEnvironmentVariable('LANG'),1,2);   getSystemLanguage:=copy(GetEnvironmentVariable('LANG'),1,2);
    writelog('Value of LANG: '+GetEnvironmentVariable('LANG'));
 end;  end;
  {$ENDIF}   {$ENDIF}
 {$ENDIF}  {$ENDIF}
Line 205  begin  Line 227  begin 
                                  ,tmpLangStr                                   ,tmpLangStr
                                  ,'Message not found')                                   ,'Message not found')
                                  ,'Message not found') = 0 then                                   ,'Message not found') = 0 then
    //if widemozptchmsg.IndexOfIgnoreCase(tmpLangStr) = -1 then
  begin   begin
   syslang := 'en';    syslang := 'en';
   writelog('language: '+tmpLangStr+' not found - fall back to english');    writelog('language: '+tmpLangStr+' not found - fall back to english');
 end  end
  else   else
   syslang := tmpLangStr;    syslang := tmpLangStr;
 end;  end;
   
 function openMsgFile : boolean;  function openMsgFile : boolean;
   var
    msgfile: text;
    tmpstr : widestring;
 begin  begin
  try   try
   openMsgFile := true;    openMsgFile := true;
   mozptchMsgFileName := ExtractFilePath(Application.ExeName)    mozptchMsgFileName := ExtractFilePath(Application.ExeName)
                           + MOZPTCHMSGCONST;                            + mozptchmsgfile;
   if not FileExists(mozptchMsgFileName) then    if not FileExists(mozptchMsgFileName) then
   begin    begin
    ShowMessage('Error: Messagefile: '+mozptchMsgFileName+     ShowMessage('Error: Messagefile: '+mozptchMsgFileName+
Line 229  begin  Line 255  begin 
    exit;     exit;
   end;    end;
   mozptchmsg := TMemIniFile.Create(mozptchMsgFileName);    mozptchmsg := TMemIniFile.Create(mozptchMsgFileName);
     (*
     widemozptchmsg := TWideStrings.create;
     assignfile(msgfile,mozptchMsgFileName);
     reset(msgfile);
     while not eof(msgfile) do
     begin
      readln(msgfile,tmpstr);
      widemozptchmsg.Add(tmpstr);
      writeln(tmpstr);
     end;
     closefile(msgfile);
     *)
  except   except
   openMsgFile := false;    openMsgFile := false;
   ShowMessage('Error: Messagefile: '+mozptchMsgFileName+    ShowMessage('Error: Messagefile: '+mozptchMsgFileName+
Line 240  begin  Line 278  begin 
  end;   end;
 end;  end;
   
function getMsg(key : string) : string; function getMsg(key : widestring) : widestring;
 var  var
 tmpstr : string;  tmpstr : widestring;
  i : integer;
 begin  begin
  tmpstr := mozptchmsg.ReadString('messages'   tmpstr := mozptchmsg.ReadString('messages'
                                  ,key+'_'+syslang                                   ,key+'_'+syslang
                                  ,'Message not found');                                   ,'Message not found');
    (*
    i := widemozptchmsg.IndexOfIgnoreCase(key+'_'+syslang);
    if i = -1 then
     tmpstr := 'Message not found'
    else
     tmpstr := widemozptchmsg[i];
    *)
  // try it in english if message not found   // try it in english if message not found
 if comparestr(tmpstr,'Message not found') = 0 then
  if AnsiComparestr(tmpstr,'Message not found') = 0 then
   tmpstr := mozptchmsg.ReadString('messages'    tmpstr := mozptchmsg.ReadString('messages'
                                  ,key+'_en'                                   ,key+'_en'
                                  ,'Message not found');                                   ,'Message not found');
    // give key if message not found
    if AnsiComparestr(tmpstr,'Message not found') = 0 then
     tmpstr := tmpstr+' for: '+key;
   
  getMsg := AnsiReplaceStr(tmpstr,'\n',#10#13);   getMsg := AnsiReplaceStr(tmpstr,'\n',#10#13);
 end;  end;
   
Line 295  end;  Line 346  end; 
 function getAppdataDir: string;  function getAppdataDir: string;
 begin  begin
  // has to be written....   // has to be written....
    getAppdataDir := GetEnvironmentVariable('HOME');
 end;  end;
   
  {$ENDIF}   {$ENDIF}
Line 305  end;  Line 357  end; 
 ####################################################################*)  ####################################################################*)
   
 function checkInputData : boolean;  function checkInputData : boolean;
   var
    incommingConnected : boolean;
    ipnum : string;
 begin  begin
  checkInputData := true;   checkInputData := true;
    incommingConnected := false;
  // Check for validty and complete input data   // Check for validty and complete input data
   if not DirectoryExists(mozprofparentdir) then    if not DirectoryExists(mozprofparentdir) then
   begin    begin
Line 321  begin  Line 377  begin 
    exit;     exit;
   end;    end;
   writelog(Format(getMsg('target_dir_exists'),[mozprofparentdir]));    writelog(Format(getMsg('target_dir_exists'),[mozprofparentdir]));
   
     // resolve incoming Server
   hostresolved := false;    hostresolved := false;
  if sHost <> 'empty' then   if sIncomingServer <> 'empty' then
   begin    begin
   DataModule1.TcpSocke.Host := sHost;    DataModule1.TcpSocke.Host := sIncomingServer;
   DataModule1.TcpSocke.ReadTimeOut := 3000; // 3 Sekunden Timeout    DataModule1.TcpSocke.Port := 110; //pop3
    try
     ipnum := DataModule1.TcpClient1.LookupHostAddr(sIncomingServer);
     writelog(sIncomingServer+' resolved as: '+ipnum);
     if ipnum <> '0.0.0.0' then
      hostresolved := true
     else
      hostresolved := false;
    except
     hostresolved := false;
    end;
    if not hostresolved then
    begin
     writelog(Format(getMsg('host_not_resolved'),[sIncomingServer]));
     showMessage(Format(getMsg('host_not_resolved'),[sIncomingServer]));
     checkInputData := false;
     halt;
     exit;
    end;
    writelog(TimeToStr(now)+Format(getMsg('host_resolved'),[sIncomingServer]));
    try
     DataModule1.TcpSocke.Port := 110; //pop3
     DataModule1.TcpSocke.connect(1000);
     incommingConnected := true;
     writelog(TimeToStr(now)+Format(getMsg('host_connected_at_port'),[sIncomingServer, '110 (pop3)']));
    except
     writelog(TimeToStr(now)+Format(getMsg('host_not_reached_at_port'),[sIncomingServer, '110 (pop3)']));
    end;
    DataModule1.TcpSocke.Disconnect;
    try
     DataModule1.TcpSocke.Port := 995; //spop3
     DataModule1.TcpSocke.connect(500);
     incommingConnected := true;
     writelog(TimeToStr(now)+ Format(getMsg('host_connected_at_port'),[sIncomingServer, '995 (spop3)']));
    except
     writelog(TimeToStr(now)+Format(getMsg('host_not_reached_at_port'),[sIncomingServer, '995 (spop3)']));
    end;
    DataModule1.TcpSocke.Disconnect;
    try
     DataModule1.TcpSocke.Port := 143; //imap2
     DataModule1.TcpSocke.connect(500);
     incommingConnected := true;
     writelog(TimeToStr(now)+Format(getMsg('host_connected_at_port'),[sIncomingServer, '143 (imap2)']));
    except
     writelog(TimeToStr(now)+Format(getMsg('host_not_reached_at_port'),[sIncomingServer, '143 (imap2)']));
    end;
    DataModule1.TcpSocke.Disconnect;
    try
     DataModule1.TcpSocke.Port := 220; //imap3
     DataModule1.TcpSocke.connect(500);
     incommingConnected := true;
     writelog(TimeToStr(now)+Format(getMsg('host_connected_at_port'),[sIncomingServer, '220 (imap3)']));
    except
     writelog(TimeToStr(now)+Format(getMsg('host_not_reached_at_port'),[sIncomingServer, '220 (imap3)']));
    end;
    DataModule1.TcpSocke.Disconnect;
    try
     DataModule1.TcpSocke.Port := 993; //simap4
     DataModule1.TcpSocke.connect(500);
     incommingConnected := true;
     writelog(TimeToStr(now)+Format(getMsg('host_connected_at_port'),[sIncomingServer, '993 (simap4)']));
    except
     writelog(TimeToStr(now)+Format(getMsg('host_not_reached_at_port'),[sIncomingServer, '993 (simap4)']));
    end;
    DataModule1.TcpSocke.Disconnect;
 
    if not incommingConnected then
    begin
     writelog(Format(getMsg('host_not_reached_at_any_port'),[sIncomingServer]));
     ShowMessage(Format(getMsg('host_not_reached_at_any_port'),[sIncomingServer]));
     checkInputData := false;
     exit;
    end;
   end;
 
   // resolve outgoing Server
   hostresolved := false;
   if sOutgoingServer <> 'empty' then
   begin
    DataModule1.TcpSocke.Host := sOutgoingServer;
    DataModule1.TcpSocke.Port := 25; //smtp     DataModule1.TcpSocke.Port := 25; //smtp
    try     try
    DataModule1.TcpClient1.LookupHostAddr(sHost);     ipnum := DataModule1.TcpClient1.LookupHostAddr(sOutgoingServer);
    hostresolved := true;     writelog(sOutgoingServer+' resolved as: '+ipnum);
     if ipnum <> '0.0.0.0' then
      hostresolved := true
     else
      hostresolved := false;
    except     except
     hostresolved := false;      hostresolved := false;
    end;     end;
    if not hostresolved then     if not hostresolved then
    begin     begin
    writelog(Format(getMsg('host_not_resolved'),[sHost]));     writelog(Format(getMsg('host_not_resolved'),[sOutgoingServer]));
    showMessage(Format(getMsg('host_not_resolved'),[sHost]));     showMessage(Format(getMsg('host_not_resolved'),[sOutgoingServer]));
     checkInputData := false;      checkInputData := false;
     exit;      exit;
    end;     end;
   writelog(Format(getMsg('host_resolved'),[sHost]));    writelog(Format(getMsg('host_resolved'),[sOutgoingServer]));
   writelog('Server '+sHost+' konnte resolved werden');    //writelog('Server '+sOutgoingServer+' was resolved.');
    try     try
    DataModule1.TcpSocke.connect;     DataModule1.TcpSocke.connect(1000);
    except     except
    writelog(Format(getMsg('host_not_reached_at_port25'),[sHost]));     writelog(Format(getMsg('host_not_reached_at_port'),[sOutgoingServer, '25 (smtp)']));
    ShowMessage(Format(getMsg('host_not_reached_at_port25'),[sHost]));     ShowMessage(Format(getMsg('host_not_reached_at_port'),[sOutgoingServer, '25 (smtp)']));
     checkInputData := false;      checkInputData := false;
     exit;      exit;
    end;     end;
    DataModule1.TcpSocke.Disconnect;     DataModule1.TcpSocke.Disconnect;
   writelog(Format(getMsg('host_connected_at_port25'),[sHost]));    writelog(Format(getMsg('host_connected_at_port'),[sOutgoingServer, '25 (smtp)']));
   end;    end;
 
   (*
   if verify_user_at_sendmail then    if verify_user_at_sendmail then
   begin    begin
    try     try
Line 372  begin  Line 514  begin 
    end;     end;
   end    end
   else writelog(getMsg('verify_user_diabled'));    else writelog(getMsg('verify_user_diabled'));
(*   *)
 
   if verify_user_at_sendmail then
   begin
    try
     DataModule1.sendmail.Host := sOutgoingServer;
     DataModule1.sendmail.ReadTimeOut := 3000; // 3 Sekunden Timeout
     DataModule1.sendmail.Username := sUname;
     DataModule1.sendmail.Connect(500);
     DataModule1.sendmail.Verify(sUname);
     writelog(Format(getMsg('verify_user_success'),[sOutgoingServer,sUname]));
     DataModule1.sendmail.Disconnect;
    except
     writelog(Format(getMsg('verify_user_failed'),[sUname,sOutgoingServer]));
     showMessage(Format(getMsg('verify_user_failed'),[sUname,sOutgoingServer]));
     checkInputData := false;
     exit;
    end;
   end
   else writelog(getMsg('verify_user_diabled'));
 
   (*
   
   // test ob mozilla läuft......    // test ob mozilla läuft......
   if IsFileActive('mozilla.exe') then    if IsFileActive('mozilla.exe') then
Line 423  end;  Line 586  end; 
   
 // Funktionen mozilla spezifisch  // Funktionen mozilla spezifisch
   
 (*  
  procedure changeProfiledir(oldpath : string; newpath : string);  
  var  
   shell : string;  
   slist : TStringList;  
   i : integer;  
  begin  
   shell := ValueOfEnvVar ('ComSpec');  
   writelog('converting registry.dat to registry.txt....');  
   start(shell+' /C perl '  
         +ExtractFilePath(Application.ExeName)  
         +'\readMozProfile.pl <'+localMozAppdataDir+'\registry.dat'  
         +' >'+localMozAppdataDir+'\registry.txt');  
  end;  
  *)  
   
  procedure killmozilla;   procedure killmozilla;
  begin   begin
  writelog('killing mozilla.....');   {$IFDEF MSWINDOWS}
   writelog('killing '+mozprogname+'.....');
   Start(ExtractFilePath(Application.ExeName)+'\kill.exe '+mozprogname);    Start(ExtractFilePath(Application.ExeName)+'\kill.exe '+mozprogname);
     {$ENDIF}
     {$IFDEF LINUX}
     writelog('killing '+mozprogname+'.....');
     linkill(mozprogname);
     {$ENDIF}
  end;   end;
   
 {$IFDEF MSWINDOWS}  {$IFDEF MSWINDOWS}
Line 450  end;  Line 604  end; 
  var   var
   commandline, option, report : String;    commandline, option, report : String;
  begin   begin
  commandline := MOZPROGDIR+'\'+mozprogname;   commandline := MOZPROGDIR+PS+mozprogname;
  if not FileExists(MOZPROGDIR+'\'+mozprogname) then   if not FileExists(MOZPROGDIR+PS+mozprogname) then
   begin    begin
    writelog(Format(getMsg('no_mozilla_exe_found'),[mozprogname,MOZPROGDIR]));     writelog(Format(getMsg('no_mozilla_exe_found'),[mozprogname,MOZPROGDIR]));
    ShowMessage(Format(getMsg('no_mozilla_exe_found_msg'),[mozprogname,MOZPROGDIR]));     ShowMessage(Format(getMsg('no_mozilla_exe_found_msg'),[mozprogname,MOZPROGDIR]));
Line 473  end;  Line 627  end; 
    end;     end;
   end;    end;
  end;   end;
{$ELSE} {$ENDIF}
 {$IFDEF LINUX} {$IFDEF LINUX}
function startmozilla(param : string) : boolean;  function startmozilla(param : string) : boolean;
begin  var
 // has to be written....   commandline, option, report : String;
end;  begin
 {$ENDIF}   commandline := MOZPROGDIR+PS+mozprogname;
   if not FileExists(MOZPROGDIR+PS+mozprogname) then
   begin
    writelog(Format(getMsg('no_mozilla_exe_found'),[mozprogname,MOZPROGDIR]));
    ShowMessage(Format(getMsg('no_mozilla_exe_found_msg'),[mozprogname,MOZPROGDIR]));
    application.Terminate;
    exit;
   end
   else
   begin
    if not Start (commandline+' '+param)
    then
    Begin
     writelog('Error starting '+mozprogname);
     result := false;
    End
    else
    begin
     writelog(mozprogname+' started with '+param);
      result := true;
    end;
   end;
  end;
 {$ENDIF}  {$ENDIF}
   
   
Line 496  begin  Line 672  begin 
  FileAttrs := FileAttrs + faDirectory;   FileAttrs := FileAttrs + faDirectory;
  //FileAttrs := FileAttrs + faArchive;   //FileAttrs := FileAttrs + faArchive;
  //FileAttrs := FileAttrs + faAnyFile;   //FileAttrs := FileAttrs + faAnyFile;
 if FindFirst(mozhome+'/*.slt', FileAttrs, sr) = 0 then  if FindFirst(mozhome+PS+'*.slt', FileAttrs, sr) = 0 then
  begin   begin
   result := sr.Name;    result := sr.Name;
   sysutils.FindClose(sr);    sysutils.FindClose(sr);
Line 505  begin  Line 681  begin 
 end;  end;
   
 procedure delRegAndCreateNew;  procedure delRegAndCreateNew;
   const
   {$IFDEF MSWINDOWS}
    regdat='\registry.dat';
    pluginregdat='\pluginreg.dat';
    xulmufl='\xul.mfl';
   {$ENDIF}
   {$IFDEF LINUX}
    regdat='/appreg';
    pluginregdat='/pluginreg.dat';
    xulmufl='/XUL.mfasl';
   {$ENDIF}
 begin  begin
 // evtl. alte registry.dat löschen  // evtl. alte registry.dat löschen
 if FileExists(localMozAppdataDir+'\registry.dat') then  if FileExists(localMozAppdataDir+regdat) then
  begin   begin
   writelog(getMsg('old_regystry_found_will_del'));    writelog(getMsg('old_regystry_found_will_del'));
  sysutils.DeleteFile(localMozAppdataDir+'\registry.dat');   sysutils.DeleteFile(localMozAppdataDir+regdat);
   writelog(getMsg('old_registry_deleted'));    writelog(getMsg('old_registry_deleted'));
  end   end
  else writelog(getMsg('no_old_registry_found'));   else writelog(getMsg('no_old_registry_found'));
   
  // evtl. alte pluginreg.dat löschen   // evtl. alte pluginreg.dat löschen
 if FileExists(localMozAppdataDir+'\pluginreg.dat') then  if FileExists(localMozAppdataDir+pluginregdat) then
  begin   begin
   writelog(getMsg('old_pluginreg_found_will_del'));    writelog(getMsg('old_pluginreg_found_will_del'));
  sysutils.DeleteFile(localMozAppdataDir+'\pluginreg.dat');   sysutils.DeleteFile(localMozAppdataDir+pluginregdat);
   writelog(getMsg('old_pluginreg_deleted'));    writelog(getMsg('old_pluginreg_deleted'));
  end   end
  else writelog(getMsg('no_old_pluginreg_found'));   else writelog(getMsg('no_old_pluginreg_found'));
   
 if not FileExists(localMozAppdataDir+'\registry.dat') then  if not FileExists(localMozAppdataDir+regdat) then
  begin   begin
   writelog(Format(getMsg('no_old_registry_will_create'),    writelog(Format(getMsg('no_old_registry_will_create'),
                           [localMozAppdataDir]));                            [localMozAppdataDir]));
   // Are there white spaces in the path ?    // Are there white spaces in the path ?
  if pos(' ',mozprofparentdir+'\'+mozmaildir) > 0 then   if pos(' ',mozprofparentdir+PS+mozmaildir) > 0 then
   begin    begin
    writelog(getMsg('whitespace_in_path'));     writelog(getMsg('whitespace_in_path'));
   if (mozprofparentdir+'\'+mozmaildir=localMozAppdatadir+'\profiles') then    if (mozprofparentdir=localMozAppdatadir) then
    begin     begin
     writelog(getMsg('start_mozilla_to_create_registry'));      writelog(getMsg('start_mozilla_to_create_registry'));
     writelog(getMsg('create_profile_in_win_app_dir'));      writelog(getMsg('create_profile_in_win_app_dir'));
Line 561  begin  Line 748  begin 
    writelog(getMsg('start_mozilla_to_create_registry'));     writelog(getMsg('start_mozilla_to_create_registry'));
    writelog(Format(getMsg('start_mozilla_with_3s'),     writelog(Format(getMsg('start_mozilla_with_3s'),
               [mozmailsubdir, mozprofparentdir, mozmaildir]));                [mozmailsubdir, mozprofparentdir, mozmaildir]));
   startmozilla('-CreateProfile "'+mozmailsubdir+' '+mozprofparentdir+'\'+mozmaildir+'"');    startmozilla('-CreateProfile "'+mozmailsubdir+' '+mozprofparentdir+PS+mozmaildir+'"');
    writelog(getMsg('creating_mozilla_registry_finished'));     writelog(getMsg('creating_mozilla_registry_finished'));
   end;    end;
  if not FileExists(localMozAppdataDir+'\registry.dat') then   if not FileExists(localMozAppdataDir+regdat) then
   begin    begin
    writelog(getMsg('still_no_registry_found'));     writelog(getMsg('still_no_registry_found'));
    ShowMessage(getMsg('still_no_registry_found'));     ShowMessage(getMsg('still_no_registry_found'));
    application.terminate;     application.terminate;
      halt;
      abort;
    exit;     exit;
   end;    end;
  end;   end;
  // zufalls-namen des angelegten Directorys ermitteln   // zufalls-namen des angelegten Directorys ermitteln
 mozsltdir := getMozSltDir(mozprofparentdir +'\'+ mozmaildir+'\'+mozmailsubdir);  mozsltdir := getMozSltDir(mozprofparentdir +PS+ mozmaildir+PS+mozmailsubdir);
  writelog(Format(getMsg('new_profile_at'),   writelog(Format(getMsg('new_profile_at'),
                   [mozprofparentdir, mozmaildir, mozmailsubdir, mozsltdir]));                    [mozprofparentdir, mozmaildir, mozmailsubdir, mozsltdir]));
  // evtl. delete old xul.mfl   // evtl. delete old xul.mfl
 if FileExists(mozprofparentdir +'\'+ mozmaildir+'\'+mozmailsubdir+'\'+mozsltdir  if FileExists(mozprofparentdir +PS+ mozmaildir+PS+mozmailsubdir+PS+mozsltdir
                   +'\xul.mfl') then                    +xulmufl) then
  begin   begin
   writelog(getMsg('start_del_xul_mfl'));    writelog(getMsg('start_del_xul_mfl'));
  sysutils.DeleteFile(mozprofparentdir +'\'+ mozmaildir+'\'+mozmailsubdir+'\'   sysutils.DeleteFile(mozprofparentdir +PS+ mozmaildir+PS+mozmailsubdir+PS
                          +mozsltdir+'\xul.mfl');                           +mozsltdir+xulmufl);
   writelog(getMsg('del_xul_mfl'));    writelog(getMsg('del_xul_mfl'));
  end   end
  else writelog(getMsg('no_old_xul_mfl'));   else writelog(getMsg('no_old_xul_mfl'));
Line 598  begin  Line 787  begin 
  try   try
   writelog(getMsg('start_findOrCreateMozProf'));    writelog(getMsg('start_findOrCreateMozProf'));
   oldprofile := true;    oldprofile := true;
  if not DirectoryExists(mozprofparentdir +'\'+ mozmaildir) then   if not DirectoryExists(mozprofparentdir +PS+ mozmaildir) then
   begin    begin
    oldprofile := false;     oldprofile := false;
    writelog(Format(getMsg('2s_doesnt_exist'),[mozprofparentdir, mozmaildir]));     writelog(Format(getMsg('2s_doesnt_exist'),[mozprofparentdir, mozmaildir]));
   end    end
   else    else
   begin    begin
   if not DirectoryExists(mozprofparentdir +'\'+ mozmaildir+'\'+mozmailsubdir) then    if not DirectoryExists(mozprofparentdir +PS+ mozmaildir+PS+mozmailsubdir) then
    begin     begin
     oldprofile := false;      oldprofile := false;
     writelog(Format(getMsg('3s_doesnt_exist'),[mozprofparentdir, mozmaildir, mozmailsubdir]));      writelog(Format(getMsg('3s_doesnt_exist'),[mozprofparentdir, mozmaildir, mozmailsubdir]));
    end     end
    else     else
    begin     begin
    mozsltdir := getMozSltDir(mozprofparentdir +'\'+ mozmaildir+'\'+mozmailsubdir);     mozsltdir := getMozSltDir(mozprofparentdir +PS+ mozmaildir+PS+mozmailsubdir);
     if mozsltdir <> '' then      if mozsltdir <> '' then
     begin      begin
     if not FileExists(mozprofparentdir +'\'+ mozmaildir+'\'+mozmailsubdir+'\'+mozsltdir+'\prefs.js') then      if not FileExists(mozprofparentdir +PS+ mozmaildir+PS+mozmailsubdir+PS+mozsltdir+PS+'prefs.js') then
      begin       begin
       oldprofile := false;        oldprofile := false;
       writelog(Format(getMsg('no_prefjs_in'),[mozprofparentdir, mozmaildir, mozmailsubdir, mozsltdir]));        writelog(Format(getMsg('no_prefjs_in'),[mozprofparentdir, mozmaildir, mozmailsubdir, mozsltdir]));
Line 624  begin  Line 813  begin 
      begin       begin
       writelog(Format(getMsg('profile_found_at'),        writelog(Format(getMsg('profile_found_at'),
                [mozprofparentdir, mozmaildir, mozmailsubdir, mozsltdir]));                 [mozprofparentdir, mozmaildir, mozmailsubdir, mozsltdir]));
      result := mozprofparentdir +'\'+ mozmaildir+'\'+mozmailsubdir+'\'+mozsltdir;       result := mozprofparentdir +PS+ mozmaildir+PS+mozmailsubdir+PS+mozsltdir;
   
       // Führende Leerzeilen in prefs.js löschen....        // Führende Leerzeilen in prefs.js löschen....
       // deleting empty lines at the beginning of prefs.js....        // deleting empty lines at the beginning of prefs.js....
       writelog(Format(getMsg('cleaning_prefjs_in'),        writelog(Format(getMsg('cleaning_prefjs_in'),
           [mozprofparentdir, mozmaildir, mozmailsubdir, mozsltdir]));            [mozprofparentdir, mozmaildir, mozmailsubdir, mozsltdir]));
      TempPrefFile := TPrefFile.Create(mozprofparentdir +'\'+ mozmaildir+'\'+mozmailsubdir+'\'+mozsltdir+'\prefs.js');       TempPrefFile := TPrefFile.Create(mozprofparentdir +PS+ mozmaildir+PS+mozmailsubdir+PS+mozsltdir+PS+'prefs.js');
       TempPrefFile.UpdateFile;        TempPrefFile.UpdateFile;
       if TempPrefFile.success = false then        if TempPrefFile.success = false then
       begin        begin
Line 656  begin  Line 845  begin 
    // Profilverzeichnis erzeugen     // Profilverzeichnis erzeugen
    if not DirectoryExists(mozprofparentdir+mozmaildir) then     if not DirectoryExists(mozprofparentdir+mozmaildir) then
    begin     begin
    System.MkDir(mozprofparentdir+'\'+mozmaildir);     System.MkDir(mozprofparentdir+PS+mozmaildir);
     writelog(Format(getMsg('2s_dir_created'), [mozprofparentdir, mozmaildir]));      writelog(Format(getMsg('2s_dir_created'), [mozprofparentdir, mozmaildir]));
    end     end
    else writelog(Format(getMsg('2s_dir_exists'), [mozprofparentdir, mozmaildir]));     else writelog(Format(getMsg('2s_dir_exists'), [mozprofparentdir, mozmaildir]));
   if not DirectoryExists(mozprofparentdir+'\'+mozmaildir+'\'+mozmailsubdir) then    if not DirectoryExists(mozprofparentdir+PS+mozmaildir+PS+mozmailsubdir) then
    begin     begin
    System.MkDir(mozprofparentdir+'\'+mozmaildir+'\'+mozmailsubdir);     System.MkDir(mozprofparentdir+PS+mozmaildir+PS+mozmailsubdir);
     writelog(Format(getMsg('3s_dir_created'),      writelog(Format(getMsg('3s_dir_created'),
              [mozprofparentdir, mozmaildir, mozmailsubdir]));               [mozprofparentdir, mozmaildir, mozmailsubdir]));
    end     end
    else writelog(Format(getMsg('3s_dir_exists'),     else writelog(Format(getMsg('3s_dir_exists'),
              [mozprofparentdir, mozmaildir, mozmailsubdir]));               [mozprofparentdir, mozmaildir, mozmailsubdir]));
   if not DirectoryExists(mozprofparentdir+'\'+mozmaildir+'\'+mozmailsubdir+'\'+MOZMAILSLTDIR) then    if MOZMAILSLTDIR <> 'detect' then
    begin     begin
    System.MkDir(mozprofparentdir+'\'+mozmaildir+'\'+mozmailsubdir+'\'+MOZMAILSLTDIR);     if not DirectoryExists(mozprofparentdir+PS+mozmaildir+PS+mozmailsubdir+PS+MOZMAILSLTDIR) then
    writelog(Format(getMsg('4s_dir_created'),     begin
      System.MkDir(mozprofparentdir+PS+mozmaildir+PS+mozmailsubdir+PS+MOZMAILSLTDIR);
      writelog(Format(getMsg('4s_dir_created'),
          [mozprofparentdir, mozmaildir, mozmailsubdir, MOZMAILSLTDIR]));
     end
     else writelog(Format(getMsg('4s_dir_exists'),
         [mozprofparentdir, mozmaildir, mozmailsubdir, MOZMAILSLTDIR]));          [mozprofparentdir, mozmaildir, mozmailsubdir, MOZMAILSLTDIR]));
    end     end
   else writelog(Format(getMsg('4s_dir_exists'),    else
       [mozprofparentdir, mozmaildir, mozmailsubdir, MOZMAILSLTDIR]));    begin
    //
    end;
    delRegAndCreateNew;     delRegAndCreateNew;
   result := mozprofparentdir +'\'+ mozmaildir+'\'+mozmailsubdir+'\'+mozsltdir;    result := mozprofparentdir +PS+ mozmaildir+PS+mozmailsubdir+PS+mozsltdir;
   end;    end;
  except   except
   on E: Exception do    on E: Exception do
Line 709  begin  Line 904  begin 
    a := 1;     a := 1;
    for i := 1 to Length(PathEntry)-1 do     for i := 1 to Length(PathEntry)-1 do
     begin      begin
        if PathEntry[i] = '\' then         if PathEntry[i] = PS then
            begin             begin
                 inc(j);                  inc(j);
                result := result + Copy(PathEntry, a , (i - a) + 1 ) + '\';                 result := result + Copy(PathEntry, a , (i - a) + 1 ) + PS;
                 a := i+1;                  a := i+1;
            end;             end;
     end;      end;
Line 755  begin  Line 950  begin 
  tempstr := replaceStr(tempstr,'%HelpVar9%',sHelpVar9);   tempstr := replaceStr(tempstr,'%HelpVar9%',sHelpVar9);
  tempstr := replaceStr(tempstr,'%HelpVar10%',sHelpVar10);   tempstr := replaceStr(tempstr,'%HelpVar10%',sHelpVar10);
  tempstr := replaceStr(tempstr,'%mozprogname%',mozprogname);   tempstr := replaceStr(tempstr,'%mozprogname%',mozprogname);
    tempstr := replaceStr(tempstr,'%EmailAddress%',sEmailAddress);
    tempstr := replaceStr(tempstr,'%IncomingServer%',sIncomingServer);
    tempstr := replaceStr(tempstr,'%OutgoingServer%',sOutgoingServer);
    tempstr := replaceStr(tempstr,'%mozprofparentdir%',mozprofparentdir);
    tempstr := replaceStr(tempstr,'%mozmaildir%',mozmaildir);
    tempstr := replaceStr(tempstr,'%mozmailsubdir%',mozmailsubdir);
    tempstr := replaceStr(tempstr,'%mozmailsltdir%',mozmailsltdir);
  if makepref then   if makepref then
  begin   begin
   tempstr := replaceStr(tempstr,'%localMozAppdataDir%',MakePrefPath(localMozAppdataDir));    tempstr := replaceStr(tempstr,'%localMozAppdataDir%',MakePrefPath(localMozAppdataDir));
Line 1025  begin  Line 1227  begin 
     exit;      exit;
    end;     end;
    resultstr := InputBox('Bitte Eingeben',question,'');     resultstr := InputBox('Bitte Eingeben',question,'');
      writelog(Format(getMsg('got_value_for_varable_with'),
             [name, howtofind, question, resultstr]));
   end;    end;
  getVariableValue := resolve_variables(resultstr,false);
  end;   end;
  getVariableValue := resolve_variables(resultstr,false);  
  writelog(Format(getMsg('got_value_for_varable_with'),  
           [name, howtofind, question, resultstr]));  
 end;  end;
   
 (*####################################################################  (*####################################################################
Line 1117  var  Line 1318  var 
    AYear, AMonth, ADay, AHour, AMinute, ASecond, AMilliSecond: Word;     AYear, AMonth, ADay, AHour, AMinute, ASecond, AMilliSecond: Word;
 begin  begin
    result := false;     result := false;
   sreplyToAdress := getVariableValue('%replyToAdress%');    //sreplyToAdress := getVariableValue('%replyToAdress%');
   sFullName := getVariableValue('%fullname%');    //sFullName := getVariableValue('%fullname%');
   if sFullName = '' then    //if sFullName = '' then
       sFullName := sUname;    //    sFullName := sUname;
   NameOfPrefFile := completemozdir +'\prefs.js';    NameOfPrefFile := completemozdir +PS+'prefs.js';
    if not FileExists(NameOfPrefFile) then     if not FileExists(NameOfPrefFile) then
    begin     begin
     writelog(Format(getMsg('file_does_not_exist_will_be_created'),      writelog(Format(getMsg('file_does_not_exist_will_be_created'),
Line 1167  begin  Line 1368  begin 
       patchPrefFromIni(TempPrefFile,        patchPrefFromIni(TempPrefFile,
                            mozptchIniFileName,                             mozptchIniFileName,
                            'pop_perfjs_entries');                             'pop_perfjs_entries');
       (*  
       //Anzeigenamen selbst wählen, z.B. Dr. XY statt des Uname a19-5, hinzugefügt Annette Schmidt, 7.4.2000  
       FAnzName.newUname.text := sUname;  
       FAnzName.showModal;  
   
   
       TempPrefFile.AddPrefLine('user_pref("network.hosts.pop_server", "' + sHost +'");');  
       TempPrefFile.AddPrefLine('user_pref("network.hosts.smtp_server", "'+ sHost +'");');  
   
       TempPrefFile.AddPrefLine('user_pref("mail.check_new_mail", true);');  
       // auskommentiert A. Schmidt, 23.3.2000  
       //TempPrefFile.AddPrefLine('user_pref("mail.check_time", 1);');  
       //weitere Zeile A. Schmidt, 9.9.99  
       TempPrefFile.AddPrefLine('user_pref("mail.addr_book.lastnamefirst", true);');  
       //Bereits eingerichtete Internetmail erhalten  
       // Angepasst für mozilla - detlef 28.11.02  
       // This is a very custom specific part....  
       if FileExists(completemozdir+'\interinf.txt') then  
          begin  
             if Messagebox(0, 'Für den aktuellen Benutzer wurde bereits eine Internetmail-Einrichtung durchgeführt.'+  
                ' Sollen die Internetmail-Einstellungen beibehalten werden?',  
                'Nachfrage', MB_TASKMODAL + MB_YESNO + MB_DEFBUTTON2) = IDYES then  
               begin  
                 // Angepasst für mozilla - detlef 28.11.02  
                 //assignfile (k, sHome + '\mail\interinf.txt');  
                 assignfile (k, completemozdir+'\interinf.txt');  
                 try  
                    reset (k);  
                    readln(k, TempInternetAddress);  
                    TempPrefFile.AddPrefLine('user_pref("mail.identity.reply_to", "' + TempInternetAddress + '")');  
                    TempPrefFile.AddPrefLine('user_pref("mail.identity.useremail", "' + TempInternetAddress + '")');  
                    closefile (k);  
                 except  
                    closefile(k);  
                 end;  
               end;  
          end;  
      *)  
     end;      end;
   
     (* für IMAP ver 9.18 detlef oertel 15.6.01 *)      (* für IMAP ver 9.18 detlef oertel 15.6.01 *)
     if KindOfMail = 'IMAP' then      if KindOfMail = 'IMAP' then
     begin      begin
Line 1239  begin  Line 1403  begin 
  writelog(getMsg('start_procedure_doConfig'));   writelog(getMsg('start_procedure_doConfig'));
  Fehler := '';   Fehler := '';
   
    // find old profile or create new....
   {$IFDEF MSWINDOWS}
     localMozAppdataDir := getAppdataDir+PS+mozaplication_internal;
   {$ENDIF}
   {$IFDEF LINUX}
     localMozAppdataDir := getAppdataDir+PS+'.'+mozaplication_internal;
   {$ENDIF}
    writelog('localMozAppdataDir is '+localMozAppdataDir);
    completeMozDir := findOrCreateMozProf;
    writelog('completeMozDir is '+completeMozDir);
   
 if copy_to_profile_from <> 'no' then
 //IMAP   if not DirectoryExists(copy_to_profile_from) then
 //if FNetsptch.RadioGroupReadProtokoll.ItemIndex = 0 then //IMAP  
 if true then  
 begin  
  // find old profile or create new....  
  //writelog('imap soll eingerichtet werden.....');  
  localMozAppdataDir := getAppdataDir+'\'+mozaplication_internal;  
  writelog('localMozAppdataDir is '+localMozAppdataDir);  
  completeMozDir := findOrCreateMozProf;  
  writelog('completeMozDir is '+completeMozDir);  
 
  if copy_to_profile_from <> 'no' then  
   if not DirectoryExists(copy_to_profile_from) then  
   begin  
    writelog(Format(getMsg('dir_to_copy_from_not_found'),[copy_to_profile_from]));  
   end  
   else  
   begin  
    // dateien reinkopieren z.B. user.js  
    writelog('kopiere Dateien aus '+copy_to_profile_from+'....');  
    if not AllCopy(copy_to_profile_from+'\',completeMozDir,  
      cpCreateEmptySubdirectories + cpRecursive { Rupert Röder 3.9.2002, vorher 99 },  
      true,false,Fehler) then  
    begin  
     writelog(Format(getMsg('error_copying_files_from'),[copy_to_profile_from]));  
     exit;  
    end;  
    writelog(Format(getMsg('copy_from_succeed'),[copy_to_profile_from]));  
   end; //copy_to_profile_from  
 
  writelog('gibt es mimetypes.rdf.....');  
  if not FileExists(completeMozDir+'\mimetypes.rdf') then  
  begin  
   writelog(getMsg('no_mimetypes_rdf_try_template'));  
   if not fileExists(completeMozDir+'\mimetypes.tmpl') then  
   begin  
    AssignFile(rdffile,completeMozDir+'\mimetypes.tmpl');  
    rewrite(rdffile);  
    writeln(rdffile,'<?xml version="1.0"?>');  
    writeln(rdffile,'<RDF:RDF xmlns:NC="http://home.netscape.com/NC-rdf#"');  
    writeln(rdffile,'         xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">');  
    writeln(rdffile,'  <RDF:Description about="urn:mimetypes">');  
    writeln(rdffile,'    <NC:MIME-types resource="urn:mimetypes:root"/>');  
    writeln(rdffile,'  </RDF:Description>');  
    writeln(rdffile,'  <RDF:Seq about="urn:mimetypes:root">');  
    writeln(rdffile,'  </RDF:Seq>');  
    writeln(rdffile,'</RDF:RDF>');  
    CloseFile(rdffile);  
   end;  
   if not FileCopy(completeMozDir+'\mimetypes.tmpl',  
                   completeMozDir+'\mimetypes.rdf',  
                   true,true,problem) then  
   begin  
    writelog(Format(getMsg('error_copying_file'),  
           ['mimetypes.tmpl','mimetypes.rdf',problem]));  
   end;  
  end;  
  writelog(Format(getMsg('exists_file'),['mimetypes.rdf']));  
  if not FileExists(completeMozDir+'\mimetypes.rdf') then  
   begin    begin
   ShowMessage(getMsg('no_mimetypes_rdf_terminate'));    writelog(Format(getMsg('dir_to_copy_from_not_found'),[copy_to_profile_from]));
   writelog(getMsg('no_mimetypes_rdf_terminate'));  
   application.terminate;  
   exit;  
   end    end
   else    else
   begin    begin
   writelog(Format(getMsg('backing_up_file'),['mimetypes.rdf']));    // dateien reinkopieren z.B. user.js
   DecodeDateTime(now,AYear, AMonth, ADay, AHour, AMinute, ASecond, AMilliSecond);    writelog('kopiere Dateien aus '+copy_to_profile_from+'....');
   if not FileCopy(completeMozDir+'\mimetypes.rdf',    if not AllCopy(copy_to_profile_from+PS,completeMozDir,
                   completeMozDir+'\mimetypes.rdf'+'_'      cpCreateEmptySubdirectories + cpRecursive { Rupert Röder 3.9.2002, vorher 99 },
                   +IntToStr(AYear)+'_'      true,false,Fehler) then
                   +IntToStr(AMonth)+'_'  
                   +IntToStr(ADay)+'_'  
                   +IntToStr(AHour)+'_'  
                   +IntToStr(AMinute),  
                   true,true,problem) then  
    begin     begin
    writelog(Format(getMsg('backing_up_file'),['mimetypes.rdf',problem]));     writelog(Format(getMsg('error_copying_files_from'),[copy_to_profile_from]));
     exit;      exit;
    end;     end;
   writelog(Format(getMsg('file_backuped'),['mimetypes.rdf']));    writelog(Format(getMsg('copy_from_succeed'),[copy_to_profile_from]));
   //sysutils.DeleteFile(completeMozDir+'\mimetypes.rdf');   end; //copy_to_profile_from
   writelog(Format(getMsg('patching_file'),['mimetypes.rdf']));
   openRdfFile(completeMozDir+'\mimetypes.rdf');  writelog('gibt es mimetypes.rdf.....');
   setMimetypeEntriesFromMozptchIni;  if not FileExists(completeMozDir+PS+'mimetypes.rdf') then
   saveRdfFile(completeMozDir+'\mimetypes.rdf');  begin
   writelog(Format(getMsg('file_saved'),['mimetypes.rdf']));   writelog(getMsg('no_mimetypes_rdf_try_template'));
   if not fileExists(completeMozDir+PS+'mimetypes.tmpl') then
   begin
    AssignFile(rdffile,completeMozDir+PS+'mimetypes.tmpl');
    rewrite(rdffile);
    writeln(rdffile,'<?xml version="1.0"?>');
    writeln(rdffile,'<RDF:RDF xmlns:NC="http://home.netscape.com/NC-rdf#"');
    writeln(rdffile,'         xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">');
    writeln(rdffile,'  <RDF:Description about="urn:mimetypes">');
    writeln(rdffile,'    <NC:MIME-types resource="urn:mimetypes:root"/>');
    writeln(rdffile,'  </RDF:Description>');
    writeln(rdffile,'  <RDF:Seq about="urn:mimetypes:root">');
    writeln(rdffile,'  </RDF:Seq>');
    writeln(rdffile,'</RDF:RDF>');
    CloseFile(rdffile);
   end;
   if not FileCopy(completeMozDir+PS+'mimetypes.tmpl',
                   completeMozDir+PS+'mimetypes.rdf',
                   true,true,problem) then
   begin
    writelog(Format(getMsg('error_copying_file'),
           ['mimetypes.tmpl','mimetypes.rdf',problem]));
   end;    end;
    end;
    writelog(Format(getMsg('exists_file'),['mimetypes.rdf']));
    if not FileExists(completeMozDir+PS+'mimetypes.rdf') then
    begin
     ShowMessage(getMsg('no_mimetypes_rdf_terminate'));
     writelog(getMsg('no_mimetypes_rdf_terminate'));
     application.terminate;
     exit;
    end
    else
    begin
     writelog(Format(getMsg('backing_up_file'),['mimetypes.rdf']));
     DecodeDateTime(now,AYear, AMonth, ADay, AHour, AMinute, ASecond, AMilliSecond);
     if not FileCopy(completeMozDir+PS+'mimetypes.rdf',
                     completeMozDir+PS+'mimetypes.rdf'+'_'
                     +IntToStr(AYear)+'_'
                     +IntToStr(AMonth)+'_'
                     +IntToStr(ADay)+'_'
                     +IntToStr(AHour)+'_'
                     +IntToStr(AMinute),
                     true,true,problem) then
     begin
      writelog(Format(getMsg('backing_up_file'),['mimetypes.rdf',problem]));
      exit;
     end;
     writelog(Format(getMsg('file_backuped'),['mimetypes.rdf']));
     //sysutils.DeleteFile(completeMozDir+'\mimetypes.rdf');
     writelog(Format(getMsg('patching_file'),['mimetypes.rdf']));
     openRdfFile(completeMozDir+PS+'mimetypes.rdf');
     setMimetypeEntriesFromMozptchIni;
     saveRdfFile(completeMozDir+PS+'mimetypes.rdf');
     writelog(Format(getMsg('file_saved'),['mimetypes.rdf']));
    end;
   
   
  if patchPrefs then  if patchPrefs then
  begin
   writelog(getMsg('patching_prefsjs_with_mode_IMAP'));
   //Pref-Dateien ändern
   if UpdatePrefs('IMAP') = False then
   begin    begin
   writelog(getMsg('patching_prefsjs_with_mode_IMAP'));    writelog(getMsg('patching_file_failed'));
   //Pref-Dateien ändern  
   if UpdatePrefs('IMAP') = False then  
   begin  
    writelog(getMsg('patching_file_failed'));  
   end;  
   writelog(getMsg('prefs.js patched'));  
   end;    end;
     writelog(getMsg('prefsjs_patched'));
    end;
   
(*####################################################################  (*####################################################################
# Start special hupsi custom part  # Start special hupsi custom part
####################################################################*)  ####################################################################*)
   
  // Here special code for hupsi  // Here special code for hupsi
  if checkuser_imap_folder then  if checkuser_imap_folder then
  begin
   //INBOX anlegen  über homes-share wg. GROSSBUCHSTABEN (home-share wandelt 8.3 nach klein)
   if not FileExists('\\'+sHost+PS+sUname+'\INBOX') then
   begin    begin
   //INBOX anlegen  über homes-share wg. GROSSBUCHSTABEN (home-share wandelt 8.3 nach klein)    if FileCopy('p:\mail\empty.mbx', '\\'+sHost+PS+sUname+'\INBOX',
   if not FileExists('\\'+sHost+'\'+sUname+'\INBOX') then                true,true,Fehler)= False then
    begin
     writelog('Datei empty.mbx konnte nicht nach '+sHome+'\INBOX kopiert werden. '
           +Fehler); exit;
    end
    else
    begin     begin
    if FileCopy('p:\mail\empty.mbx', '\\'+sHost+'\'+sUname+'\INBOX',     writelog(sHome+'\INBOX angelegt');
     {$IFDEF MSWINDOWS}
      intFehler := FileSetAttr('\\'+sHost+PS+sUname+'\INBOX',0);
     {$ELSE}
      {$IFDEF LINUX}
      {$ENDIF}
     {$ENDIF}
     if intFehler <> 0 then
     begin
      writelog('Setzen der Schreibrechte für INBOX schlug fehl: FehlerNr: '+IntTostr(intFehler));
     end;
     writelog('Attribute für INBOX gesetzt.');
    end;
   end
   else writelog(sHome+'\INBOX existiert. OK');
 
   // ./imap anlegen
   if not DirectoryExists(sHome+'\.imap') then
   begin
    try
     mkDir (sHome+'\.imap');
     writelog(sHome+'\.imap angelegt');
    except
     writelog('Verzeichnis '+sHome+'\.imap konnte nicht angelegt werden.');
    end;
   end;
   if DirectoryExists(sHome+'\.imap') then
   begin
    if not FileExists('\\'+sHost+PS+sUname+'\.imap\gesendet') then
     if FileCopy('p:\mail\empty.mbx', '\\'+sHost+'\'+sUname+'\.imap\gesendet',
                 true,true,Fehler)= False then                  true,true,Fehler)= False then
     begin      begin
     writelog('Datei empty.mbx konnte nicht nach '+sHome+'\INBOX kopiert werden. '      writelog('Datei empty.mbx konnte nicht nach \\'+sHost+'\'+sUname+'\.imap\gesendet kopiert werden. '
           +Fehler); exit;            +Fehler);
     end      end
     else      else
     begin      begin
     writelog(sHome+'\INBOX angelegt');      writelog('\\'+sHost+'\'+sUname+'\.imap\gesendet angelegt');
      {$IFDEF MSWINDOWS}       {$IFDEF MSWINDOWS}
      intFehler := FileSetAttr('\\'+sHost+'\'+sUname+'\INBOX',0);       intFehler := FileSetAttr('\\'+sHost+'\'+sUname+'\.imap\gesendet',0);
      {$ELSE}       {$ELSE}
       {$IFDEF LINUX}        {$IFDEF LINUX}
       {$ENDIF}        {$ENDIF}
      {$ENDIF}       {$ENDIF}
      if intFehler <> 0 then       if intFehler <> 0 then
      begin       begin
      writelog('Setzen der Schreibrechte für INBOX schlug fehl: FehlerNr: '+IntTostr(intFehler));       writelog('Setzen der Schreibrechte für .imap\gesendet schlug fehl: FehlerNr: '+IntTostr(intFehler));
      end;       end;
     writelog('Attribute für INBOX gesetzt.');      writelog('Attribute für .imap\gesendet gesetzt.');
     end;      end;
   end    if not FileExists('\\'+sHost+'\'+sUname+'\.imap\Entwuerfe') then
   else writelog(sHome+'\INBOX existiert. OK');     if FileCopy('p:\mail\empty.mbx', '\\'+sHost+PS+sUname+'\.imap\Entwuerfe',
                true,true,Fehler)= False then
   // ./imap anlegen     begin
   if not DirectoryExists(sHome+'\.imap') then      writelog('Datei empty.mbx konnte nicht nach \\'+sHost+'\'+sUname+'\.imap\Entwuerfe kopiert werden. '
   begin            +Fehler); exit;
    try     end
     mkDir (sHome+'\.imap');     else
     writelog(sHome+'\.imap angelegt');     begin
    except      writelog('\\'+sHost+'\'+sUname+'\.imap\Entwuerfe angelegt');
     writelog('Verzeichnis '+sHome+'\.imap konnte nicht angelegt werden.');      {$IFDEF MSWINDOWS}
    end;       intFehler := FileSetAttr('\\'+sHost+'\'+sUname+'\.imap\Entwuerfe',0);
   end;      {$ELSE}
   if DirectoryExists(sHome+'\.imap') then       {$IFDEF LINUX}
   begin  
    if not FileExists('\\'+sHost+'\'+sUname+'\.imap\gesendet') then  
     if FileCopy('p:\mail\empty.mbx', '\\'+sHost+'\'+sUname+'\.imap\gesendet',  
                 true,true,Fehler)= False then  
     begin  
      writelog('Datei empty.mbx konnte nicht nach \\'+sHost+'\'+sUname+'\.imap\gesendet kopiert werden. '  
            +Fehler);  
     end  
     else  
     begin  
      writelog('\\'+sHost+'\'+sUname+'\.imap\gesendet angelegt');  
      {$IFDEF MSWINDOWS}  
       intFehler := FileSetAttr('\\'+sHost+'\'+sUname+'\.imap\gesendet',0);  
      {$ELSE}  
       {$IFDEF LINUX}  
       {$ENDIF}  
       {$ENDIF}        {$ENDIF}
      if intFehler <> 0 then      {$ENDIF}
      begin      if intFehler <> 0 then
       writelog('Setzen der Schreibrechte für .imap\gesendet schlug fehl: FehlerNr: '+IntTostr(intFehler));  
      end;  
      writelog('Attribute für .imap\gesendet gesetzt.');  
     end;  
    if not FileExists('\\'+sHost+'\'+sUname+'\.imap\Entwuerfe') then  
     if FileCopy('p:\mail\empty.mbx', '\\'+sHost+'\'+sUname+'\.imap\Entwuerfe',  
                 true,true,Fehler)= False then  
     begin  
      writelog('Datei empty.mbx konnte nicht nach \\'+sHost+'\'+sUname+'\.imap\Entwuerfe kopiert werden. '  
            +Fehler); exit;  
     end  
     else  
      begin       begin
      writelog('\\'+sHost+'\'+sUname+'\.imap\Entwuerfe angelegt');       writelog('Setzen der Schreibrechte für .imap\Entwuerfe schlug fehl: FehlerNr: '+IntTostr(intFehler));
      {$IFDEF MSWINDOWS}  
       intFehler := FileSetAttr('\\'+sHost+'\'+sUname+'\.imap\Entwuerfe',0);  
      {$ELSE}  
       {$IFDEF LINUX}  
       {$ENDIF}  
      {$ENDIF}  
      if intFehler <> 0 then  
      begin  
       writelog('Setzen der Schreibrechte für .imap\Entwuerfe schlug fehl: FehlerNr: '+IntTostr(intFehler));  
      end;  
      writelog('Attribute für .imap\Entwuerfe gesetzt.');  
      end;       end;
        writelog('Attribute für .imap\Entwuerfe gesetzt.');
       end;
   
    if not FileExists('\\'+sHost+'\'+sUname+'\.imap\Vorlagen') then    if not FileExists('\\'+sHost+'\'+sUname+'\.imap\Vorlagen') then
     if FileCopy('p:\mail\empty.mbx', '\\'+sHost+'\'+sUname+'\.imap\Vorlagen',     if FileCopy('p:\mail\empty.mbx', '\\'+sHost+'\'+sUname+'\.imap\Vorlagen',
                 true,true,Fehler)= False then                 true,true,Fehler)= False then
     begin     begin
      writelog('Datei empty.mbx konnte nicht nach \\'+sHost+'\'+sUname+'\.imap\Vorlagen kopiert werden. '      writelog('Datei empty.mbx konnte nicht nach \\'+sHost+'\'+sUname+'\.imap\Vorlagen kopiert werden. '
            +Fehler); exit;            +Fehler); exit;
     end     end
     else     else
     begin     begin
      writelog('\\'+sHost+'\'+sUname+'\.imap\Vorlagen angelegt');      writelog('\\'+sHost+'\'+sUname+'\.imap\Vorlagen angelegt');
      {$IFDEF MSWINDOWS}      {$IFDEF MSWINDOWS}
       intFehler := FileSetAttr('\\'+sHost+'\'+sUname+'\.imap\Vorlagen',0);       intFehler := FileSetAttr('\\'+sHost+'\'+sUname+'\.imap\Vorlagen',0);
      {$ELSE}      {$ELSE}
       {$IFDEF LINUX}       {$IFDEF LINUX}
       {$ENDIF}  
       {$ENDIF}        {$ENDIF}
      if intFehler <> 0 then      {$ENDIF}
      begin      if intFehler <> 0 then
       writelog('Setzen der Schreibrechte für .imap\Vorlagen schlug fehl: FehlerNr: '+IntTostr(intFehler));      begin
       exit;       writelog('Setzen der Schreibrechte für .imap\Vorlagen schlug fehl: FehlerNr: '+IntTostr(intFehler));
      end;       exit;
      writelog('Attribute für .imap\Vorlagen gesetzt.');  
      end;       end;
    end; // end of checkuser_imap_folder      writelog('Attribute für .imap\Vorlagen gesetzt.');
    end;
    //FBar.Close;  
   
   end; // ende in /.imap    end; // ende in /.imap
   
Line 1473  begin  Line 1632  begin 
    end;     end;
   end    end
   else writelog(completemozdir+'\ich_bin_imapuser   existiert. OK');    else writelog(completemozdir+'\ich_bin_imapuser   existiert. OK');
  end; // Ende IMAP  
   
end; // function TFNetsptch.Intranetmail : Integer;  end; // end of checkuser_imap_folder
  end; //  function TFNetsptch.Intranetmail : Integer;
   
   
 (*####################################################################  (*####################################################################
Line 1513  begin  Line 1672  begin 
   
   if true then // historic :-||    if true then // historic :-||
   begin    begin
   if not FileExists(completemozdir + '\prefs.js') then    if not FileExists(completemozdir + PS+'prefs.js') then
    begin     begin
     DataModule1.doConfig(true);      DataModule1.doConfig(true);
     writelog(getMsg('no_prefjs'));      writelog(getMsg('no_prefjs'));
Line 1525  begin  Line 1684  begin 
     begin      begin
      if patchPrefs then       if patchPrefs then
      begin       begin
      if Messagebox(0, PChar(Format(getMsg('ask_for_confirmation_with_patch'),       if messageDlg(Format(getMsg('ask_for_confirmation_with_patch'),
                            [mozaplication,completemozdir])),                             [mozaplication,completemozdir]),
             ' Warnung', MB_TASKMODAL + MB_YESNO + MB_DEFBUTTON1) = IDNO then                              mtConfirmation, mbYesNo,0,mbYes) = mrNo then
 //      Messagebox(0, PChar(Format(getMsg('ask_for_confirmation_with_patch'),
 //                            [mozaplication,completemozdir])),
 //             ' Warnung', MB_TASKMODAL + MB_YESNO + MB_DEFBUTTON1) = IDNO then
       begin        begin
        writelog(getMsg('user_informed_about_existing_prefjs'));         writelog(getMsg('user_informed_about_existing_prefjs'));
        writelog(getMsg('existing_prefsjs_should_be_pachted'));         writelog(getMsg('existing_prefsjs_should_be_pachted'));
Line 1546  begin  Line 1708  begin 
      end       end
      else       else
      begin       begin
      if Messagebox(0, PChar(Format(getMsg('ask_for_confirmation_without_patch'),       if messageDlg(Format(getMsg('ask_for_confirmation_without_patch'),
                            [mozaplication,completemozdir])),                             [mozaplication,completemozdir]),
                 ' Warnung', MB_TASKMODAL + MB_YESNO + MB_DEFBUTTON1) = IDNO then                             mtConfirmation,mbYesNo,0,mbYes)=mrNo then
 //      if Messagebox(0, PChar(Format(getMsg('ask_for_confirmation_without_patch'),
 //                            [mozaplication,completemozdir])),
 //                 ' Warnung', MB_TASKMODAL + MB_YESNO + MB_DEFBUTTON1) = IDNO then
       begin        begin
        writelog(getMsg('user_informed_about_existing_prefjs'));         writelog(getMsg('user_informed_about_existing_prefjs'));
        writelog(getMsg('existing_prefsjs_should_not_be_pachted'));         writelog(getMsg('existing_prefsjs_should_not_be_pachted'));
Line 1587  begin  Line 1752  begin 
  // Callback für xmlpatch logger   // Callback für xmlpatch logger
  setLogProcedure(logwrapper);   setLogProcedure(logwrapper);
   // Logfile eröffnen    // Logfile eröffnen
     {$IFDEF MSWINDOWS}
   if DirectoryExists('c:\tmp') then    if DirectoryExists('c:\tmp') then
    logfilename := 'c:\tmp\maileinr.log'     logfilename := 'c:\tmp\maileinr.log'
   else    else
    logfilename := GetEnvironmentVariable('TEMP')+'\maileinr.log';     logfilename := GetEnvironmentVariable('TEMP')+'\maileinr.log';
     {$ENDIF}
     {$IFDEF LINUX}
      if not DirectoryExists(GetEnvironmentVariable('HOME')+'/.mozptch') then
       CreateDir(GetEnvironmentVariable('HOME')+'/.mozptch');
      logfilename := GetEnvironmentVariable('HOME')+'/.mozptch/mozptch.log';
     {$ENDIF}
   assignfile(logfeil,logfilename);    assignfile(logfeil,logfilename);
   rewrite(logfeil);    rewrite(logfeil);
   writeln(logfeil,  'Started at '+DateTimeTostr(now));    writeln(logfeil,  'Started at '+DateTimeTostr(now));
   closeFile(logfeil);    closeFile(logfeil);
   writeVerinfoToLog;    writeVerinfoToLog;
  mozptchmsgfile := MOZPTCHMSGCONST;
   OpenMsgFile;    OpenMsgFile;
   chooseMessageLang;    chooseMessageLang;
   writelog(getMsg('langselect'));    writelog(getMsg('langselect'));
Line 1615  begin  Line 1787  begin 
     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;
      // -m parameter for manual messagefile selection
      if (paramstr(i) = '-m') then
       if paramcount > i then
       begin
        mozptchmsgfile := paramstr(i+1);
        writelog('messagefile set by -m Argument to :'+mozptchmsgfile);
        OpenMsgFile;
       end;
    // -l parameter for manual language selection     // -l parameter for manual language selection
    if (paramstr(i) = '-l') then     if (paramstr(i) = '-l') then
     if paramcount > i then      if paramcount > i then
Line 1680  begin  Line 1860  begin 
   sHelpVar1 := getVariableValue('%HelpVar1%');    sHelpVar1 := getVariableValue('%HelpVar1%');
   sHelpVar2 := getVariableValue('%HelpVar2%');    sHelpVar2 := getVariableValue('%HelpVar2%');
   sUname := getVariableValue('%sUname%');    sUname := getVariableValue('%sUname%');
     sEmailAddress := getVariableValue('%EmailAddress%');
   sHelpVar3 := getVariableValue('%HelpVar3%');    sHelpVar3 := getVariableValue('%HelpVar3%');
   sHelpVar4 := getVariableValue('%HelpVar4%');    sHelpVar4 := getVariableValue('%HelpVar4%');
   sHost := getVariableValue('%sHost%');    sHost := getVariableValue('%sHost%');
     sIncomingServer := getVariableValue('%IncomingServer%');
     sOutgoingServer := getVariableValue('%OutgoingServer%');
   sHelpVar5 := getVariableValue('%HelpVar5%');    sHelpVar5 := getVariableValue('%HelpVar5%');
   sHelpVar6 := getVariableValue('%HelpVar6%');    sHelpVar6 := getVariableValue('%HelpVar6%');
   sHome := getVariableValue('%sHome%');    sHome := getVariableValue('%sHome%');
   sHelpVar7 := getVariableValue('%HelpVar7%');    sHelpVar7 := getVariableValue('%HelpVar7%');
   sHelpVar8 := getVariableValue('%HelpVar8%');    sHelpVar8 := getVariableValue('%HelpVar8%');
  localMozAppdataDir := getAppdataDir+'\'+mozaplication_internal;   sreplyToAdress := getVariableValue('%replyToAdress%');
   if sreplyToAdress = '' then
       sreplyToAdress := sEmailAddress;
   sFullName := getVariableValue('%fullname%');
   if sFullName = '' then
       sFullName := sUname;
   {$IFDEF MSWINDOWS}
    localMozAppdataDir := getAppdataDir+PS+mozaplication_internal;
   {$ENDIF}
   {$IFDEF LINUX}
    localMozAppdataDir := getAppdataDir+'/.'+mozaplication_internal;
   {$ENDIF}
   writelog('localMozAppdataDir is '+localMozAppdataDir);    writelog('localMozAppdataDir is '+localMozAppdataDir);
   sHelpVar9 := getVariableValue('%HelpVar9%');    sHelpVar9 := getVariableValue('%HelpVar9%');
   sHelpVar10 := getVariableValue('%HelpVar10%');    sHelpVar10 := getVariableValue('%HelpVar10%');
Line 1719  begin  Line 1913  begin 
   if sHost = 'bonifax' then    if sHost = 'bonifax' then
   begin    begin
    writelog('host bonifax gefunden....');     writelog('host bonifax gefunden....');
   if MessageBox(0, PointerAufString('Achtung: '+#10#13+    if messageDlg('Achtung: '+#10#13+
               'Hostname bonifax wurde gefunden.'+#10#13+                'Hostname bonifax wurde gefunden.'+#10#13+
               'Am boniplatz ist der mailserver zumeist die hlh2.'+#10#13+                'Am boniplatz ist der mailserver zumeist die hlh2.'+#10#13+
               'Klicken Sie Ok um Host auf hlh2 umzusetzen.'+#10#13+                'Klicken Sie Ok um Host auf hlh2 umzusetzen.'+#10#13+
              'Klicken Sie Abbrechen um host auf bonifax zu belassen.'),               'Klicken Sie Abbrechen um host auf bonifax zu belassen.',
              'ACHTUNG!', MB_OKCANCEL) = IDOK then                mtConfirmation, mbOKCancel,0,mbOk) = mrOk then
 //   if MessageBox(0, PointerAufString('Achtung: '+#10#13+
 //              'Hostname bonifax wurde gefunden.'+#10#13+
 //              'Am boniplatz ist der mailserver zumeist die hlh2.'+#10#13+
 //              'Klicken Sie Ok um Host auf hlh2 umzusetzen.'+#10#13+
 //              'Klicken Sie Abbrechen um host auf bonifax zu belassen.'),
 //              'ACHTUNG!', MB_OKCANCEL) = IDOK then
    begin     begin
     sHost := 'hlh2';      sHost := 'hlh2';
     writelog('host von bonifax auf hlh2 gesetzt....');      writelog('host von bonifax auf hlh2 gesetzt....');
Line 1743  begin  Line 1943  begin 
   
   if checkInputData then    if checkInputData then
   begin    begin
   completemozdir := mozprofparentdir +'\'+ mozmaildir+'\'+mozmailsubdir+'\'    completemozdir := mozprofparentdir +PS+ mozmaildir+PS+mozmailsubdir+PS
                     + getMozSltDir(mozprofparentdir +'\'+ mozmaildir+'\'+mozmailsubdir);                      + getMozSltDir(mozprofparentdir +PS+ mozmaildir+PS+mozmailsubdir);
    if interactive then     if interactive then
    begin     begin
      if InstallNewMail = false then Application.Terminate;       if InstallNewMail = false then Application.Terminate;

Removed from v.1.5  
changed lines
  Added in v.1.6


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