diff --git a/src/bitmessagemain.py b/src/bitmessagemain.py
index a806627f..4a2440f1 100755
--- a/src/bitmessagemain.py
+++ b/src/bitmessagemain.py
@@ -15,6 +15,7 @@ maximumAgeOfObjectsThatIAdvertiseToOthers = 216000 #Equals two days and 12 hours
maximumAgeOfNodesThatIAdvertiseToOthers = 10800 #Equals three hours
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.
useVeryEasyProofOfWorkForTesting = False #If you set this to True while on the normal network, you won't be able to send or sometimes receive messages.
+encryptedBroadcastSwitchoverTime = 1369735200
import sys
try:
@@ -2360,9 +2361,10 @@ class sqlThread(QThread):
self.cur.execute( '''CREATE TABLE pubkeys (hash blob, transmitdata blob, time int, usedpersonally text, UNIQUE(hash) ON CONFLICT REPLACE)''' )
self.cur.execute( '''CREATE TABLE inventory (hash blob, objecttype text, streamnumber int, payload blob, receivedtime integer, UNIQUE(hash) ON CONFLICT REPLACE)''' )
self.cur.execute( '''CREATE TABLE knownnodes (timelastseen int, stream int, services blob, host blob, port blob, UNIQUE(host, stream, port) ON CONFLICT REPLACE)''' ) #This table isn't used in the program yet but I have a feeling that we'll need it.
- self.cur.execute( '''INSERT INTO subscriptions VALUES('Bitmessage new releases/announcements','BM-BbkPSZbzPwpVcYZpU4yHwf9ZPEapN5Zx',1)''')
+ self.cur.execute( '''INSERT INTO subscriptions VALUES('Bitmessage new releases/announcements','BM-GtovgYdgs7qXPkoYaRgrLFuFKz1SFpsw',1)''')
self.cur.execute( '''CREATE TABLE settings (key blob, value blob, UNIQUE(key) ON CONFLICT REPLACE)''' )
self.cur.execute( '''INSERT INTO settings VALUES('version','1')''')
+ self.cur.execute( '''INSERT INTO settings VALUES('lastvacuumtime',?)''',(int(time.time()),))
self.conn.commit()
print 'Created messages database file'
except Exception, err:
@@ -2418,6 +2420,7 @@ class sqlThread(QThread):
print 'In messages.dat database, creating new \'settings\' table.'
self.cur.execute( '''CREATE TABLE settings (key text, value blob, UNIQUE(key) ON CONFLICT REPLACE)''' )
self.cur.execute( '''INSERT INTO settings VALUES('version','1')''')
+ self.cur.execute( '''INSERT INTO settings VALUES('lastvacuumtime',?)''',(int(time.time()),))
print 'In messages.dat database, removing an obsolete field from the pubkeys table.'
self.cur.execute( '''CREATE TEMPORARY TABLE pubkeys_backup(hash blob, transmitdata blob, time int, usedpersonally text, UNIQUE(hash) ON CONFLICT REPLACE);''')
self.cur.execute( '''INSERT INTO pubkeys_backup SELECT hash, transmitdata, time, usedpersonally FROM pubkeys;''')
@@ -2427,9 +2430,9 @@ class sqlThread(QThread):
self.cur.execute( '''DROP TABLE pubkeys_backup;''')
print 'Deleting all pubkeys from inventory. They will be redownloaded and then saved with the correct times.'
self.cur.execute( '''delete from inventory where objecttype = 'pubkey';''')
- #print 'replacing Bitmessage announcements mailing list with a new one.'
- #self.cur.execute( '''delete from subscriptions where address='BM-BbkPSZbzPwpVcYZpU4yHwf9ZPEapN5Zx' ''')
- #self.cur.execute( '''INSERT INTO subscriptions VALUES('Bitmessage new releases/announcements','BM-BbkPSZbzPwpVcYZpU4yHwf9ZPEapN5Zx',1)''')
+ print 'replacing Bitmessage announcements mailing list with a new one.'
+ self.cur.execute( '''delete from subscriptions where address='BM-BbkPSZbzPwpVcYZpU4yHwf9ZPEapN5Zx' ''')
+ self.cur.execute( '''INSERT INTO subscriptions VALUES('Bitmessage new releases/announcements','BM-GtovgYdgs7qXPkoYaRgrLFuFKz1SFpsw',1)''')
print 'Commiting.'
self.conn.commit()
print 'Vacuuming message.dat. You might notice that the file size gets much smaller.'
@@ -2453,6 +2456,20 @@ class sqlThread(QThread):
except Exception, err:
print err
+ #Let us check to see the last time we vaccumed the messages.dat file. If it has been more than a month let's do it now.
+ item = '''SELECT value FROM settings WHERE key='lastvacuumtime';'''
+ parameters = ''
+ self.cur.execute(item, parameters)
+ queryreturn = self.cur.fetchall()
+ for row in queryreturn:
+ value, = row
+ if int(value) < int(time.time()) - 2592000:
+ print 'It has been a long time since the messages.dat file has been vacuumed. Vacuuming now...'
+ self.cur.execute( ''' VACUUM ''')
+ item = '''update settings set value=? WHERE key='lastvacuumtime';'''
+ parameters = (int(time.time()),)
+ self.cur.execute(item, parameters)
+
while True:
item = sqlSubmitQueue.get()
if item == 'commit':
@@ -2797,7 +2814,7 @@ class singleWorker(QThread):
for row in queryreturn:
fromaddress, subject, body, ackdata = row
status,addressVersionNumber,streamNumber,ripe = decodeAddress(fromaddress)
- if addressVersionNumber == 2:#todo: and time is less than some date in the future:
+ if addressVersionNumber == 2 and int(time.time()) < encryptedBroadcastSwitchoverTime:
#We need to convert our private keys to public keys in order to include them.
try:
privSigningKeyBase58 = config.get(fromaddress, 'privsigningkey')
@@ -2857,7 +2874,7 @@ class singleWorker(QThread):
queryreturn = sqlReturnQueue.get()
sqlSubmitQueue.put('commit')
sqlLock.release()
- elif addressVersionNumber == 3:#todo: or (addressVersionNumber == 2 and time is greater than than some date in the future):
+ elif addressVersionNumber == 3 or int(time.time()) > encryptedBroadcastSwitchoverTime:
#We need to convert our private keys to public keys in order to include them.
try:
privSigningKeyBase58 = config.get(fromaddress, 'privsigningkey')
diff --git a/src/newaddressdialog.py b/src/newaddressdialog.py
index e7c1ad71..637c3a46 100644
--- a/src/newaddressdialog.py
+++ b/src/newaddressdialog.py
@@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'newaddressdialog.ui'
#
-# Created: Fri Jan 25 13:05:18 2013
+# Created: Tue Apr 30 12:21:14 2013
# by: PyQt4 UI code generator 4.9.4
#
# WARNING! All changes made in this file will be lost!
@@ -169,7 +169,7 @@ class Ui_NewAddressDialog(object):
self.radioButtonDeterministicAddress.setText(QtGui.QApplication.translate("NewAddressDialog", "Use a passpharase to make addresses", None, QtGui.QApplication.UnicodeUTF8))
self.checkBoxEighteenByteRipe.setText(QtGui.QApplication.translate("NewAddressDialog", "Spend several minutes of extra computing time to make the address(es) 1 or 2 characters shorter", None, QtGui.QApplication.UnicodeUTF8))
self.groupBoxDeterministic.setTitle(QtGui.QApplication.translate("NewAddressDialog", "Make deterministic addresses", None, QtGui.QApplication.UnicodeUTF8))
- self.label_9.setText(QtGui.QApplication.translate("NewAddressDialog", "Address version number: 2", None, QtGui.QApplication.UnicodeUTF8))
+ self.label_9.setText(QtGui.QApplication.translate("NewAddressDialog", "Address version number: 3", None, QtGui.QApplication.UnicodeUTF8))
self.label_8.setText(QtGui.QApplication.translate("NewAddressDialog", "In addition to your passphrase, you must remember these numbers:", None, QtGui.QApplication.UnicodeUTF8))
self.label_6.setText(QtGui.QApplication.translate("NewAddressDialog", "Passphrase", None, QtGui.QApplication.UnicodeUTF8))
self.label_11.setText(QtGui.QApplication.translate("NewAddressDialog", "Number of addresses to make based on your passphrase:", None, QtGui.QApplication.UnicodeUTF8))
diff --git a/src/newaddressdialog.ui b/src/newaddressdialog.ui
index 7f9e13af..3da926ae 100644
--- a/src/newaddressdialog.ui
+++ b/src/newaddressdialog.ui
@@ -99,7 +99,7 @@ The 'Random Number' option is selected by default but deterministic addresses ha
-
- Address version number: 2
+ Address version number: 3
diff --git a/src/regenerateaddresses.py b/src/regenerateaddresses.py
index e47f6b6e..dfcd9135 100644
--- a/src/regenerateaddresses.py
+++ b/src/regenerateaddresses.py
@@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'regenerateaddresses.ui'
#
-# Created: Thu Jan 24 15:52:24 2013
+# Created: Tue Apr 30 12:21:16 2013
# by: PyQt4 UI code generator 4.9.4
#
# WARNING! All changes made in this file will be lost!
@@ -106,7 +106,7 @@ class Ui_regenerateAddressesDialog(object):
self.label_6.setText(QtGui.QApplication.translate("regenerateAddressesDialog", "Passphrase", None, QtGui.QApplication.UnicodeUTF8))
self.label_11.setText(QtGui.QApplication.translate("regenerateAddressesDialog", "Number of addresses to make based on your passphrase:", None, QtGui.QApplication.UnicodeUTF8))
self.label_2.setText(QtGui.QApplication.translate("regenerateAddressesDialog", "Address version Number:", None, QtGui.QApplication.UnicodeUTF8))
- self.lineEditAddressVersionNumber.setText(QtGui.QApplication.translate("regenerateAddressesDialog", "2", None, QtGui.QApplication.UnicodeUTF8))
+ self.lineEditAddressVersionNumber.setText(QtGui.QApplication.translate("regenerateAddressesDialog", "3", None, QtGui.QApplication.UnicodeUTF8))
self.label_3.setText(QtGui.QApplication.translate("regenerateAddressesDialog", "Stream number:", None, QtGui.QApplication.UnicodeUTF8))
self.lineEditStreamNumber.setText(QtGui.QApplication.translate("regenerateAddressesDialog", "1", None, QtGui.QApplication.UnicodeUTF8))
self.checkBoxEighteenByteRipe.setText(QtGui.QApplication.translate("regenerateAddressesDialog", "Spend several minutes of extra computing time to make the address(es) 1 or 2 characters shorter", None, QtGui.QApplication.UnicodeUTF8))
diff --git a/src/regenerateaddresses.ui b/src/regenerateaddresses.ui
index 2dbecf84..89cdf901 100644
--- a/src/regenerateaddresses.ui
+++ b/src/regenerateaddresses.ui
@@ -108,7 +108,7 @@
- 2
+ 3