Skip to content

Commit eaedbb9

Browse files
committed
ConfigParser把key转小写的bug,feed_child兼容性问题,添加css效果
1 parent 14c1367 commit eaedbb9

File tree

7 files changed

+75
-12
lines changed

7 files changed

+75
-12
lines changed

css.css

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/* 2019年 05月 17日 星期五 00:11:44 CST */
2+
3+
checkbutton:checked {
4+
background-color: #f6d488;
5+
border-radius: 6px;
6+
transition: 250ms ease-in-out;
7+
}
8+
9+
button {
10+
border-radius: 3px;
11+
border-width: 1px;
12+
border-style: solid;
13+
}
14+
15+
button:active {
16+
transition: 250ms ease-in-out;
17+
border-style: inset;
18+
}
19+

handlers.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ def build_all(self, button):
3838
# print(_final_line)
3939
if _final_line is not None:
4040
self.m._cmd_entry.set_text(_final_line.strip())
41-
self.m._cmd_entry.grab_focus()
41+
# self.m._cmd_entry.grab_focus()
4242

4343
def run_cmdline(self, button):
4444
'''
@@ -50,9 +50,13 @@ def run_cmdline(self, button):
5050
if IS_POSIX:
5151
self.w.main_notebook.next_page()
5252
_cmdline_str = '%s %s\n' % (sqlmap_path, _sqlmap_opts)
53-
# print(_cmdline_str)
53+
# print(_cmdline_str, len(_cmdline_str.encode('utf8')))
5454
# self.m._page2_cmdline_str_label.set_text("running: " + _cmdline_str)
55-
self.m._page2_terminal.feed_child(_cmdline_str, len(_cmdline_str))
55+
if Vte.MAJOR_VERSION >= 0 and Vte.MINOR_VERSION > 52:
56+
self.m._page2_terminal.feed_child_binary(_cmdline_str.encode('utf8'))
57+
else:
58+
# 旧版本的api, len()还要用encode后的长度
59+
self.m._page2_terminal.feed_child(_cmdline_str, len(_cmdline_str.encode('utf8')))
5660
self.m._page2_terminal.grab_focus()
5761

5862
def respawn_terminal(self, button):
@@ -757,9 +761,19 @@ def _escape_quote(self, widget_text):
757761

758762

759763
def main():
764+
from widgets import d
760765
from sqlmap_gtk import Window
761766

762767
win = Window()
768+
769+
css_provider = g.CssProvider.new()
770+
css_provider.load_from_path('css.css')
771+
g.StyleContext.add_provider_for_screen(
772+
d.Screen.get_default(),
773+
css_provider,
774+
g.STYLE_PROVIDER_PRIORITY_APPLICATION
775+
)
776+
763777
win.connect('destroy', g.main_quit)
764778
win.show_all()
765779
g.main()

model.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,7 @@ def __init__(self):
296296
self._page1_general_charset_entry = et()
297297
self._page1_general_encoding_ckbtn = cb('字符编码(用于数据获取)')
298298
self._page1_general_encoding_entry = et()
299-
self._page1_general_session_file_ckbtn = cb('指定会话文件')
299+
self._page1_general_session_file_ckbtn = cb('载入会话文件')
300300
self._page1_general_session_file_entry = FileEntry()
301301
self._page1_general_session_file_chooser = btn.new_with_label('打开')
302302
self._page1_general_output_dir_ckbtn = cb('输出的保存目录')

opts_gtk.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ def _build_page1_setting_tech(self, m):
138138
_row7.pack_end(m._tech_area_second_url_entry, True, True, 5)
139139

140140
_row8 = Box()
141-
_row8.pack_start(m._tech_area_second_req_ckbtn, True, True, 5)
141+
_row8.pack_start(m._tech_area_second_req_ckbtn, False, True, 5)
142142

143143
_row9 = Box()
144144
m._tech_area_second_req_chooser.connect(
@@ -295,7 +295,7 @@ def _build_page1_setting_inject(self, m):
295295
# set_active(True)为选中状态
296296
m._inject_area_skip_static_ckbtn.set_active(True)
297297

298-
_row2.pack_start(m._inject_area_skip_static_ckbtn, True, True, 5)
298+
_row2.pack_start(m._inject_area_skip_static_ckbtn, False, True, 5)
299299

300300
_row3 = Box()
301301
_row3.pack_start(m._inject_area_prefix_ckbtn, False, True, 5)
@@ -1175,18 +1175,26 @@ def _build_page1_other_general(self, m):
11751175

11761176

11771177
def main():
1178+
from widgets import d
11781179
from model import Model
11791180
from handlers import Handler
11801181

11811182
win = g.Window(title = 'sqlmap-options')
1182-
m = Model()
11831183

1184+
css_provider = g.CssProvider.new()
1185+
css_provider.load_from_path('css.css')
1186+
g.StyleContext.add_provider_for_screen(
1187+
d.Screen.get_default(),
1188+
css_provider,
1189+
g.STYLE_PROVIDER_PRIORITY_APPLICATION
1190+
)
1191+
1192+
m = Model()
11841193
n = Notebook(m, Handler(win, m))
11851194
win.add(n)
11861195

11871196
win.connect('destroy', g.main_quit)
11881197
win.show_all()
1189-
11901198
g.main()
11911199

11921200

session.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,14 @@ def __init__(self, m):
1414
'''
1515
m: model.Model
1616
'''
17-
self._cfg = ConfigParser()
1817
self.m = m
1918

19+
self._cfg = ConfigParser()
20+
# https://stackoverflow.com/questions/19359556/configparser-reads-capital-keys-and-make-them-lower-case
21+
# 所有选项的key, 都会传给optionxform(), 该方法会将key转成小写!
22+
# 将optionxform替换成str, 表示不做转换
23+
self._cfg.optionxform = str
24+
2025
def save_to_tmp(self):
2126
self._save_to_tmp_target()
2227
self._save_to_tmp_ckbtn()

sqlmap_gtk.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -529,10 +529,18 @@ def _build_page6(self):
529529

530530
def main():
531531
win = Window()
532+
533+
css_provider = g.CssProvider.new()
534+
css_provider.load_from_path('css.css')
535+
g.StyleContext.add_provider_for_screen(
536+
d.Screen.get_default(),
537+
css_provider,
538+
g.STYLE_PROVIDER_PRIORITY_APPLICATION
539+
)
540+
532541
win.connect('destroy', lambda x: win.on_window_destroy())
533542
# win.maximize()
534543
win.show_all()
535-
536544
g.main()
537545

538546

tooltips.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -624,10 +624,19 @@ def _set_tooltip(self, tooltip, *widgets):
624624

625625

626626
def main():
627-
from widgets import g
628-
from sqlmap import Window
627+
from widgets import d, g
628+
from sqlmap_gtk import Window
629629

630630
win = Window()
631+
632+
css_provider = g.CssProvider.new()
633+
css_provider.load_from_path('css.css')
634+
g.StyleContext.add_provider_for_screen(
635+
d.Screen.get_default(),
636+
css_provider,
637+
g.STYLE_PROVIDER_PRIORITY_APPLICATION
638+
)
639+
631640
win.connect('destroy', g.main_quit)
632641
win.show_all()
633642
g.main()

0 commit comments

Comments
 (0)