summaryrefslogtreecommitdiff
authordwmw2 <dwmw2>2002-09-20 13:06:34 (UTC)
committer dwmw2 <dwmw2>2002-09-20 13:06:34 (UTC)
commit37f294533b8288d341f8485649c7cc7d226dfc0d (patch) (unidiff)
tree70506c2a8da236ead92d985a75373264648c5cec
parentcc311b771843c289fadbe9a301e432963b906208 (diff)
downloadopie-37f294533b8288d341f8485649c7cc7d226dfc0d.zip
opie-37f294533b8288d341f8485649c7cc7d226dfc0d.tar.gz
opie-37f294533b8288d341f8485649c7cc7d226dfc0d.tar.bz2
Report ssh-agent failure and disable
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/sshkeys/sshkeys.cpp5
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
52SSHKeysApp::~SSHKeysApp() 52SSHKeysApp::~SSHKeysApp()
53{ 53{
54} 54}
55 55
56void SSHKeysApp::doRefreshListButton() 56void 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
86void SSHKeysApp::get_list_keys_output(OProcess *proc, char *buffer, int buflen) 89void 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: