summaryrefslogtreecommitdiff
path: root/noncore/net/opie-smb/qsmb.cpp
authorllornkcor <llornkcor>2005-08-15 11:09:26 (UTC)
committer llornkcor <llornkcor>2005-08-15 11:09:26 (UTC)
commit0771d689056f233fe772d85de4040f59f3ba1e6b (patch) (unidiff)
treecd746f64ca8b36852d6232f62ee7b803e6a5a3c4 /noncore/net/opie-smb/qsmb.cpp
parente7c0016a970ab1bdf5870a648a7bf07b857fbb11 (diff)
downloadopie-0771d689056f233fe772d85de4040f59f3ba1e6b.zip
opie-0771d689056f233fe772d85de4040f59f3ba1e6b.tar.gz
opie-0771d689056f233fe772d85de4040f59f3ba1e6b.tar.bz2
better way to get shares
Diffstat (limited to 'noncore/net/opie-smb/qsmb.cpp') (more/less context) (show whitespace changes)
-rw-r--r--noncore/net/opie-smb/qsmb.cpp139
1 files changed, 68 insertions, 71 deletions
diff --git a/noncore/net/opie-smb/qsmb.cpp b/noncore/net/opie-smb/qsmb.cpp
index c1ee9a9..fbe1c5c 100644
--- a/noncore/net/opie-smb/qsmb.cpp
+++ b/noncore/net/opie-smb/qsmb.cpp
@@ -92,13 +92,13 @@ void* runitm(void* 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;
@@ -120,13 +120,12 @@ void Qsmb::scan()
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 owarn <<"cmd: " << ccmd << oendl;
127 runCommand(ccmd); 126 runCommand(ccmd);
128 127
129 QTextStream s(&out, IO_ReadOnly); 128 QTextStream s(&out, IO_ReadOnly);
130 129
131 while ( !s.atEnd() ) { 130 while ( !s.atEnd() ) {
132 QString ip_addr, host, output; 131 QString ip_addr, host, output;
@@ -148,94 +147,105 @@ void Qsmb::scan()
148 scanning = false; 147 scanning = false;
149} 148}
150 149
151void Qsmb::hostSelected(int index) 150void Qsmb::hostSelected(int index)
152{ 151{
153 owarn << "hostSelected" << oendl; 152 owarn << "hostSelected" << oendl;
154 int i;
155
156 QListViewItem *element; 153 QListViewItem *element;
157 QListViewItem *parent; 154 QListViewItem *parent;
158 155
159 QString text = CBHost->currentText(); 156 QString text = CBHost->currentText();
160 157
161 if (scanning) return; 158 if (scanning) return;
162 scanning = true; 159 scanning = true;
163 160
164 QString cmd; 161 QString cmd;
165 char result[256]; 162 QStringList ccmd;
166
167 FILE *pipe;
168 163
169 LScan->setText("Scanning..."); 164 LScan->setText("Scanning...");
170 165
171 if(username->text().isEmpty()) 166 ccmd << "/usr/bin/smbclient";
172 cmd = "/usr/bin/smbclient -L //"+CBHost->currentText()+" -N 2>&1 |grep Disk"; 167 ccmd << "-L";
173 else 168 ccmd << CBHost->currentText();
174 cmd = "/usr/bin/smbclient -L //"+CBHost->currentText()+" -N -U "+username->text()+"\%"+password->text()+" 2>&1 |grep Disk"; 169 ccmd << "-N";
175 170
176// for(i = 0; i < 512; i++) { 171 if(username->text().isEmpty()) {
177// if(cmd[i]==':') { 172 } else {
178// cmd[i]='%'; 173 ccmd << "-U";
179// break; 174 ccmd << username->text()+"\%"+ password->text();
180// } 175 }
181// if(cmd[i]=='\0') 176 runCommand(ccmd);
182// break; 177 QTextStream s(&out, IO_ReadOnly);
183// }
184 178
185 owarn << "i="<< index << "cmd:" << cmd << oendl; 179 while ( !s.atEnd() ) {
180 QString share;
181 QString comment;
182 QString tmp = s.readLine();
183
184 if( tmp.find("$") == -1 && tmp.find("Disk") != -1) {
185 QStringList token = QStringList::split(' ', tmp );
186 share = token[0];
187 comment = token[2];
188 element = new QListViewItem(ListViewScan,share, comment);
189 element->setOpen(true);
190// top_element = element;
191// parent = element;
192 }
193
194 }
195// owarn << "i="<< index << "cmd:" << cmd << oendl;
186 196
187 TextViewOutput->append(cmd); 197 TextViewOutput->append(cmd);
188 198
189 /* run smbclient & read output */ 199 /* run smbclient & read output */
190 if ((pipe = popen(cmd.latin1(), "r")) == NULL) { 200// if ((pipe = popen(cmd.latin1(), "r")) == NULL) {
191 snprintf(result, 256, "Error: Can't run %s", cmd.latin1()); 201// snprintf(result, 256, "Error: Can't run %s", cmd.latin1());
192// cmd = "Error: Can't run "+cmd; 202// // cmd = "Error: Can't run "+cmd;
193 TextViewOutput->append(result); 203// TextViewOutput->append(result);
194 return; 204// return;
195 } 205// }
196 206
197 /* parse output and display in ListViewScan */ 207 /* parse output and display in ListViewScan */
198 while(fgets(result, 256, pipe) != NULL) { 208// while(fgets(result, 256, pipe) != NULL) {
199 /* put result into TextViewOutput */ 209// /* put result into TextViewOutput */
200 TextViewOutput->append(result); 210// TextViewOutput->append(result);
201 211
202 if( strchr(result, '$') == NULL ) { 212// if( strchr(result, '$') == NULL ) {
203 char share[256], *ptr1; 213// char share[256], *ptr1;
204 214
205 strcpy(share,result); 215// strcpy(share,result);
206 ptr1 = strchr(share,' '); 216// ptr1 = strchr(share,' ');
207 share[ptr1 - share]='\0'; 217// share[ptr1 - share]='\0';
208 218
209 owarn<< "add share: " << share << oendl; 219// owarn<< "add share: " << share << oendl;
210 220
211 if(top_element != NULL) { 221// if(top_element != NULL) {
212 bool found = false; 222// bool found = false;
213 element = top_element; 223// element = top_element;
214 224
215 while(element != NULL && !found) { 225// while(element != NULL && !found) {
216 if(strcmp( element->text(0).ascii(), share)==0) { 226// if(strcmp( element->text(0).ascii(), share)==0) {
217 parent = element; 227// parent = element;
218 found = true; 228// found = true;
219 } 229// }
220 element = element->nextSibling(); 230// element = element->nextSibling();
221 } 231// }
222 232
223 if(!found) { 233// if(!found) {
224 element = new QListViewItem(ListViewScan,share); 234// element = new QListViewItem(ListViewScan,share);
225 element->setOpen(true); 235// element->setOpen(true);
226 parent=element; 236// parent=element;
227 } 237// }
228 } else { 238// } else {
229 element = new QListViewItem(ListViewScan,share); 239// element = new QListViewItem(ListViewScan,share);
230 element->setOpen(true); 240// element->setOpen(true);
231 top_element = element; 241// top_element = element;
232 parent = element; 242// parent = element;
233 } 243// }
234 } 244// }
235 } 245// }
236 246
237 TextViewOutput->append("\n\n============================================\n"); 247 TextViewOutput->append("\n\n============================================\n");
238 LScan->setText(""); 248 LScan->setText("");
239 scanning = false; 249 scanning = false;
240} 250}
241 251
@@ -265,25 +275,12 @@ void Qsmb::DoIt()
265 275
266 LScan->setText("Mounting..."); 276 LScan->setText("Mounting...");
267 qApp->processEvents(); 277 qApp->processEvents();
268 278
269 279
270 if(! QFileInfo(text).exists()) { 280 if(! QFileInfo(text).exists()) {
271// /* make sure mount exists! */
272
273// cmd = "mkdir -p "+ text;
274// owarn<<"cmd: "<< cmd << oendl;
275// if ((pipe2 = popen(cmd.latin1(), "r")) == NULL) {
276// snprintf(result, 256, "Error: Can't run %s", cmd.latin1());
277// TextViewOutput->append(result);
278// return;
279// }
280// while(fgets(result, 256, pipe2) != NULL) {
281// /* put result into TextViewOutput */
282// TextViewOutput->append(result);
283// }
284 QStringList ccmd; 281 QStringList ccmd;
285 ccmd << "mkdir"; 282 ccmd << "mkdir";
286 ccmd << "-p"; 283 ccmd << "-p";
287 ccmd << text; 284 ccmd << text;
288 285
289 owarn<<"cmd: "<< ccmd << oendl; 286 owarn<<"cmd: "<< ccmd << oendl;