author | dwmw2 <dwmw2> | 2002-09-20 13:06:34 (UTC) |
---|---|---|
committer | dwmw2 <dwmw2> | 2002-09-20 13:06:34 (UTC) |
commit | 37f294533b8288d341f8485649c7cc7d226dfc0d (patch) (unidiff) | |
tree | 70506c2a8da236ead92d985a75373264648c5cec | |
parent | cc311b771843c289fadbe9a301e432963b906208 (diff) | |
download | opie-37f294533b8288d341f8485649c7cc7d226dfc0d.zip opie-37f294533b8288d341f8485649c7cc7d226dfc0d.tar.gz opie-37f294533b8288d341f8485649c7cc7d226dfc0d.tar.bz2 |
Report ssh-agent failure and disable
-rw-r--r-- | noncore/settings/sshkeys/sshkeys.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/noncore/settings/sshkeys/sshkeys.cpp b/noncore/settings/sshkeys/sshkeys.cpp index 701356a..3b4dce6 100644 --- a/noncore/settings/sshkeys/sshkeys.cpp +++ b/noncore/settings/sshkeys/sshkeys.cpp | |||
@@ -35,97 +35,100 @@ SSHKeysApp::SSHKeysApp( QWidget* parent, const char* name, WFlags fl ) | |||
35 | this, SLOT(add_text_changed(const QString&))); | 35 | this, SLOT(add_text_changed(const QString&))); |
36 | 36 | ||
37 | if (home) { | 37 | if (home) { |
38 | for (i = 0; i < sizeof(keynames)/sizeof(keynames[0]); i++) { | 38 | for (i = 0; i < sizeof(keynames)/sizeof(keynames[0]); i++) { |
39 | char thiskeyname[32]; | 39 | char thiskeyname[32]; |
40 | 40 | ||
41 | thiskeyname[31] = 0; | 41 | thiskeyname[31] = 0; |
42 | snprintf(thiskeyname, 31, "%s/.ssh/%s", home, keynames[i]); | 42 | snprintf(thiskeyname, 31, "%s/.ssh/%s", home, keynames[i]); |
43 | if (!access(thiskeyname, R_OK)) { | 43 | if (!access(thiskeyname, R_OK)) { |
44 | KeyFileName->insertItem(thiskeyname); | 44 | KeyFileName->insertItem(thiskeyname); |
45 | } | 45 | } |
46 | } | 46 | } |
47 | } | 47 | } |
48 | 48 | ||
49 | doRefreshListButton(); | 49 | doRefreshListButton(); |
50 | } | 50 | } |
51 | 51 | ||
52 | SSHKeysApp::~SSHKeysApp() | 52 | SSHKeysApp::~SSHKeysApp() |
53 | { | 53 | { |
54 | } | 54 | } |
55 | 55 | ||
56 | void SSHKeysApp::doRefreshListButton() | 56 | void SSHKeysApp::doRefreshListButton() |
57 | { | 57 | { |
58 | OProcess sshadd_process; | 58 | OProcess sshadd_process; |
59 | QListViewItem *t = KeyList->firstChild(); | 59 | QListViewItem *t = KeyList->firstChild(); |
60 | 60 | ||
61 | while(t) { | 61 | while(t) { |
62 | QListViewItem *next = t->nextSibling(); | 62 | QListViewItem *next = t->nextSibling(); |
63 | KeyList->takeItem(t); | 63 | KeyList->takeItem(t); |
64 | delete(t); | 64 | delete(t); |
65 | t = next; | 65 | t = next; |
66 | } | 66 | } |
67 | 67 | ||
68 | connect(&sshadd_process, SIGNAL(receivedStdout(OProcess*,char*,int)), | 68 | connect(&sshadd_process, SIGNAL(receivedStdout(OProcess*,char*,int)), |
69 | this, SLOT(get_list_keys_output(OProcess*,char*,int))); | 69 | this, SLOT(get_list_keys_output(OProcess*,char*,int))); |
70 | 70 | ||
71 | keystate = KeySize; | 71 | keystate = KeySize; |
72 | incoming_keyname=""; | 72 | incoming_keyname=""; |
73 | incoming_keysize=""; | 73 | incoming_keysize=""; |
74 | incoming_keyfingerprint=""; | 74 | incoming_keyfingerprint=""; |
75 | 75 | ||
76 | //log_text("Running ssh-add -l"); | 76 | //log_text("Running ssh-add -l"); |
77 | sshadd_process << "ssh-add" << "-l"; | 77 | sshadd_process << "ssh-add" << "-l"; |
78 | bool ret = sshadd_process.start(OProcess::Block, OProcess::AllOutput); | 78 | bool ret = sshadd_process.start(OProcess::Block, OProcess::AllOutput); |
79 | if (!ret) { | 79 | if (!ret) { |
80 | log_text(tr("Error running ssh-add")); | 80 | log_text(tr("Error running ssh-add")); |
81 | return; | 81 | return; |
82 | } | 82 | } |
83 | 83 | if (sshadd_process.exitStatus() == 2) { | |
84 | log_text(tr("Connection to ssh-agent failed")); | ||
85 | setEnabled(FALSE); | ||
86 | } | ||
84 | } | 87 | } |
85 | 88 | ||
86 | void SSHKeysApp::get_list_keys_output(OProcess *proc, char *buffer, int buflen) | 89 | void SSHKeysApp::get_list_keys_output(OProcess *proc, char *buffer, int buflen) |
87 | { | 90 | { |
88 | int i; | 91 | int i; |
89 | (void) proc; | 92 | (void) proc; |
90 | 93 | ||
91 | for (i=0; i<buflen; i++) { | 94 | for (i=0; i<buflen; i++) { |
92 | switch(keystate) { | 95 | switch(keystate) { |
93 | case Noise: | 96 | case Noise: |
94 | noise: | 97 | noise: |
95 | if (buffer[i] == '\n') { | 98 | if (buffer[i] == '\n') { |
96 | log_text(incoming_noise.local8Bit()); | 99 | log_text(incoming_noise.local8Bit()); |
97 | incoming_noise = ""; | 100 | incoming_noise = ""; |
98 | keystate = KeySize; | 101 | keystate = KeySize; |
99 | } else { | 102 | } else { |
100 | incoming_noise += buffer[i]; | 103 | incoming_noise += buffer[i]; |
101 | } | 104 | } |
102 | break; | 105 | break; |
103 | 106 | ||
104 | case KeySize: | 107 | case KeySize: |
105 | if (isdigit(buffer[i])) { | 108 | if (isdigit(buffer[i])) { |
106 | incoming_keysize += buffer[i]; | 109 | incoming_keysize += buffer[i]; |
107 | } else if (buffer[i] == ' ') { | 110 | } else if (buffer[i] == ' ') { |
108 | keystate = KeyFingerprint; | 111 | keystate = KeyFingerprint; |
109 | } else { | 112 | } else { |
110 | incoming_keysize = ""; | 113 | incoming_keysize = ""; |
111 | incoming_noise = ""; | 114 | incoming_noise = ""; |
112 | keystate = Noise; | 115 | keystate = Noise; |
113 | goto noise; | 116 | goto noise; |
114 | } | 117 | } |
115 | break; | 118 | break; |
116 | 119 | ||
117 | case KeyFingerprint: | 120 | case KeyFingerprint: |
118 | if (isxdigit(buffer[i]) || buffer[i] == ':') { | 121 | if (isxdigit(buffer[i]) || buffer[i] == ':') { |
119 | incoming_keyfingerprint += buffer[i]; | 122 | incoming_keyfingerprint += buffer[i]; |
120 | } else if (buffer[i] == ' ') { | 123 | } else if (buffer[i] == ' ') { |
121 | keystate = KeyName; | 124 | keystate = KeyName; |
122 | } else { | 125 | } else { |
123 | incoming_keysize = ""; | 126 | incoming_keysize = ""; |
124 | incoming_keyfingerprint = ""; | 127 | incoming_keyfingerprint = ""; |
125 | incoming_noise = ""; | 128 | incoming_noise = ""; |
126 | keystate = Noise; | 129 | keystate = Noise; |
127 | goto noise; | 130 | goto noise; |
128 | } | 131 | } |
129 | break; | 132 | break; |
130 | 133 | ||
131 | case KeyName: | 134 | case KeyName: |