Roundcube Community Forum

 

Los geht's

Started by rosali, July 14, 2008, 08:43:51 AM

Previous topic - Next topic

rosali

Nachdem der Admin so freundlich war und uns ein deutschsprachiges Forum zur Verfügung gestellt hat, sollte hier auch etwas passieren!

Ich suche Leute, die mir helfen, RoundCube etwas mehr Features zu verleihen. Ich bin schon ziemlich in "Vorleistung" getreten. Wir brauchen also nicht von Null zu starten.

Das ist fertig:

Plugin API mit folgenden Plugins:

(1) advanced_addressbook:
* mehr Addressbuch-Felder
* frei definierbar
* automatische Datenbank-Anpassung

(2) auto_add_contacts
* Addressaten automatisch zum Addressbuch hinzufügen

(3) checked_identities
* Nur überprüfte Identitäten sind erlaubt

(4) compose
* TinyMCE Integration abgeschlossen (einschließlich etlicher BugFixes)
* Plaxo Addressbook Widget
* Googiespell Unterstützung für HTML Editor

(5) disallow_signature
* Abschalten der RC User Signature (viele MTA's haben das Feature im backend)

(6) folder_collapse
* IMAP Ordner ein- und  ausklappen

(7) forward_as_attachment
* Nachrichten als Anhang weiterleiten

(8 ) googiespell
* Ein Tunnel, falls CURL oder SSL auf dem Host nicht verfügbar

(9) google_ads
* Für Werbe-Freaks ...

(10) google_analytics
* Wer es braucht ...

(11) invert_selection /select_range
* Squirrelmail Benutzer sind das gewohnt ...

(12) language_selector
* Select Box zum Auswählen der Sprache beim Login

(13) limit_languages
* Es ist schön über so viele Sprachpakete zu verfügen, aber manchmal mag man nicht alle ...

(14) logout_return
* Wenn man ein alternatives Login hat, dann sollte RC beim Abmeldung auch zur "Homepage" zurückkehren

(15) move_to_drop_down
* Manchmal ist es besser nicht auf Drag and Drop zu vertrauen. Deswegen sorgt dieses Plugin für eine Alternative.

(16) new_users_stats
* Diese Plugin zeigt an, wie viele Benutzer auf RC sind.

(17) override_labels
* Manche Übersetzung war für mich nicht passend. Dieses Plugin erlaubt das zu ändern ohne dass die Änderungen bei jedem Update überschrieben werden.

(18 ) wrapper
* Dieses Plugin sorgt dafür, dass RC bei unterschiedlichen Bildschirm-Auflösungen immer gleich formattiert wird.

(19) - (xx) In Vorbereitung ist ...
* Accessontrol (Passwort raten und hammering unterbinden)
* Password Tools (Geheime Antwort/Frage zum Zurücksetzen des Passworts)
* Spam Filter (nur für hMailServer)
* Self Registration (nur für hMailServer)
* Remember Login

______________

Ich suche Leute, die mich bei der Entwicklung dieser Plugins unterstützen. Jeder, der etwas PHP, MySQL, HTML, CSS und Javascript beherrscht, ist willkommen.

Bei Interesse bitte Kontaktdaten hier veröffentlichen.

-Roland

______________

Translation by Google (and me):

After the admin has been so friendly and a German-speaking forum is available, here is the first content!

I'm looking for people who help me to create more features for RoundCube. We need not start from zero.

This is already done:

Plugin API plug-ins with the following:

(1) advanced_addressbook:
* More Address Book fields
* Definable
* Automatic database adjustment

(2) auto_add_contacts
* Add contacts automatically to Address Book

(3) checked_identities
* Only verified identities are allowed

(4) compose
* TinyMCE integration completed (including several BugFixes)
* Plaxo Address Book widget
* Googiespell support for HTML editor

(5) disallow_signature
* Shutdown of the RC User Signature (many MTA's have the feature in the backend)

(6) folder_collapse
* IMAP collapse/expand folder list

(7) forward_as_attachment
* Forward Messages as attachment

(8 ) googiespell
* A tunnel if CURL or SSL on the host not available

(9) google_ads
* For advertising freaks ...

(10) google_analytics
* For those, who needs it ...

(11) invert_selection / select_range
* Squirrelmail users are used to ...

(12) language_selector
* Select box to select the language when logging

(13) limit_languages
* It is nice to have on so many language packages, but sometimes you'd like to have not all ...

(14) logout_return
* If you have an alternative login, then it should RC should return to "home"

(15) move_to_drop_down
* Sometimes it is better not to trust "drag and drop". So this plug-in provides an alternative.

(16) new_users_stats
* This plugin indicates are on RC.

(17) override_labels
* Some translation was not appropriate for me ...

(18 ) Wrapper
* This plugin ensures that RC at different screen resolutions always the same formatted.

(19) - (xx) In preparation ...
* Accessontrol (password guessing protection and suppress hammering)
* Password Tools (Secret answer/question)
* Spam filter (only for hMailServer)
* Self registration (only for hMailServer)
* Remember Login

______________

I'm looking for people who supports me in the development of these plug-ins. Anyone with a little PHP, MySQL, HTML, CSS and JavaScript knowledge is welcome.

If interested, please post here.
Regards,
Rosali
__________________
MyRoundcube Project (commercial)

oldschool

Na, da haste dir aber einiges vorgenommen...
:-)

Ich denke, das posten in Englisch kannste dir sparen,
da das hier die teutsche Rubrik ist.

Wenn ich helfen kann, bin ich dabei.



Rgds.

bpat1434

Sie koennen auf Englisch posten sparen.  (I'm sure you understand my broken Deutsch).
 
 

rosali

#3
Also dann los ...

http://liebl.ath.cx/dl/RoundCube

... hier findest Du die API mit allen (beta-)fertigen Plugins (myplugins.zip)

Installation:

(1) Download und Installieren von SVN 1589 (sollte aber auch ab SVN 1500 gehen)
(2) Download und unzip in RoundCube Root Ordner
(3) Installations Script starten und Anweisungen folgen (http://path_to_roundcube/myplugins/installer/)

Wenn Du Dich wunderst, warum die API so groß ist, dann liegt das daran, dass TinyMCE komplett ge-patched wird (mit allen language files).

Sag mal wie das bei Dir läuft. Ich habe es auf Apache/PHP5 (XAMPP 163) programmiert - also auf Win32.

Unterstützung bräuchte ich bei:
(1) natürlich beim Testen ...
(2) bei der API Dokumentation in Englisch (damit andere auch Plugins programmieren können)
(3) und letztendlich auch beim Programmieren weiterer Plugins.

-Roland

P.S.: Es versteht sich von selbst, dass es (noch) nicht für ein produktives System gedacht ist !!!
Regards,
Rosali
__________________
MyRoundcube Project (commercial)

oldschool

Na Du bist ja krass!
Hst mich glatt überfahren...
:)

Ich werd´ das mal installieren.
Da bin aber mal gespannt...


Rgds.

oldschool

Also unter Linux siehts so aus:

Pre-Check Bug Fixes ...

Warning: opendir(..\..\myplugins\roundcube_bug_fixes): failed to open dir: No such file or directory in /srv/www/htdocs/webmail/myplugins/installer/index.php on line 67
Pre-Check Patches ...

Warning: opendir(..\..\myplugins\roundcube_patches): failed to open dir: No such file or directory in /srv/www/htdocs/webmail/myplugins/installer/index.php on line 67



Gruss, Oldschool.

rosali

#6
Das Script index.php liegt in /srv/www/htdocs/webmail/myplugins/installer/. Dann müsste doch ../../roundcube_bug_fixes auf /srv/www/htdocs/webmail/myplugins/roundcube_bug_fixes zeigen, oder?

Vielleicht liegt es an den Back-Slashes. Ich habe die Pfade nun mit normalen Slashes und absoluten Pfaden definiert (unten).

Ansonsten ändere bitte die Pfadangaben so, dass es bei Dir läuft und gib dann Bescheid.


<?php
/* RoundCube Plugin API Installer (c) rosali
   
   ABSOLUTELY NO WARRANTY !!! USE AT YOUR OWN RISK !!!
   
   Make a copy of existing RoundCube Installation
   before running this script !!!
   
   If you do not need this script anymore, remove it !!!
   
*/ 

// extend execution time for slow servers
ini_set('max_execution_time''300');

// include config file
@include (&quot;config.php&quot;);

// functions

function absolute_path($extend=&quot;, $backward=0){

  
$path $_SERVER[&quot;DOCUMENT_ROOT] . $_SERVER[&quot;PHP_SELF&quot;];
  
  if(
$backward == 0){ 
    return 
$path .'/'$extend
  }
  else{ 
    
$split explode(&quot;/&quot;, $path); 
    
$new_path = &quot;&quot;; 
    for(
$i=0;$i<count($split)-$backward;$i++){ 
      
$new_path .= $split[$i].'/'
    } 
    return 
$new_path.$extend
  } 



function 
pre_check($pluginfolder,$rootfolder){

  global 
$api_installer;
  
  if(!isset(
$api_installer['password']) || $api_installer['password'] == &quot;&quot;){
    echo &
quot;Please open './myplugins/installer/config.php' and define a secure password to access this script !!! \n&quot;;
    echo &
quot;<hr />\n\n&quot;;
    return 
false;
  }

  if(!
file_exists($rootfolder . &quot;config/main.inc.php&quot;)){
    echo &
quot;ERRORCan't detect '&quot; . $rootfolder . &quot;config/main.inc.php'\n&quot;;
    return false;
  }
  
  if(is_dir($pluginfolder . &quot;roundcube_bug_fixes&quot;)){

    echo &quot;Pre-Check Bug Fixes ... \n&quot;;
    echo &quot;<hr />\n\n&quot;;
    $ret = dircopy ($pluginfolder . &quot;roundcube_bug_fixes&quot;,$rootfolder, false, true);
    if($ret===0){
      if(is_dir($pluginfolder . &quot;roundcube_patches&quot;)){

        echo &quot;Pre-Check Patches ... \n&quot;;
        echo &quot;<hr />\n\n&quot;;
        $ret = dircopy ($pluginfolder . &quot;roundcube_patches&quot;,$rootfolder, false, true);
    
        return $ret;
  
      }
      else{
        echo &quot;ERROR: Can'
t detect '&quot; . $pluginfolder . &quot;roundcube_patches'\n&quot;;
        return 
false;
      }
    }
  }
  else{
    echo &
quot;ERRORCan't detect '&quot; . $pluginfolder . &quot;roundcube_bug_fixes'\n&quot;;
    return false;
  }
}

function dircopy($srcdir, $dstdir, $verbose=false,$precheck=false) {

  $num = 0;
  if(!is_dir($dstdir)) mkdir($dstdir);
  if($curdir = opendir($srcdir)) {
    while($file = readdir($curdir)) {
      if($file != '
.' && $file != '..') {
        $srcfile = str_replace(&quot;//&quot;,&quot;/&quot;,$srcdir . '
/' . $file);
        $dstfile = str_replace(&quot;//&quot;,&quot;/&quot;,$dstdir . '
/' . $file);
        if(is_file($srcfile)) {
          if(is_file($dstfile)) $ow = filemtime($srcfile) - filemtime($dstfile); else $ow = 1;
          if($ow >= 0 || isset($_GET['
_noprotection'])) {
            if($verbose) echo &quot;Copying '
$srcfile'\n\tto \n\t'$dstfile'...\n&quot;;
            if($precheck==false){
              $result = copy($srcfile, $dstfile);
              if($result){
                touch($srcfile, filemtime($dstfile));
                touch($dstfile, filemtime($srcfile));
                $num++;
                if($verbose) echo &quot;OK\n\n&quot;;
              }
              else{
                echo &quot;Error:\tFile '
$srcfile' could not be copied!\n\n&quot;;
              }
            }
          }
          else{
            echo sprintf(&quot;Error:\tFile '
$dstfile' is newer (%f days) than \n\t'$srcfile'\n\t-> overwrite protection!\n\n&quot;,$ow/60/60/12*-1);
            echo &quot;<hr />\n&quot;;
            $_SESSION['
overwrite'] = TRUE;
            return false;
          }                   
        }
        else if(is_dir($srcfile)) {
          $num += dircopy($srcfile, $dstfile, $verbose,$precheck);
        }
      }
    }
    closedir($curdir);
  }
  return $num;
}

// Main

session_start();

echo &quot;<pre>&quot;;
echo &quot;Rouncube Plugin API Installer &copy roland-liebl.de\n&quot;;
echo &quot;<hr />\n\n&quot;;
echo &quot;
   ABSOLUTELY NO WARRANTY !!! USE AT YOUR OWN RISK !!!
   
   Make a copy of existing RoundCube Installation
   before running this script !!!\n\n&quot;;
echo &quot;<hr />\n\n&quot;;

$pluginfolder = absolute_path(&quot;&quot;,2);
$rootfolder   = absolute_path(&quot;&quot;,3);

echo &quot;Source Folder:      &quot; . $pluginfolder . &quot;\n&quot;;
echo &quot;Destination Folder: &quot; . $rootfolder   . &quot;\n&quot;;
echo &quot;<hr />\n&quot;;

if(!isset($_GET['
_noprotection'])){
  $ret = pre_check($pluginfolder,$rootfolder);
}
else{
  $ret = 0;
}

if($ret === 0){

  if(!isset($_POST['
password']) || trim($_POST['password']) != $api_installer['password']){
    if(isset($_SESSION['
overwrite']) && !isset($_GET['_noprotection'])){
      echo &quot;Either you have modified files which have to be patched yourself or you run a RoundCube SVN release highter than revision 1589.\n&quot;;
      echo &quot;Please try again on a clean SVN install (revision 1589) or ask for an update '
mailto:roundcube@liebl.ath.cx'.\n\n&quot;;
      echo &quot;It is not recommended to proceed by installation without overwrite protection ! Click <a href=\&quot;index.php?_noprotection\&quot;>here</a> to install without overwrite protection.\n&quot;;
    }
    else{
      if(isset($_SESSION['
overwrite'])){
        echo &quot;CAUTION: If you proceed, you are going to replace newer by older Files !!!\n\n&quot;;
      }
      echo &quot;<form method=\&quot;post\&quot; action=\&quot;index.php?&quot; . $_SERVER['
QUERY_STRING'] . &quot;\&quot;>Enter Password <input name=\&quot;password\&quot;>&nbsp;<input type=\&quot;submit\&quot; value=\&quot;Start Installation\&quot;></form>\n&quot;;
      unset($_SESSION['
overwrite']);
    }
    echo &quot;<hr />\n&quot;;
    exit;
  }

  if(is_dir($pluginfolder . &quot;roundcube_bug_fixes&quot;)){

    echo &quot;Applying Bug Fixes ... \n&quot;;
    echo &quot;<hr>\n\n&quot;;
    $ret = dircopy ($pluginfolder . &quot;roundcube_bug_fixes&quot;,$rootfolder, false);
    echo &quot;--> &quot; . $ret . &quot; files successfully copied\n&quot;;
    echo &quot;<hr />\n\n&quot;;  
  }

  if(is_dir($pluginfolder . &quot;roundcube_patches&quot;)){

    echo &quot;Applying Patches ... \n&quot;;
    echo &quot;<hr />\n\n&quot;;
    $ret = dircopy ($pluginfolder . &quot;roundcube_patches&quot;,$rootfolder, false);
    echo &quot;--> &quot; . $ret . &quot; files successfully copied\n&quot;;
    echo &quot;<hr />\n\n&quot;;  
  }

  $content = @file_get_contents($rootfolder . &quot;config/main.inc.php&quot;);
  if($content){
    if(!stripos($content,&quot;./myplugins/config/plugins.inc&quot;)){
      $content = str_replace(&quot;?>
&quot;,&quot;\r\n//Find me: API: Bind API\r\n&quot; . '@include &quot;./myplugins/config/plugins.inc&quot;;' . &quot;\r\n&quot; . '?>',$content);
      if(@file_put_contents($rootfolder . &quot;config/main.inc.php&quot;,$content)){
        echo &quot;Plugin API successfully binded\n&quot;;
      }
      else{
        echo &quot;ERROR: Failed to bind Plugin API\n&quot;;
        echo &quot;<hr />\n\n&quot;;  
        exit;
      }
    }
    else{
      echo &quot;WARNING: './config/main.inc.php' already includes API !\n&quot;;
      echo &quot;         Do not care if you ran this installer script before !\n&quot;;
    }
  }
  else{
    echo &quot;ERROR: Failed to bind Plugin API\n&quot;;
    echo &quot;<hr />\n\n&quot;;  
    exit;
  }
}
else{
  echo &quot;Pre-Check failed !!! Abort !!!\n&quot;;
  echo &quot;<hr />\n\n&quot;;  
  exit;
}

echo &quot;<hr />\n\n&quot;;
echo &quot;#1- Please configure now './myplugins/config/config_plugins.php.dist' and rename the file to 'config_plugins.php'.\n\n&quot;;
echo &quot;#2- Please configure then each './myplugins/collection/p_l_u_g_i_n__n_a_m_e/config.inc.dist' and rename the file to 'config.inc'.\n\n&quot;;
echo &quot;<hr />\n\n&quot;;
echo &quot;DONE !!! </pre>&quot;;
echo &quot;<hr />\n\n&quot;;

unset($_SESSION['overwrite']);

?>
Regards,
Rosali
__________________
MyRoundcube Project (commercial)

rosali

Ansonsten manuelle Installation:

#1-Kopiere Inhalt von ./myplugins/roundcube_bug_fixes in den Root Ordner von RoundCube.
#2-Dasselbe mit ./myplugins/roundcube_patches (in dieser Reihenfolge).
#3-Füge am Ende von ./config/main.inc.php die folgenden Zeilen hinzu:


//Find me: API: Bind API
@include &quot;./myplugins/config/plugins.inc&quot;;
Regards,
Rosali
__________________
MyRoundcube Project (commercial)

oldschool

#8
Hi!

Problier ich mal aus...

PM werden nicht beantwortet?
:-)


Gruss.


So, mit dem neuen Skript kommt folgendes:


--- schnipp ---


Rouncube Plugin API Installer © roland-liebl.de


   ABSOLUTELY NO WARRANTY !!! USE AT YOUR OWN RISK !!!
   
   Make a copy of existing RoundCube Installation
   before running this script !!!



Source Folder:      /srv/www/htdocs//webmail/myplugins/
Destination Folder: /srv/www/htdocs//webmail/

Pre-Check Bug Fixes ...


Error:   File '/srv/www/htdocs/webmail/program/include/rcube_shared.inc' is newer (0.166690 days) than
   '/srv/www/htdocs/webmail/myplugins/roundcube_bug_fixes/program/include/rcube_shared.inc'
   -> overwrite protection!


Error:   File '/srv/www/htdocs/webmail/program/js/tiny_mce/themes/advanced/image.htm' is newer (0.166667 days) than
   '/srv/www/htdocs/webmail/myplugins/roundcube_bug_fixes/program/js/tiny_mce/themes/advanced/image.htm'
   -> overwrite protection!


Error:   File '/srv/www/htdocs/webmail/program/js/tiny_mce/themes/simple/langs/en.js' is newer (0.166667 days) than
   '/srv/www/htdocs/webmail/myplugins/roundcube_bug_fixes/program/js/tiny_mce/themes/simple/langs/en.js'
   -> overwrite protection!


Error:   File '/srv/www/htdocs/webmail/program/js/tiny_mce/themes/simple/editor_template_src.js' is newer (0.166667 days) than
   '/srv/www/htdocs/webmail/myplugins/roundcube_bug_fixes/program/js/tiny_mce/themes/simple/editor_template_src.js'
   -> overwrite protection!


Error:   File '/srv/www/htdocs/webmail/program/js/tiny_mce/plugins/emotions/editor_plugin_src.js' is newer (0.166667 days) than
   '/srv/www/htdocs/webmail/myplugins/roundcube_bug_fixes/program/js/tiny_mce/plugins/emotions/editor_plugin_src.js'
   -> overwrite protection!


Error:   File '/srv/www/htdocs/webmail/program/js/tiny_mce/plugins/xhtmlxtras/css/attributes.css' is newer (0.166667 days) than
   '/srv/www/htdocs/webmail/myplugins/roundcube_bug_fixes/program/js/tiny_mce/plugins/xhtmlxtras/css/attributes.css'
   -> overwrite protection!


Error:   File '/srv/www/htdocs/webmail/program/js/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js' is newer (0.166667 days) than
   '/srv/www/htdocs/webmail/myplugins/roundcube_bug_fixes/program/js/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js'
   -> overwrite protection!



Warning: mkdir(): Permission denied in /srv/www/htdocs/webmail/myplugins/installer/index.php on line 84

Warning: mkdir(): No such file or directory in /srv/www/htdocs/webmail/myplugins/installer/index.php on line 84

Warning: mkdir(): Permission denied in /srv/www/htdocs/webmail/myplugins/installer/index.php on line 84

Warning: mkdir(): No such file or directory in /srv/www/htdocs/webmail/myplugins/installer/index.php on line 84
Error:   File '/srv/www/htdocs/webmail/program/js/tiny_mce/plugins/visualchars/editor_plugin_src.js' is newer (0.166667 days) than
   '/srv/www/htdocs/webmail/myplugins/roundcube_bug_fixes/program/js/tiny_mce/plugins/visualchars/editor_plugin_src.js'
   -> overwrite protection!



Warning: mkdir(): Permission denied in /srv/www/htdocs/webmail/myplugins/installer/index.php on line 84

Warning: mkdir(): No such file or directory in /srv/www/htdocs/webmail/myplugins/installer/index.php on line 84
Error:   File '/srv/www/htdocs/webmail/program/js/tiny_mce/plugins/directionality/editor_plugin_src.js' is newer (0.166667 days) than
   '/srv/www/htdocs/webmail/myplugins/roundcube_bug_fixes/program/js/tiny_mce/plugins/directionality/editor_plugin_src.js'
   -> overwrite protection!


Error:   File '/srv/www/htdocs/webmail/program/js/tiny_mce/plugins/compat2x/editor_plugin_src.js' is newer (0.166667 days) than
   '/srv/www/htdocs/webmail/myplugins/roundcube_bug_fixes/program/js/tiny_mce/plugins/compat2x/editor_plugin_src.js'
   -> overwrite protection!



Warning: mkdir(): Permission denied in /srv/www/htdocs/webmail/myplugins/installer/index.php on line 84

Warning: mkdir(): No such file or directory in /srv/www/htdocs/webmail/myplugins/installer/index.php on line 84
Error:   File '/srv/www/htdocs/webmail/program/js/tiny_mce/plugins/paste/css/pasteword.css' is newer (0.166667 days) than
   '/srv/www/htdocs/webmail/myplugins/roundcube_bug_fixes/program/js/tiny_mce/plugins/paste/css/pasteword.css'
   -> overwrite protection!


Error:   File '/srv/www/htdocs/webmail/program/js/tiny_mce/plugins/paste/editor_plugin_src.js' is newer (0.166667 days) than
   '/srv/www/htdocs/webmail/myplugins/roundcube_bug_fixes/program/js/tiny_mce/plugins/paste/editor_plugin_src.js'
   -> overwrite protection!


Error:   File '/srv/www/htdocs/webmail/program/js/tiny_mce/plugins/media/css/media.css' is newer (0.166667 days) than
   '/srv/www/htdocs/webmail/myplugins/roundcube_bug_fixes/program/js/tiny_mce/plugins/media/css/media.css'
   -> overwrite protection!


Error:   File '/srv/www/htdocs/webmail/program/js/tiny_mce/plugins/media/editor_plugin_src.js' is newer (0.166667 days) than
   '/srv/www/htdocs/webmail/myplugins/roundcube_bug_fixes/program/js/tiny_mce/plugins/media/editor_plugin_src.js'
   -> overwrite protection!


Error:   File '/srv/www/htdocs/webmail/program/js/tiny_mce/plugins/searchreplace/css/searchreplace.css' is newer (0.166667 days) than
   '/srv/www/htdocs/webmail/myplugins/roundcube_bug_fixes/program/js/tiny_mce/plugins/searchreplace/css/searchreplace.css'
   -> overwrite protection!


Error:   File '/srv/www/htdocs/webmail/program/js/tiny_mce/plugins/searchreplace/editor_plugin_src.js' is newer (0.166667 days) than
   '/srv/www/htdocs/webmail/myplugins/roundcube_bug_fixes/program/js/tiny_mce/plugins/searchreplace/editor_plugin_src.js'
   -> overwrite protection!


Error:   File '/srv/www/htdocs/webmail/program/js/tiny_mce/plugins/nonbreaking/editor_plugin_src.js' is newer (0.166667 days) than
   '/srv/www/htdocs/webmail/myplugins/roundcube_bug_fixes/program/js/tiny_mce/plugins/nonbreaking/editor_plugin_src.js'
   -> overwrite protection!


Error:   File '/srv/www/htdocs/webmail/program/js/tiny_mce/plugins/table/css/row.css' is newer (0.166667 days) than
   '/srv/www/htdocs/webmail/myplugins/roundcube_bug_fixes/program/js/tiny_mce/plugins/table/css/row.css'
   -> overwrite protection!


Error:   File '/srv/www/htdocs/webmail/program/js/tiny_mce/plugins/table/row.htm' is newer (0.166667 days) than
   '/srv/www/htdocs/webmail/myplugins/roundcube_bug_fixes/program/js/tiny_mce/plugins/table/row.htm'
   -> overwrite protection!


Error:   File '/srv/www/htdocs/webmail/program/js/tiny_mce/plugins/contextmenu/editor_plugin_src.js' is newer (0.166667 days) than
   '/srv/www/htdocs/webmail/myplugins/roundcube_bug_fixes/program/js/tiny_mce/plugins/contextmenu/editor_plugin_src.js'
   -> overwrite protection!



Warning: mkdir(): Permission denied in /srv/www/htdocs/webmail/myplugins/installer/index.php on line 84

Warning: mkdir(): No such file or directory in /srv/www/htdocs/webmail/myplugins/installer/index.php on line 84
Error:   File '/srv/www/htdocs/webmail/program/js/tiny_mce/plugins/spellchecker/css/content.css' is newer (0.166667 days) than
   '/srv/www/htdocs/webmail/myplugins/roundcube_bug_fixes/program/js/tiny_mce/plugins/spellchecker/css/content.css'
   -> overwrite protection!


Error:   File '/srv/www/htdocs/webmail/program/js/tiny_mce/plugins/spellchecker/editor_plugin_src.js' is newer (0.166667 days) than
   '/srv/www/htdocs/webmail/myplugins/roundcube_bug_fixes/program/js/tiny_mce/plugins/spellchecker/editor_plugin_src.js'
   -> overwrite protection!



Warning: mkdir(): Permission denied in /srv/www/htdocs/webmail/myplugins/installer/index.php on line 84

Warning: mkdir(): No such file or directory in /srv/www/htdocs/webmail/myplugins/installer/index.php on line 84
Error:   File '/srv/www/htdocs/webmail/program/js/tiny_mce/tiny_mce_src.js' is newer (0.166667 days) than
   '/srv/www/htdocs/webmail/myplugins/roundcube_bug_fixes/program/js/tiny_mce/tiny_mce_src.js'
   -> overwrite protection!


Pre-Check Patches ...


Error:   File '/srv/www/htdocs/webmail/robots.txt' is newer (0.250023 days) than
   '/srv/www/htdocs/webmail/myplugins/roundcube_patches/robots.txt'
   -> overwrite protection!


Pre-Check failed !!! Abort !!!

--- schnapp ---


Ich teste dann noch einwenig...

oldschool

#9
Ich bin wie folgt vorgegangen:

Eine lauffähige RC 0.2a ist vorhanden.

Parallel dazu eine weitere mit den lauffähigen db.inc.php und main.inc.php installiert.

Installer macht Zicken, also alles per Hand und "vorhandene überschreiben" drüberkopiert.
Chmod und chown korrigiert.

Anmelden ist ganz merkwürdig:
Login-Screen erscheint. Benutzerdaten eingegeben. Bekomme leeren Schirm.
Html-Source ist auch leer (wortwörtlich!).
Seite nochmals über den Link aufrufen.
Mail-Listing erscheint, aber keine offentsichtlichen Neuerungen.
Unter Kontakte bekomme ich ein:
"SERVICE CURRENTLY NOT AVAILABLE! Error No. [0x01F4]"

Einen Tip auf Lager...?


Grüsse aus´m Norden.


Ironie des Schicksals:
Ich habe meinen W2K3 mit Hmail vor ein paar Wochen großflächig abgerissen...!!!

rosali

#10
Installer script:

QuoteWarning: mkdir(): Permission denied in /srv/www/htdocs/webmail/myplugins/installer/index.php on line 84

Apache muss Schreibberechtigung für den Ordner /srv/www/htdocs/webmail/ haben !!!

Vielleicht liegt es auch daran:

http://www.php.net/mkdir
QuoteI've discovered that since my (shared) hosting provider upgraded to PHP 5.1.6 , a script containing this mkdir doesn't work:

mkdir('/home/benge/photos/gallery1/extra_large/', 0777);
?>

but this does work:
mkdir('/home/benge/photos/gallery1/extra_large', 0777);
?>

the difference being, the trailing slash "/" after "extra_large.

There were three ways to fix the problem:
1. remove the trailing slash from the script code
2. downgrade to < PHP 5.1.6
3. turn safe mode off

I went with option 1.

Ich habe das Script erneut angepasst:

<?php
/* RoundCube Plugin API Installer (c) www.roland-liebl.de
   
   ABSOLUTELY NO WARRANTY !!! USE AT YOUR OWN RISK !!!
   
   Make a copy of existing RoundCube Installation
   before running this script !!!
   
   If you do not need this script anymore, remove it !!!
   
*/ 

// extend execution time for slow servers
ini_set('max_execution_time''300');

// include config file
@include (&quot;config.php&quot;);

// functions

function absolute_path($extend=&quot;, $backward=0){

  
$path $_SERVER[&quot;DOCUMENT_ROOT] . $_SERVER[&quot;PHP_SELF&quot;];
  
  if(
$backward == 0){ 
    return 
$path .'/'$extend
  }
  else{ 
    
$split explode(&quot;/&quot;, $path); 
    
$new_path = &quot;&quot;; 
    for(
$i=0;$i<count($split)-$backward;$i++){ 
      
$new_path .= $split[$i].'/'
    } 
    return 
$new_path.$extend
  } 



function 
pre_check($pluginfolder,$rootfolder){

  global 
$api_installer;
  
  if(!isset(
$api_installer['password']) || $api_installer['password'] == &quot;&quot;){
    echo &
quot;Please open './myplugins/installer/config.php' and define a secure password to access this script !!! \n&quot;;
    echo &
quot;<hr />\n\n&quot;;
    return 
false;
  }

  if(!
file_exists($rootfolder . &quot;config/main.inc.php&quot;)){
    echo &
quot;ERRORCan't detect '&quot; . $rootfolder . &quot;config/main.inc.php'\n&quot;;
    return false;
  }
  
  if(is_dir($pluginfolder . &quot;roundcube_bug_fixes&quot;)){

    echo &quot;Pre-Check Bug Fixes ... \n&quot;;
    echo &quot;<hr />\n\n&quot;;
    $ret = dircopy ($pluginfolder . &quot;roundcube_bug_fixes&quot;,$rootfolder, false, true);
    if($ret===0){
      if(is_dir($pluginfolder . &quot;roundcube_patches&quot;)){

        echo &quot;Pre-Check Patches ... \n&quot;;
        echo &quot;<hr />\n\n&quot;;
        $ret = dircopy ($pluginfolder . &quot;roundcube_patches&quot;,$rootfolder, false, true);
    
        return $ret;
  
      }
      else{
        echo &quot;ERROR: Can'
t detect '&quot; . $pluginfolder . &quot;roundcube_patches'\n&quot;;
        return 
false;
      }
    }
  }
  else{
    echo &
quot;ERRORCan't detect '&quot; . $pluginfolder . &quot;roundcube_bug_fixes'\n&quot;;
    return false;
  }
}

function dircopy($srcdir, $dstdir, $verbose=false,$precheck=false) {

  $num = 0;
  
  if(substr($dstdir,strlen($dstdir)-1) == &quot;/&quot;){
    $dstdir = substr($dstdir,0,strlen($dstdir)-1);
  }
  if(!is_dir($dstdir)) mkdir($dstdir,0777);
  if($curdir = opendir($srcdir)) {
    while($file = readdir($curdir)) {
      if($file != '
.' && $file != '..') {
        $srcfile = str_replace(&quot;//&quot;,&quot;/&quot;,$srcdir . '
/' . $file);
        $dstfile = str_replace(&quot;//&quot;,&quot;/&quot;,$dstdir . '
/' . $file);
        if(is_file($srcfile)) {
          if(is_file($dstfile)) $ow = filemtime($srcfile) - filemtime($dstfile); else $ow = 1;
          if($ow >= 0 || isset($_GET['
_noprotection'])) {
            if($verbose) echo &quot;Copying '
$srcfile'\n\tto \n\t'$dstfile'...\n&quot;;
            if($precheck==false){
              $result = copy($srcfile, $dstfile);
              if($result){
                touch($srcfile, filemtime($dstfile));
                touch($dstfile, filemtime($srcfile));
                $num++;
                if($verbose) echo &quot;OK\n\n&quot;;
              }
              else{
                echo &quot;Error:\tFile '
$srcfile' could not be copied!\n\n&quot;;
              }
            }
          }
          else{
            echo sprintf(&quot;Error:\tFile '
$dstfile' is newer (%f days) than \n\t'$srcfile'\n\t-> overwrite protection!\n\n&quot;,$ow/60/60/12*-1);
            echo &quot;<hr />\n&quot;;
            $_SESSION['
overwrite'] = TRUE;
            return false;
          }                   
        }
        else if(is_dir($srcfile)) {
          $num += dircopy($srcfile, $dstfile, $verbose,$precheck);
        }
      }
    }
    closedir($curdir);
  }
  return $num;
}

// Main

session_start();

echo &quot;<pre>&quot;;
echo &quot;Rouncube Plugin API Installer &copy roland-liebl.de\n&quot;;
echo &quot;<hr />\n\n&quot;;
echo &quot;
   ABSOLUTELY NO WARRANTY !!! USE AT YOUR OWN RISK !!!
   
   Make a copy of existing RoundCube Installation
   before running this script !!!\n\n&quot;;
echo &quot;<hr />\n\n&quot;;

$pluginfolder = absolute_path(&quot;&quot;,2);
$rootfolder   = absolute_path(&quot;&quot;,3);

echo &quot;Source Folder:      &quot; . $pluginfolder . &quot;\n&quot;;
echo &quot;Destination Folder: &quot; . $rootfolder   . &quot;\n&quot;;
echo &quot;<hr />\n&quot;;

if(!isset($_GET['
_noprotection'])){
  $ret = pre_check($pluginfolder,$rootfolder);
}
else{
  $ret = 0;
}

if($ret === 0){

  if(!isset($_POST['
password']) || trim($_POST['password']) != $api_installer['password']){
    if(isset($_SESSION['
overwrite']) && !isset($_GET['_noprotection'])){
      echo &quot;Either you have modified files which have to be patched yourself or you run a RoundCube SVN release highter than revision 1589.\n&quot;;
      echo &quot;Please try again on a clean SVN install (revision &quot; . $api_installer['
SVN'] . &quot;) or ask for an update 'mailto:roundcube@liebl.ath.cx'.\n\n&quot;;
      echo &quot;It is not recommended to proceed by installation without overwrite protection ! Click <a href=\&quot;index.php?_noprotection\&quot;>here</a> to install without overwrite protection.\n&quot;;
    }
    else{
      if(isset($_SESSION['
overwrite'])){
        echo &quot;CAUTION: If you proceed, you are going to replace newer by older Files !!!\n\n&quot;;
      }
      echo &quot;<form method=\&quot;post\&quot; action=\&quot;index.php?&quot; . $_SERVER['
QUERY_STRING'] . &quot;\&quot;>Enter Password <input name=\&quot;password\&quot;>&nbsp;<input type=\&quot;submit\&quot; value=\&quot;Start Installation\&quot;></form>\n&quot;;
      unset($_SESSION['
overwrite']);
    }
    echo &quot;<hr />\n&quot;;
    exit;
  }

  if(is_dir($pluginfolder . &quot;roundcube_bug_fixes&quot;)){

    echo &quot;Applying Bug Fixes ... \n&quot;;
    echo &quot;<hr>\n\n&quot;;
    $ret = dircopy ($pluginfolder . &quot;roundcube_bug_fixes&quot;,$rootfolder, false);
    echo &quot;--> &quot; . $ret . &quot; files successfully copied\n&quot;;
    echo &quot;<hr />\n\n&quot;;  
  }

  if(is_dir($pluginfolder . &quot;roundcube_patches&quot;)){

    echo &quot;Applying Patches ... \n&quot;;
    echo &quot;<hr />\n\n&quot;;
    $ret = dircopy ($pluginfolder . &quot;roundcube_patches&quot;,$rootfolder, false);
    echo &quot;--> &quot; . $ret . &quot; files successfully copied\n&quot;;
    echo &quot;<hr />\n\n&quot;;  
  }

  $content = @file_get_contents($rootfolder . &quot;config/main.inc.php&quot;);
  if($content){
    if(!stripos($content,&quot;./myplugins/config/plugins.inc&quot;)){
      $content = str_replace(&quot;?>
&quot;,&quot;\r\n//Find me: API: Bind API\r\n&quot; . '@include &quot;./myplugins/config/plugins.inc&quot;;' . &quot;\r\n&quot; . '?>',$content);
      if(@file_put_contents($rootfolder . &quot;config/main.inc.php&quot;,$content)){
        echo &quot;Plugin API successfully binded\n&quot;;
      }
      else{
        echo &quot;ERROR: Failed to bind Plugin API\n&quot;;
        echo &quot;<hr />\n\n&quot;;
        unset($_SESSION['overwrite']);
        exit;
      }
    }
    else{
      echo &quot;WARNING: './config/main.inc.php' already includes API !\n&quot;;
      echo &quot;         Do not care if you ran this installer script before !\n&quot;;
    }
  }
  else{
    echo &quot;ERROR: Failed to bind Plugin API\n&quot;;
    echo &quot;<hr />\n\n&quot;;
    unset($_SESSION['overwrite']);  
    exit;
  }
}
else{
  echo &quot;Pre-Check failed !!! Abort !!!\n&quot;;
  echo &quot;<hr />\n\n&quot;;
  unset($_SESSION['overwrite']);
  exit;
}

echo &quot;<hr />\n\n&quot;;
echo &quot;#1- Please configure now './myplugins/config/config_plugins.php.dist' and rename the file to 'config_plugins.php'.\n\n&quot;;
echo &quot;#2- Please configure then each './myplugins/collection/p_l_u_g_i_n__n_a_m_e/config.inc.dist' and rename the file to 'config.inc'.\n\n&quot;;
echo &quot;<hr />\n\n&quot;;
echo &quot;DONE !!! </pre>&quot;;
echo &quot;<hr />\n\n&quot;;

unset($_SESSION['overwrite']);

?>
Regards,
Rosali
__________________
MyRoundcube Project (commercial)