1
0

Spartacus upgrade for mirrors

This commit is contained in:
Garvin Hicking
2008-05-26 11:24:46 +00:00
parent 4fc67fd5f3
commit dc94ab1567
5 changed files with 69 additions and 14 deletions

View File

@ -3,6 +3,8 @@
Version 1.4 ()
------------------------------------------------------------------------
* Update to Spartacus to support custom mirrors (garvinhicking)
* Added possibility to access more SQL query parts of fetchEntries
through plugin API. New indexes of $eventData:
- 'single_group', 'single_having', 'single_orderby' for

View File

@ -27,3 +27,6 @@
@define('PLUGIN_EVENT_SPARTACUS_HEALTHLINK', '<P><a target="_blank" href="%s">Klicken Sie hier um die Spartacus-Verfügbarkeitsprüfung anzusehen</a> und dessen Erreichbarkeit zu überprüfen.</P>');
@define('PLUGIN_EVENT_SPARTACUS_HEALTHBLOCKED', '<P>SPARTACUS konnte keine Test-Verbindung zu Google herstellen (Fehler %d: %s).<br />Ihr Server blockiert vermutlich ausgehende Verbindungen. SPARTACUS kann so nicht ausgeführt werden, da so auf keine der SPARTACUS-Quellen zugegriffen werden kann. <b>Bitte kontaktieren Sie ihren Web-Provider und bitten ihn, ausgehende HTTP-Verbindungen zuzulassen.</b></P><P>Plugins können nach wie vor auch lokal installiert werden. Laden Sie dazu einfach ein Plugin von <a href="http://spartacus.s9y.org">der SPARTACUS Webseite</a> runter, entpacken es und laden es in ihr Serendipity "plugin"-Verzeichnis hoch.</P>');
@define('PLUGIN_EVENT_SPARTACUS_HEALTHDOWN', '<P>SPARTACUS konnte eine Teste-Verbindung zu Google herstellen, aber nicht zum Spartacus-Speicherort. Möglicherweise blockiert ihr Server ausgehende Verbindungen, oder die Spartacus-Quelle ist nicht erreichbar. Kontaktieren Sie bitte ihren Web-Provider um sicherzustellen, dass ausgehende HTTP-Verbindungen möglich sind. <b>Sie können SPARTACUS erst nutzen, wenn ihr Server auf die Spartacus-Speicherorte zugreifen kann.</b></P>');
@define('PLUGIN_EVENT_SPARTACUS_CUSTOMMIRROR', 'Eigene Mirror-Quelle');
@define('PLUGIN_EVENT_SPARTACUS_CUSTOMMIRROR_DESC', 'Diese Option ist nur für Experten gedacht. Falls keiner der voreingestellten Mirror-Server aufgrund von Downtime oder Problemen verfügbar ist, kann hier ein eigener Server-Name wie http://mirror.org/serendipity/ eingetragen werden. Dort müssten die XML-Dateien für Spartacus im Verzeichnis liegen, und Unterverzeichnisse wie additional_plugins und additional_themes existieren. Geben Sie nur Mirrors hier ein, denen Sie vertrauen, auf denen eine Kopie unseres CVS-Repositories gespeichert ist. Mehrere Mirrors können mit "|" getrennt eingegeben werden.');

View File

@ -28,3 +28,6 @@
@define('PLUGIN_EVENT_SPARTACUS_HEALTHLINK', '<P><a target="_blank" href="%s">Klicken Sie hier um die Spartacus-Verf<72>gbarkeitspr<70>fung anzusehen</a> und dessen Erreichbarkeit zu <20>berpr<70>fen.</P>');
@define('PLUGIN_EVENT_SPARTACUS_HEALTHBLOCKED', '<P>SPARTACUS konnte keine Test-Verbindung zu Google herstellen (Fehler %d: %s).<br />Ihr Server blockiert vermutlich ausgehende Verbindungen. SPARTACUS kann so nicht ausgef<65>hrt werden, da so auf keine der SPARTACUS-Quellen zugegriffen werden kann. <b>Bitte kontaktieren Sie ihren Web-Provider und bitten ihn, ausgehende HTTP-Verbindungen zuzulassen.</b></P><P>Plugins k<>nnen nach wie vor auch lokal installiert werden. Laden Sie dazu einfach ein Plugin von <a href="http://spartacus.s9y.org">der SPARTACUS Webseite</a> runter, entpacken es und laden es in ihr Serendipity "plugin"-Verzeichnis hoch.</P>');
@define('PLUGIN_EVENT_SPARTACUS_HEALTHDOWN', '<P>SPARTACUS konnte eine Teste-Verbindung zu Google herstellen, aber nicht zum Spartacus-Speicherort. M<>glicherweise blockiert ihr Server ausgehende Verbindungen, oder die Spartacus-Quelle ist nicht erreichbar. Kontaktieren Sie bitte ihren Web-Provider um sicherzustellen, dass ausgehende HTTP-Verbindungen m<>glich sind. <b>Sie k<>nnen SPARTACUS erst nutzen, wenn ihr Server auf die Spartacus-Speicherorte zugreifen kann.</b></P>');
@define('PLUGIN_EVENT_SPARTACUS_CUSTOMMIRROR', 'Eigene Mirror-Quelle');
@define('PLUGIN_EVENT_SPARTACUS_CUSTOMMIRROR_DESC', 'Diese Option ist nur f<>r Experten gedacht. Falls keiner der voreingestellten Mirror-Server aufgrund von Downtime oder Problemen verf<72>gbar ist, kann hier ein eigener Server-Name wie http://mirror.org/serendipity/ eingetragen werden. Dort m<>ssten die XML-Dateien f<>r Spartacus im Verzeichnis liegen, und Unterverzeichnisse wie additional_plugins und additional_themes existieren. Geben Sie nur Mirrors hier ein, denen Sie vertrauen, auf denen eine Kopie unseres CVS-Repositories gespeichert ist. Mehrere Mirrors k<>nnen mit "|" getrennt eingegeben werden.');

View File

@ -58,3 +58,6 @@
@define('PLUGIN_EVENT_SPARTACUS_FTP_PASS', 'FTP password');
@define('PLUGIN_EVENT_SPARTACUS_FTP_BASEDIR', 'FTP serendipity directory');
@define('PLUGIN_EVENT_SPARTACUS_FTP_BASEDIR_DESC', 'When you connect to the FTP,you do not necessarilly enter into the serendipity directory. So here it is necessary to write the path from the FTP login place to the serendipity directory.');
@define('PLUGIN_EVENT_SPARTACUS_CUSTOMMIRROR', 'Custom location for mirror');
@define('PLUGIN_EVENT_SPARTACUS_CUSTOMMIRROR_DESC', 'This option is for advanced users only. When the preconfigurable mirrors are down or malfunctioning, you can enter your own server name (like http://mirror.org/serendipity/). The server needs to maintain the XML files at URL level, and have subdirectories like additional_plugins and additional_themes. Only enter mirrors that you trust to be safe and which are a full duplicate of the files hosted in the CVS repository of Serendipity. You can enter multiple mirrors, separated by "|".');

View File

@ -39,7 +39,7 @@ class serendipity_event_spartacus extends serendipity_event
$propbag->add('description', PLUGIN_EVENT_SPARTACUS_DESC);
$propbag->add('stackable', false);
$propbag->add('author', 'Garvin Hicking');
$propbag->add('version', '2.15');
$propbag->add('version', '2.20');
$propbag->add('requirements', array(
'serendipity' => '0.9',
'smarty' => '2.6.7',
@ -60,7 +60,7 @@ class serendipity_event_spartacus extends serendipity_event
'backend_directory_create' => true
));
$propbag->add('groups', array('BACKEND_FEATURES'));
$propbag->add('configuration', array('enable_plugins', 'enable_themes', 'enable_remote', 'remote_url', 'mirror_xml', 'mirror_files', 'chown', 'chmod_files', 'chmod_dir', 'use_ftp', 'ftp_server', 'ftp_username', 'ftp_password', 'ftp_basedir'));
$propbag->add('configuration', array('enable_plugins', 'enable_themes', 'enable_remote', 'remote_url', 'mirror_xml', 'mirror_files', 'custommirror', 'chown', 'chmod_files', 'chmod_dir', 'use_ftp', 'ftp_server', 'ftp_username', 'ftp_password', 'ftp_basedir'));
}
@ -92,35 +92,40 @@ class serendipity_event_spartacus extends serendipity_event
static $mirror = array(
'xml' => array(
'Netmirror.org',
's9y.org'
's9y.org',
'openmirror.org'
),
'files' => array(
'Netmirror.org',
'SourceForge.net',
's9y.org',
'BerliOS.de'
'BerliOS.de (inactive)',
'openmirror.org'
)
);
static $http = array(
'xml' => array(
'http://netmirror.org/mirror/serendipity/',
'http://s9y.org/mirror/'
'http://s9y.org/mirror/',
'http://openmirror.org/pub/s9y/',
),
'files' => array(
'http://netmirror.org/mirror/serendipity/',
'http://php-blog.cvs.sourceforge.net/*checkout*/php-blog/',
'http://s9y.org/mirror/',
'http://svn.berlios.de/viewcvs/serendipity/'
'http://svn.berlios.de/viewcvs/serendipity/',
'http://openmirror.org/pub/s9y/',
),
'files_health' => array(
'http://netmirror.org/' => 'http://netmirror.org/mirror/serendipity/last.txt',
'http://php-blog.cvs.sourceforge.net/' => 'http://php-blog.cvs.sourceforge.net/*checkout*/php-blog/serendipity/docs/LICENSE',
'http://s9y.org/' => 'http://s9y.org/',
'http://svn.berlios.de/' => 'http://svn.berlios.de/viewcvs/serendipity/'
'http://svn.berlios.de/' => 'http://svn.berlios.de/viewcvs/serendipity/',
'http://openmirror.org/' => 'http://openmirror.org/pub/s9y/last.txt',
)
);
@ -184,6 +189,13 @@ class serendipity_event_spartacus extends serendipity_event
$propbag->add('default', '');
break;
case 'custommirror':
$propbag->add('type', 'string');
$propbag->add('name', PLUGIN_EVENT_SPARTACUS_CUSTOMMIRROR);
$propbag->add('description', PLUGIN_EVENT_SPARTACUS_CUSTOMMIRROR_DESC);
$propbag->add('default', '');
break;
case 'mirror_xml':
$propbag->add('type', 'select');
$propbag->add('name', PLUGIN_EVENT_SPARTACUS_MIRROR_XML);
@ -381,7 +393,7 @@ class serendipity_event_spartacus extends serendipity_event
$this->outputMSG('success', sprintf(PLUGIN_EVENT_SPARTACUS_FETCHED_BYTES_CACHE, strlen($data), $target));
} else {
require_once S9Y_PEAR_PATH . 'HTTP/Request.php';
$options = array();
$options = array('allowRedirects' => true, 'maxRedirects' => 5);
serendipity_plugin_api::hook_event('backend_http_request', $options, 'spartacus');
serendipity_request_start();
@ -548,14 +560,34 @@ class serendipity_event_spartacus extends serendipity_event
}
$mirrors = $this->getMirrors('xml', true);
$mirror = $mirrors[$this->get_config('mirror_xml', 0)];
$custom = $this->get_config('custommirror');
if (strlen($custom) > 2) {
$servers = explode('|', $custom);
$cacheTimeout = 60*60*12; // XML file is cached for half a day
$valid = false;
foreach($servers AS $server) {
if ($valid) continue;
$url = $mirror . '/package_' . $url_type . $lang . '.xml';
$cacheTimeout = 60*60*12; // XML file is cached for half a day
$target = $serendipity['serendipityPath'] . PATH_SMARTY_COMPILE . '/package_' . $url_type . $lang . '.xml';
$url = $server . '/package_' . $url_type . $lang . '.xml';
$target = $serendipity['serendipityPath'] . PATH_SMARTY_COMPILE . '/package_' . $url_type . $lang . '.xml';
$xml = $this->fetchfile($url, $target, $cacheTimeout, true);
if (strlen($xml) > 0) {
$valid = true;
}
echo '<br /><br />';
}
$xml = $this->fetchfile($url, $target, $cacheTimeout, true);
echo '<br /><br />';
} else {
$mirror = $mirrors[$this->get_config('mirror_xml', 0)];
$url = $mirror . '/package_' . $url_type . $lang . '.xml';
$cacheTimeout = 60*60*12; // XML file is cached for half a day
$target = $serendipity['serendipityPath'] . PATH_SMARTY_COMPILE . '/package_' . $url_type . $lang . '.xml';
$xml = $this->fetchfile($url, $target, $cacheTimeout, true);
echo '<br /><br />';
}
$new_crc = md5($xml);
$last_crc = $this->get_config('last_crc_' . $url_type);
@ -768,6 +800,12 @@ class serendipity_event_spartacus extends serendipity_event
$mirrors = $this->getMirrors('files', true);
$mirror = $mirrors[$this->get_config('mirror_files', 0)];
$custom = $this->get_config('custommirror');
if (strlen($custom) > 2) {
$servers = explode('|', $custom);
$mirror = $servers[0];
}
$this->checkArray($tree);
foreach($tree[0]['children'] AS $idx => $subtree) {
@ -901,6 +939,12 @@ class serendipity_event_spartacus extends serendipity_event
$mirrors = $this->getMirrors('files', true);
$mirror = $mirrors[$this->get_config('mirror_files', 0)];
$custom = $this->get_config('custommirror');
if (strlen($custom) > 2) {
$servers = explode('|', $custom);
$mirror = $servers[0];
}
foreach($files AS $file) {
$url = $mirror . '/' . $sfloc . '/' . $file . '?rev=1.9999';
$target = $pdir . $file;