summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opie-smb/qsmb.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/noncore/net/opie-smb/qsmb.cpp b/noncore/net/opie-smb/qsmb.cpp
index fbe1c5c..a219c58 100644
--- a/noncore/net/opie-smb/qsmb.cpp
+++ b/noncore/net/opie-smb/qsmb.cpp
@@ -1,373 +1,373 @@
1#include "qsmb.h" 1#include "qsmb.h"
2#include <qpushbutton.h> 2#include <qpushbutton.h>
3#include <qpe/qpeapplication.h> 3#include <qpe/qpeapplication.h>
4 4
5#include <string.h> 5#include <string.h>
6#include <qstring.h> 6#include <qstring.h>
7#include <qstringlist.h> 7#include <qstringlist.h>
8#include <qdir.h> 8#include <qdir.h>
9#include <qfileinfo.h> 9#include <qfileinfo.h>
10 10
11#include <qpe/process.h> 11#include <qpe/process.h>
12#include <qlabel.h> 12#include <qlabel.h>
13#include <qlineedit.h> 13#include <qlineedit.h>
14#include <qcombobox.h> 14#include <qcombobox.h>
15#include <qstringlist.h> 15#include <qstringlist.h>
16#include <qcheckbox.h> 16#include <qcheckbox.h>
17#include <qtextview.h> 17#include <qtextview.h>
18#include <qmessagebox.h> 18#include <qmessagebox.h>
19#include <qtextstream.h> 19#include <qtextstream.h>
20 20
21 21
22#include <pthread.h> 22#include <pthread.h>
23#include <signal.h> 23#include <signal.h>
24#include <ctype.h> 24#include <ctype.h>
25 25
26 26
27#include <netinet/in.h> 27#include <netinet/in.h>
28#include <arpa/inet.h> 28#include <arpa/inet.h>
29 29
30#include <rpc/clnt.h> 30#include <rpc/clnt.h>
31 31
32 32
33#include <opie2/odebug.h> 33#include <opie2/odebug.h>
34using namespace Opie::Core; 34using namespace Opie::Core;
35 35
36 36
37Qsmb::Qsmb( QWidget* parent, const char* name, WFlags fl ) 37Qsmb::Qsmb( QWidget* parent, const char* name, WFlags fl )
38 : FormQPESMBBase( parent, name, fl ) 38 : FormQPESMBBase( parent, name, fl )
39{ 39{
40 connect(CBHost, SIGNAL(activated(int)), this, SLOT(hostSelected(int))); 40 connect(CBHost, SIGNAL(activated(int)), this, SLOT(hostSelected(int)));
41 connect(DoItBtn, SIGNAL(clicked()), this, SLOT(DoItClicked())); 41 connect(DoItBtn, SIGNAL(clicked()), this, SLOT(DoItClicked()));
42 connect(BtnScan, SIGNAL(clicked()), this, SLOT(scanClicked())); 42 connect(BtnScan, SIGNAL(clicked()), this, SLOT(scanClicked()));
43 connect(BtnClear, SIGNAL(clicked()), this, SLOT(clear())); 43 connect(BtnClear, SIGNAL(clicked()), this, SLOT(clear()));
44 44
45 mountpt->insertItem("/mnt/samba1",-1); 45 mountpt->insertItem("/mnt/samba1",-1);
46 mountpt->insertItem("/mnt/samba2",-1); 46 mountpt->insertItem("/mnt/samba2",-1);
47 mountpt->insertItem("/mnt/samba3",-1); 47 mountpt->insertItem("/mnt/samba3",-1);
48 48
49 top_element = NULL; 49 top_element = NULL;
50 scanning = false; 50 scanning = false;
51} 51}
52 52
53Qsmb::~Qsmb() 53Qsmb::~Qsmb()
54{ 54{
55} 55}
56 56
57void Qsmb::clear() 57void Qsmb::clear()
58{ 58{
59 if (scanning) return; 59 if (scanning) return;
60 ListViewScan->clear(); 60 ListViewScan->clear();
61 TextViewOutput->setText(""); 61 TextViewOutput->setText("");
62 top_element = NULL; 62 top_element = NULL;
63} 63}
64 64
65void Qsmb::scanClicked() 65void Qsmb::scanClicked()
66{ 66{
67 if (scanning) return; 67 if (scanning) return;
68 pthread_create(&tpid, NULL, runit, (void *)this); 68 pthread_create(&tpid, NULL, runit, (void *)this);
69} 69}
70 70
71void Qsmb::DoItClicked() 71void Qsmb::DoItClicked()
72{ 72{
73 73
74 if(! ListViewScan->selectedItem()) { 74 if(! ListViewScan->selectedItem()) {
75 QMessageBox::warning(this, tr("Error"),tr("<p>No share selected!</p>")); 75 QMessageBox::warning(this, tr("Error"),tr("<p>No share selected!</p>"));
76 return; 76 return;
77 } 77 }
78 if (scanning) return; 78 if (scanning) return;
79 pthread_create(&tpid, NULL, runitm, (void *)this); 79 pthread_create(&tpid, NULL, runitm, (void *)this);
80} 80}
81 81
82void* runit(void* arg) 82void* runit(void* arg)
83{ 83{
84 Qsmb* caller = (Qsmb*)arg; 84 Qsmb* caller = (Qsmb*)arg;
85 caller->scan(); 85 caller->scan();
86 return(0); 86 return(0);
87} 87}
88 88
89void* runitm(void* arg) 89void* runitm(void* arg)
90{ 90{
91 Qsmb* caller = (Qsmb*)arg; 91 Qsmb* caller = (Qsmb*)arg;
92 caller->DoIt(); 92 caller->DoIt();
93 return(0); 93 return(0);
94} 94}
95 95
96void Qsmb::scan() 96void Qsmb::scan()
97{ 97{
98// int i; 98// int i;
99 99
100 if (scanning) return; 100 if (scanning) return;
101 scanning = true; 101 scanning = true;
102 102
103 QString match; 103 QString match;
104 QString cmd; 104 QString cmd;
105 LScan->setText("Scanning..."); 105 LScan->setText("Scanning...");
106 qApp->processEvents(); 106 qApp->processEvents();
107 107
108 sockaddr_in my_addr; 108 sockaddr_in my_addr;
109 get_myaddress( &my_addr); 109 get_myaddress( &my_addr);
110 110
111 QString ip = inet_ntoa( my_addr.sin_addr); 111 QString ip = inet_ntoa( my_addr.sin_addr);
112 owarn << "IP Address : " << ip<< oendl; 112 owarn << "IP Address : " << ip<< oendl;
113 113
114 match = ip.left(5); 114 match = ip.left(5);
115 115
116 QStringList ccmd; 116 QStringList ccmd;
117 TextViewOutput->append("smbfind"); 117 TextViewOutput->append("smbfind");
118 118
119 QFile lmhosts("/etc/samba/lmhosts"); 119 QFile lmhosts("/etc/samba/lmhosts");
120 QTextStream lms(&lmhosts); 120 QTextStream lms(&lmhosts);
121 lmhosts.open(IO_WriteOnly); 121 lmhosts.open(IO_WriteOnly);
122 lms << "127.0.0.1 localhost\n"; 122 lms << "127.0.0.1 localhost\n";
123 123
124 /* parse output and display in ListViewScan */ 124 /* parse output and display in ListViewScan */
125 ccmd = "smbfind"; 125 ccmd = "smbfind";
126 runCommand(ccmd); 126 runCommand(ccmd);
127 127
128 QTextStream s(&out, IO_ReadOnly); 128 QTextStream s(&out, IO_ReadOnly);
129 129
130 while ( !s.atEnd() ) { 130 while ( !s.atEnd() ) {
131 QString ip_addr, host, output; 131 QString ip_addr, host, output;
132 QString tmp = s.readLine(); 132 QString tmp = s.readLine();
133 bool ok; 133 bool ok;
134 tmp.left(1).toInt( &ok, 10 ); 134 tmp.left(1).toInt( &ok, 10 );
135 if(ok) { 135 if(ok) {
136 QStringList token = QStringList::split(' ', tmp ); 136 QStringList token = QStringList::split(' ', tmp );
137 ip_addr = token[0]; 137 ip_addr = token[0];
138 host = token[1]; 138 host = token[1];
139 CBHost->insertItem( host, -1); 139 CBHost->insertItem( host, -1);
140 lms << ip_addr+" "+host+"\n"; 140 lms << ip_addr+" "+host+"\n";
141 } 141 }
142 } 142 }
143 lmhosts.close(); 143 lmhosts.close();
144 144
145 TextViewOutput->append("\n\n============================================\n"); 145 TextViewOutput->append("\n\n============================================\n");
146 LScan->setText(""); 146 LScan->setText("");
147 scanning = false; 147 scanning = false;
148} 148}
149 149
150void Qsmb::hostSelected(int index) 150void Qsmb::hostSelected(int index)
151{ 151{
152 owarn << "hostSelected" << oendl; 152 owarn << "hostSelected" << oendl;
153 QListViewItem *element; 153 QListViewItem *element;
154 QListViewItem *parent; 154 QListViewItem *parent;
155 155
156 QString text = CBHost->currentText(); 156 QString text = CBHost->currentText();
157 157
158 if (scanning) return; 158 if (scanning) return;
159 scanning = true; 159 scanning = true;
160 160
161 QString cmd; 161 QString cmd;
162 QStringList ccmd; 162 QStringList ccmd;
163 163
164 LScan->setText("Scanning..."); 164 LScan->setText("Scanning...");
165 165
166 ccmd << "/usr/bin/smbclient"; 166 ccmd << "/usr/bin/smbclient";
167 ccmd << "-L"; 167 ccmd << "-L";
168 ccmd << CBHost->currentText(); 168 ccmd << CBHost->currentText();
169 ccmd << "-N"; 169 ccmd << "-N";
170 170
171 if(username->text().isEmpty()) { 171 if(!username->text().isEmpty()) {
172 } else { 172 } else {
173 ccmd << "-U"; 173 ccmd << "-U";
174 ccmd << username->text()+"\%"+ password->text(); 174 ccmd << username->text()+"\%"+ password->text();
175 } 175 }
176 runCommand(ccmd); 176 runCommand(ccmd);
177 QTextStream s(&out, IO_ReadOnly); 177 QTextStream s(&out, IO_ReadOnly);
178 178
179 while ( !s.atEnd() ) { 179 while ( !s.atEnd() ) {
180 QString share; 180 QString share;
181 QString comment; 181 QString comment;
182 QString tmp = s.readLine(); 182 QString tmp = s.readLine();
183 183
184 if( tmp.find("$") == -1 && tmp.find("Disk") != -1) { 184 if( tmp.find("$") == -1 && tmp.find("Disk") != -1) {
185 QStringList token = QStringList::split(' ', tmp ); 185 QStringList token = QStringList::split(' ', tmp );
186 share = token[0]; 186 share = token[0];
187 comment = token[2]; 187 comment = token[2];
188 element = new QListViewItem(ListViewScan,share, comment); 188 element = new QListViewItem(ListViewScan,share, comment);
189 element->setOpen(true); 189 element->setOpen(true);
190// top_element = element; 190// top_element = element;
191// parent = element; 191// parent = element;
192 } 192 }
193 193
194 } 194 }
195// owarn << "i="<< index << "cmd:" << cmd << oendl; 195// owarn << "i="<< index << "cmd:" << cmd << oendl;
196 196
197 TextViewOutput->append(cmd); 197 TextViewOutput->append(cmd);
198 198
199 /* run smbclient & read output */ 199 /* run smbclient & read output */
200// if ((pipe = popen(cmd.latin1(), "r")) == NULL) { 200// if ((pipe = popen(cmd.latin1(), "r")) == NULL) {
201// snprintf(result, 256, "Error: Can't run %s", cmd.latin1()); 201// snprintf(result, 256, "Error: Can't run %s", cmd.latin1());
202// // cmd = "Error: Can't run "+cmd; 202// // cmd = "Error: Can't run "+cmd;
203// TextViewOutput->append(result); 203// TextViewOutput->append(result);
204// return; 204// return;
205// } 205// }
206 206
207 /* parse output and display in ListViewScan */ 207 /* parse output and display in ListViewScan */
208// while(fgets(result, 256, pipe) != NULL) { 208// while(fgets(result, 256, pipe) != NULL) {
209// /* put result into TextViewOutput */ 209// /* put result into TextViewOutput */
210// TextViewOutput->append(result); 210// TextViewOutput->append(result);
211 211
212// if( strchr(result, '$') == NULL ) { 212// if( strchr(result, '$') == NULL ) {
213// char share[256], *ptr1; 213// char share[256], *ptr1;
214 214
215// strcpy(share,result); 215// strcpy(share,result);
216// ptr1 = strchr(share,' '); 216// ptr1 = strchr(share,' ');
217// share[ptr1 - share]='\0'; 217// share[ptr1 - share]='\0';
218 218
219// owarn<< "add share: " << share << oendl; 219// owarn<< "add share: " << share << oendl;
220 220
221// if(top_element != NULL) { 221// if(top_element != NULL) {
222// bool found = false; 222// bool found = false;
223// element = top_element; 223// element = top_element;
224 224
225// while(element != NULL && !found) { 225// while(element != NULL && !found) {
226// if(strcmp( element->text(0).ascii(), share)==0) { 226// if(strcmp( element->text(0).ascii(), share)==0) {
227// parent = element; 227// parent = element;
228// found = true; 228// found = true;
229// } 229// }
230// element = element->nextSibling(); 230// element = element->nextSibling();
231// } 231// }
232 232
233// if(!found) { 233// if(!found) {
234// element = new QListViewItem(ListViewScan,share); 234// element = new QListViewItem(ListViewScan,share);
235// element->setOpen(true); 235// element->setOpen(true);
236// parent=element; 236// parent=element;
237// } 237// }
238// } else { 238// } else {
239// element = new QListViewItem(ListViewScan,share); 239// element = new QListViewItem(ListViewScan,share);
240// element->setOpen(true); 240// element->setOpen(true);
241// top_element = element; 241// top_element = element;
242// parent = element; 242// parent = element;
243// } 243// }
244// } 244// }
245// } 245// }
246 246
247 TextViewOutput->append("\n\n============================================\n"); 247 TextViewOutput->append("\n\n============================================\n");
248 LScan->setText(""); 248 LScan->setText("");
249 scanning = false; 249 scanning = false;
250} 250}
251 251
252void Qsmb::DoIt() 252void Qsmb::DoIt()
253{ 253{
254 QListViewItem *element; 254 QListViewItem *element;
255 element = ListViewScan->selectedItem(); 255 element = ListViewScan->selectedItem();
256 if(!element) { 256 if(!element) {
257 QMessageBox::warning(this, tr("Error!!"),tr("<p><b>No</b> share selected!!</p>")); 257 QMessageBox::warning(this, tr("Error!!"),tr("<p><b>No</b> share selected!!</p>"));
258 return; 258 return;
259 } 259 }
260 260
261 if (scanning) return; 261 if (scanning) return;
262 scanning = true; 262 scanning = true;
263 263
264 int i; 264 int i;
265 bool err = false; 265 bool err = false;
266 266
267 char share[512]; 267 char share[512];
268 QString cmd; 268 QString cmd;
269 QString cmd2; 269 QString cmd2;
270 char result[256]; 270 char result[256];
271// QString result; 271// QString result;
272 QString text = mountpt->currentText(); 272 QString text = mountpt->currentText();
273 273
274 FILE *pipe,*pipe2; 274 FILE *pipe,*pipe2;
275 275
276 LScan->setText("Mounting..."); 276 LScan->setText("Mounting...");
277 qApp->processEvents(); 277 qApp->processEvents();
278 278
279 279
280 if(! QFileInfo(text).exists()) { 280 if(! QFileInfo(text).exists()) {
281 QStringList ccmd; 281 QStringList ccmd;
282 ccmd << "mkdir"; 282 ccmd << "mkdir";
283 ccmd << "-p"; 283 ccmd << "-p";
284 ccmd << text; 284 ccmd << text;
285 285
286 owarn<<"cmd: "<< ccmd << oendl; 286 owarn<<"cmd: "<< ccmd << oendl;
287 runCommand(ccmd); 287 runCommand(ccmd);
288 } 288 }
289 289
290 290
291 strcpy(share,(const char *)element->text(0)); 291 strcpy(share,(const char *)element->text(0));
292 292
293 for(i = 0; i < 256; i++) { 293 for(i = 0; i < 256; i++) {
294 if(isalpha( share[i])) { 294 if(isalpha( share[i])) {
295 strcpy( share, share + i); 295 strcpy( share, share + i);
296 break; 296 break;
297 } 297 }
298 } 298 }
299 299
300 cmd = "/usr/bin/smbmount //"+CBHost->currentText()+"/"+share+" "+mountpt->currentText()+" -o username="+username->text()+",password="+password->text(); 300 cmd = "/usr/bin/smbmount //"+CBHost->currentText()+"/"+share+" "+mountpt->currentText()+" -o username="+username->text()+",password="+password->text();
301 301
302 owarn << "cmd: " << cmd << oendl; 302 owarn << "cmd: " << cmd << oendl;
303 TextViewOutput->append(cmd.latin1()); 303 TextViewOutput->append(cmd.latin1());
304 304
305 305
306 if(onbootBtn->isChecked()) { 306 if(onbootBtn->isChecked()) {
307 owarn << "Saving Setting permanently..." << oendl; 307 owarn << "Saving Setting permanently..." << oendl;
308 cmd2 = "echo '" + cmd + "'>/opt/QtPalmtop/etc/samba.env"; 308 cmd2 = "echo '" + cmd + "'>/opt/QtPalmtop/etc/samba.env";
309 /* run command & read output */ 309 /* run command & read output */
310 if ((pipe = popen(cmd2.latin1(), "r")) == NULL) { 310 if ((pipe = popen(cmd2.latin1(), "r")) == NULL) {
311 snprintf(result, 256, "Error: Can't run %s", cmd.latin1()); 311 snprintf(result, 256, "Error: Can't run %s", cmd.latin1());
312 return; 312 return;
313 } 313 }
314 /* parse output and display in ListViewScan */ 314 /* parse output and display in ListViewScan */
315 while(fgets(result, 256, pipe) != NULL) { 315 while(fgets(result, 256, pipe) != NULL) {
316 } 316 }
317 } 317 }
318 318
319 319
320 /* run command & read output */ 320 /* run command & read output */
321 if ((pipe = popen(cmd.latin1(), "r")) == NULL) { 321 if ((pipe = popen(cmd.latin1(), "r")) == NULL) {
322 snprintf(result, 256, "Error: Can't run %s", cmd.latin1()); 322 snprintf(result, 256, "Error: Can't run %s", cmd.latin1());
323 TextViewOutput->append(result); 323 TextViewOutput->append(result);
324 return; 324 return;
325 } 325 }
326 326
327 /* parse output and display in ListViewScan */ 327 /* parse output and display in ListViewScan */
328 while(fgets(result, 256, pipe) != NULL) { 328 while(fgets(result, 256, pipe) != NULL) {
329 /* put result into TextViewOutput */ 329 /* put result into TextViewOutput */
330 TextViewOutput->append(result); 330 TextViewOutput->append(result);
331 } 331 }
332 332
333 333
334 TextViewOutput->append("\n\n================CheckMounts==================\n"); 334 TextViewOutput->append("\n\n================CheckMounts==================\n");
335 LScan->setText(""); 335 LScan->setText("");
336 336
337 cmd = "/bin/mount 2>&1"; 337 cmd = "/bin/mount 2>&1";
338 owarn << "cmd: " << cmd << oendl; 338 owarn << "cmd: " << cmd << oendl;
339 339
340 if ((pipe2 = popen(cmd.latin1(), "r")) == NULL) { 340 if ((pipe2 = popen(cmd.latin1(), "r")) == NULL) {
341 341
342 snprintf(result, 256, "Error: Can't run %s", cmd.latin1()); 342 snprintf(result, 256, "Error: Can't run %s", cmd.latin1());
343// result = "Error: Can't run "+ cmd; 343// result = "Error: Can't run "+ cmd;
344 344
345 TextViewOutput->append(result); 345 TextViewOutput->append(result);
346 return; 346 return;
347 } 347 }
348 /* parse output and display in ListViewScan */ 348 /* parse output and display in ListViewScan */
349 while(fgets(result, 256, pipe2) != NULL) { 349 while(fgets(result, 256, pipe2) != NULL) {
350 /* put result into TextViewOutput */ 350 /* put result into TextViewOutput */
351 TextViewOutput->append(result); 351 TextViewOutput->append(result);
352 } 352 }
353 353
354 TextViewOutput->append("\n\n============================================\n"); 354 TextViewOutput->append("\n\n============================================\n");
355 scanning = false; 355 scanning = false;
356} 356}
357 357
358bool Qsmb::runCommand(const QStringList & command) { 358bool Qsmb::runCommand(const QStringList & command) {
359 owarn << "runCommand " << command.join(" ") << oendl; 359 owarn << "runCommand " << command.join(" ") << oendl;
360 out = ""; 360 out = "";
361 Process ipkg_status( command); 361 Process ipkg_status( command);
362 bool r = ipkg_status.exec("",out); 362 bool r = ipkg_status.exec("",out);
363 363
364 if(!r) { 364 if(!r) {
365 QMessageBox::warning(this, tr("Error!!"),tr("<p>"+out+"</p>")); 365 QMessageBox::warning(this, tr("Error!!"),tr("<p>"+out+"</p>"));
366 } 366 }
367 367
368 owarn << "Output " << out << oendl; 368 owarn << "Output " << out << oendl;
369 TextViewOutput->append(out.latin1()); 369 TextViewOutput->append(out.latin1());
370 return r; 370 return r;
371} 371}
372 372
373 373