summaryrefslogtreecommitdiff
path: root/noncore
authorzecke <zecke>2004-11-15 15:37:47 (UTC)
committer zecke <zecke>2004-11-15 15:37:47 (UTC)
commit0d5b9141a5bda1406c513d174dbce95eb5ed0a97 (patch) (unidiff)
treeb15b19e2b7e5bec80d7570d10545b51bac9a9a36 /noncore
parentef26112d97cd5573642a0f00fd54347229857402 (diff)
downloadopie-0d5b9141a5bda1406c513d174dbce95eb5ed0a97.zip
opie-0d5b9141a5bda1406c513d174dbce95eb5ed0a97.tar.gz
opie-0d5b9141a5bda1406c513d174dbce95eb5ed0a97.tar.bz2
Move the method out
Diffstat (limited to 'noncore') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/sshkeys/sshkeys.cpp15
1 files changed, 11 insertions, 4 deletions
diff --git a/noncore/settings/sshkeys/sshkeys.cpp b/noncore/settings/sshkeys/sshkeys.cpp
index d8b1014..57118c9 100644
--- a/noncore/settings/sshkeys/sshkeys.cpp
+++ b/noncore/settings/sshkeys/sshkeys.cpp
@@ -1,148 +1,155 @@
1/* 1/*
2 * ssh-agent key manipulation utility 2 * ssh-agent key manipulation utility
3 * 3 *
4 * (C) 2002 David Woodhouse <dwmw2@infradead.org> 4 * (C) 2002 David Woodhouse <dwmw2@infradead.org>
5 * 5 *
6 * This program is free software; you can redistribute it and/or modify 6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by 7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or 8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version. 9 * (at your option) any later version.
10 * 10 *
11 * This program is distributed in the hope that it will be useful, 11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details. 14 * GNU General Public License for more details.
15 * 15 *
16 * You should have received a copy of the GNU General Public License 16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software 17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 * 19 *
20 */ 20 */
21#include "sshkeys.h" 21#include "sshkeys.h"
22 22
23#include <qpe/qpeapplication.h> 23#include <qpe/qpeapplication.h>
24#include <qdir.h> 24#include <qdir.h>
25#include <qfile.h> 25#include <qfile.h>
26#include <qmultilineedit.h> 26#include <qmultilineedit.h>
27#include <qpushbutton.h> 27#include <qpushbutton.h>
28#include <qlistview.h> 28#include <qlistview.h>
29#include <qcombobox.h> 29#include <qcombobox.h>
30 30
31#include <sys/types.h> 31#include <sys/types.h>
32#include <sys/stat.h> 32#include <sys/stat.h>
33#include <fcntl.h> 33#include <fcntl.h>
34#include <sys/ioctl.h> 34#include <sys/ioctl.h>
35#include <stdlib.h> 35#include <stdlib.h>
36#include <unistd.h> 36#include <unistd.h>
37#include <stdio.h> 37#include <stdio.h>
38#include <ctype.h> 38#include <ctype.h>
39 39
40using namespace Opie::Core; 40using namespace Opie::Core;
41static char *keynames[] = { "identity", "id_rsa", "id_dsa" }; 41static const char *keynames[] = { "identity", "id_rsa", "id_dsa" };
42 42
43SSHKeysApp::SSHKeysApp( QWidget* parent, const char* name, WFlags fl ) 43
44 : SSHKeysBase( parent, name, fl ) 44static void detachTerminal() {
45{
46 /* If we had a controlling TTY, detach from it. 45 /* If we had a controlling TTY, detach from it.
47 This is to ensure that SSH uses ssh-askpass */ 46 This is to ensure that SSH uses ssh-askpass */
48 int fd = open("/dev/tty", O_RDONLY); 47 int fd = open("/dev/tty", O_RDONLY);
49 if (fd != -1) { 48 if (fd != -1) {
50 ioctl(fd, TIOCNOTTY, NULL); 49 ioctl(fd, TIOCNOTTY, NULL);
51 close(fd); 50 close(fd);
52 } 51 }
52}
53
54
55SSHKeysApp::SSHKeysApp( QWidget* parent, const char* name, WFlags fl )
56 : SSHKeysBase( parent, name, fl )
57{
58 detachTerminal();
59
53 60
54 QCString home = QFile::encodeName( QDir::homeDirPath() ); 61 QCString home = QFile::encodeName( QDir::homeDirPath() );
55 unsigned i; 62 unsigned i;
56 63
57 connect(AddButton, SIGNAL(clicked()), this, SLOT(doAddButton())); 64 connect(AddButton, SIGNAL(clicked()), this, SLOT(doAddButton()));
58 connect(RefreshListButton, SIGNAL(clicked()), this, SLOT(doRefreshListButton())); 65 connect(RefreshListButton, SIGNAL(clicked()), this, SLOT(doRefreshListButton()));
59 connect(RemoveAllButton, SIGNAL(clicked()), this, SLOT(doRemoveAllButton())); 66 connect(RemoveAllButton, SIGNAL(clicked()), this, SLOT(doRemoveAllButton()));
60 67
61 connect(&addprocess, SIGNAL(receivedStdout(Opie::Core::OProcess*,char*,int)), 68 connect(&addprocess, SIGNAL(receivedStdout(Opie::Core::OProcess*,char*,int)),
62 this, SLOT(log_sshadd_output(Opie::Core::OProcess*,char*,int))); 69 this, SLOT(log_sshadd_output(Opie::Core::OProcess*,char*,int)));
63 connect(&addprocess, SIGNAL(receivedStderr(Opie::Core::OProcess*,char*,int)), 70 connect(&addprocess, SIGNAL(receivedStderr(Opie::Core::OProcess*,char*,int)),
64 this, SLOT(log_sshadd_stderr(Opie::Core::OProcess*,char*,int))); 71 this, SLOT(log_sshadd_stderr(Opie::Core::OProcess*,char*,int)));
65 connect(&addprocess, SIGNAL(processExited(Opie::Core::OProcess*)), 72 connect(&addprocess, SIGNAL(processExited(Opie::Core::OProcess*)),
66 this, SLOT(ssh_add_exited(Opie::Core::OProcess*))); 73 this, SLOT(ssh_add_exited(Opie::Core::OProcess*)));
67 74
68 connect(KeyFileName, SIGNAL(textChanged(const QString&)), 75 connect(KeyFileName, SIGNAL(textChanged(const QString&)),
69 this, SLOT(add_text_changed(const QString&))); 76 this, SLOT(add_text_changed(const QString&)));
70 77
71 if (home) { 78 if (home) {
72 for (i = 0; i < sizeof(keynames)/sizeof(keynames[0]); i++) { 79 for (i = 0; i < sizeof(keynames)/sizeof(keynames[0]); i++) {
73 char thiskeyname[32]; 80 char thiskeyname[32];
74 81
75 thiskeyname[31] = 0; 82 thiskeyname[31] = 0;
76 snprintf(thiskeyname, 31, "%s/.ssh/%s", home.data(), keynames[i]); 83 snprintf(thiskeyname, 31, "%s/.ssh/%s", home.data(), keynames[i]);
77 if (!access(thiskeyname, R_OK)) { 84 if (!access(thiskeyname, R_OK)) {
78 KeyFileName->insertItem(thiskeyname); 85 KeyFileName->insertItem(thiskeyname);
79 } 86 }
80 } 87 }
81 } 88 }
82 89
83 doRefreshListButton(); 90 doRefreshListButton();
84} 91}
85 92
86SSHKeysApp::~SSHKeysApp() 93SSHKeysApp::~SSHKeysApp()
87{ 94{
88} 95}
89 96
90void SSHKeysApp::doRefreshListButton() 97void SSHKeysApp::doRefreshListButton()
91{ 98{
92 OProcess sshadd_process; 99 OProcess sshadd_process;
93 QListViewItem *t = KeyList->firstChild(); 100 QListViewItem *t = KeyList->firstChild();
94 101
95 while(t) { 102 while(t) {
96 QListViewItem *next = t->nextSibling(); 103 QListViewItem *next = t->nextSibling();
97 KeyList->takeItem(t); 104 KeyList->takeItem(t);
98 delete(t); 105 delete(t);
99 t = next; 106 t = next;
100 } 107 }
101 108
102 connect(&sshadd_process, SIGNAL(receivedStdout(Opie::Core::OProcess*,char*,int)), 109 connect(&sshadd_process, SIGNAL(receivedStdout(Opie::Core::OProcess*,char*,int)),
103 this, SLOT(get_list_keys_output(Opie::Core::OProcess*,char*,int))); 110 this, SLOT(get_list_keys_output(Opie::Core::OProcess*,char*,int)));
104 connect(&sshadd_process, SIGNAL(receivedStderr(Opie::Core::OProcess*,char*,int)), 111 connect(&sshadd_process, SIGNAL(receivedStderr(Opie::Core::OProcess*,char*,int)),
105 this, SLOT(log_sshadd_stderr(Opie::Core::OProcess*,char*,int))); 112 this, SLOT(log_sshadd_stderr(Opie::Core::OProcess*,char*,int)));
106 113
107 keystate = KeySize; 114 keystate = KeySize;
108 incoming_keyname=""; 115 incoming_keyname="";
109 incoming_keysize=""; 116 incoming_keysize="";
110 incoming_keyfingerprint=""; 117 incoming_keyfingerprint="";
111 118
112// log_text("Running ssh-add -l"); 119// log_text("Running ssh-add -l");
113 sshadd_process << "ssh-add" << "-l"; 120 sshadd_process << "ssh-add" << "-l";
114 bool ret = sshadd_process.start(OProcess::Block, OProcess::AllOutput); 121 bool ret = sshadd_process.start(OProcess::Block, OProcess::AllOutput);
115 if (!ret) { 122 if (!ret) {
116 log_text(tr("Error running ssh-add")); 123 log_text(tr("Error running ssh-add"));
117 return; 124 return;
118 } 125 }
119 flush_sshadd_output(); 126 flush_sshadd_output();
120 if (sshadd_process.exitStatus() == 2) { 127 if (sshadd_process.exitStatus() == 2) {
121 setEnabled(FALSE); 128 setEnabled(FALSE);
122 } 129 }
123} 130}
124 131
125void SSHKeysApp::get_list_keys_output(OProcess *proc, char *buffer, int buflen) 132void SSHKeysApp::get_list_keys_output(OProcess *proc, char *buffer, int buflen)
126{ 133{
127 int i; 134 int i;
128 (void) proc; 135 (void) proc;
129 136
130 for (i=0; i<buflen; i++) { 137 for (i=0; i<buflen; i++) {
131 switch(keystate) { 138 switch(keystate) {
132 case Noise: 139 case Noise:
133 noise: 140 noise:
134 if (buffer[i] == '\n') { 141 if (buffer[i] == '\n') {
135 log_text(incoming_noise.local8Bit()); 142 log_text(incoming_noise.local8Bit());
136 incoming_noise = ""; 143 incoming_noise = "";
137 keystate = KeySize; 144 keystate = KeySize;
138 } else { 145 } else {
139 incoming_noise += buffer[i]; 146 incoming_noise += buffer[i];
140 } 147 }
141 break; 148 break;
142 149
143 case KeySize: 150 case KeySize:
144 if (isdigit(buffer[i])) { 151 if (isdigit(buffer[i])) {
145 incoming_keysize += buffer[i]; 152 incoming_keysize += buffer[i];
146 } else if (buffer[i] == ' ') { 153 } else if (buffer[i] == ' ') {
147 keystate = KeyFingerprint; 154 keystate = KeyFingerprint;
148 } else { 155 } else {