diff -upr MUTE_fileSharing-0.4.1_UnixSource/minorGems/io/file/File.h MUTE_fileSharing-0.4.1_UnixSource-new/minorGems/io/file/File.h --- MUTE_fileSharing-0.4.1_UnixSource/minorGems/io/file/File.h 2004-01-04 18:19:55.000000000 +0100 +++ MUTE_fileSharing-0.4.1_UnixSource-new/minorGems/io/file/File.h 2005-05-08 04:58:37.000000000 +0200 @@ -150,6 +150,8 @@ class File { */ char makeDirectory(); + /* merely a combination from exists and makedirectory */ + int checkDirectory(bool create); /** @@ -418,9 +420,29 @@ inline char File::isDirectory() { return S_ISDIR( fileInfo.st_mode ); } } +/* returns 0 if exists + * 1 if successfully created + * -1 on error + */ +inline int File::checkDirectory( bool create ) +{ + if(!exists()) { + if(!create) return -1; + if(!makeDirectory()) { + printf("error creating %s\n", getFullFileName()); + perror(""); + return -1; + } + return 1; + } + else if(!isDirectory()) { + printf("%s exists but is not a directory\n", + getFullFileName()); + return -1; + } - - + return 0; +} inline File **File::getChildFiles( int *outNumFiles ) { int length; diff -upr MUTE_fileSharing-0.4.1_UnixSource/minorGems/network/web/MimeTyper.cpp MUTE_fileSharing-0.4.1_UnixSource-new/minorGems/network/web/MimeTyper.cpp --- MUTE_fileSharing-0.4.1_UnixSource/minorGems/network/web/MimeTyper.cpp 2003-09-01 18:00:31.000000000 +0200 +++ MUTE_fileSharing-0.4.1_UnixSource-new/minorGems/network/web/MimeTyper.cpp 2005-05-08 04:38:29.000000000 +0200 @@ -26,6 +26,7 @@ #include "minorGems/util/stringUtils.h" #include "minorGems/io/file/File.h" #include "minorGems/io/file/FileInputStream.h" +#include "minorGems/util/SettingsManager.h" #include @@ -37,23 +38,17 @@ MimeTyper::MimeTyper( char *inConfigFile File *configFile; - char **pathSteps = new char*[1]; - pathSteps[0] = "settings"; - - if( inConfigFileName == NULL ) { - configFile = new File( new Path( pathSteps, 1, false ), "mime.ini" ); + configFile = new File( new Path( SettingsManager::getDirectoryName() ), + "mime.ini" ); } else { - configFile = new File( new Path( pathSteps, 1, false ), + configFile = new File( new Path( SettingsManager::getDirectoryName() ), inConfigFileName ); } - delete [] pathSteps; - - if( !configFile->exists() ) { - char *name = configFile->getFileName(); + char *name = configFile->getFullFileName(); printf( "Error: MIME config file %s does not exist.\n", name ); diff -upr MUTE_fileSharing-0.4.1_UnixSource/minorGems/util/SettingsManager.cpp MUTE_fileSharing-0.4.1_UnixSource-new/minorGems/util/SettingsManager.cpp --- MUTE_fileSharing-0.4.1_UnixSource/minorGems/util/SettingsManager.cpp 2003-08-24 17:08:24.000000000 +0200 +++ MUTE_fileSharing-0.4.1_UnixSource-new/minorGems/util/SettingsManager.cpp 2005-05-08 06:31:49.000000000 +0200 @@ -18,7 +18,7 @@ * Fixed to remove 499-character limit for a setting value. */ - +#include #include "SettingsManager.h" @@ -45,7 +45,13 @@ char *SettingsManager::getDirectoryName( return stringDuplicate( mStaticMembers.mDirectoryName ); } - +char *SettingsManager::getSharedDirectory() { + return stringDuplicate( mStaticMembers.mSharedDirectory ); +} + +bool SettingsManager::settings_ok() { + return mStaticMembers.mSettingsOK; +} SimpleVector *SettingsManager::getSetting( char *inSettingName ) { @@ -257,12 +263,91 @@ char *SettingsManager::getSettingsFileNa return fullFileName; } - +void SettingsManager::dump_default_settings() +{ + setSetting("broadcastProbability", 0); + setSetting("continueForwardProbability", 0.66f); + setSetting("downloadChunkRetries", 10); + setSetting("downloadFileInfoRetries", 5); + setSetting("downloadRetryFreshRouteProbability",0.25f); + setSetting("downloadTimeoutCurrentTimeoutWeight", 2); + setSetting("downloadTimeoutMilliseconds", 60000); + setSetting("downloadTimeoutRecentChunkWeight", 1); + setSetting("inboundMessageLimit", -1); + setSetting("language", "English"); + setSetting("logConnectionContents", 0); + setSetting("logConnections", 0); + setSetting("logDownloadTimeoutChanges", 0); + setSetting("logLevel", "INFO_LEVEL"); + setSetting("logMessageHistory", 0); + setSetting("logRolloverInSeconds", 3600); + setSetting("logRoutingHistory", 0); + setSetting("maxConnectionCount", 6); + setSetting("maxDroppedMessageFraction", 0.1f); + setSetting("maxMessageUtility", 35); + setSetting("maxSubfolderDepth", 10); + setSetting("muteVersion", "0.4.1"); + setSetting("outboundMessageLimit", -1); + setSetting("port", 4900); + setSetting("printSearchSyncTrace", 0); + setSetting("sendQueueSizePerConnection", 300); + setSetting("showNiceQuit", 0); + setSetting("targetConnectionCount", 4); + setSetting("useMajorityRouting", 0); + setSetting("utilityAlpha", 0); + setSetting("utilityBeta", 0); + setSetting("utilityGamma", 7); + setSetting("webHostCachePostIntervalSeconds", 3660); +} SettingsManagerStaticMembers::SettingsManagerStaticMembers() - : mDirectoryName( stringDuplicate( "settings" ) ) { - - } +{ + int ret; + mSettingsOK = false; + // assemble directory strings + // + // global mute directory + File *shared_dir = new File(new Path("/usr/share/"), "MUTE",-1); + if(shared_dir->checkDirectory(false) == -1) + return; + mSharedDirectory = shared_dir->getFullFileName(); + delete shared_dir; + + // per user mute directory + char *home = getenv("HOME"); + File *user_dir = new File( new Path(home), ".MUTE", -1); + mDirectoryName = user_dir->getFullFileName(); + ret = user_dir->checkDirectory(true); + if(ret == -1) + return; + else if(ret == 1) { + File *src, *dest; + /* make sure settings dir is populated with stuff + * we need to get MUTE running */ + SettingsManager::dump_default_settings(); + // copy mime file from shared dir + src = new File( new Path(mSharedDirectory), + "mime.ini", -1); + dest = new File( new Path(mDirectoryName), + "mime.ini", -1); + src->copy( dest ); + delete src; + delete dest; + // copy webhost caches from shared dir + src = new File( new Path(mSharedDirectory), + "webHostCaches.ini", -1); + dest = new File( new Path(mDirectoryName), + "webHostCaches.ini", -1); + src->copy( dest ); + delete src; + delete dest; + } + delete user_dir; + delete home; + + mSettingsOK = true; + +} diff -upr MUTE_fileSharing-0.4.1_UnixSource/minorGems/util/SettingsManager.h MUTE_fileSharing-0.4.1_UnixSource-new/minorGems/util/SettingsManager.h --- MUTE_fileSharing-0.4.1_UnixSource/minorGems/util/SettingsManager.h 2003-08-24 17:08:24.000000000 +0200 +++ MUTE_fileSharing-0.4.1_UnixSource-new/minorGems/util/SettingsManager.h 2005-05-08 04:39:43.000000000 +0200 @@ -180,7 +180,11 @@ class SettingsManager { static void setSetting( char *inSettingName, char *inSettingValue ); - + static char* getSharedDirectory(); + + static bool settings_ok(); + + static void dump_default_settings(); protected: @@ -241,6 +245,9 @@ class SettingsManagerStaticMembers { ~SettingsManagerStaticMembers(); char *mDirectoryName; + char *mSharedDirectory; + + bool mSettingsOK; diff -upr MUTE_fileSharing-0.4.1_UnixSource/MUTE/layers/messageRouting/messageRouter.cpp MUTE_fileSharing-0.4.1_UnixSource-new/MUTE/layers/messageRouting/messageRouter.cpp --- MUTE_fileSharing-0.4.1_UnixSource/MUTE/layers/messageRouting/messageRouter.cpp 2005-04-15 20:38:55.000000000 +0200 +++ MUTE_fileSharing-0.4.1_UnixSource-new/MUTE/layers/messageRouting/messageRouter.cpp 2005-05-08 04:43:25.000000000 +0200 @@ -109,7 +109,7 @@ #include "minorGems/util/log/AppLog.h" #include "minorGems/util/log/FileLog.h" - +#include "minorGems/io/file/File.h" #include @@ -158,9 +158,13 @@ void muteStart( unsigned int inPort ) { // defaults to one hour logRolloverTime = 3600; } + + File *log = new File( new Path(SettingsManager::getDirectoryName()), + "MUTE.log",-1); - AppLog::setLog( new FileLog( "MUTE.log", + AppLog::setLog( new FileLog( log->getFullFileName(), (unsigned long)logRolloverTime ) ); + delete log; AppLog::setLoggingLevel( Log::TRACE_LEVEL ); diff -upr MUTE_fileSharing-0.4.1_UnixSource/MUTE/otherApps/fileSharing/userInterface/textBased/textFileSharingMUTE.cpp MUTE_fileSharing-0.4.1_UnixSource-new/MUTE/otherApps/fileSharing/userInterface/textBased/textFileSharingMUTE.cpp --- MUTE_fileSharing-0.4.1_UnixSource/MUTE/otherApps/fileSharing/userInterface/textBased/textFileSharingMUTE.cpp 2004-12-24 18:13:12.000000000 +0100 +++ MUTE_fileSharing-0.4.1_UnixSource-new/MUTE/otherApps/fileSharing/userInterface/textBased/textFileSharingMUTE.cpp 2005-05-08 05:09:41.000000000 +0200 @@ -460,7 +460,11 @@ int main() { printf( "http://mute-net.sourceforge.net\n\n" ); - + if(!SettingsManager::settings_ok()) { + printf("init failed.exit\n"); + return 1; + } + // check if firewall setting exists char valueFound; SettingsManager::getIntSetting( "behindFirewall", diff -upr MUTE_fileSharing-0.4.1_UnixSource/MUTE/otherApps/fileSharing/userInterface/wxWindows/GuiApp.cpp MUTE_fileSharing-0.4.1_UnixSource-new/MUTE/otherApps/fileSharing/userInterface/wxWindows/GuiApp.cpp --- MUTE_fileSharing-0.4.1_UnixSource/MUTE/otherApps/fileSharing/userInterface/wxWindows/GuiApp.cpp 2004-12-24 14:49:01.000000000 +0100 +++ MUTE_fileSharing-0.4.1_UnixSource-new/MUTE/otherApps/fileSharing/userInterface/wxWindows/GuiApp.cpp 2005-05-08 05:16:42.000000000 +0200 @@ -124,7 +124,7 @@ #include "minorGems/util/stringUtils.h" #include "minorGems/system/Thread.h" #include "minorGems/util/log/AppLog.h" - +#include "minorGems/io/file/File.h" #include @@ -471,7 +471,19 @@ bool GuiApp::OnInit() { #endif - + if(!SettingsManager::settings_ok()) { + printf("init failed. exit\n"); + return false; + } + File *lang_dir = new File( new Path(SettingsManager::getSharedDirectory()), + "language", -1); + if(!lang_dir->exists()) { + printf("cant find translation files: %s\n", + lang_dir->getFullFileName()); + return false; + } + TranslationManager::setDirectoryName(lang_dir->getFullFileName()); + char *languageName = SettingsManager::getStringSetting( "language" ); if( languageName == NULL ) {