summaryrefslogtreecommitdiff
path: root/noncore
authorllornkcor <llornkcor>2005-08-15 11:09:26 (UTC)
committer llornkcor <llornkcor>2005-08-15 11:09:26 (UTC)
commit0771d689056f233fe772d85de4040f59f3ba1e6b (patch) (side-by-side diff)
treecd746f64ca8b36852d6232f62ee7b803e6a5a3c4 /noncore
parente7c0016a970ab1bdf5870a648a7bf07b857fbb11 (diff)
downloadopie-0771d689056f233fe772d85de4040f59f3ba1e6b.zip
opie-0771d689056f233fe772d85de4040f59f3ba1e6b.tar.gz
opie-0771d689056f233fe772d85de4040f59f3ba1e6b.tar.bz2
better way to get shares
Diffstat (limited to 'noncore') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opie-smb/qsmb.cpp151
-rw-r--r--noncore/net/opie-smb/qsmbbase.ui20
2 files changed, 93 insertions, 78 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
@@ -74,234 +74,231 @@ void Qsmb::DoItClicked()
if(! ListViewScan->selectedItem()) {
QMessageBox::warning(this, tr("Error"),tr("<p>No share selected!</p>"));
return;
}
if (scanning) return;
pthread_create(&tpid, NULL, runitm, (void *)this);
}
void* runit(void* arg)
{
Qsmb* caller = (Qsmb*)arg;
caller->scan();
return(0);
}
void* runitm(void* arg)
{
Qsmb* caller = (Qsmb*)arg;
caller->DoIt();
return(0);
}
void Qsmb::scan()
{
- int i;
+// int i;
if (scanning) return;
scanning = true;
QString match;
QString cmd;
LScan->setText("Scanning...");
qApp->processEvents();
sockaddr_in my_addr;
get_myaddress( &my_addr);
QString ip = inet_ntoa( my_addr.sin_addr);
owarn << "IP Address : " << ip<< oendl;
match = ip.left(5);
QStringList ccmd;
TextViewOutput->append("smbfind");
QFile lmhosts("/etc/samba/lmhosts");
QTextStream lms(&lmhosts);
lmhosts.open(IO_WriteOnly);
lms << "127.0.0.1 localhost\n";
/* parse output and display in ListViewScan */
ccmd = "smbfind";
- owarn <<"cmd: " << ccmd << oendl;
runCommand(ccmd);
QTextStream s(&out, IO_ReadOnly);
while ( !s.atEnd() ) {
QString ip_addr, host, output;
QString tmp = s.readLine();
bool ok;
tmp.left(1).toInt( &ok, 10 );
if(ok) {
QStringList token = QStringList::split(' ', tmp );
ip_addr = token[0];
host = token[1];
CBHost->insertItem( host, -1);
lms << ip_addr+" "+host+"\n";
}
}
lmhosts.close();
TextViewOutput->append("\n\n============================================\n");
LScan->setText("");
scanning = false;
}
void Qsmb::hostSelected(int index)
{
owarn << "hostSelected" << oendl;
- int i;
-
QListViewItem *element;
QListViewItem *parent;
QString text = CBHost->currentText();
if (scanning) return;
scanning = true;
QString cmd;
- char result[256];
-
- FILE *pipe;
+ QStringList ccmd;
LScan->setText("Scanning...");
- if(username->text().isEmpty())
- cmd = "/usr/bin/smbclient -L //"+CBHost->currentText()+" -N 2>&1 |grep Disk";
- else
- cmd = "/usr/bin/smbclient -L //"+CBHost->currentText()+" -N -U "+username->text()+"\%"+password->text()+" 2>&1 |grep Disk";
+ ccmd << "/usr/bin/smbclient";
+ ccmd << "-L";
+ ccmd << CBHost->currentText();
+ ccmd << "-N";
+
+ if(username->text().isEmpty()) {
+ } else {
+ ccmd << "-U";
+ ccmd << username->text()+"\%"+ password->text();
+ }
+ runCommand(ccmd);
+ QTextStream s(&out, IO_ReadOnly);
-// for(i = 0; i < 512; i++) {
-// if(cmd[i]==':') {
-// cmd[i]='%';
-// break;
-// }
-// if(cmd[i]=='\0')
-// break;
-// }
+ while ( !s.atEnd() ) {
+ QString share;
+ QString comment;
+ QString tmp = s.readLine();
+
+ if( tmp.find("$") == -1 && tmp.find("Disk") != -1) {
+ QStringList token = QStringList::split(' ', tmp );
+ share = token[0];
+ comment = token[2];
+ element = new QListViewItem(ListViewScan,share, comment);
+ element->setOpen(true);
+// top_element = element;
+// parent = element;
+ }
- owarn << "i="<< index << "cmd:" << cmd << oendl;
+ }
+// owarn << "i="<< index << "cmd:" << cmd << oendl;
TextViewOutput->append(cmd);
/* run smbclient & read output */
- if ((pipe = popen(cmd.latin1(), "r")) == NULL) {
- snprintf(result, 256, "Error: Can't run %s", cmd.latin1());
-// cmd = "Error: Can't run "+cmd;
- TextViewOutput->append(result);
- return;
- }
+// if ((pipe = popen(cmd.latin1(), "r")) == NULL) {
+// snprintf(result, 256, "Error: Can't run %s", cmd.latin1());
+// // cmd = "Error: Can't run "+cmd;
+// TextViewOutput->append(result);
+// return;
+// }
/* parse output and display in ListViewScan */
- while(fgets(result, 256, pipe) != NULL) {
- /* put result into TextViewOutput */
- TextViewOutput->append(result);
-
- if( strchr(result, '$') == NULL ) {
- char share[256], *ptr1;
-
- strcpy(share,result);
- ptr1 = strchr(share,' ');
- share[ptr1 - share]='\0';
-
- owarn<< "add share: " << share << oendl;
-
- if(top_element != NULL) {
- bool found = false;
- element = top_element;
-
- while(element != NULL && !found) {
- if(strcmp( element->text(0).ascii(), share)==0) {
- parent = element;
- found = true;
- }
- element = element->nextSibling();
- }
-
- if(!found) {
- element = new QListViewItem(ListViewScan,share);
- element->setOpen(true);
- parent=element;
- }
- } else {
- element = new QListViewItem(ListViewScan,share);
- element->setOpen(true);
- top_element = element;
- parent = element;
- }
- }
- }
+// while(fgets(result, 256, pipe) != NULL) {
+// /* put result into TextViewOutput */
+// TextViewOutput->append(result);
+
+// if( strchr(result, '$') == NULL ) {
+// char share[256], *ptr1;
+
+// strcpy(share,result);
+// ptr1 = strchr(share,' ');
+// share[ptr1 - share]='\0';
+
+// owarn<< "add share: " << share << oendl;
+
+// if(top_element != NULL) {
+// bool found = false;
+// element = top_element;
+
+// while(element != NULL && !found) {
+// if(strcmp( element->text(0).ascii(), share)==0) {
+// parent = element;
+// found = true;
+// }
+// element = element->nextSibling();
+// }
+
+// if(!found) {
+// element = new QListViewItem(ListViewScan,share);
+// element->setOpen(true);
+// parent=element;
+// }
+// } else {
+// element = new QListViewItem(ListViewScan,share);
+// element->setOpen(true);
+// top_element = element;
+// parent = element;
+// }
+// }
+// }
TextViewOutput->append("\n\n============================================\n");
LScan->setText("");
scanning = false;
}
void Qsmb::DoIt()
{
QListViewItem *element;
element = ListViewScan->selectedItem();
if(!element) {
QMessageBox::warning(this, tr("Error!!"),tr("<p><b>No</b> share selected!!</p>"));
return;
}
if (scanning) return;
scanning = true;
int i;
bool err = false;
char share[512];
QString cmd;
QString cmd2;
char result[256];
// QString result;
QString text = mountpt->currentText();
FILE *pipe,*pipe2;
LScan->setText("Mounting...");
qApp->processEvents();
if(! QFileInfo(text).exists()) {
-// /* make sure mount exists! */
-
-// cmd = "mkdir -p "+ text;
-// owarn<<"cmd: "<< cmd << oendl;
-// if ((pipe2 = popen(cmd.latin1(), "r")) == NULL) {
-// snprintf(result, 256, "Error: Can't run %s", cmd.latin1());
-// TextViewOutput->append(result);
-// return;
-// }
-// while(fgets(result, 256, pipe2) != NULL) {
-// /* put result into TextViewOutput */
-// TextViewOutput->append(result);
-// }
QStringList ccmd;
ccmd << "mkdir";
ccmd << "-p";
ccmd << text;
owarn<<"cmd: "<< ccmd << oendl;
runCommand(ccmd);
}
strcpy(share,(const char *)element->text(0));
for(i = 0; i < 256; i++) {
if(isalpha( share[i])) {
strcpy( share, share + i);
break;
}
}
cmd = "/usr/bin/smbmount //"+CBHost->currentText()+"/"+share+" "+mountpt->currentText()+" -o username="+username->text()+",password="+password->text();
owarn << "cmd: " << cmd << oendl;
TextViewOutput->append(cmd.latin1());
diff --git a/noncore/net/opie-smb/qsmbbase.ui b/noncore/net/opie-smb/qsmbbase.ui
index 35a1aec..3107929 100644
--- a/noncore/net/opie-smb/qsmbbase.ui
+++ b/noncore/net/opie-smb/qsmbbase.ui
@@ -1,38 +1,38 @@
<!DOCTYPE UI><UI>
<class>FormQPESMBBase</class>
<widget>
<class>QWidget</class>
<property stdset="1">
<name>name</name>
<cstring>FormQPESMBBase</cstring>
</property>
<property stdset="1">
<name>geometry</name>
<rect>
<x>0</x>
<y>0</y>
- <width>254</width>
+ <width>250</width>
<height>352</height>
</rect>
</property>
<property stdset="1">
<name>font</name>
<font>
</font>
</property>
<property stdset="1">
<name>caption</name>
<string>Opie Smb</string>
</property>
<property>
<name>layoutMargin</name>
</property>
<property>
<name>layoutSpacing</name>
</property>
<grid>
<property stdset="1">
<name>margin</name>
<number>0</number>
</property>
<property stdset="1">
@@ -101,52 +101,70 @@
<name>name</name>
<cstring>textLabel1</cstring>
</property>
<property stdset="1">
<name>text</name>
<string>mount pt:</string>
</property>
</widget>
<widget row="2" column="0" rowspan="1" colspan="4" >
<class>QListView</class>
<column>
<property>
<name>text</name>
<string>Shares</string>
</property>
<property>
<name>clickable</name>
<bool>true</bool>
</property>
<property>
<name>resizeable</name>
<bool>true</bool>
</property>
</column>
+ <column>
+ <property>
+ <name>text</name>
+ <string>Comment</string>
+ </property>
+ <property>
+ <name>clickable</name>
+ <bool>true</bool>
+ </property>
+ <property>
+ <name>resizeable</name>
+ <bool>true</bool>
+ </property>
+ </column>
<property stdset="1">
<name>name</name>
<cstring>ListViewScan</cstring>
</property>
+ <property stdset="1">
+ <name>allColumnsShowFocus</name>
+ <bool>true</bool>
+ </property>
</widget>
<widget row="0" column="0" rowspan="1" colspan="2" >
<class>QPushButton</class>
<property stdset="1">
<name>name</name>
<cstring>BtnScan</cstring>
</property>
<property stdset="1">
<name>text</name>
<string>&amp;Scan</string>
</property>
</widget>
<widget row="0" column="2" >
<class>QPushButton</class>
<property stdset="1">
<name>name</name>
<cstring>BtnClear</cstring>
</property>
<property stdset="1">
<name>text</name>
<string>&amp;Clear</string>
</property>
</widget>
<widget row="3" column="0" rowspan="1" colspan="3" >