2013-06-21 00:55:04 +02:00
import shared
import ConfigParser
2013-06-22 16:55:15 +02:00
import sys
import os
2013-08-21 16:08:22 +02:00
import locale
2013-06-22 16:55:15 +02:00
2013-07-05 20:08:19 +02:00
from namecoin import ensureNamecoinOptions
2013-06-22 16:55:15 +02:00
storeConfigFilesInSameDirectoryAsProgramByDefault = False # The user may de-select Portable Mode in the settings if they want the config files to stay in the application data folder.
2013-06-21 00:55:04 +02:00
def loadConfig ( ) :
2013-08-26 00:55:53 +02:00
if shared . appdata :
2013-06-21 00:55:04 +02:00
shared . config . read ( shared . appdata + ' keys.dat ' )
2013-08-26 00:55:53 +02:00
#shared.appdata must have been specified as a startup option.
2013-06-21 00:55:04 +02:00
try :
shared . config . get ( ' bitmessagesettings ' , ' settingsversion ' )
2013-08-26 00:55:53 +02:00
print ' Loading config files from directory specified on startup: ' + shared . appdata
needToCreateKeysFile = False
2013-06-21 00:55:04 +02:00
except :
2013-08-26 00:55:53 +02:00
needToCreateKeysFile = True
else :
shared . config . read ( ' keys.dat ' )
try :
shared . config . get ( ' bitmessagesettings ' , ' settingsversion ' )
print ' Loading config files from same directory as program. '
needToCreateKeysFile = False
shared . appdata = ' '
except :
# Could not load the keys.dat file in the program directory. Perhaps it
# is in the appdata directory.
shared . appdata = shared . lookupAppdataFolder ( )
shared . config . read ( shared . appdata + ' keys.dat ' )
try :
shared . config . get ( ' bitmessagesettings ' , ' settingsversion ' )
print ' Loading existing config files from ' , shared . appdata
needToCreateKeysFile = False
except :
needToCreateKeysFile = True
if needToCreateKeysFile :
# This appears to be the first time running the program; there is
# no config file (or it cannot be accessed). Create config file.
shared . config . add_section ( ' bitmessagesettings ' )
shared . config . set ( ' bitmessagesettings ' , ' settingsversion ' , ' 6 ' )
shared . config . set ( ' bitmessagesettings ' , ' port ' , ' 8444 ' )
shared . config . set (
' bitmessagesettings ' , ' timeformat ' , ' %% a, %% d %% b %% Y %% I: %% M %% p ' )
shared . config . set ( ' bitmessagesettings ' , ' blackwhitelist ' , ' black ' )
shared . config . set ( ' bitmessagesettings ' , ' startonlogon ' , ' false ' )
if ' linux ' in sys . platform :
2013-06-21 00:55:04 +02:00
shared . config . set (
2013-08-26 00:55:53 +02:00
' bitmessagesettings ' , ' minimizetotray ' , ' false ' )
# This isn't implimented yet and when True on
# Ubuntu causes Bitmessage to disappear while
# running when minimized.
else :
2013-06-21 00:55:04 +02:00
shared . config . set (
2013-08-26 00:55:53 +02:00
' bitmessagesettings ' , ' minimizetotray ' , ' true ' )
shared . config . set (
' bitmessagesettings ' , ' showtraynotifications ' , ' true ' )
shared . config . set ( ' bitmessagesettings ' , ' startintray ' , ' false ' )
shared . config . set ( ' bitmessagesettings ' , ' socksproxytype ' , ' none ' )
shared . config . set (
' bitmessagesettings ' , ' sockshostname ' , ' localhost ' )
shared . config . set ( ' bitmessagesettings ' , ' socksport ' , ' 9050 ' )
shared . config . set (
' bitmessagesettings ' , ' socksauthentication ' , ' false ' )
shared . config . set (
' bitmessagesettings ' , ' sockslisten ' , ' false ' )
shared . config . set ( ' bitmessagesettings ' , ' socksusername ' , ' ' )
shared . config . set ( ' bitmessagesettings ' , ' sockspassword ' , ' ' )
shared . config . set ( ' bitmessagesettings ' , ' keysencrypted ' , ' false ' )
shared . config . set (
' bitmessagesettings ' , ' messagesencrypted ' , ' false ' )
shared . config . set ( ' bitmessagesettings ' , ' defaultnoncetrialsperbyte ' , str (
shared . networkDefaultProofOfWorkNonceTrialsPerByte ) )
shared . config . set ( ' bitmessagesettings ' , ' defaultpayloadlengthextrabytes ' , str (
shared . networkDefaultPayloadLengthExtraBytes ) )
shared . config . set ( ' bitmessagesettings ' , ' minimizeonclose ' , ' false ' )
shared . config . set (
' bitmessagesettings ' , ' maxacceptablenoncetrialsperbyte ' , ' 0 ' )
shared . config . set (
' bitmessagesettings ' , ' maxacceptablepayloadlengthextrabytes ' , ' 0 ' )
shared . config . set ( ' bitmessagesettings ' , ' dontconnect ' , ' true ' )
2013-08-27 12:10:46 +02:00
shared . config . set ( ' bitmessagesettings ' , ' userlocale ' , ' system ' )
2013-09-21 16:24:14 +02:00
shared . config . set ( ' bitmessagesettings ' , ' identicon ' , ' None ' )
import random , string
shared . config . set ( ' bitmessagesettings ' , ' identiconsuffix ' , ' ' . join ( random . choice ( " 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz " ) for x in range ( 12 ) ) ) # a twelve character pseudo-password to salt the identicons
shared . config . set ( ' bitmessagesettings ' , ' avatars ' , ' false ' )
2013-08-28 04:29:39 +02:00
# Are you hoping to add a new option to the keys.dat file? You're in
# the right place for adding it to users who install the software for
# the first time. But you must also add it to the keys.dat file of
# existing users. To do that, search the class_sqlThread.py file for the
# text: "right above this line!"
2013-08-26 00:55:53 +02:00
ensureNamecoinOptions ( )
2013-06-21 00:55:04 +02:00
2013-08-26 00:55:53 +02:00
if storeConfigFilesInSameDirectoryAsProgramByDefault :
# Just use the same directory as the program and forget about
# the appdata folder
shared . appdata = ' '
print ' Creating new config files in same directory as program. '
else :
print ' Creating new config files in ' , shared . appdata
if not os . path . exists ( shared . appdata ) :
os . makedirs ( shared . appdata )
if not sys . platform . startswith ( ' win ' ) :
os . umask ( 0o077 )
with open ( shared . appdata + ' keys.dat ' , ' wb ' ) as configfile :
shared . config . write ( configfile )