Skip to content

Commit d0452ef

Browse files
committed
v0.3 + Re-creating SSH keys (changing server password, etc.)
1 parent d346da1 commit d0452ef

File tree

9 files changed

+83
-51
lines changed

9 files changed

+83
-51
lines changed

sshuttle-gui/backup/pingtrd.pas

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ implementation
2525

2626
uses unit1;
2727

28-
{ TRD }
28+
{ TRD }
2929

3030
procedure CheckPing.Execute;
3131
var
@@ -75,7 +75,7 @@ procedure CheckPing.ShowStatus;
7575
begin
7676
StartBtn.Caption := SStart;
7777
Shape1.Brush.Color := clYellow;
78-
end;
78+
end;
7979

8080
Shape1.Repaint;
8181
StartBtn.Repaint;

sshuttle-gui/backup/sshuttle_gui.lps

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
<Filename Value="sshuttle_gui.lpr"/>
4040
<IsPartOfProject Value="True"/>
4141
<EditorIndex Value="-1"/>
42-
<UsageCount Value="38"/>
42+
<UsageCount Value="39"/>
4343
</Unit>
4444
<Unit>
4545
<Filename Value="unit1.pas"/>
@@ -49,19 +49,21 @@
4949
<ResourceBaseClass Value="Form"/>
5050
<UnitName Value="Unit1"/>
5151
<IsVisibleTab Value="True"/>
52-
<TopLine Value="186"/>
53-
<CursorPos X="19" Y="210"/>
54-
<UsageCount Value="38"/>
52+
<TopLine Value="183"/>
53+
<CursorPos X="8" Y="159"/>
54+
<UsageCount Value="39"/>
5555
<Loaded Value="True"/>
5656
<LoadedDesigner Value="True"/>
5757
</Unit>
5858
<Unit>
5959
<Filename Value="pingtrd.pas"/>
6060
<IsPartOfProject Value="True"/>
6161
<UnitName Value="PingTRD"/>
62-
<EditorIndex Value="-1"/>
63-
<CursorPos X="15"/>
64-
<UsageCount Value="34"/>
62+
<EditorIndex Value="1"/>
63+
<TopLine Value="54"/>
64+
<CursorPos Y="76"/>
65+
<UsageCount Value="35"/>
66+
<Loaded Value="True"/>
6567
</Unit>
6668
<Unit>
6769
<Filename Value="start_trd.pas"/>
@@ -71,7 +73,7 @@
7173
<UsageCount Value="35"/>
7274
</Unit>
7375
</Units>
74-
<JumpHistory HistoryIndex="1">
76+
<JumpHistory HistoryIndex="4">
7577
<Position>
7678
<Filename Value="unit1.pas"/>
7779
<Caret Column="13"/>
@@ -80,6 +82,18 @@
8082
<Filename Value="unit1.pas"/>
8183
<Caret Line="199" Column="65" TopLine="174"/>
8284
</Position>
85+
<Position>
86+
<Filename Value="unit1.pas"/>
87+
<Caret Line="183" Column="21" TopLine="156"/>
88+
</Position>
89+
<Position>
90+
<Filename Value="unit1.pas"/>
91+
<Caret Line="173" Column="70" TopLine="172"/>
92+
</Position>
93+
<Position>
94+
<Filename Value="unit1.pas"/>
95+
<Caret Line="199" Column="61" TopLine="181"/>
96+
</Position>
8397
</JumpHistory>
8498
<RunParams>
8599
<FormatVersion Value="2"/>

sshuttle-gui/backup/unit1.pas

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ procedure TMainForm.FormCreate(Sender: TObject);
106106
begin
107107
MainForm.Caption := Application.Title;
108108

109-
//Каталог ключей и Рабочая директория
109+
//Каталог ключей и Рабочая директория (/root/.ssh/known_hosts создаётся автоматически)
110110
if not DirectoryExists('/root/.ssh') then MkDir('/root/.ssh');
111111
if not DirectoryExists('/etc/sshuttle-gui') then MkDir('/etc/sshuttle-gui');
112112

@@ -143,8 +143,6 @@ procedure TMainForm.AutoStartBoxChange(Sender: TObject);
143143

144144
procedure TMainForm.FormShow(Sender: TObject);
145145
begin
146-
//IniPropStorage1.Restore;
147-
148146
//Высота/Ширина формы (Auto)
149147
MainForm.Height := ClearBox.Top + ClearBox.Height + StaticText1.Height + 5;
150148
MainForm.Width := StartBtn.Left + StartBtn.Height + 25;
@@ -171,32 +169,35 @@ procedure TMainForm.StartBtnClick(Sender: TObject);
171169
if LatencyBox.Checked then Pars := Concat(Pars, ' ', LatencyBox.Caption);
172170

173171
//Старт/Стоп VPN (ip(6)tables -L -t nat) - используется таблица ip(6)tables
174-
//Цепочки очищаются после останова: systemctl stop sshuttle
172+
//Цепочки очищаются после останова: systemctl stop sshuttle + отмена зависших sshpass и очистка NAT
175173
if StartBtn.Caption = SStop then
176174
begin
177175
Shape1.Brush.Color := clYellow;
178-
StartProcess('killall sshpass; systemctl stop sshuttle.service');
176+
StartProcess('systemctl stop sshuttle.service; pidof sshpass && killall sshpass; iptables -t nat -F');
179177
end
180178
else
181179
try
180+
//Содаём пускач для systemd (Type=simple)
182181
S := TStringList.Create;
183182

184183
S.Add('#!/bin/bash');
185184
S.Add('');
186185

187-
//Содаём пускач для systemd (Type=simple)
188-
S.Add('# Пересоздание ключей в /root/.ssh/known_hosts (пароль мог изменяться)');
186+
S.Add('# Пересоздание ключей в /root/.ssh/known_hosts (пароль мог измениться)');
189187

190188
//Очистка прежних ключей (мог измениться пароль или хост)
191189
S.Add('sed -i "/^' + Trim(ServerEDit.Text) + '/d" /root/.ssh/known_hosts');
190+
S.Add('');
192191

193-
{ S.Add('if [[ -z $(ssh-keygen -F ' + Trim(ServerEDit.Text) + ') ]]; then'); }
192+
//Пересоздать ключи для хоста (пароль мог измениться) + отмена зависших sshpass и очистка NAT
193+
{ S.Add('pidof sshpass && killall sshpass; iptables -t nat -F; sshpass -p "' +
194+
Trim(PasswordEdit.Text) + '" ssh -o StrictHostKeyChecking=No ' +
195+
Trim(UserEdit.Text) + '@' + Trim(ServerEDit.Text) + ' -p ' +
196+
Trim(PortEdit.Text) + ' exit 0'); }
194197

195-
//Пересоздать ключи для хоста (пароль мог измениться) + отмена зависших sshpass
196-
S.Add('killall sshpass; sshpass -p "' + Trim(PasswordEdit.Text) +
197-
'" ssh -o StrictHostKeyChecking=No ' + Trim(UserEdit.Text) +
198-
// '@' + Trim(ServerEDit.Text) + ' -p ' + Trim(PortEdit.Text) + ' exit 0; fi');
199-
'@' + Trim(ServerEDit.Text) + ' -p ' + Trim(PortEdit.Text) + ' exit 0');
198+
S.Add('pidof sshpass && killall sshpass; iptables -t nat -F');
199+
S.Add('ssh-keyscan -p ' + Trim(PortEdit.Text) + ' ' +
200+
Trim(ServerEDit.Text) + ' >> /root/.ssh/known_hosts');
200201

201202
S.Add('');
202203

0 Bytes
Binary file not shown.
-368 Bytes
Binary file not shown.
0 Bytes
Binary file not shown.

sshuttle-gui/sshuttle_gui

0 Bytes
Binary file not shown.

sshuttle-gui/sshuttle_gui.lps

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
<Filename Value="sshuttle_gui.lpr"/>
4040
<IsPartOfProject Value="True"/>
4141
<EditorIndex Value="-1"/>
42-
<UsageCount Value="38"/>
42+
<UsageCount Value="40"/>
4343
</Unit>
4444
<Unit>
4545
<Filename Value="unit1.pas"/>
@@ -49,19 +49,18 @@
4949
<ResourceBaseClass Value="Form"/>
5050
<UnitName Value="Unit1"/>
5151
<IsVisibleTab Value="True"/>
52-
<TopLine Value="171"/>
53-
<CursorPos X="19" Y="178"/>
54-
<UsageCount Value="38"/>
52+
<UsageCount Value="40"/>
5553
<Loaded Value="True"/>
5654
<LoadedDesigner Value="True"/>
5755
</Unit>
5856
<Unit>
5957
<Filename Value="pingtrd.pas"/>
6058
<IsPartOfProject Value="True"/>
6159
<UnitName Value="PingTRD"/>
62-
<EditorIndex Value="-1"/>
60+
<EditorIndex Value="1"/>
6361
<CursorPos X="15"/>
64-
<UsageCount Value="34"/>
62+
<UsageCount Value="36"/>
63+
<Loaded Value="True"/>
6564
</Unit>
6665
<Unit>
6766
<Filename Value="start_trd.pas"/>
@@ -71,7 +70,7 @@
7170
<UsageCount Value="35"/>
7271
</Unit>
7372
</Units>
74-
<JumpHistory HistoryIndex="1">
73+
<JumpHistory HistoryIndex="4">
7574
<Position>
7675
<Filename Value="unit1.pas"/>
7776
<Caret Column="13"/>
@@ -80,6 +79,18 @@
8079
<Filename Value="unit1.pas"/>
8180
<Caret Line="199" Column="65" TopLine="174"/>
8281
</Position>
82+
<Position>
83+
<Filename Value="unit1.pas"/>
84+
<Caret Line="183" Column="21" TopLine="156"/>
85+
</Position>
86+
<Position>
87+
<Filename Value="unit1.pas"/>
88+
<Caret Line="173" Column="70" TopLine="172"/>
89+
</Position>
90+
<Position>
91+
<Filename Value="unit1.pas"/>
92+
<Caret Line="199" Column="61" TopLine="181"/>
93+
</Position>
8394
</JumpHistory>
8495
<RunParams>
8596
<FormatVersion Value="2"/>

sshuttle-gui/unit1.pas

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ procedure TMainForm.FormCreate(Sender: TObject);
106106
begin
107107
MainForm.Caption := Application.Title;
108108

109-
//Каталог ключей и Рабочая директория
109+
//Каталог ключей и Рабочая директория (/root/.ssh/known_hosts создаётся автоматически)
110110
if not DirectoryExists('/root/.ssh') then MkDir('/root/.ssh');
111111
if not DirectoryExists('/etc/sshuttle-gui') then MkDir('/etc/sshuttle-gui');
112112

@@ -143,8 +143,6 @@ procedure TMainForm.AutoStartBoxChange(Sender: TObject);
143143

144144
procedure TMainForm.FormShow(Sender: TObject);
145145
begin
146-
//IniPropStorage1.Restore;
147-
148146
//Высота/Ширина формы (Auto)
149147
MainForm.Height := ClearBox.Top + ClearBox.Height + StaticText1.Height + 5;
150148
MainForm.Width := StartBtn.Left + StartBtn.Height + 25;
@@ -159,10 +157,17 @@ procedure TMainForm.StartBtnClick(Sender: TObject);
159157
Pars: string;
160158
S: TStringList;
161159
begin
160+
//Форматируем содержимое полей
161+
UserEdit.Text := Trim(UserEdit.Text);
162+
PasswordEdit.Text := Trim(PasswordEdit.Text);
163+
ServerEdit.Text := Trim(ServerEdit.Text);
164+
PortEdit.Text := Trim(PortEdit.Text);
165+
162166
//Проверка на пустоту
163-
if (Trim(UserEdit.Text) = '') or (Trim(PasswordEdit.Text) = '') or
164-
(Trim(ServerEdit.Text) = '') or (Trim(PortEdit.Text) = '') then Exit;
167+
if (UserEdit.Text = '') or (PasswordEdit.Text = '') or
168+
(ServerEdit.Text = '') or (PortEdit.Text = '') then Exit;
165169

170+
//Сохранение параметров
166171
IniPropStorage1.Save;
167172

168173
//Дополнительные параметры
@@ -171,41 +176,43 @@ procedure TMainForm.StartBtnClick(Sender: TObject);
171176
if LatencyBox.Checked then Pars := Concat(Pars, ' ', LatencyBox.Caption);
172177

173178
//Старт/Стоп VPN (ip(6)tables -L -t nat) - используется таблица ip(6)tables
174-
//Цепочки очищаются после останова: systemctl stop sshuttle
179+
//Цепочки очищаются после останова: systemctl stop sshuttle + отмена зависших sshpass и очистка NAT
175180
if StartBtn.Caption = SStop then
176181
begin
177182
Shape1.Brush.Color := clYellow;
178-
StartProcess('systemctl stop sshuttle.service');
183+
StartProcess('systemctl stop sshuttle.service; pidof sshpass && killall sshpass; iptables -t nat -F');
179184
end
180185
else
181186
try
187+
//Содаём пускач для systemd (Type=simple)
182188
S := TStringList.Create;
183189

184190
S.Add('#!/bin/bash');
185191
S.Add('');
186192

187-
//Содаём пускач для systemd (Type=simple)
188-
S.Add('# Пересоздание ключей в /root/.ssh/known_hosts (пароль мог изменяться)');
193+
S.Add('# Пересоздать ключи в /root/.ssh/known_hosts (параметры подключения могли измениться)');
189194

190195
//Очистка прежних ключей (мог измениться пароль или хост)
191-
S.Add('sed -i "/^' + Trim(ServerEDit.Text) + '/d" /root/.ssh/known_hosts');
196+
S.Add('sed -i "/^' + ServerEDit.Text + '/d" /root/.ssh/known_hosts');
197+
S.Add('');
192198

193-
{ S.Add('if [[ -z $(ssh-keygen -F ' + Trim(ServerEDit.Text) + ') ]]; then'); }
199+
//Пересоздать ключи для хоста (пароль мог измениться) + отмена зависших sshpass и очистка NAT
200+
{ S.Add('pidof sshpass && killall sshpass; iptables -t nat -F; sshpass -p "' +
201+
Trim(PasswordEdit.Text) + '" ssh -o StrictHostKeyChecking=No ' +
202+
Trim(UserEdit.Text) + '@' + Trim(ServerEDit.Text) + ' -p ' +
203+
Trim(PortEdit.Text) + ' exit 0'); }
194204

195-
//Пересоздать ключи для хоста (пароль мог измениться) + отмена зависших sshpass
196-
S.Add('killall sshpass; sshpass -p "' + Trim(PasswordEdit.Text) +
197-
'" ssh -o StrictHostKeyChecking=No ' + Trim(UserEdit.Text) +
198-
// '@' + Trim(ServerEDit.Text) + ' -p ' + Trim(PortEdit.Text) + ' exit 0; fi');
199-
'@' + Trim(ServerEDit.Text) + ' -p ' + Trim(PortEdit.Text) + ' exit 0');
205+
S.Add('pidof sshpass && killall sshpass; iptables -t nat -F');
206+
S.Add('ssh-keyscan -p ' + PortEdit.Text + ' ' + ServerEDit.Text +
207+
' >> /root/.ssh/known_hosts');
200208

201209
S.Add('');
202210

203211
S.Add('# Запуск vpn');
204212
S.Add('[[ "$?" -eq "0" ]] && \');
205-
S.Add('sshpass -p "' + Trim(PasswordEdit.Text) + '" sshuttle --dns --remote ' +
206-
Trim(UserEdit.Text) + '@' + Trim(ServerEDit.Text) + ':' +
207-
Trim(PortEdit.Text) + ' -x ' + Trim(ServerEDit.Text) + ':' +
208-
Trim(PortEdit.Text) + ' 0/0 ' + Trim(Pars));
213+
S.Add('sshpass -p "' + PasswordEdit.Text + '" sshuttle --dns --remote ' +
214+
UserEdit.Text + '@' + ServerEDit.Text + ':' + PortEdit.Text +
215+
' -x ' + ServerEDit.Text + ':' + PortEdit.Text + ' 0/0 ' + Trim(Pars));
209216

210217
S.Add('exit 0;');
211218

@@ -219,5 +226,4 @@ procedure TMainForm.StartBtnClick(Sender: TObject);
219226
end;
220227
end;
221228

222-
223229
end.

0 commit comments

Comments
 (0)