00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
#include "util.h"
00021
#include <qstringlist.h>
00022
00023 KURL smbToUrl(
const QString& work,
const QString& server,
const QString& printer)
00024 {
00025 KURL url;
00026 url.setProtocol(
"smb");
00027
if (!work.
isEmpty())
00028 {
00029 url.setHost(work);
00030 url.setPath(
"/" + server +
"/" + printer);
00031 }
00032
else
00033 {
00034 url.setHost(server);
00035 url.setPath(
"/" + printer);
00036 }
00037
return url;
00038 }
00039
00040
void urlToSmb(
const KURL& url,
QString& work,
QString& server,
QString& printer)
00041 {
00042
if (url.protocol() !=
"smb")
00043
return;
00044
QString h = url.host();
00045
QStringList l =
QStringList::split(
'/', url.path(),
false);
00046
if (l.count() > 1)
00047 {
00048 work = h;
00049 server = l[0];
00050 printer = l[1];
00051 }
00052
else
00053 {
00054 work = QString::null;
00055 server = h;
00056 printer = l[0];
00057 }
00058 }
00059
00060 KURL smbToUrl(
const QString& s)
00061 {
00062
00063 KURL url;
00064
int p = s.
find(
'@');
00065
if (p == -1)
00066 {
00067
00068
00069 url = KURL(
"smb://" + KURL::encode_string(s.
mid(6)));
00070 }
00071
else
00072 {
00073
00074
QString username = s.
mid(6, p-6);
00075 url = KURL(
"smb://" + KURL::encode_string(s.
mid(p+1)));
00076
int q = username.
find(
':');
00077
if (q == -1)
00078 url.setUser(username);
00079
else
00080 {
00081 url.setUser(username.
left(q));
00082 url.setPass(username.
mid(q+1));
00083 }
00084 }
00085
return url;
00086 }
00087
00088
QString urlToSmb(
const KURL& url)
00089 {
00090
00091
QString s =
"smb://";
00092
if (!url.user().isEmpty())
00093 {
00094 s.
append(url.user());
00095
if (!url.pass().isEmpty())
00096 s.
append(
":").append(url.pass());
00097 s.
append(
"@");
00098 }
00099 s.
append(url.host()).append(KURL::decode_string(url.path()));
00100
return s;
00101 }
00102
00103
int findIndex(
int ID)
00104 {
00105
for (
int i=0; i<KPrinter::NPageSize-1; i++)
00106
if (page_sizes[i].ID == ID)
00107
return i;
00108
return 4;
00109 }
00110
00111
QString buildSmbURI(
const QString& work,
const QString& server,
const QString& printer,
const QString& user,
const QString& passwd )
00112 {
00113
QString uri = server +
"/" + printer;
00114
if ( !work.
isEmpty() )
00115 uri.
prepend( work +
"/" );
00116
if ( !user.
isEmpty() )
00117 {
00118 uri.
prepend(
"@" );
00119
if ( !passwd.
isEmpty() )
00120 uri.
prepend(
":" + passwd );
00121 uri.
prepend( user );
00122 }
00123 uri.
prepend(
"smb://" );
00124
return uri;
00125 }
00126
00127
bool splitSmbURI(
const QString& uri,
QString& work,
QString& server,
QString& printer,
QString& user,
QString& passwd )
00128 {
00129
int p( 0 );
00130
if ( !uri.
startsWith(
"smb://" ) )
00131
return false;
00132 p = 6;
00133
00134
int p1 = uri.
find(
'/', p );
00135
if ( p1 != -1 )
00136 {
00137
int p2 = uri.
find(
'@', p );
00138
if ( p2 != -1 && p2 < p1 )
00139 {
00140
00141
int p3 = uri.
find(
':', p );
00142
if ( p3 != -1 && p3 < p2 )
00143 {
00144
00145 user = uri.
mid( p, p3-p );
00146 passwd = uri.
mid( p3+1, p2-p3-1 );
00147 }
00148
else
00149 user = uri.
mid( p, p2-p );
00150 }
00151
else
00152 p2 = p-1;
00153
QStringList l =
QStringList::split(
'/', uri.
mid( p2+1 ),
false );
00154
switch ( l.count() )
00155 {
00156
case 3:
00157 work = l[ 0 ];
00158 server = l[ 1 ];
00159 printer = l[ 2 ];
00160
break;
00161
case 2:
00162 server = l[ 0 ];
00163 printer = l[ 1 ];
00164
break;
00165
default:
00166
return false;
00167 }
00168
return true;
00169 }
00170
return false;
00171 }
00172
00173
QString shadowPassword(
const QString& uri )
00174 {
00175
QString result = uri;
00176
int p = result.
find(
':' );
00177
if ( p != -1 )
00178 {
00179
while ( result[ ++p ] ==
'/' );
00180
int p1 = result.
find(
'@', p );
00181
if ( p1 != -1 )
00182 {
00183
int p2 = result.
find(
':', p );
00184
if ( p2 != -1 && p2 < p1 )
00185 {
00186 result.
replace( p2, p1-p2,
"" );
00187 }
00188 }
00189 }
00190
return result;
00191 }