echo " serious harm! Only use it, if you are a developer and about"
echo " to bundle a new release version!"
echo ""
- echo "Hit [ENTER] to continue, or abort this script"
+ echo "Hit [ENTER] to continue, or abort this script (CTRL-C)"
read -n 1
+ gensums=0
+ which php > /dev/null
+ if [ $? -ne 0 ]
+ then
+ gensums=-1
+ echo "NOTICE: Checksums will not be generated because PHP is not available."
+ echo " Install PHP to generate checksums for file validation, or "
+ echo " run serendipity_generateFTPChecksums.php manually."
+ echo ""
+ echo "Hit [ENTER] to continue, or abort this script (CTRL-C)"
+ read -n 1
+ fi
echo "1. Operating on basedirectory ../../$2"
cd ../../
echo " [DONE]"
echo ""
- echo "6. Altering CVS to be useful for anonymous users..."
+ echo "6. Generating checksums..."
+ if [ $gensums -ne 0 ]
+ then
+ echo " [SKIP]"
+ else
+ if (echo "true" | php -B "define('IN_serendipity', true);" -F serendipity_generateFTPChecksums.php)
+ then
+ echo " [DONE]"
+ else
+ rm -rf checksums.inc.php
+ echo " [FAIL]"
+ fi
+ fi
+ echo ""
+ echo "7. Altering CVS to be useful for anonymous users..."
echo " - Removing CVS branch tag, so that a user can upgrade to latest CVS"
find "$2" -type f -name Tag -exec rm {} \;
echo " [DONE]"
echo " [DONE]"
echo ""
- echo "7. Creating .tgz file $1"
+ echo "8. Creating .tgz file $1"
tar --owner=$3 --group=$4 -czf "$1" "$2"
echo " [DONE]"
echo ""
- echo "8. All Done. Bybe-Bye."
+ echo "9. All Done. Bye-Bye."
else
echo "Basedirectory ../../$2 not found. Check parameters"
fi
--- /dev/null
+<?php
+# Copyright (c) 2008 Judebert (on behalf of the Serendipity development team)
+# All rights reserved. See LICENSE file for licensing details
+
+// Call this file from the base directory with
+// echo "true" | 'php -B "define('IN_serendipity', true);" -F bundled-libs/serendipity_generateFTPChecksums.php'
+
+if (IN_serendipity !== true) {
+ die ("Don't hack!\n");
+}
+
+$basedir = realpath(dirname(__FILE__) . '/../') . '/';
+require_once $basedir . 'include/functions_installer.inc.php';
+require_once $basedir . 'include/functions_images.inc.php';
+
+// Find all the files in the serendipity directory and calculate their md5 sums
+$sums = array();
+$excludes = array(
+ 'CHANGELOG',
+ 'checksums.inc.php',
+ );
+$files = serendipity_traversePath($basedir, '', false);
+foreach ($files as $fdata) {
+ // Don't take checksums of directories
+ if ($fdata['directory']) {
+ continue;
+ }
+ $fname = $fdata['name'];
+ $prel = $fdata['relpath'];
+ $path = $basedir . $prel;
+ if ($fname[0] == '.' || !is_readable($path)) {
+ // serendipity_traversePath already excludes CVS and svn directories
+ continue;
+ }
+
+ // Are we SURE we should checksum this file?
+ if (is_file($path) && !in_array($fname, $excludes)) {
+ $sum = serendipity_FTPChecksum($path);
+ // If you find the valid file with an MD5 sum of 0, let me know. ;)
+ if ($sum) {
+ $sums[$prel] = $sum;
+ }
+ continue;
+ }
+}
+if (!empty($sums)) {
+ $file = fopen($basedir . '/' . 'checksums.inc.php', 'w');
+ if (!$file) {
+ die('Unable to open output file!');
+ }
+ fwrite($file, '<?php' . "\n" . 'global $serendipity;' . "\n" . '$serendipity[\'checksums\'] = array (' . "\n");
+ foreach ($sums as $fname => $sum) {
+ fwrite($file, "'$fname' => '$sum',\n");
+ }
+ fwrite($file, ');');
+ fclose($file);
+}
+/* vim: set sts=4 ts=4 sw=4 expandtab : */
+?>
?>
<div align="center">
<table class="serendipity_admin_list_item serendipity_admin_list_item_even" width="90%" align="center">
+<?php if (is_readable($basedir . 'checksums.inc.php')) {
+ $badsums = serendipity_verifyFTPChecksums();
+?>
+ <tr>
+ <td colspan="2" style="font-weight: bold"><?php echo INTEGRITY ?></td>
+ </tr>
+ <tr>
+ <td width="200"><?php
+ if ( empty($badsums) ) {
+ echo serendipity_upgraderResultDiagnose(S9Y_U_SUCCESS, CHECKSUMS_PASS);
+ } else {
+ foreach ($badsums as $rfile => $sum) {
+ echo serendipity_upgraderResultDiagnose(S9Y_U_ERROR, sprintf(CHECKSUM_FAILED, $rfile));
+ }
+ }
+ ?></td>
+ </tr>
+<?php } // End if checksums
+?>
<tr>
<td colspan="2" style="font-weight: bold"><?php echo PERMISSIONS ?></td>
</tr>
$errs = array();
+ $badsums = serendipity_verifyFTPChecksums();
+ foreach ($badsums as $rfile => $sum) {
+ $errs[] = sprintf(CHECKSUM_FAILED, $rfile);
+ }
+
serendipity_initPermalinks();
// Check dirs
}
}
+/**
+ * Retrieve an FTP-compatible checksum for a file.
+ *
+ * @access public
+ * @param string filename is the path to the file to checksum
+ * @param string type forces a particular interpretation of newlines. Mime
+ * types and strings starting with 'text' will cause newlines to be stripped
+ * before the checksum is calculated (default: null, determine from finfo
+ * and extension)
+ * @return string An MD5 checksum of the file, with newlines removed if it's
+ * an ASCII type; or false if the file cannot be read
+ */
+function serendipity_FTPChecksum($filename, $type = null) {
+ /** Only read the finfo database once */
+ static $debug_exts = array();
+
+ // Must be able to read the file
+ if (!is_readable($filename)) {
+ return false;
+ }
+
+ // Figure out whether it's binary or text by extension
+ if ($type == null) {
+ $parts = pathinfo($filename);
+ $ext = '';
+ // Some PHP versions throw a warning if the index doesn't exist
+ if (isset($parts['extension'])) {
+ $ext = $parts['extension'];
+ }
+ // If they're case-insensitive equal, strcasecmp() returns 0, or
+ // 'false'. So I use && to find if any of them are 0, in the
+ // most likely fail-fast order.
+ if (strcasecmp($ext, 'php') &&
+ strcasecmp($ext, 'tpl') &&
+ strcasecmp($ext, 'sql') &&
+ strcasecmp($ext, 'js') &&
+ strcasecmp($ext, 'txt') &&
+ strcasecmp($ext, 'htc') &&
+ strcasecmp($ext, 'css') &&
+ strcasecmp($ext, 'dist') &&
+ strcasecmp($ext, 'lib') &&
+ strcasecmp($ext, 'sh') &&
+ strcasecmp($ext, 'html') &&
+ strcasecmp($ext, 'htm') &&
+ !empty($ext)) {
+ if (!in_array($ext, array_keys($debug_exts))) {
+ $debug_exts[$ext] = $filename;
+ }
+ $type = 'bin';
+ } else {
+ $type = 'text';
+ }
+ }
+
+ // Calculate the checksum
+ $md5 = false;
+ if (stristr($type, 'text')) {
+ // This is a text-type file. We need to remove linefeeds before
+ // calculating a checksum, to account for possible FTP conversions
+ // that are inconvenient, but still valid. But we don't want to
+ // allow newlines anywhere; just different *kinds* of newlines.
+ $newlines = array("#\r\n#", "#\r#", "#\n#");
+ $file = file_get_contents($filename);
+ $file = preg_replace($newlines, ' ', $file);
+ $md5 = md5($file);
+ } else {
+ // Just get its md5sum
+ $md5 = md5_file($filename);
+ }
+
+ return $md5;
+}
+
+/**
+ * Validate checksums for all required files.
+ *
+ * @return A list of all files that failed checksum, where keys are the
+ * relative path of the file, and values are the bad checksum
+ */
+function serendipity_verifyFTPChecksums() {
+ // Load the checksums
+ require_once S9Y_INCLUDE_PATH . 'checksums.inc.php';
+ // Verify that every file in the checksum list was uploaded correctly
+ $badsums = array();
+ $basedir = realpath(dirname(__FILE__) . '/../');
+ foreach ($serendipity['checksums'] as $prel => $sum) {
+ $path = $basedir . '/' . $prel;
+ // Don't take checksums of directories
+ if (is_dir($path)) {
+ // Weird that it's even here.
+ continue;
+ }
+
+ // Can't checksum unreadable or nonexistent files
+ if (!is_readable($path)) {
+ $badsums[$prel] = 'missing';
+ continue;
+ }
+
+ // Validate checksum
+ $calcsum = serendipity_FTPChecksum($path);
+ if ($sum != $calcsum) {
+ $badsums[$prel] = $calcsum;
+ continue;
+ }
+ }
+
+ return $badsums;
+}
+/* vim: set sts=4 ts=4 sw=4 expandtab : */
@define('SYNDICATION_PLUGIN_GENERIC_FEED', 'Емисия %s');
@define('PERMISSIONS', 'Права');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', 'Новите настройки са записани в %s');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s feed');
@define('PERMISSIONS', '权限');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', '新设定已经被保存到 %s');
@define('FOUND_FILE', 'Založit nový/změnit soubor: %s.');
@define('PERMISSIONS', 'Oprávnění');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('FOUND_FILE', 'Založit nový/změnit soubor: %s.');
@define('PERMISSIONS', 'Oprávnění');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('ENTRIES_PER_PAGE', 'artikler per side');
@define('PERMISSIONS', 'Rettigheder');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s Feed');
@define('PERMISSIONS', 'Rechte');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('XML_IMAGE_TO_DISPLAY', 'XML-Button');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s feed');
@define('PERMISSIONS', 'Permissions');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', 'The new settings have been saved at %s');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s feed');
@define('PERMISSIONS', 'Permisos');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s');
@define('PERMISSIONS', 'دسترسی ها');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', 'تنظیمات جدید در %s ثبت شد');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s');
@define('PERMISSIONS', 'Oikeudet');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', 'Uudet asetukset on tallettetu %s');
@define('PERMISSIONS', 'Permissions');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('USERCONF_ALLOWPUBLISH', 'Publication de billets ?');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s hírcsatorna');
@define('PERMISSIONS', 'Jogosultságok');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', 'Az új beállításokat elmentettük ekkor: %s');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s straumur');
@define('PERMISSIONS', 'Réttindi');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', 'Nýju stillingarnar voru vistaðar klukkan %s');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', 'feed %s');
@define('PERMISSIONS', 'Permessi');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', 'Le nuove impostazioni sono state salvate in %s');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s フィード');
@define('PERMISSIONS', '許可');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', '新しい設定は %s に保存されました。');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s 피드');
@define('PERMISSIONS', '권한 설정');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', '새로운 설정이 %s에 저장되었습니다');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s-toevoer');
@define('PERMISSIONS', 'Toegangsrechten');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', 'De instellingen zijn opgeslagen in %s');
/* TRANSLATE */
@define('PERMISSIONS', 'Rettigheter');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s feed');
@define('PERMISSIONS', 'Uprawnienia');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', 'Ustawienia zostały zapisane o %s');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s feed');
@define('PERMISSIONS', 'Permissões');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s feed');
@define('PERMISSIONS', 'Permissões');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', 'As novas preferências foram guardadas em %s');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s feed');
@define('PERMISSIONS', 'Permisiuni');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', 'Noile preferinţe au fost salvate în %s');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', 'лента %s');
@define('PERMISSIONS', 'Права доступа');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', 'Новые настройки были сохранены в %s');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s feed');
@define('PERMISSIONS', 'الصلاحيات');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', 'تم حفظ الاعدادات الجديدة في %s');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s matning');
@define('PERMISSIONS', 'Rättigheter');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', 'De nya inställningarna har sparats på %s');
@define('IN_REPLY_TO', 'இக்கருத்தைப் பற்றி');
@define('TOP_LEVEL', 'குறிப்பு பற்றி');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s feed');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s feed');
@define('PERMISSIONS', '權限');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', '新設定已經儲存於 %s');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s beslemesi');
@define('PERMISSIONS', 'izinler');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', 'Yeni ayarlarınız kaydedildi %s');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s feed');
@define('PERMISSIONS', '權限');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', '新設定已經儲存於 %s');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s feed');
@define('PERMISSIONS', '权限');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', '新设定已经被保存到 %s');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', 'Åìèñèÿ %s');
@define('PERMISSIONS', 'Ïðàâà');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', 'Íîâèòå íàñòðîéêè ñà çàïèñàíè â %s');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s feed');
@define('PERMISSIONS', '权限');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', '新设定已经被保存到 %s');
@define('FOUND_FILE', 'Zalo\9eit nový/zmìnit soubor: %s.');
@define('PERMISSIONS', 'Oprávnìní');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('FOUND_FILE', 'Zalo¾it nový/zmìnit soubor: %s.');
@define('PERMISSIONS', 'Oprávnìní');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('ENTRIES_PER_PAGE', 'artikler per side');
@define('PERMISSIONS', 'Rettigheder');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s Feed');
@define('PERMISSIONS', 'Rechte');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('XML_IMAGE_TO_DISPLAY', 'XML-Button');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s feed');
@define('PERMISSIONS', 'Permissions');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', 'The new settings have been saved at %s');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s feed');
@define('PERMISSIONS', 'Permisos');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s');
@define('PERMISSIONS', 'دسترسی ها');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', 'تنظیمات جدید در %s ثبت شد');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s');
@define('PERMISSIONS', 'Oikeudet');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', 'Uudet asetukset on tallettetu %s');
@define('PERMISSIONS', 'Permissions');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('USERCONF_ALLOWPUBLISH', 'Publication de billets ?');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s hírcsatorna');
@define('PERMISSIONS', 'Jogosultságok');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', 'Az új beállításokat elmentettük ekkor: %s');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s straumur');
@define('PERMISSIONS', 'Réttindi');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', 'Nýju stillingarnar voru vistaðar klukkan %s');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', 'feed %s');
@define('PERMISSIONS', 'Permessi');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', 'Le nuove impostazioni sono state salvate in %s');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s フィード');
@define('PERMISSIONS', '許可');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', '新しい設定は %s に保存されました。');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s 피드');
@define('PERMISSIONS', '권한 설정');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', '새로운 설정이 %s에 저장되었습니다');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s-toevoer');
@define('PERMISSIONS', 'Toegangsrechten');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', 'De instellingen zijn opgeslagen in %s');
/* TRANSLATE */
@define('PERMISSIONS', 'Rettigheter');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s feed');
@define('PERMISSIONS', 'Uprawnienia');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', 'Ustawienia zosta³y zapisane o %s');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s feed');
@define('PERMISSIONS', 'Permissões');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s feed');
@define('PERMISSIONS', 'Permissões');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', 'As novas preferências foram guardadas em %s');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s feed');
@define('PERMISSIONS', 'Permisiuni');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', 'Noile preferinţe au fost salvate în %s');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', 'лента %s');
@define('PERMISSIONS', 'Права доступа');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', 'Новые настройки были сохранены в %s');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s feed');
@define('PERMISSIONS', 'ÇáÕáÇÍíÇÊ');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', 'Êã ÍÝÙ ÇáÇÚÏÇÏÇÊ ÇáÌÏíÏÉ Ýí %s');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s matning');
@define('PERMISSIONS', 'Rättigheter');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', 'De nya inställningarna har sparats på %s');
@define('IN_REPLY_TO', 'இக்கருத்தைப் பற்றி');
@define('TOP_LEVEL', 'குறிப்பு பற்றி');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s feed');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s feed');
@define('PERMISSIONS', '權限');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', '新設定已經儲存於 %s');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s beslemesi');
@define('PERMISSIONS', 'izinler');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', 'Yeni ayarlarınız kaydedildi %s');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s feed');
@define('PERMISSIONS', 'Åv');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', '·s³]©w¤w¸gÀx¦s©ó %s');
@define('SYNDICATION_PLUGIN_GENERIC_FEED', '%s feed');
@define('PERMISSIONS', 'ȨÏÞ');
@define('INTEGRITY', 'Verify Installation Integrity');
+@define('CHECKSUMS_NOT_FOUND', 'Unable to compare checksums! (No checksums.inc.php in main directory)');
@define('CHECKSUMS_PASS', 'All required files verified.');
@define('CHECKSUM_FAILED', '%s corrupt or modified: failed verification');
@define('SETTINGS_SAVED_AT', 'ÐÂÉ趨ÒѾ±»±£´æµ½ %s');
echo LOGGEDOUT;
break;
+ case 'integrity':
+ echo '<div class="serendipity_admin_title">' . INTEGRITY . '</div>';
+ $badsums = array();
+ if (!is_readable(S9Y_INCLUDE_PATH . 'checksums.inc.php')) {
+ echo '<span class="serendipityAdminMsgNote">' . CHECKSUMS_NOT_FOUND . '</span>';
+ break;
+ }
+ $badsums = serendipity_verifyFTPChecksums();
+ if (count($badsums) == 0) {
+ echo '<span class="serendipityAdminMsgSuccess">' . CHECKSUMS_PASS . '</span>';
+ } else {
+ echo '<ul>';
+ foreach ($badsums as $rpath => $calcsum) {
+ echo '<li class="serendipityAdminMsgError">' . sprintf(CHECKSUM_FAILED, $rpath) . '</li>';
+ }
+ echo '</ul>';
+ }
+ break;
+
default:
include S9Y_INCLUDE_PATH . 'include/admin/overview.inc.php';
break;
<?php if (serendipity_checkPermission('adminImport')) { ?>
<li class="serendipitySideBarMenuLink serendipitySideBarMenuUserManagementLinks"><a href="serendipity_admin.php?serendipity[adminModule]=import"><?php echo IMPORT_ENTRIES; ?></a></li>
<li class="serendipitySideBarMenuLink serendipitySideBarMenuUserManagementLinks"><a href="serendipity_admin.php?serendipity[adminModule]=export"><?php echo EXPORT_ENTRIES; ?></a></li>
+<?php } ?>
+<?php if (serendipity_checkPermission('siteConfiguration') || serendipity_checkPermission('blogConfiguration')) { ?>
+ <li class="serendipitySideBarMenuLink serendipitySideBarMenuUserManagementLinks"><a href="serendipity_admin.php?serendipity[adminModule]=integrity"><?php echo INTEGRITY; ?></a></li>
<?php } ?>
<?php if ($serendipity['no_create'] !== true) serendipity_plugin_api::hook_event('backend_sidebar_admin', $serendipity); ?>
<li class="serendipitySideBarMenuFoot serendipitySideBarMenuUserManagement" style="display:none"></li>
<li class="serendipitySideBarMenuLink serendipitySideBarMenuUserManagementLinks"><a href="serendipity_admin.php?serendipity[adminModule]=import">{$CONST.IMPORT_ENTRIES}</a></li>
<li class="serendipitySideBarMenuLink serendipitySideBarMenuUserManagementLinks"><a href="serendipity_admin.php?serendipity[adminModule]=export">{$CONST.EXPORT_ENTRIES}</a></li>
{/if}
+ {if 'siteConfiguration'|checkPermission || 'blogConfiguration'|checkPermission}
+ <li class="serendipitySideBarMenuLink serendipitySideBarMenuUserManagementLinks"><a href="serendipity_admin.php?serendipity[adminModule]=integrity">{$CONST.INTEGRITY}</a></li>
+ {/if}
{if $admin_vars.no_create !== true} {serendipity_hookPlugin hook="backend_sidebar_admin" hookAll="true"}{/if}
<li class="serendipitySideBarMenuFoot serendipitySideBarMenuUserManagement" style="display:none"></li>
</ul>
</div>
</body>
<!-- ADMIN-ENTRY TEMPLATE: index.tpl END -->
-</html>
\ No newline at end of file
+</html>