~ubuntu-branches/ubuntu/utopic/bittornado/utopic

« back to all changes in this revision

Viewing changes to BitTornado/ConfigReader.py

  • Committer: Bazaar Package Importer
  • Author(s): Cameron Dale
  • Date: 2008-07-19 16:08:44 UTC
  • mfrom: (0.1.14 intrepid)
  • Revision ID: james.westby@ubuntu.com-20080719160844-nnmp02ar9pri55v1
Tags: 0.3.18-7
* Refresh all the quilt patches (Closes: #485320)
* Update standards version to 3.8.0
  - Add a README.source file pointing to the quilt documentation
* medium urgency to get it into lenny

Show diffs side-by-side

added added

removed removed

Lines of Context:
8
8
import sys,os
9
9
import socket
10
10
from parseargs import defaultargs
 
11
from BTcrypto import CRYPTO_OK
11
12
 
12
13
try:
13
14
    True
91
92
        self.configfile = wxConfig("BitTorrent",style=wxCONFIG_USE_LOCAL_FILE)
92
93
        self.configMenuBox = None
93
94
        self.advancedMenuBox = None
 
95
        self.cryptoMenuBox = None
94
96
        self._configReset = True         # run reset for the first time
95
97
 
96
98
        setwxconfigfiledefaults()
229
231
            except wxPyDeadObjectError, e:
230
232
                self.configMenuBox = None
231
233
 
232
 
        self.configMenuBox = wxFrame(None, -1, 'BitTorrent Preferences', size = (1,1),
 
234
        self.configMenuBox = wxFrame(None, -1, 'BitTornado Preferences', size = (1,1),
233
235
                            style = wxDEFAULT_FRAME_STYLE|wxFULL_REPAINT_ON_RESIZE)
234
236
        if (sys.platform == 'win32'):
235
237
            self.icon = self.parent.icon
259
261
        self.gui_displaymiscstats_checkbox.SetFont(self.default_font)
260
262
        self.gui_displaymiscstats_checkbox.SetValue(self.config['gui_displaymiscstats'])
261
263
 
262
 
        self.security_checkbox = wxCheckBox(panel, -1, "Don't allow multiple connections from the same IP")
263
 
        self.security_checkbox.SetFont(self.default_font)
264
 
        self.security_checkbox.SetValue(self.config['security'])
265
 
 
266
 
        self.autokick_checkbox = wxCheckBox(panel, -1, "Kick/ban clients that send you bad data *")
267
 
        self.autokick_checkbox.SetFont(self.default_font)
268
 
        self.autokick_checkbox.SetValue(self.config['auto_kick'])
269
 
 
270
264
        self.buffering_checkbox = wxCheckBox(panel, -1, "Enable read/write buffering *")
271
265
        self.buffering_checkbox.SetFont(self.default_font)
272
266
        self.buffering_checkbox.SetValue(self.config['buffer_reads'])
289
283
        self.gui_forcegreenonfirewall_checkbox.SetFont(self.default_font)
290
284
        self.gui_forcegreenonfirewall_checkbox.SetValue(self.config['gui_forcegreenonfirewall'])
291
285
 
 
286
        cryptoButton = wxButton(panel, -1, 'Encryption/Security Settings...')
292
287
 
293
288
        self.minport_data = wxSpinCtrl(panel, -1, '', (-1,-1), (self.FONT*8, -1))
294
289
        self.minport_data.SetFont(self.default_font)
328
323
            self.win32_taskbar_icon_checkbox.SetFont(self.default_font)
329
324
            self.win32_taskbar_icon_checkbox.SetValue(self.config['win32_taskbar_icon'])
330
325
            
331
 
#            self.upnp_checkbox = wxCheckBox(panel, -1, "Enable automatic UPnP port forwarding")
332
 
#            self.upnp_checkbox.SetFont(self.default_font)
333
 
#            self.upnp_checkbox.SetValue(self.config['upnp_nat_access'])
334
326
            self.upnp_data=wxChoice(panel, -1,
335
327
                        choices = ['disabled', 'type 1 (fast)', 'type 2 (slow)'])
336
328
            self.upnp_data.SetFont(self.default_font)
360
352
        
361
353
        rowsizer = wxFlexGridSizer(cols = 2, hgap = 20)
362
354
 
363
 
        block12sizer = wxFlexGridSizer(cols = 1, vgap = 7)
 
355
        block12sizer = wxFlexGridSizer(cols = 1, vgap = 12)
364
356
 
365
357
        block1sizer = wxFlexGridSizer(cols = 1, vgap = 2)
366
358
        if (sys.platform == 'win32'):
367
359
            block1sizer.Add(self.win32_taskbar_icon_checkbox)
368
 
#            block1sizer.Add(self.upnp_checkbox)
369
360
        block1sizer.Add(self.gui_stretchwindow_checkbox)
370
361
        block1sizer.Add(self.gui_displaystats_checkbox)
371
362
        block1sizer.Add(self.gui_displaymiscstats_checkbox)
372
 
        block1sizer.Add(self.security_checkbox)
373
 
        block1sizer.Add(self.autokick_checkbox)
374
363
        block1sizer.Add(self.buffering_checkbox)
375
364
        block1sizer.Add(self.breakup_checkbox)
376
365
        block1sizer.Add(self.autoflush_checkbox)
377
366
        if sys.version_info >= (2,3) and socket.has_ipv6:
378
367
            block1sizer.Add(self.ipv6enabled_checkbox)
379
368
        block1sizer.Add(self.gui_forcegreenonfirewall_checkbox)
380
 
 
381
369
        block12sizer.Add(block1sizer)
 
370
        block12sizer.Add(cryptoButton, 0, wxALIGN_CENTER)
382
371
 
383
372
        colorsizer = wxStaticBoxSizer(wxStaticBox(panel, -1, "Gauge Colors:"), wxVERTICAL)
384
373
        colorsizer1 = wxFlexGridSizer(cols = 7)
453
442
        block4sizer.Add(dratesettingsSizer, 1, wxALIGN_CENTER_VERTICAL)
454
443
 
455
444
        colsizer.Add(block4sizer, 0, wxALIGN_CENTER)
456
 
#        colsizer.Add(StaticText(' '))
457
445
 
458
446
        savesizer = wxGridSizer(cols = 4, hgap = 10)
459
447
        saveButton = wxButton(panel, -1, 'Save')
483
471
        panel.SetAutoLayout(True)
484
472
 
485
473
        self.advancedConfig = {}
 
474
        self.cryptoConfig = {}
486
475
 
487
476
        def setDefaults(evt, self = self):
488
477
          try:
492
481
            self.gui_stretchwindow_checkbox.SetValue(self.defaults['gui_stretchwindow'])
493
482
            self.gui_displaystats_checkbox.SetValue(self.defaults['gui_displaystats'])
494
483
            self.gui_displaymiscstats_checkbox.SetValue(self.defaults['gui_displaymiscstats'])
495
 
            self.security_checkbox.SetValue(self.defaults['security'])
496
 
            self.autokick_checkbox.SetValue(self.defaults['auto_kick'])
497
484
            self.buffering_checkbox.SetValue(self.defaults['buffer_reads'])
498
485
            self.breakup_checkbox.SetValue(self.defaults['breakup_seed_bitfield'])
499
486
            self.autoflush_checkbox.SetValue(self.defaults['auto_flush'])
516
503
 
517
504
            if (sys.platform == 'win32'):
518
505
                self.win32_taskbar_icon_checkbox.SetValue(self.defaults['win32_taskbar_icon'])
519
 
#                self.upnp_checkbox.SetValue(self.defaults['upnp_nat_access'])
520
506
                self.upnp_data.SetSelection(self.defaults['upnp_nat_access'])
521
507
 
522
 
            # reset advanced too
 
508
            # reset advanced and crypto windows too
523
509
            self.advancedConfig = {}
524
510
            for key in ['ip', 'bind', 'min_peers', 'max_initiate', 'display_interval',
525
511
        'alloc_type', 'alloc_rate', 'max_files_open', 'max_connections', 'super_seeder',
526
512
        'ipv6_binds_v4', 'double_check', 'triple_check', 'lock_files', 'lock_while_reading',
527
513
        'expire_cache_data']:
528
514
                self.advancedConfig[key] = self.defaults[key]
 
515
            self.cryptoConfig = {}
 
516
            for key in ['security', 'auto_kick',
 
517
        'crypto_allowed', 'crypto_only', 'crypto_stealth']:
 
518
                self.cryptoConfig[key] = self.config[key]
529
519
            self.CloseAdvanced()
530
520
          except:
531
521
            self.parent.exception()
536
526
            self.config['gui_stretchwindow']=int(self.gui_stretchwindow_checkbox.GetValue())
537
527
            self.config['gui_displaystats']=int(self.gui_displaystats_checkbox.GetValue())
538
528
            self.config['gui_displaymiscstats']=int(self.gui_displaymiscstats_checkbox.GetValue())
539
 
            self.config['security']=int(self.security_checkbox.GetValue())
540
 
            self.config['auto_kick']=int(self.autokick_checkbox.GetValue())
541
529
            buffering=int(self.buffering_checkbox.GetValue())
542
530
            self.config['buffer_reads']=buffering
543
531
            if buffering:
567
555
            
568
556
            if (sys.platform == 'win32'):
569
557
                self.config['win32_taskbar_icon']=int(self.win32_taskbar_icon_checkbox.GetValue())
570
 
#                self.config['upnp_nat_access']=int(self.upnp_checkbox.GetValue())
571
558
                self.config['upnp_nat_access']=self.upnp_data.GetSelection()
572
559
 
573
560
            if self.advancedConfig:
574
561
                for key,val in self.advancedConfig.items():
575
562
                    self.config[key] = val
 
563
            if self.cryptoConfig:
 
564
                for key,val in self.cryptoConfig.items():
 
565
                    self.config[key] = val
576
566
 
577
567
            self.writeConfigFile()
578
568
            self._configReset = True
623
613
        EVT_BUTTON(self.configMenuBox, cancelButton.GetId(), cancelConfigs)
624
614
        EVT_BUTTON(self.configMenuBox, defaultsButton.GetId(), setDefaults)
625
615
        EVT_BUTTON(self.configMenuBox, advancedButton.GetId(), self.advancedMenu)
 
616
        EVT_BUTTON(self.configMenuBox, cryptoButton.GetId(), self.cryptoMenu)
626
617
        EVT_BUTTON(self.configMenuBox, savepathButton.GetId(), savepath_set)
627
618
        EVT_LEFT_DOWN(self.checkingcolor_iconptr, checkingcoloricon_set)
628
619
        EVT_LEFT_DOWN(self.downloadcolor_iconptr, downloadcoloricon_set)
659
650
            except wxPyDeadObjectError, e:
660
651
                self.advancedMenuBox = None
661
652
 
662
 
        self.advancedMenuBox = wxFrame(None, -1, 'BitTorrent Advanced Preferences', size = (1,1),
 
653
        self.advancedMenuBox = wxFrame(None, -1, 'BitTornado Advanced Preferences', size = (1,1),
663
654
                            style = wxDEFAULT_FRAME_STYLE|wxFULL_REPAINT_ON_RESIZE)
664
655
        if (sys.platform == 'win32'):
665
656
            self.advancedMenuBox.SetIcon(self.icon)
666
657
 
667
658
        panel = wxPanel(self.advancedMenuBox, -1)
668
 
#        self.panel = panel
669
659
 
670
660
        def StaticText(text, font = self.FONT, underline = False, color = None, panel = panel):
671
661
            x = wxStaticText(panel, -1, text, style = wxALIGN_LEFT)
1066
1056
            except wxPyDeadObjectError, e:
1067
1057
                self.advancedMenuBox = None
1068
1058
 
 
1059
 
 
1060
    def cryptoMenu(self, event = None):
 
1061
      try:
 
1062
        if not self.cryptoConfig:
 
1063
            for key in ['security', 'auto_kick',
 
1064
        'crypto_allowed', 'crypto_only', 'crypto_stealth']:
 
1065
                self.cryptoConfig[key] = self.config[key]
 
1066
 
 
1067
        if (self.cryptoMenuBox is not None):
 
1068
            try:
 
1069
                self.cryptoMenuBox.Close ()
 
1070
            except wxPyDeadObjectError, e:
 
1071
                self.cryptoMenuBox = None
 
1072
 
 
1073
        self.cryptoMenuBox = wxFrame(None, -1, 'BitTornado Encryption/Security Preferences', size = (1,1),
 
1074
                            style = wxDEFAULT_FRAME_STYLE|wxFULL_REPAINT_ON_RESIZE)
 
1075
        if (sys.platform == 'win32'):
 
1076
            self.cryptoMenuBox.SetIcon(self.icon)
 
1077
 
 
1078
        panel = wxPanel(self.cryptoMenuBox, -1)
 
1079
#        self.panel = panel
 
1080
 
 
1081
        def StaticText(text, font = self.FONT, underline = False, color = None, panel = panel):
 
1082
            x = wxStaticText(panel, -1, text, style = wxALIGN_LEFT)
 
1083
            x.SetFont(wxFont(font, wxDEFAULT, wxNORMAL, wxNORMAL, underline))
 
1084
            if color is not None:
 
1085
                x.SetForegroundColour(color)
 
1086
            return x
 
1087
 
 
1088
        colsizer = wxFlexGridSizer(cols = 1, hgap = 13, vgap = 13)
 
1089
 
 
1090
        self.cryptomode_data=wxRadioBox(panel, -1, 'Encryption',
 
1091
                style = wxRA_SPECIFY_COLS, majorDimension = 1,
 
1092
                choices = [
 
1093
                    'no encryption permitted',
 
1094
                    'encryption enabled (default)',
 
1095
                    'encrypted connections only',
 
1096
                    'full stealth encryption'+
 
1097
                    ' (may cause effective firewalling)' ] )
 
1098
        self.cryptomode_data.SetFont(self.default_font)
 
1099
        if self.cryptoConfig['crypto_stealth']:
 
1100
            m = 3
 
1101
        elif self.cryptoConfig['crypto_only']:
 
1102
            m = 2
 
1103
        elif self.cryptoConfig['crypto_allowed']:
 
1104
            m = 1
 
1105
        else:
 
1106
            m = 0
 
1107
        self.cryptomode_data.SetSelection(m)
 
1108
        if not CRYPTO_OK:   # no crypto library in place
 
1109
            self.cryptomode_data.Enable(False)
 
1110
 
 
1111
        self.security_checkbox = wxCheckBox(panel, -1, "Don't allow multiple connections from the same IP")
 
1112
        self.security_checkbox.SetFont(self.default_font)
 
1113
        self.security_checkbox.SetValue(self.cryptoConfig['security'])
 
1114
 
 
1115
        self.autokick_checkbox = wxCheckBox(panel, -1, "Kick/ban clients that send you bad data")
 
1116
        self.autokick_checkbox.SetFont(self.default_font)
 
1117
        self.autokick_checkbox.SetValue(self.cryptoConfig['auto_kick'])
 
1118
 
 
1119
        colsizer.Add(self.cryptomode_data)
 
1120
 
 
1121
        block2sizer = wxFlexGridSizer(cols = 1, vgap = 2)
 
1122
        block2sizer.Add(self.security_checkbox)
 
1123
        block2sizer.Add(self.autokick_checkbox)
 
1124
        colsizer.Add(block2sizer)
 
1125
 
 
1126
        savesizer = wxGridSizer(cols = 3, hgap = 20)
 
1127
        okButton = wxButton(panel, -1, 'OK')
 
1128
        savesizer.Add(okButton, 0, wxALIGN_CENTER)
 
1129
 
 
1130
        cancelButton = wxButton(panel, -1, 'Cancel')
 
1131
        savesizer.Add(cancelButton, 0, wxALIGN_CENTER)
 
1132
 
 
1133
        defaultsButton = wxButton(panel, -1, 'Revert to Defaults')
 
1134
        savesizer.Add(defaultsButton, 0, wxALIGN_CENTER)
 
1135
        colsizer.Add(savesizer, 1, wxALIGN_CENTER)
 
1136
 
 
1137
        resizewarningtext=StaticText('None of these settings will take effect until the next time you start BitTorrent', self.FONT-2)
 
1138
        colsizer.Add(resizewarningtext, 1, wxALIGN_CENTER)
 
1139
 
 
1140
        border = wxBoxSizer(wxHORIZONTAL)
 
1141
        border.Add(colsizer, 1, wxEXPAND | wxALL, 4)
 
1142
        
 
1143
        panel.SetSizer(border)
 
1144
        panel.SetAutoLayout(True)
 
1145
 
 
1146
        def setDefaults(evt, self = self):
 
1147
          try:
 
1148
            if self.defaults['crypto_stealth']:
 
1149
                m = 3
 
1150
            elif self.defaults['crypto_only']:
 
1151
                m = 2
 
1152
            elif self.defaults['crypto_allowed']:
 
1153
                m = 1
 
1154
            else:
 
1155
                m = 0
 
1156
            self.cryptomode_data.SetSelection(m)
 
1157
            self.security_checkbox.SetValue(self.defaults['security'])
 
1158
            self.autokick_checkbox.SetValue(self.defaults['auto_kick'])
 
1159
          except:
 
1160
            self.parent.exception()
 
1161
 
 
1162
        def saveConfigs(evt, self = self):
 
1163
          try:
 
1164
            m = self.cryptomode_data.GetSelection()
 
1165
            self.cryptoConfig['crypto_stealth'] = int(m==3)
 
1166
            self.cryptoConfig['crypto_only'] = int(m>=2)
 
1167
            self.cryptoConfig['crypto_allowed'] = int(m>=1)
 
1168
            self.cryptoConfig['security']=int(self.security_checkbox.GetValue())
 
1169
            self.cryptoConfig['auto_kick']=int(self.autokick_checkbox.GetValue())
 
1170
            self.cryptoMenuBox.Close()
 
1171
          except:
 
1172
            self.parent.exception()
 
1173
 
 
1174
        def cancelConfigs(evt, self = self):            
 
1175
            self.cryptoMenuBox.Close()
 
1176
 
 
1177
        EVT_BUTTON(self.cryptoMenuBox, okButton.GetId(), saveConfigs)
 
1178
        EVT_BUTTON(self.cryptoMenuBox, cancelButton.GetId(), cancelConfigs)
 
1179
        EVT_BUTTON(self.cryptoMenuBox, defaultsButton.GetId(), setDefaults)
 
1180
 
 
1181
        self.cryptoMenuBox.Show ()
 
1182
        border.Fit(panel)
 
1183
        self.cryptoMenuBox.Fit()
 
1184
      except:
 
1185
        self.parent.exception()
 
1186
 
 
1187
 
 
1188
    def CloseCrypt(self):
 
1189
        if self.cryptMenuBox is not None:
 
1190
            try:
 
1191
                self.cryptMenuBox.Close()
 
1192
            except wxPyDeadObjectError, e:
 
1193
                self.cryptMenuBox = None
 
1194
 
 
1195