source: trunk/guitools/evfsgui/evfsgui.vrx@ 975

Last change on this file since 975 was 925, checked in by Herwig Bauernfeind, 9 years ago

GUITools: EVFSGUI: more client settings, SMBMON: made rpm/yum aware, cosmetics

File size: 215.2 KB
Line 
1/*:VRX Main
2*/
3/* Main
4*/
5Main:
6/*
7 Samba Connections GUI for OS/2 based systems
8 Copyright (C) 2007-2016 by Alexander Taylor and Herwig Bauernfeind
9 Derived works must contain this copyright notice.
10
11 This program is free software: you can redistribute it and/or modify
12 it under the terms of the GNU General Public License as published by
13 the Free Software Foundation, either version 3 of the License, or
14 (at your option) any later version.
15
16 This program is distributed in the hope that it will be useful,
17 but WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 GNU General Public License for more details.
20
21 You should have received a copy of the GNU General Public License
22 along with this program. If not, see <http://www.gnu.org/licenses/>.
23*/
24/* Process the arguments.
25 Get the parent window.
26*/
27 parse source . calledAs .
28 parent = ""
29 argCount = arg()
30 argOff = 0
31 if( calledAs \= "COMMAND" )then do
32 if argCount >= 1 then do
33 parent = arg(1)
34 argCount = argCount - 1
35 argOff = 1
36 end
37 end; else do
38 call VROptions 'ImplicitNames'
39 call VROptions 'NoEchoQuit'
40 end
41 InitArgs.0 = argCount
42 if( argCount > 0 )then do i = 1 to argCount
43 InitArgs.i = arg( i + argOff )
44 end
45 drop calledAs argCount argOff
46
47/* Load the windows
48*/
49 call VRInit
50 parse source . . spec
51 _VREPrimaryWindowPath = ,
52 VRParseFileName( spec, "dpn" ) || ".VRW"
53 _VREPrimaryWindow = ,
54 VRLoad( parent, _VREPrimaryWindowPath )
55 drop parent spec
56 if( _VREPrimaryWindow == "" )then do
57 call VRMessage "", "Cannot load window:" VRError(), ,
58 "Error!"
59 _VREReturnValue = 32000
60 signal _VRELeaveMain
61 end
62
63/* Process events
64*/
65 call Init
66 signal on halt
67 do while( \ VRGet( _VREPrimaryWindow, "Shutdown" ) )
68 _VREEvent = VREvent()
69 interpret _VREEvent
70 end
71_VREHalt:
72 _VREReturnValue = Fini()
73 call VRDestroy _VREPrimaryWindow
74_VRELeaveMain:
75 call VRFini
76exit _VREReturnValue
77
78VRLoadSecondary:
79 __vrlsWait = abbrev( 'WAIT', translate(arg(2)), 1 )
80 if __vrlsWait then do
81 call VRFlush
82 end
83 __vrlsHWnd = VRLoad( VRWindow(), VRWindowPath(), arg(1) )
84 if __vrlsHWnd = '' then signal __vrlsDone
85 if __vrlsWait \= 1 then signal __vrlsDone
86 call VRSet __vrlsHWnd, 'WindowMode', 'Modal'
87 __vrlsTmp = __vrlsWindows.0
88 if( DataType(__vrlsTmp) \= 'NUM' ) then do
89 __vrlsTmp = 1
90 end
91 else do
92 __vrlsTmp = __vrlsTmp + 1
93 end
94 __vrlsWindows.__vrlsTmp = VRWindow( __vrlsHWnd )
95 __vrlsWindows.0 = __vrlsTmp
96 do while( VRIsValidObject( VRWindow() ) = 1 )
97 __vrlsEvent = VREvent()
98 interpret __vrlsEvent
99 end
100 __vrlsTmp = __vrlsWindows.0
101 __vrlsWindows.0 = __vrlsTmp - 1
102 call VRWindow __vrlsWindows.__vrlsTmp
103 __vrlsHWnd = ''
104__vrlsDone:
105return __vrlsHWnd
106
107/*:VRX __VXREXX____APPENDS__
108*/
109__VXREXX____APPENDS__:
110/*
111#append ..\shared\cltinit.vrs
112#append ..\shared\inittempdir.vrs
113#append ..\shared\nlv.vrs
114#append ..\shared\rexx_md5.vrs
115#append ..\shared\smbtree.vrs
116#append ..\shared\textini.vrs
117#append ..\shared\usercredmem.vrs
118#append ..\shared\rxrpclib.vrs
119*/
120return
121/*:VRX _AboutSambaClientGetInfo
122*/
123_AboutSambaClientGetInfo:
124 call VRSet "SW_ABOUT", "Painting", 0
125 BR = ''
126
127 ok = VRMethod( "CN_About", "RemoveRecord", "All" )
128
129 /* OS Version */
130 if VRFileExists(SysBootDrive()||"\SYS\ARCANOAE.FLG" ) then do
131 OS = linein(SysBootDrive()||"\SYS\ARCANOAE.FLG")
132 OS = subword(OS,1,2) '('translate(word(OS,3))')'
133 ok = stream(SysBootDrive()||"\SYS\ARCANOAE.FLG",'c','close')
134 end
135 else if VRFileExists(SysBootDrive()||"\ECS\ECS_INST.FLG" ) then do
136 OS = linein(SysBootDrive()||"\ECS\ECS_INST.FLG")
137 OS = subword(OS,1,3)
138 ok = stream(SysBootDrive()||"\ECS\ECS_INST.FLG",'c','close')
139 end
140 else OS = "OS/2 Warp/eComStation 1.x"
141
142 DummyRH = VRMethod('CN_About', 'AddRecord')
143 ok = VRMethod("CN_ABOUT", "SetFieldData", DummyRH, About.DscFH, "Operating system", About.ValFH, OS)
144
145 /* Filesystem version */
146 DummyRH = VRMethod('CN_About', 'AddRecord')
147 ok = VRMethod("CN_ABOUT", "SetFieldData", DummyRH, About.DscFH, "File system", About.ValFH, fs.!name' Version 'fs.!version)
148 ABoutStr = "Samba Client Versions:"||BR
149 AboutStr = AboutStr||'0D0A'x||"File system "||'09'x||fs.!name' Version 'fs.!version||BR
150 plugindll. =""
151
152 /* Plugin */
153 address cmd 'look4dll.exe ndpsmb.dll >'samba.!msg
154 if RC <> 0 then do
155 /* Look4DLL not installed or failed, try fallback search */
156 if rc == 1041 then do /* look4dll not found, use REXX-based search */
157 pluginpath = _DLLSearch('ndpsmb.dll')
158 if pluginpath <> '' then do
159 plugindll.0 = 1
160 plugindll.1 = pluginpath
161 end
162 end
163 else plugindll.0 = 0
164 /* DLL is not in libpath; as a last resort, check some well-known places */
165 if plugindll.0 < 1 then do
166 NDFSDir = value("NDFSDIR",,"OS2ENVIRONMENT")
167 if NDFSDir = "" then do
168 OSDir = value("OSDIR",,"OS2ENVIRONMENT")
169 if OSDir == '' then OSDir = SysBootDrive()'\os2'
170 NDFSDir = OSDir'\dll'
171 end
172 ok = SysFileTree(NDFSDir'\ndpsmb.dll', "plugindll.", 'FOS')
173 end
174 end
175 else do
176 pluginline = linein(samba.!msg)
177 ok = stream(samba.!msg,'c','close')
178 ok = SysFileDelete(samba.!msg)
179 parse var pluginline . 'loaded ' pluginline
180 NDFSDir = VRParseFileName(pluginline,"DP")
181 plugindll.0 = 1
182 plugindll.1 = pluginline
183 end
184
185 if plugindll.0 > 0 then do
186 do J = 1 to plugindll.0
187 DummyRH.1 = VRMethod('CN_About', 'AddRecord')
188 ok = VRMethod("CN_ABOUT", "SetFieldData", DummyRH.1, About.DscFH, "Plugin file", About.ValFH, plugindll.J)
189 AboutStr = AboutStr||'0D0A'x||"Plugin file "||'09'x||plugindll.J||BR
190
191 address cmd 'bldlevel.exe 'plugindll.J' >'samba.!msg
192
193 I = 0
194 Dummy = linein(samba.!msg)
195 say Dummy
196 Dummy = linein(samba.!msg)
197 say Dummy
198 Dummy = linein(samba.!msg)
199 say Dummy
200 do until lines(samba.!msg) = 0
201 I = I + 1
202 line.I = linein(samba.!msg)
203 if pos('has no LAN component-style version string', line.I) > 0 then do
204 DummyRH = VRMethod('CN_About', 'AddRecord')
205 ok = VRMethod("CN_ABOUT", "SetFieldData", DummyRH, About.DscFH, "Error", About.ValFH, "Plugin has no LAN component-style version string")
206 leave
207 end
208 else do
209 parse var line.I desc':'vers
210 DummyRH = VRMethod('CN_About', 'AddRecord')
211 ok = VRMethod("CN_ABOUT", "SetFieldData", DummyRH, About.DscFH, "Plugin "Desc, About.ValFH, strip(Vers))
212 AboutStr = AboutStr||'0D0A'x||"Plugin "Desc '09'x||strip(Vers)||BR
213 end
214 end
215 line.0 = I
216 ok = stream(samba.!msg,'c','close')
217 ok = SysFileDelete(samba.!msg)
218 end
219 end
220 else do
221 DummyRH = VRMethod('CN_About', 'AddRecord')
222 ok = VRMethod("CN_ABOUT", "SetFieldData", DummyRH, About.DscFH, "Plugin", About.ValFH, "Not found!")
223 AboutStr = AboutStr||'0D0A'x||"Plugin not found!"||BR
224 end
225
226 /* Commandline utilities */
227 address cmd samba.!smbclientexe' -V >'samba.!msg
228 ClutVer = linein(samba.!msg)
229 ok = stream(samba.!msg,'c','close')
230 ok = SysFileDelete(samba.!msg)
231
232 DummyRH = VRMethod('CN_About', 'AddRecord')
233 ok = VRMethod("CN_ABOUT", "SetFieldData", DummyRH, About.DscFH, "Commandline utility path", About.ValFH, VRParseFileName(samba.!smbclientexe,"DP"))
234
235 DummyRH = VRMethod('CN_About', 'AddRecord')
236 ok = VRMethod("CN_ABOUT", "SetFieldData", DummyRH, About.DscFH, "Commandline utilities", About.ValFH, ClutVer)
237 AboutStr = AboutStr||'0D0A'x||"Commandline utilities "||'09'x||ClutVer||BR
238
239 /* GUI Version */
240 DummyRH = VRMethod('CN_About', 'AddRecord')
241 ok = VRMethod("CN_ABOUT", "SetFieldData", DummyRH, About.DscFH, "EVFSGUI", About.ValFH, VRGet("Main", "HintText"))
242 AboutStr = AboutStr||'0D0A'x||"EVFSGUI "||'09'x || VRGet("Main", "HintText")||BR
243 call VRSet "SW_ABOUT", "Painting", 1
244return
245
246/*:VRX _AddTemplates
247*/
248_AddTemplates:
249 VolTplRH = VRMethod("CN_CURRENT", 'AddRecord', , 'First', 'Volume template', icons.!template )
250 MpTplRH = VRMethod("CN_CURRENT", 'AddRecord', VolTplRH, 'First', 'Mountpoint template', icons.!template )
251return
252
253/*:VRX _BrowseBuildPath
254*/
255_BrowseBuildPath: procedure expose options. icons. samba. sharerh
256 if options.!debug == 1 then say time()' _BrowseBuildPath started'
257 rh = arg(1)
258
259 finished = 0
260 BrowsePathStr = ''
261
262 do while \finished
263 parentrh = VRMethod("CN_SMBTREE","GetRecordAttr",rh,"Parent")
264 resname = VRMethod("CN_SMBTREE","GetRecordAttr",rh,"caption")
265 userdata = VRMethod("CN_SMBTREE","GetRecordAttr",rh,"userdata")
266 parse var userdata udatatype '|' udatamsg
267 parse var resname resname '0D0A'x .
268 resname = strip(resname)
269 /* say " Not connected - cannot open!" */
270 select
271 when udatatype = "SERVER" then do
272 BrowsePathStr = '\\'resname'\'BrowsePathStr
273 finished = 1
274 end
275 when udatatype = "DISK" then do
276 BrowsePathStr = resname'\'BrowsePathStr
277 sharerh =rh
278 rh = parentrh
279 end
280 otherwise do
281 BrowsePathStr = resname'\'BrowsePathStr
282 rh = parentrh
283 end
284 end
285 /* say ' BrowsePathStr = "'BrowsePathStr'"' */
286 end
287 BrowsePathStr = strip(BrowsePathStr,'T','\')
288 if options.!debug == 1 then say time()' _BrowseBuildPath done, returning "'BrowsePathStr'"'
289return BrowsePathStr
290
291/*:VRX _BrowseDirectory
292*/
293_BrowseDirectory: /* This must not be a procedure */
294 if options.!debug == 1 then say time()' _BrowseDirectory started'
295
296 /* Turn off painting */
297 ok = VRSet("CN_SMBTREE","Painting", 0 )
298 call VRSet VRWindow(), 'Pointer', 'Wait'
299
300 /* Make sure credentials are usable */
301 if UserCred = 'USERCRED' | UserCred = '' | UserCred = '--user=%' then UserCred = '-N'
302
303 /* We have to remove the double % for smbclient.exe - not entirely clear why */
304 OldUserCred = ""
305 if pos('%%',UserCred) > 0 & pos("4OS2", value("COMSPEC",,"OS2ENVIRONMENT")) = 0 then do
306 OldUserCred = UserCred
307 parse var UserCred '--user='username'%%'password
308 UserCred = '--user='username'%'password
309 say " Strip double %%!!!"
310 end
311
312 say ' 'samba.!smbclientexe' \\'machine'\'sharename' 'UserCred' --command="dir 'browsepath'"'
313 address cmd samba.!smbclientexe' \\'machine'\'sharename' 'UserCred' --command="dir 'browsepath'" 'debuglevel' 2>NUL 1>'samba.!msg
314
315 if UserCred = '-N' then UserCred = ''
316
317 if OldUserCred <> "" then do
318 UserCred = OldUserCred
319 OldUserCred = ""
320 say " Restore double %%!!!"
321 end
322
323 I = 0
324 ok = VRSet("DT_STATUSBAR","Caption", "")
325 do until lines(samba.!msg) = 0
326 infoline = linein(samba.!msg)
327 select
328 when pos('blocks',infoline) > 0 then do /* Last line */
329 /* we should handle size information here */
330 iterate
331 end
332 when I = 0 & length(infoline) > 0 & left(infoline,2) <> " " then do /* Login message */
333 say ' Login message "'Infoline'"'
334 ok = VRMethod("CN_SMBTREE", "SetRecordAttr", SMBObj.rh, "Userdata", SMBObj.udatatype'|'infoline )
335 ok = VRSet("DT_STATUSBAR","Caption", infoline)
336 end
337 when left(infoline,2) = " " & length(infoline) > 0 then do /* file or DIR */
338 wn = words(infoline)
339 fyear = word(infoline,wn)
340 ftime = word(infoline,wn-1)
341 fday = word(infoline,wn-2)
342 fmonth = word(infoline,wn-3)
343 fwday = word(infoline,wn-4)
344 pos_attr = pos(fwday,infoline)-16
345 fsize = word(infoline,wn-5)
346 fattr = substr(infoline,pos_attr,6)
347 fname = strip( substr(infoline,3,pos_attr-3))
348 if fname = '.' | fname = '..' then iterate /* we do not display these */
349 if pos('H',fattr) > 0 then iterate /* we do not display hidden files */
350 if pos('S',fattr) > 0 then iterate /* we do not display system files */
351 I = I + 1
352 fh.I = VRMethod( "CN_SMBTREE", "AddRecord", SMBObj.rh, , fname)
353 if pos('D',fattr) = 0 then do
354 Ext = translate(VRParseFIleName(fname,'E'))
355 select
356 when Ext = 'EXE' then ficon = icons.!exe /* executable */
357 when Ext = 'CMD' then ficon = icons.!cmd /* OS/2 or NT batch */
358 when Ext = 'BAT' then ficon = icons.!bat /* DOS batch */
359 when Ext = 'PDF' then ficon = icons.!pdf /* PDF document */
360 when wordpos(Ext, 'XLS SXC ODS') > 0 then ficon = icons.!spreadsheet
361 when wordpos(Ext, 'DOC SXW ODT') > 0 then ficon = icons.!textdocument
362 when wordpos(Ext, 'FW2 FW3 FW4') > 0 then ficon = icons.!framework
363 when wordpos(Ext, 'JPG BMP PNG GIF TIF') > 0 then ficon = icons.!image
364 when wordpos(Ext, 'AVI MPG FLV WMV') > 0 then ficon = icons.!movie
365 when wordpos(Ext, 'WAV MP3 OGG MID') > 0 then ficon = icons.!sound
366 when wordpos(Ext, 'WPI') > 0 then ficon = icons.!warpin
367 when wordpos(Ext, 'ZIP') > 0 then ficon = icons.!zip
368 when wordpos(Ext, 'INF HLP') > 0 then ficon = icons.!view
369 when wordpos(Ext, 'TXT') > 0 then ficon = icons.!plaintext
370 otherwise ficon = icons.!defaultfile /* default file icon */
371 end
372 ftype = 'FILE'
373 end
374 else do
375 ficon = icons.!folder
376 ftype = 'DIRECTORY'
377 end
378
379 ok = VRmethod("CN_SMBTREE", "SetRecordAttr", fh.I, "userdata", ftype'|'fsize' Bytes 'fday'-'fmonth'-'fyear' 'ftime,'icon',Ficon)
380
381 end
382 otherwise nop /* no other line type */
383 end
384 end
385 if I > 0 then ok = VRMethod("CN_SMBTREE","SetRecordAttr",SMBObj.rh, "Icon", icons.!folder_open)
386 ok = stream(samba.!msg,'c','close')
387 ok = SysFileDelete(samba.!msg)
388
389 ok = VRMethod( "CN_SMBTREE", "SetRecordAttr", SMBObj.rh,"Collapsed", 0)
390 /* Turn on painting */
391 call VRSet VRWindow(), 'Pointer', '<default>'
392 ok = VRSet("CN_SMBTREE","Painting", 1 )
393 if options.!debug == 1 then say time()' _BrowseDirectory done'
394return
395
396/*:VRX _BrowseObjectOpen
397*/
398_BrowseObjectOpen: procedure expose samba. options. cd. icons.
399 machine = arg(1)
400 sharename = arg(2)
401 browsepath = arg(3)
402
403 CALL VRMethod "CN_CONDET", 'GetRecordList', 'All', 'records.'
404
405 OpenOk = 0
406
407 DO i = 1 TO records.0
408 if VRMethod( "CN_CONDET", "GetFieldData", records.i, CD.StatusFH) = icons.!active then do
409 if options.!debug == 1 then say ' 'VRMethod( "CN_CONDET", "GetFieldData", records.i, CD.StatusFH)' 'VRMethod( "CN_CONDET", "GetFieldData", records.i, CD.MPointFH)' 'VRMethod( "CN_CONDET", "GetFieldData", records.i, CD.ServerFH)' 'VRMethod( "CN_CONDET", "GetFieldData", records.i, CD.ShareFH)
410 if machine = VRMethod( "CN_CONDET", "GetFieldData", records.i, CD.ServerFH) &,
411 sharename = VRMethod( "CN_CONDET", "GetFieldData", records.i, CD.ShareFH) then do
412 Object = strip(VRMethod( "CN_CONDET", "GetFieldData", records.i, CD.MPointFH),'T','\')'\'browsepath
413 if options.!debug == 1 then say ' Non UNC object: "'Object'"'
414 ID = VRMethod( "Application", "StartThread", "wps_open", Object, "DEFAULT" )
415 OpenOK = 1
416 end
417 end
418 if OpenOK = 1 then leave
419 end
420return OpenOK
421
422/*:VRX _BrowseResetObject
423*/
424_BrowseResetObject: procedure
425 ok = VRSet("CN_SMBTREE","Painting", 0 )
426 rh = arg(1)
427
428 /* Remove all files and directories whose parent is our share */
429 ok = VRMethod( "CN_SMBTREE", "GetRecordList", "All", "AllRH." )
430 do I = 1 to AllRH.0
431 AllParentRH = VRMethod("CN_SMBTREE","GetRecordAttr",AllRH.I,"Parent")
432 if AllParentRH = rh then ok = VRMethod( "CN_SMBTREE", "RemoveRecord", AllRH.I )
433 end
434 ok = VRSet("CN_SMBTREE","Painting", 1 )
435return
436
437/*:VRX _ContainersInit
438*/
439_ContainersInit:
440 if options.!debug == 1 then say time()' _ContainersInit started'
441 /* Connection details */
442 CD.StatusFH = VRMethod( "CN_CONDET", "AddField", "Icon", "Status" )
443 CD.mpointFH = VRMethod( "CN_CONDET", "AddField", "String", "mpoint" )
444 CD.mpidxFH = VRMethod( "CN_CONDET", "AddField", "String", "index" )
445 CD.workgrpFH = VRMethod( "CN_CONDET", "AddField", "String", "workgroup" )
446 CD.serverFH = VRMethod( "CN_CONDET", "AddField", "String", "server" )
447 CD.shareFH = VRMethod( "CN_CONDET", "AddField", "String", "share" )
448 CD.userFH = VRMethod( "CN_CONDET", "AddField", "String", "user" )
449 CD.passwordFH = VRMethod( "CN_CONDET", "AddField", "String", "password" )
450 CD.spasswordFH = VRMethod( "CN_CONDET", "AddField", "String", "spassword" )
451 CD.masterFH = VRMethod( "CN_CONDET", "AddField", "String", "master" )
452 CD.mtypeFH = VRMethod( "CN_CONDET", "AddField", "String", "mastertype" )
453 CD.memlenFH = VRMethod( "CN_CONDET", "AddField", "String", "memlen" )
454 CD.easupportFH = VRMethod( "CN_CONDET", "AddField", "String", "easupport" )
455 CD.logfileFH = VRMethod( "CN_CONDET", "AddField", "String", "logfile" )
456 CD.loglevelFH = VRMethod( "CN_CONDET", "AddField", "String", "loglevel" )
457 CD.rwFH = VRMethod( "CN_CONDET", "AddField", "String", "readonly" )
458 CD.ctoFH = VRMethod( "CN_CONDET", "AddField", "String", "cachetimeout" )
459 CD.cldFH = VRMethod( "CN_CONDET", "AddField", "String", "cachelistings" )
460 CD.hashFH = VRMethod( "CN_CONDET", "AddField", "String", "hash" )
461
462 /* Connection details */
463 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.mpidxfh , "Visible", options.!debug)
464 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.passwordfh , "Visible", options.!debug)
465 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.spasswordfh , "Visible", options.!debug)
466 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.masterFH , "Visible", options.!debug)
467 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.mtypeFH , "Visible", options.!debug)
468 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.memlenfh , "Visible", options.!debug)
469 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.logfilefh , "Visible", options.!debug)
470 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.loglevelfh , "Visible", options.!debug)
471 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.hashfh , "Visible", options.!debug)
472
473 ok = VRSet("CN_CONDET", "DetailSort", cd.mpointfh )
474
475 /* NLV columns */
476 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.statusfh , "Title", strip(NLVGetMessage(67),"T",":"))
477 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.mpointfh , "Title", strip(NLVGetMessage(27),"T",":"))
478 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.workgrpFH , "Title", strip(NLVGetMessage(21),"T",":"))
479 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.serverFH , "Title", strip(NLVGetMessage(19),"T",":"))
480 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.shareFH , "Title", strip(NLVGetMessage(20),"T",":"))
481 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.userFH , "Title", strip(NLVGetMessage(25),"T",":"))
482 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.ctoFH , "Title", strip(NLVGetMessage(130),"T",":"))
483 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.cldFH , "Title", strip(NLVGetMessage(131),"T",":"))
484 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.easupportFH , "Title", strip(NLVGetMessage(68),"T",":"))
485 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.rwfh , "Title", strip(NLVGetMessage(69),"T",":"))
486
487 /* SMBTree columns */
488 WorkgroupFH= VRMethod( "CN_smbtree", "AddField", "String", "Workgroup" )
489 NBFH = VRMethod( "CN_smbtree", "AddField", "String", "NetBIOS name" )
490 IpFH = VRMethod( "CN_smbtree", "AddField", "String", "IP" )
491 MBFH = VRMethod( "CN_smbtree", "AddField", "String", "Role" )
492 OSFH = VRMethod( "CN_smbtree", "AddField", "String", "OS" )
493 VersionFH = VRMethod( "CN_SmbTree", "AddField", "String", "Version" )
494 CommentFH = VRMethod( "CN_smbtree", "AddField", "String", "Comment" )
495 MacFH = VRMethod( "CN_smbtree", "AddField", "String", "MAC" )
496
497 ok = VRMethod("CN_smbtree","SetfieldAttr",IPFH, "ReadOnly", 1)
498 ok = VRMethod("CN_smbtree","SetfieldAttr",NBFH, "ReadOnly", 1)
499 ok = VRMethod("CN_smbtree","SetfieldAttr",MBFH, "ReadOnly", 1)
500 ok = VRMethod("CN_smbtree","SetfieldAttr",WorkGroupFH,"ReadOnly", 1)
501 ok = VRMethod("CN_smbtree","SetfieldAttr",OSFH, "ReadOnly", 1)
502 ok = VRMethod("CN_smbtree","SetfieldAttr",MacFH, "ReadOnly", 1)
503
504 if options.!debug == 1 then say time()' _ContainersInit done'
505return
506/*:VRX _ContextMenuSelectedSet
507*/
508_ContextMenuSelectedSet:
509 /* Fixme: This routine only works for CN_SMBTREE right now */
510
511 /* Hide all context menu entries */
512 ok = VRSet("Menu_Selected_Remove", "Visible", 0) /* CN_CONDET */
513 ok = VRSet("Menu_Selected_Retry", "Visible", 0) /* CN_CONDET */
514 ok = VRSet("Menu_Selected_Connect", "Visible", 0) /* CN_SMBTREE */
515 ok = VRSet("Menu_Selected_Sep1", "Visible", 0) /* CN_SMBTREE */
516 ok = VRSet("Menu_Selected_Info", "Visible", 0) /* CN_SMBTREE */
517 ok = VRSet("Menu_Selected_TimeSync", "Visible", 0) /* CN_SMBTREE */
518 ok = VRSet("Menu_Selected_Refresh", "Visible", 0) /* CN_SMBTREE */
519 ok = VRSet("Menu_Selected_Default_Workgroup","Visible", 0) /* CN_SMBTREE */
520
521
522/* ok = VRSet("Menu_Selected_TreeView","Visible",1)
523 ok = VRSet("Menu_Selected_DetailsView","Visible",1)
524 */
525 select
526 when SMBObj.udatatype = "DISK" then do
527 ok = VRSet("Menu_Selected_Connect", "Visible", 1)
528 end
529 when SMBObj.udatatype = "SERVER" then do
530 ok = VRSet("Menu_Selected_Connect", "Visible", 1)
531 ok = VRSet("Menu_Selected_Sep1", "Visible", 1)
532 ok = VRSet("Menu_Selected_Info", "Visible", 1)
533 ok = VRSet("Menu_Selected_TimeSync", "Visible", 1)
534 ok = VRSet("Menu_Selected_Refresh", "Visible", 1)
535 end
536 when SMBObj.udatatype = "WORKGROUP" then do
537 ok = VRSet("Menu_Selected_Connect", "Visible", 1)
538 ok = VRSet("Menu_Selected_Sep1", "Visible", 1)
539 ok = VRSet("Menu_Selected_Default_Workgroup","Visible", 1)
540 end
541 when SMBObj.udatatype = "PRINTER" then do
542 call _PrinterInfo
543 /* CALL VRMessage 'Main', NLVGetMessage( 62 ), NLVGetMessage( 5 ), 'E' */
544 end
545 otherwise nop /* FILE DIRECTORY */
546 end
547return
548
549/*:VRX _CreateSmbConf
550*/
551_CreateSmbConf:
552 if options.!debug == 1 then say time()' '||"_CreateSmbConf started"
553 call lineout samba.!smbconf, '# Samba config file created using EVFSGUI ver. 'word(VRGet("Main","Hinttext"),2)
554 call lineout samba.!smbconf, '# from 'value("USER",,'OS2ENVIRONMENT')'@'value("HOSTNAME",,'OS2ENVIRONMENT')
555 call lineout samba.!smbconf, '# Date: 'date()' 'time()
556 call lineout samba.!smbconf, '[global]'
557 if settings.!network <> '' then do
558 call lineout samba.!smbconf, '09'x||'workgroup = 'settings.!network
559 end
560 else do
561 call lineout samba.!smbconf, '09'x||'workgroup = WORKGROUP'
562 end
563 call lineout samba.!smbconf, '09'x||'log level = 0'
564 ok = stream(samba.!smbconf,'c','close')
565 if options.!debug == 1 then say time()' '||"_CreateSmbConf done"
566return
567
568/*:VRX _DaemonRunning
569*/
570_DaemonRunning: procedure expose fs.
571 ok = PRProcessList(proc)
572 PID = 0
573 do I = 1 to proc.0
574 CurProc = VRParseFileName(proc.i.name,'NE')
575 if CurProc = fs.!prefix"CTL.EXE" then do
576 PID = proc.i.pid
577 leave
578 end
579 end
580return PID
581
582/*:VRX _DelSMBObjectShares
583*/
584_DelSMBObjectShares: procedure expose samba. options. SMBObj. rh
585 /* Purpose: Delete shares for a given Object (as handle) */
586
587 rh = arg(1)
588
589 ok = VRMethod("CN_smbtree", "GetRecordList", "All", rh.)
590
591 do J = 1 to rh.0 /* populate shares with valid entries */
592 ParentRH = VRMethod("CN_SMBTREE","GetRecordAttr",rh.J,"Parent")
593
594 if ParentRH = rh then do /* we found a share belonging to our server */
595 ok = VRMethod("CN_SMBTree", "RemoveRecord", rh.J )
596 end
597 end
598 SmbObj.shares. = ''
599 SmbObj.shares.0 = 0
600return
601
602/*:VRX _DialogPopulate
603*/
604_DialogPopulate:
605
606 ok = VRMethod( "CN_SMBTREE", "GetRecordList", "Visible", "rh." )
607
608 ok = VRMethod("EF_SHARE", "Reset")
609 ok = VRMethod("EF_SERVER", "Reset")
610 ok = VRMethod("EF_NETWORK", "Reset")
611
612 do I = 1 to rh.0
613
614 Userdata = VRMethod("CN_SMBTREE","GetRecordAttr",rh.I,"Userdata")
615 ResName = VRMethod("CN_SMBTREE","GetRecordAttr",rh.I,"Caption")
616
617 parse var ResName ResName '0D0A'x .
618 ResName = strip(ResName)
619 parse var userdata ResType '|' .
620
621 select
622 when ResType = "WORKGROUP" then ok = VRMethod("EF_NETWORK","AddString", ResName)
623 when ResType = "SERVER" then ok = VRMethod("EF_SERVER", "AddString", ResName)
624 when ResType = "DISK" then ok = VRMethod("EF_SHARE", "AddString", ResName)
625 otherwise nop
626 end
627 end
628
629return
630
631/*:VRX _DLLSearch
632*/
633_DLLSearch: PROCEDURE
634 PARSE ARG dname
635 _bd = SysBootDrive()
636
637 IF _bd == '' THEN
638 _bd = FILESPEC('DRIVE', VALUE('COMSPEC',,'OS2ENVIRONMENT'))
639 _csys = _bd'\CONFIG.SYS'
640
641 CALL SysFileSearch 'LIBPATH=', _csys, 'match.'
642 DO i = 1 TO match.0
643 PARSE UPPER VAR match.i _lead 'LIBPATH=' _lpath
644 IF (_lead == '') & (_lpath <> '') THEN LEAVE
645 END
646
647 _lpath = SysQueryExtLIBPATH('B') || ';'_lpath';' || SysQueryExtLIBPATH('E')
648
649 CALL SETLOCAL
650 _testenv = 'TEST_'dname'_LIBPATH'
651 CALL VALUE _testenv, _lpath, 'OS2ENVIRONMENT'
652 location = SysSearchPath( _testenv, dname )
653 CALL ENDLOCAL
654
655RETURN location
656
657/*:VRX _dropdeprecated
658*/
659_dropdeprecated:
660 /* The stem-less counterparts of these variables are considered deprecated and should be removed wherever possible
661 The _dropdeprecated routine will drop any value in order to make sure the stem actually works
662 If another variable is added to the stem, ensure to also drop it in dropdeprecated otherwise it will not be exported
663 */
664 drop rh
665 drop parentrh
666 drop gparentrh
667 drop icon
668 drop resname
669 drop comment
670 drop udatatype
671 drop udatamsg
672return
673
674/*:VRX _Dynamic
675*/
676_Dynamic:
677 dyn_code = arg(1)
678 if options.!debug == 1 then say ' Dynamic code: 'dyn_code
679 interpret dyn_code; drop dyn_code
680return
681
682/*:VRX _GetSMBObjectProperties
683*/
684_GetSMBObjectProperties: procedure expose samba. options. SMBObj. rh icon resname udatatype udatamsg parentrh icons.
685 if options.!debug == 1 then say time()' _GetSMBObjectProperties started'
686
687 /* Purpose of this subroutine:
688 The current SMB object's frequently used properties should be stored in a stem
689 SMBObj.rh = recordhandle of the object
690 SMBObj.resname = resourcename of the object
691 SMBObj.comment = commentstring of the object
692 SMBObj.icon = icon of the object
693 SMBObj.udatatype = type of object (WORKGROUP, SERVER, DISK, PRINTER, FILE, DIRECTORY)
694 SMBObj.udatamsg = arbitrary object related data (Login message, file properties)
695 SMBObj.parentrh = recordhandle of the object's parent
696 SMBObj.gparentrh = recordhandle of the object's grandparent
697
698 The stem-less counterparts of these variables are considered deprecated and should be removed wherever possible
699 The _dropdeprecated routine will drop any value in order to make sure the stem actually works
700 If another variable is added to the stem, ensure to also drop it in dropdeprecated otherwise it will not be exported
701 */
702 call _dropdeprecated
703
704 SMBObj. = ""
705 SMBObj.rh = arg(1)
706
707 if VRMethod( "CN_SMBTREE", "ValidateRecord", SMBObj.rh) <> 1 | SMBObj.rh = "" then do
708 if options.!debug == 1 then say time()' _GetSMBObjectProperties aborted'
709 return
710 end
711
712 SMBObj.Icon = VRMethod("CN_SMBTREE", "GetRecordAttr", SMBObj.rh, "Icon")
713
714 SMBObj.parentrh = VRMethod("CN_SMBTREE", "GetRecordAttr", SMBObj.rh, "Parent")
715 if SMBObj.parentrh = ""
716 then SMBObj.gparentrh = ""
717 else SMBObj.gparentrh = VRMethod("CN_SMBTREE", "GetRecordAttr", SMBObj.parentrh, "Parent")
718
719 SMBObj.resname = VRMethod("CN_SMBTREE", "GetRecordAttr", SMBObj.rh, "Caption")
720 parse var SMBObj.resname SMBObj.resname '0D0A'x SMBObj.comment
721 SMBObj.resname = strip(SMBObj.resname)
722 SMBObj.comment = strip(SMBObj.comment)
723
724 Userdata = VRMethod("CN_SMBTREE", "GetRecordAttr", SMBObj.rh, "Userdata")
725 parse var userdata SMBObj.udatatype '|' SMBObj.udatamsg
726 SMBObj.udatatype = strip(SMBObj.udatatype)
727 SMBObj.udatamsg = strip(SMBObj.udatamsg)
728
729 if options.!debug == 1 then do
730 say ' Handle: "'SMBObj.rh'"'
731 say ' GParentrh "'SMBObj.gparentrh'"'
732 say ' Resource: "'SMBObj.resname'"'
733 say ' Comment: "'SMBObj.comment'"'
734 say ' Type: "'SMBObj.udatatype'"'
735 say ' Message: "'SMBObj.udatamsg'"'
736 say ' Icon: "'SMBObj.icon'"'
737 end
738
739 if options.!debug == 1 then say time()' _GetSMBObjectProperties done'
740return
741
742/*:VRX _GetSMBObjectShares
743*/
744_GetSMBObjectShares: procedure expose samba. options. SMBObj.
745 /* Purpose: Return stem with shares for a given Object (as handle) */
746
747 rh = arg(1)
748
749 SmbObj.shares. = ''
750 SmbObj.shares.0 = 0
751 I = 0
752 ok = VRMethod("CN_smbtree", "GetRecordList", "All", rh.)
753
754 do J = 1 to rh.0 /* populate shares with valid entries */
755 Userdata = VRMethod("CN_SMBTREE","GetRecordAttr",rh.J,"Userdata")
756 ResName = VRMethod("CN_SMBTREE","GetRecordAttr",rh.J,"Caption")
757 ParentRH = VRMethod("CN_SMBTREE","GetRecordAttr",rh.J,"Parent")
758
759 parse var ResName ResName '0D0A'x .
760 ResName = strip(ResName)
761 parse var userdata ResType '|' .
762
763 if ParentRH = rh then do /* we found a share belonging to our server */
764 if ResType = "DISK" then do
765 I = I + 1
766 SmbObj.shares.I = ResName
767 end
768 end
769 end
770 SmbObj.shares.0 = I
771return
772
773/*:VRX _GUIInit
774*/
775_GUIInit:
776 if options.!debug == 1 then say time()' _GUIInit started'
777 CALL VRSet 'Main', 'HelpFile', settings.!helpfile
778
779 /* Main Window */
780 CALL NLVSetText 'Main', "Caption", 1
781
782 CALL NLVSetText 'Menu_File', "Caption", 80
783 CALL NLVSetText 'Menu_Context', "Caption", 81
784 CALL NLVSetText 'Menu_Selected', "Caption", 83
785 CALL NLVSetText 'Menu_Help', "Caption", 84
786
787 CALL NLVSetText 'Menu_File_LOAD', "Caption", 31
788 CALL NLVSetText 'Menu_File_SAVE', "Caption", 30
789 CALL NLVSetText 'Menu_File_LMHosts_Reset', "Caption", 127
790 CALL NLVSetText 'Menu_File_ucCred_Reset', "Caption", 128
791 CALL NLVSetText 'Menu_File_Autostart', "Caption", 35
792 CALL NLVSetText 'Menu_File_Autostart_Activate', "Caption", 76
793 CALL NLVSetText 'Menu_File_Autostart_Deactivate', "Caption", 77
794 CALL NLVSetText 'Menu_File_Daemon', "Caption", 126
795 CALL NLVSetText 'Menu_File_Daemon_Start', "Caption", 76
796 CALL NLVSetText 'Menu_File_Daemon_Stop', "Caption", 77
797 CALL NLVSetText 'Menu_File_CLOSE', "Caption", 29
798
799 CALL NLVSetText 'Menu_Context_DETACH', "Caption", 11
800 CALL NLVSetText 'Menu_Context_DETACH_ALL', "Caption", 120
801 CALL NLVSetText 'Menu_Context_REFRESH', "Caption", 38
802 CALL NLVSetText 'Menu_Context_UNMOUNT', "Caption", 12
803 CALL NLVSetText 'Menu_Context_EDIT', "Caption", 32
804 CALL NLVSetText 'Menu_Context_OPEN', "Caption", 94
805 CALL NLVSetText 'Menu_Context_OPEN_ICON', "Caption", 95
806 CALL NLVSetText 'Menu_Context_OPEN_TREE', "Caption", 96
807 CALL NLVSetText 'Menu_Context_OPEN_DETAIL', "Caption", 97
808 CALL NLVSetText 'Menu_Context_OPEN_SETTINGS', "Caption", 98
809 CALL NLVSetText 'Menu_Context_OPEN_SPLITVIEW', "Caption", 99
810
811 CALL NLVSetText 'Menu_Selected_Connect', "Caption", 28
812 CALL NLVSetText 'Menu_Selected_Remove', "Caption", 12
813 CALL NLVSetText 'Menu_Selected_Retry', "Caption", 90
814 CALL NLVSetText 'Menu_Selected_Info', "Caption", 92
815 CALL NLVSetText 'Menu_Selected_TimeSync', "Caption", 129
816 CALL NLVSetText 'Menu_Selected_Refresh', "Caption", 38
817 CALL NLVSetText 'Menu_Selected_Default_Workgroup',"Caption", 75
818
819 CALL NLVSetText 'Menu_Help_Extended', "Caption", 4
820 CALL NLVSetText 'Menu_Help_About', "Caption", 91
821
822 /* Left pane */
823 CALL NLVSetText 'DT_CURRENT', "Caption", 10
824 CALL NLVSetText 'PB_DETACH', "Caption", 11
825 CALL NLVSetText 'PB_UNMOUNT', "Caption", 12
826
827 /* Dialog window */
828 CALL NLVSetText 'DT_MOUNT', "Caption", 14
829 CALL NLVSetText 'DT_SERVER', "Caption", 19
830 CALL NLVSetText 'DT_SHARE', "Caption", 20
831 CALL NLVSetText 'DT_NETWORK', "Caption", 21
832 CALL NLVSetText 'CHK_MTYPE', "Caption", 23
833 CALL NLVSetText 'DT_USER', "Caption", 25
834 CALL NLVSetText 'DT_PASSWORD', "Caption", 26
835 CALL NLVSetText 'DT_MPOINT', "Caption", 27
836 CALL NLVSetText 'PB_MOUNT', "Caption", 28
837 CALL NLVSetText 'PB_EDIT_CANCEL', "Caption", 3
838 CALL NLVSetText 'PB_DIALOG_HELP', "Caption", 4
839 CALL NLVSetText 'PB_CLEARCRED', "Caption", 89
840
841 IF (mtype.1 \= '' & mtype.2 \= '' & mtype.3 \= '' & mtype.4 \= '') THEN DO
842 CALL VRMethod CB_MOUNT, 'Clear'
843 CALL VRMethod CB_MOUNT, 'AddStringList', 'mtype.'
844 END
845
846 if (mtype.1 = '' & mtype.2 = '' & mtype.3 = '' & mtype.4 = '') THEN DO /* we do not seem to have an NLV file */
847 /* we fill the array with the list predefined directly in the GUI control */
848 ok = VRMethod( "CB_MOUNT", "GetStringList", "mtype." )
849 end
850
851 /* SMBTree */
852 CALL NLVSetText 'PB_SMBTREE_CONNECT', "Caption", 28
853 CALL NLVSetText 'PB_SMBTREE_REFRESH', "Caption", 38
854 CALL NLVSetText 'PB_SMBTREE_HELP', "Caption", 4
855 CALL NLVSetText 'CN_SMBTREE', "Caption",140
856
857/** Use AutoSize property instead
858 ok = VRSet("Pict_Throbber","Width", VRMethod( "Screen", "PixelsToTwips", 32 ))
859 ok = VRSet("Pict_Throbber","Height", VRMethod( "Screen", "PixelsToTwips", 32 ))
860**/
861 /* Condet */
862 CALL NLVSetText 'PB_CONDET_SAVE', "Caption", 30
863 CALL NLVSetText 'PB_CONDET_LOAD', "Caption", 31
864 CALL NLVSetText 'PB_CONDET_HELP',"Caption", 4
865
866 /* Statusbar */
867 ok = VRSet("DT_STATUSBAR", "Caption", VRGet("Main", "HintText"))
868
869 /* Common margin around controls */
870 margin = ((VRGet("Main", "InteriorLeft") / 3) * 2) + 2
871
872 smbwait = "#50"
873
874 if options.!debug == 1 then say time()' _GUIInit done'
875return
876
877/*:VRX _INILoad
878*/
879_INILoad:
880 if options.!debug == 1 then say time()' _INILoad started'
881
882 /* Locate the profile */
883 os2_ini = VALUE('USER_INI',,'OS2ENVIRONMENT')
884 inipath = VRParseFilePath( os2_ini, 'DP')
885 IF inipath == '' THEN inipath = SysBootDrive() || '\OS2'
886 settings.!ini = inipath'\evfsgui.ini'
887 drop os2_ini inipath
888 if options.!debug == 1 then say ' EVFSGUI INIfile = "'settings.!ini'"'
889
890 settings.!network = ""
891 /* Create default smb.conf if none exists */
892 if \VRFileExists( samba.!smbconf ) then call _CreateSmbConf
893
894 say _ucInitObj()
895 say _ucChkObj()
896
897 IF STREAM( settings.!ini, 'C', 'QUERY EXISTS') == '' THEN DO
898 /* First start */
899 if options.!debug == 1 then say " First start!"
900
901 advanced.!browseauth = 0
902 advanced.!browseimme = 1
903 advanced.!broadcast = 0
904 advanced.!special = 0
905 advanced.!savepassive= 0
906 advanced.!lmhosts = 1
907
908 advanced.!miniicons = 0
909
910 advanced.!easupport = 1
911 advanced.!readonly = 0
912 advanced.!alwaysmp = 0
913 advanced.!cachetimeout = 10
914 advanced.!cachelistings = 32
915
916 CALL VRSet "Main", 'Height', 7576
917 CALL VRSet "Main", 'Width', 8200
918 CALL VRSet "SPLIT_MAIN", 'Left', 2915
919 CALL VRMethod "Main", 'CenterWindow'
920 call VRSet 'Main', 'Visible', 1
921 call Main_Resize
922 END
923 ELSE DO
924 /* Subsequent start */
925 /* Load window position settings */
926 settings.!x = VRGetIni('Settings', 'X', settings.!ini, 'NoClose')
927 settings.!y = VRGetIni('Settings', 'Y', settings.!ini, 'NoClose')
928 settings.!h = VRGetIni('Settings', 'H', settings.!ini, 'NoClose')
929 settings.!w = VRGetIni('Settings', 'W', settings.!ini, 'NoClose')
930 settings.!s = VRGetIni('Settings', 'S', settings.!ini, 'NoClose')
931
932 IF settings.!x == '' THEN settings.!x = -1
933 IF settings.!y == '' THEN settings.!y = -1
934 IF settings.!h == '' THEN settings.!h = -1
935 IF settings.!w == '' THEN settings.!w = -1
936 IF settings.!s == '' THEN settings.!s = -1
937
938 /* Titlebar settings */
939 settings.!curbcolor = VRGetIni('Settings', 'TitleBarBackground', settings.!ini, 'NoClose')
940 settings.!curfcolor = VRGetIni('Settings', 'TitleBarForeground', settings.!ini, 'NoClose')
941 IF (settings.!curbcolor = '' | settings.!curbcolor = '<default>') THEN settings.!curbcolor = 'SystemActiveTitle'
942 IF (settings.!curfcolor = '' | settings.!curfcolor = '<default>') THEN settings.!curfcolor = 'SystemActiveTitleText'
943
944 /* Load font settings */
945 IF VRFileExists( SysBootDrive() || '\OS2DBCS') == 1
946 THEN default_font = '9.WarpSans Combined'
947 ELSE default_font = '9.WarpSans'
948
949 settings.!cfont = VRGetIni('Settings', 'ContainerFont', settings.!ini, 'NoClose')
950 settings.!wfont = VRGetIni('Settings', 'WindowFont', settings.!ini, 'NoClose')
951 IF settings.!cfont == '' THEN settings.!cfont = default_font
952 IF settings.!wfont == '' THEN settings.!wfont = default_font
953
954 /* Current page */
955 settings.!curpage = VRGetIni('Settings', 'CurrentPage', settings.!ini, 'NoClose')
956 IF settings.!curpage == '' THEN settings.!curpage = 1
957
958 /* Global settings */
959 advanced.!browseauth = VRGetIni('Settings', 'BrowseAuth', settings.!ini, 'NoClose')
960 advanced.!browseimme = VRGetIni('Settings', 'BrowseImme', settings.!ini, 'NoClose')
961 advanced.!broadcast = VRGetIni('Settings', 'Broadcast', settings.!ini, 'NoClose')
962 advanced.!special = VRGetIni('Settings', 'SpecialShares', settings.!ini, 'NoClose')
963 advanced.!savepassive= VRGetIni('Settings', 'SavePassive', settings.!ini, 'NoClose')
964 advanced.!lmhosts = VRGetIni('Settings', 'LMHosts', settings.!ini, 'NoClose')
965 advanced.!miniicons = VRGetIni('Settings', 'MiniIcons', settings.!ini, 'NoClose')
966
967 advanced.!easupport = VRGetIni('Settings', 'EAS', settings.!ini, 'NoClose')
968 advanced.!readonly = VRGetIni('Settings', 'ReadOnly', settings.!ini, 'NoClose')
969 advanced.!alwaysmp = VRGetIni('Settings', 'AlwaysMP', settings.!ini, 'NoClose')
970 advanced.!cachetimeout = VRGetIni('Settings', 'CacheTimeOut', settings.!ini, 'NoClose')
971 advanced.!cachelistings = VRGetIni('Settings', 'CacheListings',settings.!ini, 'NoClose')
972
973 IF advanced.!browseauth == '' THEN advanced.!browseauth = 0
974 IF advanced.!browseimme == '' THEN advanced.!browseimme = 1
975 IF advanced.!broadcast == '' THEN advanced.!broadcast = 0
976 IF advanced.!special == '' THEN advanced.!special = 0
977 IF advanced.!savepassive== '' THEN advanced.!savepassive= 0
978 IF advanced.!lmhosts == '' THEN advanced.!lmhosts = 1
979
980 options.!storecreds = VRGetIni('Settings', 'StoreCreds', settings.!ini, 'NoClose')
981say "options.!storecreds = "options.!storecreds
982 IF options.!storecreds == '' then options.!storecreds = 1
983
984say "options.!storecreds = "options.!storecreds
985 IF _ucChkObj() = 0 then options.!storecreds = 0
986say "options.!storecreds = "options.!storecreds
987
988 options.!tracmark = VRGetIni('Settings', 'TracMarkup', settings.!ini, 'NoClose')
989 options.!debug = VRGetIni('Settings', 'Debug', settings.!ini)
990 IF options.!debug == '' THEN options.!debug = 0 /* Turn off debug by default for release builds */
991 if options.!debug == 1 then ok = VRRedirectStdIO("ON")
992 else ok = VRRedirectStdio("OFF")
993
994 IF advanced.!miniicons == '' THEN advanced.!miniicons = 0
995
996 /* Advanced */
997 IF advanced.!easupport == '' THEN advanced.!easupport = 1
998 IF advanced.!readonly == '' THEN advanced.!readonly = 0
999 IF advanced.!alwaysmp == '' THEN advanced.!alwaysmp = 0
1000 IF advanced.!cachetimeout == '' THEN advanced.!cachetimeout = 10
1001 IF advanced.!cachelistings == '' THEN advanced.!cachelistings = 32
1002
1003 /* Apply the settings */
1004 ok = VRSet("DT_CURRENT","BACKCOLOR", settings.!curbcolor )
1005 ok = VRSet("DT_CURRENT","FORECOLOR", settings.!curfcolor )
1006
1007 ok = VRset("CN_CURRENT", "MiniIcons", advanced.!miniicons)
1008 ok = VRset("CN_SMBTREE", "MiniIcons", advanced.!miniicons)
1009 ok = VRset("CN_CONDET", "MiniIcons", advanced.!miniicons)
1010
1011 IF ( settings.!x >= 0 ) & ( settings.!y >= 0 ) & ( settings.!l >= 0 ) & ( settings.!w >= 0 ) & ( settings.!s >= 0 ) THEN DO
1012 CALL VRSet VRWindow(), 'Left', settings.!x
1013 CALL VRSet VRWindow(), 'Top', settings.!y
1014 CALL VRSet VRWindow(), 'Height', settings.!h
1015 CALL VRSet VRWindow(), 'Width', settings.!w
1016 CALL VRSet "SPLIT_MAIN", 'Left', settings.!s
1017 END
1018 ELSE CALL VRMethod VRWindow(), 'CenterWindow'
1019
1020 CALL VRSet "CN_CURRENT", 'Font', settings.!cfont
1021 CALL VRSet "CN_CONDET", 'Font', settings.!cfont
1022 CALL VRSet "CN_SMBTREE", 'Font', settings.!cfont
1023
1024 CALL VRSet 'Main', 'Font', settings.!wfont
1025 CALL VRSet 'Main', 'StatusFont', settings.!wfont
1026
1027 ok = VRSet("TDL_1","Selected", settings.!curpage)
1028 END
1029
1030 if options.!nogui == 1 then CALL VRLoadSecondary "SW_PROGRESS","W"
1031 else do
1032 if options.!delay > 0 then do
1033 /* Set mouse pointer to wait - this operation might take a few seconds */
1034 call VRSet VRWindow(), 'Pointer', 'Wait'
1035 call Main_Resize
1036 ok = SysSleep(options.!delay)
1037 options.!delay = 0
1038 /* Set mouse pointer to default again */
1039 call VRSet VRWindow(), 'Pointer', '<default>'
1040 end
1041 end
1042
1043 /* Look for usable credentials */
1044 if options.!storecreds = 1 & _ucChkUc() then do
1045 UserCred = _ucGetUc()
1046 parse var UserCred '--user='Credentials.!username'%'Credentials.!password
1047 if left(Credentials.!password,1)='%' then Credentials.!password = substr(Credentials.!password,2)
1048 ok = VRSet("EF_USER", "Value",Credentials.!username)
1049 ok = VRSet("EF_PASSWORD","Value",Credentials.!password)
1050 ok = VRSet("CN_SMBTREE","Caption",VRGet("CN_SMBTREE","Caption")||": "Credentials.!username)
1051 end
1052 else ok = VRSet("CN_SMBTREE","Caption",VRGet("CN_SMBTREE","Caption")||": Guest")
1053
1054 /* SambaInit.VRS needs these 2 */
1055 ShowHidden = advanced.!special
1056 Broadcast = advanced.!broadcast
1057
1058 /* in non debug versions this is normally not visible */
1059 if options.!debug == 1 then say ' NLV MessageFile = "'settings.!messages'"'
1060 if options.!debug == 1 then say ' NLV HelpFile = "'settings.!helpfile'"'
1061
1062 if options.!debug == 1 then say time()' _INILoad done'
1063RETURN
1064
1065/*:VRX _INISave
1066*/
1067_INISave: PROCEDURE EXPOSE settings. options. icons. fs. advanced. cd. samba.
1068 if options.!debug == 1 then say time()' '||"SaveSettings started"
1069
1070 if advanced.!savepassive then call _PassiveSave
1071
1072/* This does not make sense anymore
1073 settings.!network = VRGet("EF_NETWORK","Value")
1074 CALL VRSetIni 'Settings', 'Network', settings.!network, settings.!ini, 'NoClose'
1075 */
1076
1077 font = VRGet("CN_CURRENT", 'Font')
1078 CALL VRSetIni 'Settings', 'ContainerFont', font, settings.!ini, 'NoClose'
1079
1080 font = VRGet('Main', 'Font')
1081 CALL VRSetIni 'Settings', 'WindowFont', font, settings.!ini, 'NoClose'
1082
1083 settings.!curbcolor = VRGet("DT_CURRENT","BackColor")
1084 CALL VRSetIni 'Settings', 'TitleBarBackground', settings.!curbcolor, settings.!ini, 'NoClose'
1085
1086 settings.!curfcolor = VRGet("DT_CURRENT","ForeColor")
1087 CALL VRSetIni 'Settings', 'TitleBarForeground', settings.!curfcolor, settings.!ini, 'NoClose'
1088
1089 /* Global options */
1090 CALL VRSetIni 'Settings', 'BrowseAuth', advanced.!browseauth , settings.!ini, 'NoClose'
1091 CALL VRSetIni 'Settings', 'BrowseImme', advanced.!browseimme , settings.!ini, 'NoClose'
1092 CALL VRSetIni 'Settings', 'Broadcast', advanced.!broadcast , settings.!ini, 'NoClose'
1093 CALL VRSetIni 'Settings', 'SpecialShares', advanced.!special , settings.!ini, 'NoClose'
1094 CALL VRSetIni 'Settings', 'SavePassive', advanced.!savepassive, settings.!ini, 'NoClose'
1095 CALL VRSetIni 'Settings', 'LMHosts', advanced.!lmhosts , settings.!ini, 'NoClose'
1096
1097 CALL VRSetIni 'Settings', 'StoreCreds', options.!storecreds , settings.!ini, 'NoClose'
1098 CALL VRSetIni 'Settings', 'Debug', options.!debug , settings.!ini, 'NoClose'
1099 CALL VRSetIni 'Settings', 'MiniIcons', advanced.!miniicons , settings.!ini, 'NoClose'
1100 CALL VRSetIni 'Settings', 'TracMarkup', options.!tracmark , settings.!ini, 'NoClose'
1101
1102 /* Advanced */
1103 CALL VRSetIni 'Settings', 'EAS', advanced.!easupport , settings.!ini, 'NoClose'
1104 CALL VRSetIni 'Settings', 'ReadOnly', advanced.!readonly , settings.!ini, 'NoClose'
1105 CALL VRSetIni 'Settings', 'AlwaysMP', advanced.!alwaysmp , settings.!ini, 'NoClose'
1106 CALL VRSetIni 'Settings', 'CacheTimeOut', advanced.!cachetimeout , settings.!ini, 'NoClose'
1107 CALL VRSetIni 'Settings', 'CacheListings', advanced.!cachelistings, settings.!ini, 'NoClose'
1108
1109 /* Current page */
1110 settings.!curpage = VRget("TDL_1","Selected")
1111 CALL VRSetIni 'Settings', 'CurrentPage', settings.!curpage , settings.!ini, 'NoClose'
1112
1113 /* Save position and size */
1114 settings.!l = VRGet("Main", 'Left' )
1115 settings.!t = VRGet("Main", 'Top' )
1116 settings.!h = VRGet("Main", 'Height')
1117 settings.!w = VRGet("Main", 'Width' )
1118 settings.!s = VRGet("SPLIT_Main", 'Left' )
1119
1120 CALL VRSetIni 'Settings', 'X', settings.!l, settings.!ini, 'NoClose'
1121 CALL VRSetIni 'Settings', 'Y', settings.!t, settings.!ini, 'NoClose'
1122 CALL VRSetIni 'Settings', 'H', settings.!h, settings.!ini, 'NoClose'
1123 CALL VRSetIni 'Settings', 'W', settings.!w, settings.!ini, 'NoClose'
1124 CALL VRSetIni 'Settings', 'S', settings.!s, settings.!ini
1125
1126 if options.!debug == 1 then say time()' '||"SaveSettings done"
1127RETURN
1128
1129/*:VRX _isValidIPAddress
1130*/
1131_isValidIPAddress: procedure
1132 ipaddr = arg(1)
1133 d. = ''
1134 d.0 = 4
1135 fail = 0
1136 parse var ipaddr d.1 '.' d.2 '.' d.3 '.' d.4
1137 do I = 1 to 4
1138 if datatype(d.I) = 'NUM' then do
1139 if d.I < 0 | d.I > 255 then fail = 1
1140 end
1141 else fail = 1
1142 if fail = 1 then leave
1143 end
1144return(\fail)
1145
1146/*:VRX _LMHostsRead
1147*/
1148_LMHostsRead:
1149 ok = file2stem(samba.!lmhosts,'lmhosts.', 'NoDel')
1150 lmname. = "#"
1151 lmapp. = ""
1152 lmname.0 = lmhosts.0
1153 lmip.0 = lmhosts.0
1154 lmapp.0 = lmhosts.0
1155 do I = 1 to lmhosts.0
1156 if left(lmhosts.I,1) = "#" then iterate
1157 parse var lmhosts.I lmip.I ' ' lmname.I '#' lmapp.I
1158 lmip.I = strip(lmip.I)
1159 lmname.I = strip(lmname.I)
1160 if lmapp.I <> "" & left(lmapp.I,1) <> '#' then lmapp.I = '#'lmapp.I
1161 end
1162 drop lmhosts.
1163return
1164
1165/*:VRX _LMHostsReset
1166*/
1167_LMHostsReset:
1168 ok = SysFileDelete(samba.!lmhosts)
1169
1170 Buttons.1 = NLVGetMessage(2)
1171 Buttons.0 = 1
1172 if ok = 0 then do
1173 id = VRMessage( VRWindow(), NLVGetMessage(118,samba.!lmhosts), NLVGetMessage(127), "Information", "Buttons.", 1, 1 )
1174 end
1175 else do
1176 id = VRMessage( VRWindow(), samba.!lmhosts', RC = 'ok, NLVGetMessage(127), "Error", "Buttons.", 1, 1 )
1177 end
1178return
1179
1180/*:VRX _LMHostsUpdate
1181*/
1182_LMHostsUpdate:
1183 ok = VRMethod( "CN_SMBTREE", "GetRecordList", "Visible", "rh." )
1184 do I = 1 to rh.0
1185 call _GetSMBObjectProperties rh.I
1186 if SMBObj.udatatype = "SERVER" then do
1187 IP = VRMethod("CN_SMBTREE","GetFieldData",rh.I, IPFH )
1188 Role = VRMethod("CN_SMBTREE","GetFieldData",rh.I, MBFH )
1189 parse var IP T1 '.' T2 '.' T3 '.' T4
1190 if datatype(T1) = "NUM" & datatype(T2) = "NUM" & datatype(T3) = "NUM" & datatype(T4) = "NUM" then do
1191 FoundName = 0
1192 /* Don't add localhost and local link IP to LMHosts */
1193 if T1 = '127' & T2 = '0' & T3 = '0' & T4 = '1' then iterate
1194 if T1 = '169' & T2 = '254' then iterate
1195 do J = 1 to lmname.0 /* machine already in LMHosts? */
1196 if lmname.J = SmbObj.resname then do /* Yes? then update IP */
1197 lmip.J = IP
1198 if pos('PDC',Role) > 0 & SMBObj.parentrh <> "" then do
1199 Domain = VRMethod("CN_SMBTREE", "GetRecordAttr", SMBObj.parentrh, "Caption")
1200 lmapp.J = "#DOM:"Domain
1201 end
1202 FoundName = 1
1203 leave
1204 end
1205 end
1206 if FoundName = 0 then do /* New machine for LMhosts - add it */
1207 new = lmname.0 + 1
1208 lmname.0 = new
1209 lmname.new = SmbObj.resname
1210 lmip.0 = new
1211 lmip.new = IP
1212 end
1213 end
1214 end
1215 end
1216 ok = SysFileDelete(samba.!lmhosts)
1217 call lineout samba.!lmhosts,'# Created by 'translate(VRParseFilename(settings.!ini,'N'))' Version 'word(VRGet("Main","Hinttext"),2)' on 'date()' at 'time()
1218 call lineout samba.!lmhosts,'# Syntax:'
1219 call lineout samba.!lmhosts,left('# IP-address',25)||left('NetBIOS-name',16)' [Role]'
1220 do I = 1 to lmname.0
1221 if left(lmname.I,1) = "#" then iterate
1222 call lineout samba.!lmhosts,left(lmip.I,25)||left(lmname.I,16)' 'lmapp.I
1223 end
1224 ok = stream(samba.!lmhosts,'c','close')
1225return
1226
1227/*:VRX _LMHostsWrite
1228*/
1229_LMHostsWrite:
1230
1231return
1232
1233/*:VRX _LoadOtherFuncs
1234*/
1235_LoadOtherFuncs:
1236 IF options.!debug == 1 then say time()' _LoadotherFuncs() started'
1237 SIGNAL ON SYNTAX
1238
1239 call RxFuncAdd 'SysLoadFuncs', 'REXXUTIL', 'SysLoadFuncs'
1240 call SysLoadFuncs
1241
1242 call rxfuncadd 'IniLoadFuncs', 'REXXINI', 'IniLoadFuncs'
1243 call IniLoadFuncs
1244
1245 call RxFuncAdd 'PRLoadFuncs', 'PR1UTIL', 'PRLoadFuncs'
1246 call PRLoadFuncs
1247
1248 call RxFuncAdd 'RxuInit', 'RXU', 'RxuInit'
1249 call RxuInit
1250
1251 SIGNAL OFF SYNTAX
1252 IF options.!debug == 1 then say time()' _LoadotherFuncs() done'
1253return
1254
1255SYNTAX:
1256 IF options.!debug == 1 then say time()' _LoadotherFuncs() error handler entered.'
1257 Fatal = 1
1258 parse source . . InVXIDE
1259 if left(InVXIDE,length(Tempdir)+5) = TempDir||'__tmp'
1260 then xxx = "VX-REXX IDE: "strip(translate(word(sourceline(SIGL-1),4),' ',"',"))
1261 else xxx = 'A'
1262 call VRMessage 'Main', xxx' REXX function library DLL is missing or unloadable!', "EVFSGUI fatal error", "E"
1263 IF options.!debug == 1 then say time()' _LoadotherFuncs() error handler finished, program will be terminated.'
1264signal Quit
1265
1266/*:VRX _ParseCommandLine
1267*/
1268_ParseCommandLine:
1269 if options.!debug == 1 then say time()' _ParseCommandLine() started'
1270 CmdLine = VRGet("Application","Commandline")
1271 upCmdLine = translate(CmdLine)
1272 if options.!debug == 1 then say ' Commandline = "'CmdLine'"'
1273
1274 ForceNDFS = 0
1275 if wordpos('-NDFS',upCmdLine) > 0 then do
1276 if options.!debug == 1 then say " NDFS switch detected"
1277 CmdLine = delWord(CmdLine,wordpos('-NDFS',upCmdLine),1)
1278 upCmdLine = translate(CmdLine)
1279 ForceNDFS = 1
1280 CALL VRSet "Menu_File_Autostart","Visible", 0
1281 end
1282
1283 if wordpos('-AUTOCLOSE',upCmdLine) > 0 then do
1284 options.!autoclose = 1
1285 if options.!debug == 1 then say " AutoClose switch detected"
1286 CmdLine = delWord(CmdLine,wordpos('-AUTOCLOSE',upCmdLine),1)
1287 upCmdLine = translate(CmdLine)
1288 end
1289 if wordpos('-NOGUI',upCmdLine) > 0 then do
1290 options.!nogui = 1
1291 options.!autoclose = 1
1292 if options.!debug == 1 then say " -NOGUI switch detected"
1293 CmdLine = delWord(CmdLine,wordpos('-NOGUI',upCmdLine),1)
1294 upCmdLine = translate(CmdLine)
1295 end
1296
1297 if wordpos('-TIMESYNC',upCmdLine) > 0 then do
1298 options.!timesync = 1
1299 if options.!debug == 1 then say " -TIMESYNC switch detected"
1300 dwpos = wordpos('-TIMESYNC',upCmdLine)
1301 if dwpos = words(upCmdLine) then do /* TIMESYNC was last parm - assume automatic */
1302 options.!timesrv = ""
1303 CmdLine = delWord(CmdLine,wordpos('-TIMESYNC',upCmdLine),1)
1304 end
1305 else do
1306 options.!timesrv = word(upCmdLine,dwpos+1)
1307 if left(options.!timesrv,1) = "-" then do /* other parameter detected */
1308 options.!timesrv = ""
1309 CmdLine = delWord(CmdLine,wordpos('-TIMESYNC',upCmdLine),1)
1310 end
1311 else do /* seems we have a timeserver - IP or name - no further check */
1312 CmdLine = delWord(CmdLine,wordpos('-TIMESYNC',upCmdLine),2)
1313 end
1314 end
1315 upCmdLine = translate(CmdLine)
1316 end
1317
1318 if wordpos('-DELAY',upCmdLine) > 0 then do
1319 if options.!debug == 1 then say " DELAY switch detected"
1320 dwpos = wordpos('-DELAY',upCmdLine)
1321 if dwpos = words(upCmdLine) then do /* DELAY was last parm - assume 60 seconds */
1322 options.!delay = 60
1323 CmdLine = delWord(CmdLine,dwpos,1)
1324 end
1325 else do
1326 options.!delay = word(upCmdLine,dwpos+1)
1327 if datatype(options.!delay) <> "NUM" then do /* No number of seconds specified */
1328 options.!delay = 60
1329 CmdLine = delWord(CmdLine,dwpos,1)
1330 end
1331 else do
1332 CmdLine = delWord(CmdLine,dwpos,2)
1333 end
1334 end
1335 upCmdLine = translate(CmdLine)
1336 if options.!debug == 1 then say " DELAY set to "options.!delay" seconds."
1337 end
1338
1339 Profile = strip(CmdLine,,'"')
1340 if Profile <> "" then do
1341 Profile = strip(VRParseFilename(Profile,"DPNE"))
1342 options.!autoload = 1
1343 if options.!debug == 1 then say ' Profile = "'Profile'"'
1344 if \VRFileExists(Profile) then do
1345 CALL VRMessage 'Main', NLVGetMessage( 102, Profile ), NLVGetMessage( 1 ), 'E'
1346 /* Disable all switches in case of an error */
1347 options.!autoload = 0
1348 options.!autoclose = 0
1349 options.!nogui = 0
1350 options.!delay = 0
1351 end
1352 end
1353 if options.!debug == 1 then say time()' _ParseCommandLine done'
1354return
1355
1356/*:VRX _PassiveLoad
1357*/
1358_PassiveLoad:
1359 if options.!debug == 1 then say time()' '||"_PassiveLoad started"
1360
1361 do cnt = 1 to 255
1362 resdata = VRGetIni( "PassiveConnections", cnt, settings.!ini )
1363 if resdata = "" then leave
1364
1365 parse var resdata p_mpoint resource rwFlag
1366 if options.!debug == 1 then do
1367 say ' Connection 'cnt', resdata ="'resdata'"'
1368 end
1369
1370/* vfs.!drive = FILESPEC('DRIVE', node )
1371 vfs.!mountpoint = STRIP( node, 'T', '\') */
1372
1373 /* In case we only have a volume we reattach the backslash, otherwise restore will fail */
1374 if vfs.!drive = vfs.!mountpoint then vfs.!mountpoint = vfs.!mountpoint||'\'
1375
1376 p_mpidx = ""
1377
1378 call ParseResParmString
1379
1380 p_rw = rwFlag
1381
1382 /* Create the hash string */
1383 hashstr = p_mpoint' 'translate(p_workgroup)' 'translate(p_server)' 'translate(p_share)' 'p_user' 'p_spassword' 'p_easupport' 'p_rw
1384
1385 /* A truncated, useless entry - skip it */
1386 if p_server = "" & p_share = ""& p_workgroup = "" then iterate
1387
1388 md5.cnt = rexx_md5(hashstr)
1389 md5.0 = cnt
1390
1391 /* Passive connection already restored - skip the dupe one */
1392 PassiveDupe = 0
1393 do X = 1 to md5.0-1
1394 if md5.cnt = md5.X then PassiveDupe = 1
1395 end
1396 if PassiveDupe = 1 then iterate /* do not add record for a duplicate passive connection */
1397
1398 /* Everything is ok, let's add a new entry */
1399 cd.lastrh = VRMethod("CN_CONDET","AddRecord")
1400
1401 /* Fill columns now */
1402 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.mpointFH, p_mpoint)
1403 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.mpidxfh, p_mpidx)
1404 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.workgrpFH , p_workgroup)
1405 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.serverfh, p_server)
1406 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.sharefh, p_share)
1407 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.userfh, p_user)
1408 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.passwordfh, p_password)
1409 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.spasswordfh, p_spassword)
1410 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.ctoFH, p_cachetimeout)
1411 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.cldFH, p_cachelistings)
1412 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.masterfh, p_master)
1413 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.mtypefh, p_mtype)
1414 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.easupportfh, p_easupport)
1415 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.rwfh, p_rw)
1416 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.hashfh, md5.cnt)
1417 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.statusfh, icons.!passive)
1418 ok = VRMethod("CN_CONDET", "SetRecordAttr", cd.lastrh, "Icon", icons.!passive)
1419
1420/* Obsolete fields:
1421 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.memlenfh, p_memlen)
1422 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.logfilefh, p_logfile)
1423 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.loglevelfh, p_loglevel) */
1424 end
1425 if options.!debug == 1 then say time()' '||"_PassiveLoad done"
1426return
1427/*:VRX _PassiveSave
1428*/
1429_PassiveSave:
1430 if options.!debug == 1 then say time()' '||"_PassiveSave started"
1431 ok = VRDelIni( "PassiveConnections", "ALL", settings.!ini )
1432
1433 ok = SysIni(settings.!ini, 'PassiveConnections', 'DELETE:')
1434
1435 CALL VRMethod "CN_CONDET", 'GetRecordList', 'All', 'records.'
1436 cnt = 0
1437 DO i = 1 TO records.0
1438
1439 if VRMethod( "CN_CONDET", "GetFieldData", records.i, CD.StatusFH) = icons.!passive then do
1440 cnt = cnt + 1
1441 resdata = ""
1442 resdata = resdata||VRMethod("CN_CONDET","GetFieldData", records.i, cd.mpointfh)||" "
1443 resdata = resdata||'\\'||VRMethod("CN_CONDET","GetFieldData", records.i, cd.workgrpFH )
1444 resdata = resdata||':'||VRMethod("CN_CONDET","GetFieldData", records.i, cd.serverfh)
1445 resdata = resdata||'\'||VRMethod("CN_CONDET","GetFieldData", records.i, cd.sharefh)
1446 resdata = resdata||'@'||VRMethod("CN_CONDET","GetFieldData", records.i, cd.userfh)
1447 resdata = resdata||';WORKGROUP='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.workgrpFH )
1448 resdata = resdata||';SERVER='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.serverfh)
1449 resdata = resdata||';SHARE='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.sharefh)
1450 resdata = resdata||';USER='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.userfh)
1451 resdata = resdata||';PASSWORD='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.passwordfh)
1452 resdata = resdata||';SPASSWORD='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.spasswordfh)
1453 resdata = resdata||';MASTER='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.masterfh)
1454 resdata = resdata||';MASTERTYPE='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.mtypefh)
1455/* resdata = resdata||';MEMLEN='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.memlenfh)
1456 resdata = resdata||';LOGFILE='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.logfilefh)
1457 resdata = resdata||';LOGLEVEL='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.loglevelfh) */
1458 resdata = resdata||';CTO='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.ctoFH)
1459 resdata = resdata||';CLD='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.cldFH)
1460 resdata = resdata||';EASUPPORT='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.easupportfh)
1461 resdata = resdata||' '||VRMethod("CN_CONDET","GetFieldData", records.i, cd.rwfh)
1462 ok = VRSetIni( "PassiveConnections", cnt, resdata, settings.!ini )
1463 END
1464 else iterate
1465 end
1466 if options.!debug == 1 then say time()' '||"_PassiveSave done"
1467return
1468
1469/*:VRX _PrinterInfo
1470*/
1471_PrinterInfo:
1472 if \_SMBpdrInstalled() then do
1473 /* SMB.PDR is not installed */
1474 CALL VRMessage 'Main', NLVGetMessage( 104 ), NLVGetMessage( 5 ), 'E'
1475 end
1476 else do /* SMB.pdr is installed */
1477 /* shared queue name */
1478 p_printer = SMBObj.resname
1479
1480 /* printer server */
1481 capt = VRMethod("CN_SMBTREE", "GetRecordAttr", SMBObj.parentrh, "Caption")
1482 parse var Capt p_prtsrv '0D0A'x .
1483 p_prtsrv = strip(p_prtsrv)
1484
1485 /* workgroup of the printer server */
1486 Gparrh = VRMethod("CN_SMBTREE", "GetRecordAttr", SMBObj.parentrh, "Parent")
1487 capt = VRMethod("CN_SMBTREE", "GetRecordAttr", GParrh, "Caption")
1488 parse var Capt p_workgroup '0D0A'x .
1489
1490 /* This is the string we will find in case this resource is already connected */
1491 DescStr = translate(p_prtsrv'#'p_printer'#'p_workgroup'#')
1492 say '"'DescStr'"'
1493 LDescStr = length(DescStr)
1494
1495 /* Enumerate all SMB ports */
1496 ok = SysIni('SYSTEM','PM_SPOOLER_PORT',"All:",'ports')
1497 if ports.0 = 0 then do
1498 /* No SMB ports installed */
1499 CALL VRMessage 'Main', NLVGetMessage( 105 ), NLVGetMessage( 5 ), 'E'
1500 end
1501 else do
1502 /* At least 1 SMB port was found - lets check whether it is already connected to our resource */
1503 FoundPort = 0
1504 do I = 1 to ports.0
1505 if left(ports.i,3) = 'SMB' then do
1506 say ports.I
1507 say translate(left(SysIni('SYSTEM','PM_'ports.I,'INITIALIZATION'),LDescStr))
1508 say DescStr
1509 if translate(left(SysIni('SYSTEM','PM_'ports.I,'INITIALIZATION'),LDescStr)) = DescStr then do
1510 OurPort = ports.I
1511 FoundPort = 1
1512 leave
1513 end
1514 end
1515 end
1516 say 'OurPort = "'OurPort'"'
1517 if Foundport then do
1518 ok = SysIni('SYSTEM','PM_SPOOLER_PRINTER',"All:",'printer')
1519 FoundPrinter = 0
1520 do I = 1 to printer.0
1521 prtsummary = SysINi('SYSTEM','PM_SPOOLER_PRINTER',printer.i)
1522 parse var prtsummary port ';'PrinterDriver';'PrinterQueue';' .
1523 say printer.I' 'prtsummary
1524 if port = ourPort then do
1525 PrinterName = SysINi('SYSTEM','PM_SPOOLER_PRINTER_DESCR',printer.i)
1526 parse var Printername Printername ';' .
1527 CALL VRMessage 'Main', PrinterName' ('PrinterQueue') prints to port ' Port' connected to \\'p_workgroup'\'p_prtsrv'\'p_printer, NLVGetMessage( 1 ), 'I'
1528 FoundPrinter = 1
1529 leave
1530 end
1531 end
1532 if FoundPrinter = 0 then do
1533 /* Port installed and configured, but not used by any printer */
1534 CALL VRMessage 'Main', NLVGetMessage( 106 ), NLVGetMessage( 5 ), 'E'
1535 end
1536 end
1537 else do
1538 CALL VRMessage 'Main', NLVGetMessage( 62 ), NLVGetMessage( 5 ), 'E'
1539 end
1540 end
1541 end
1542return
1543
1544/*:VRX _ShowMsg
1545*/
1546_ShowMsg:
1547 /* preliminary implementation - we just do not ignore it anymore -
1548 - ShowMsg from smbmon/smbusers should become a shared library */
1549 ok = VRSet("DT_StatusBar", "Caption", Msg.Text)
1550return
1551
1552/*:VRX _SmbConfCreateShadowCopy
1553*/
1554_SmbConfCreateShadowCopy:
1555 if options.!debug == 1 then say time()' _SmbConfCreateShadowCopy started'
1556 /* we create a complete version of smb.conf in temporary directory for reading purposes */
1557 /* as we can only determine a default value from this complete version of the file */
1558 /* however it is not desirable to always have a complete copy normally */
1559 ok = SysFileDelete(samba.!shadowsmbconf)
1560 say ' 'samba.!testparmexe' -v -s 1>'samba.!shadowsmbconf' 2>'TempDir'testparm.stderr'
1561 address cmd samba.!testparmexe' -v -s 1>'samba.!shadowsmbconf' 2>'TempDir'testparm.stderr'
1562 if options.!debug == 1 then say time()' _SmbConfCreateShadowCopy done'
1563return
1564
1565/*:VRX _SMBpdrInstalled
1566*/
1567_SMBpdrInstalled: procedure
1568 ok = VRGetINI("PM_PORT_DRIVER","SMB","SYSTEM")
1569return (ok <> "")
1570
1571/*:VRX _StemsInit
1572*/
1573_StemsInit:
1574 if options.!debug == 1 then say time()' _StemsInit started'
1575 if options.!debug == 1 then say ' initializing options.'
1576 options.!workgroup = ''
1577 options.!server = ''
1578 options.!share = ''
1579 options.!user = ''
1580 options.!password = ''
1581 options.!spassword = ''
1582 options.!master = ''
1583 options.!mastertype = ''
1584 options.!memlen = '2'
1585 options.!cachetimeout = '10'
1586 options.!cachelistings = '32'
1587 options.!easupport = '1'
1588 options.!readonly = ''
1589 options.!loglevel = 0
1590 options.!logfile = ''
1591
1592 options.!autoload = 0
1593 options.!autoclose = 0
1594 options.!nogui = 0
1595 options.!autostart = 0
1596 options.!editmode = 0
1597 options.!delay = 0
1598 options.!storecreds = 0
1599 options.!timesync = 0
1600 options.!timesrv = ''
1601
1602 options.!tracmark = 0
1603
1604 if options.!debug == 1 then say ' initializing vfs. '
1605 vfs.!drive = ''
1606 vfs.!mountpoint = ''
1607
1608 if options.!debug == 1 then say ' initializing advanced. '
1609 advanced.!browseauth = ''
1610 advanced.!browseimme = ''
1611 advanced.!broadcast = ''
1612 advanced.!special = ''
1613 advanced.!savepassive= ''
1614 advanced.!miniicons = ''
1615
1616 advanced.!easupport = 1
1617 advanced.!readonly = ''
1618 advanced.!alwaysmp = ''
1619 advanced.!cachetimeout = '10'
1620 advanced.!cachelistings = '32'
1621
1622 advanced.!smbconfchanged = 0
1623
1624 /* Obsolete */
1625 advanced.!memlen = ''
1626 advanced.!loglevel = '0'
1627 advanced.!logfile = ''
1628
1629 if options.!debug == 1 then say ' initializing credentials. '
1630 credentials.!username = ""
1631 credentials.!password = ""
1632 credentials.!entered = 0
1633
1634 UserCred = ""
1635 RefreshMode = ""
1636
1637 if options.!debug == 1 then say ' initializing mtype. '
1638 mtype.0 = 4
1639 mtype.1 = NLVGetMessage( 15 )
1640 mtype.2 = NLVGetMessage( 16 )
1641 mtype.3 = NLVGetMessage( 17 )
1642 mtype.4 = NLVGetMessage( 18 )
1643
1644 if options.!debug == 1 then say ' initializing icons. '
1645 icons.!bat = '#1:PMWP.DLL'
1646 icons.!cmd = '#2:PMWP.DLL'
1647 icons.!exe = '#3:PMWP.DLL'
1648 icons.!template = '#10:PMWP.DLL'
1649 icons.!drive = '#16:PMWP.DLL'
1650 icons.!defaultfile = '#24:PMWP.DLL'
1651 icons.!folder = '#26:PMWP.DLL'
1652 icons.!folder_open = '#34:PMWP.DLL'
1653 icons.!machine_awake = '#35:PMWP.DLL'
1654 icons.!machine_sleeping = '#61:PMWP.DLL'
1655 icons.!workgroup = '#62:PMWP.DLL'
1656 icons.!pdc = '#63:PMWP.DLL'
1657 icons.!active = '#64:PMWP.DLL'
1658 icons.!passive = '#68:PMWP.DLL'
1659 icons.!printer = '#65:PMWP.DLL'
1660 icons.!drive_inactive = '#70:PMWP.DLL'
1661 icons.!pdf = '#80'
1662 icons.!spreadsheet = '#82'
1663 icons.!textdocument = '#86'
1664 icons.!framework = '#87'
1665 icons.!image = '#88'
1666 icons.!movie = '#89'
1667 icons.!sound = '#90'
1668 icons.!warpin = '#91'
1669 icons.!zip = '#92'
1670 icons.!view = '#93'
1671 icons.!plaintext = '#94'
1672
1673 p_workgroup = "Unknown"
1674 p_server = "Unknown"
1675 p_share = "Unknown"
1676
1677 if options.!debug == 1 then say time()' _StemsInit done'
1678return
1679/*:VRX _TabbedDialogSetup
1680*/
1681_TabbedDialogSetup:
1682 if options.!debug == 1 then say time()' _TabbedDialogSetup started'
1683
1684 w = VRLoad( "TDL_1", VRWindowPath(), "SW_DIALOG" )
1685 ok = VRMethod( "TDL_1", "InsertPage", w,"+ "NLVGetMessage(13)" ")
1686 ok = VRMethod( "TDL_1", "SetStatusText", 1, NLVGetMessage(132,"1","2"))
1687 w = VRLoad( "TDL_1", VRWindowPath(), "SW_ADVANCED" )
1688 ok = VRMethod( "TDL_1", "InsertPage", w,"- "NLVGetMessage(40)" ")
1689 ok = VRMethod( "TDL_1", "SetStatusText", 2, NLVGetMessage(132,"2","2"))
1690
1691 w = VRLoad( "TDL_1", VRWindowPath(), "SW_SMBTREE" )
1692 ok = VRMethod( "TDL_1", "InsertPage", w,"+ "NLVGetMessage(39)" ")
1693
1694 w = VRLoad( "TDL_1", VRWindowPath(), "SW_CONDET" )
1695 ok = VRMethod( "TDL_1", "InsertPage", w,"+ "NLVGetMessage(63)" ")
1696 w = VRLoad( "TDL_1", VRWindowPath(), "SW_SETTINGS" )
1697 ok = VRMethod( "TDL_1", "InsertPage", w,"+ "NLVGetMessage(47)" ")
1698 w = VRLoad( "TDL_1", VRWindowPath(), "SW_SMBCONF" )
1699 ok = VRMethod( "TDL_1", "InsertPage", w,"- "NLVGetMessage(47)" ")
1700 if options.!debug == 1 then say time()' _TabbedDialogSetup done'
1701return
1702
1703
1704/*:VRX _TabFix
1705*/
1706_TabFix:
1707 ok = VRMethod( "TDL_1", "SetTabText", arg(1), " "strip(VRMethod( "TDL_1", "GetTabText", arg(1)))" ")
1708return
1709
1710/*:VRX _TabsStrip
1711*/
1712_TabsStrip:
1713 ok = VRMethod( "TDL_1", "SetTabText", 1, strip(VRMethod( "TDL_1", "GetTabText", 1)))
1714 ok = VRMethod( "TDL_1", "SetTabText", 2, strip(VRMethod( "TDL_1", "GetTabText", 2)))
1715 ok = VRMethod( "TDL_1", "SetTabText", 3, strip(VRMethod( "TDL_1", "GetTabText", 3)))
1716 ok = VRMethod( "TDL_1", "SetTabText", 4, strip(VRMethod( "TDL_1", "GetTabText", 4)))
1717 ok = VRMethod( "TDL_1", "SetTabText", 5, strip(VRMethod( "TDL_1", "GetTabText", 5)))
1718return
1719
1720/*:VRX _TimeSync
1721*/
1722_TimeSync:
1723 if options.!debug == 1 then say time()' _TimeSync started, "'options.!timesrv'"'
1724 TimeMsg.1 = NLVGetMessage(141)' 'time()
1725 if options.!timesrv <> '' then do
1726 say ' 'samba.!netexe' time set -S 'options.!timesrv
1727 address cmd samba.!netexe' time set -S 'options.!timesrv
1728 end
1729 else do
1730 say ' 'samba.!netexe' time set'
1731 address cmd samba.!netexe' time set'
1732 end
1733 options.!timesync = ''
1734 TimeMsg.2 = NLVGetMessage(142)' 'time()
1735 TimeMsg.0 = 2
1736
1737 Buttons.1 = NLVGetMessage(2)
1738 Buttons.0 = 1
1739 id = VRMessageStem( VRWindow(), TimeMsg. , NLVGetMessage(129) , "Information", "Buttons.", 1, 1 )
1740 if options.!debug == 1 then say time()' _TimeSync done'
1741return
1742
1743/*:VRX _UpdateObject
1744*/
1745_UpdateObject: procedure
1746 Object = arg(1)
1747 ObjValue = arg(2)
1748 if VRGet(Object,"Value") <> ObjValue then ok = VRset(Object,"Value",ObjValue)
1749return
1750
1751/*:VRX _UserCredUpdate
1752*/
1753_UserCredUpdate:
1754 if options.!debug == 1 then say time()' _UserCredUpdate started'
1755 credentials.!username = VRGet("EF_USER","Value")
1756 credentials.!password = VRGet("EF_PASSWORD","Value")
1757
1758 if pos("4OS2", value("COMSPEC",,"OS2ENVIRONMENT")) = 1 | pos(left(credentials.!password,1),'01234567890') > 0
1759 then UserCred = '--user='Credentials.!username'%%'Credentials.!password
1760 else UserCred = '--user='Credentials.!username'%'Credentials.!password
1761
1762 if options.!storecreds = 1 & \(UserCred = 'USERCRED' | UserCred = '' | UserCred = '--user=%' | UserCred = '--user=%%' | UserCred = '-N') then do
1763 ok = _ucSetUc()
1764 ok = VRSet("Pict_PWINMEM","PicturePath","#36")
1765 if options.!debug == 1 then call beep 2400, 10
1766 end
1767 else do
1768 if options.!debug == 1 then call beep 200, 20
1769 ok = VRSet("Pict_PWINMEM","PicturePath","#37")
1770 end
1771 if options.!debug == 1 then say time()' _UserCredUpdate done'
1772return
1773
1774/*:VRX CB_client_lanman_auth_Click
1775*/
1776CB_client_lanman_auth_Click:
1777 advanced.!smbconfchanged = 1
1778return
1779
1780/*:VRX CB_client_NTLMv2_auth_Click
1781*/
1782CB_client_NTLMv2_auth_Click:
1783 advanced.!smbconfchanged = 1
1784
1785 if VRGet("CB_client_NTLMv2_auth","Set") = 0 then do
1786 ok = VRSet("CB_client_lanman_auth","Enabled", 1)
1787 ok = VRSet("CB_client_plaintext_auth","Enabled", 1)
1788 end
1789 else do
1790 ok = VRSet("CB_client_lanman_auth","Enabled", 0)
1791 ok = VRSet("CB_client_lanman_auth","Set", 0)
1792 ok = VRSet("CB_client_plaintext_auth","Enabled", 0)
1793 ok = VRSet("CB_client_plaintext_auth","Set", 0)
1794 end
1795return
1796
1797/*:VRX CB_client_plaintext_auth_Click
1798*/
1799CB_client_plaintext_auth_Click:
1800 advanced.!smbconfchanged = 1
1801return
1802
1803/*:VRX CB_client_use_spnego_Click
1804*/
1805CB_client_use_spnego_Click:
1806 advanced.!smbconfchanged = 1
1807return
1808
1809/*:VRX CB_client_use_spnego_principal_Click
1810*/
1811CB_client_use_spnego_principal_Click:
1812 advanced.!smbconfchanged = 1
1813return
1814
1815/*:VRX CB_DEBUG_Click
1816*/
1817CB_DEBUG_Click:
1818
1819return
1820
1821/*:VRX CB_LOGGING_Click
1822*/
1823CB_LOGGING_Click:
1824 if VRFileExists(SysBootDrive()'\ndpsmb.dbg') then
1825 ok = SysFileDelete(SysBootDrive()'\ndpsmb.dbg')
1826 else do
1827 call lineout SysBootDrive()'\ndpsmb.dbg','EVFS debug flag file'
1828 ok = stream(SysBootDrive()'\ndpsmb.dbg','c','close')
1829 end
1830
1831 CALL VRSet "CB_LOGGING", "Set", VRFileExists(SysBootDrive()'\ndpsmb.dbg')
1832return
1833
1834/*:VRX CB_MOUNT_Change
1835*/
1836CB_MOUNT_Change:
1837 if options.!debug == 1 then say time()' '||"CB_MOUNT_Change started"
1838
1839 mount = VRGet("CB_MOUNT", "Value")
1840
1841 /* Catch empty mount type error */
1842 if mount = "" then do
1843 if mtype.1 <> "" then ok = VRSet("CB_MOUNT", "Value", mtype.1)
1844 if options.!debug == 1 then say time()' '||"CB_MOUNT_Change aborted"
1845 return
1846 end
1847
1848 SELECT
1849 WHEN mount == mtype.1 THEN DO
1850 CALL VRSet "DT_SHARE", "Visible", 1
1851 CALL VRSet "EF_SHARE", "Visible", 1
1852 CALL VRSet "DT_SERVER", "Visible", 1
1853 CALL VRSet "EF_SERVER", "Visible", 1
1854 CALL VRSet "CHK_MTYPE", "Visible", 0
1855 CALL NLVSetText "DT_NETWORK", "Caption", 21
1856 END
1857 WHEN mount == mtype.2 THEN DO
1858 CALL VRSet "DT_SHARE", "Visible", 0
1859 CALL VRSet "EF_SHARE", "Visible", 0
1860 CALL VRSet "DT_SERVER", "Visible", 1
1861 CALL VRSet "EF_SERVER", "Visible", 1
1862 CALL VRSet "CHK_MTYPE", "Visible", 0
1863 CALL NLVSetText "DT_NETWORK", "Caption", 21
1864 END
1865 WHEN mount == mtype.3 THEN DO
1866 CALL VRSet "DT_SHARE", "Visible", 0
1867 CALL VRSet "EF_SHARE", "Visible", 0
1868 CALL VRSet "DT_SERVER", "Visible", 0
1869 CALL VRSet "EF_SERVER", "Visible", 0
1870 CALL VRSet "CHK_MTYPE", "Visible", 0
1871 CALL NLVSetText "DT_NETWORK", "Caption", 21
1872 END
1873 WHEN mount == mtype.4 THEN DO
1874 CALL VRSet "DT_SHARE", "Visible", 0
1875 CALL VRSet "EF_SHARE", "Visible", 0
1876 CALL VRSet "DT_SERVER", "Visible", 0
1877 CALL VRSet "EF_SERVER", "Visible", 0
1878 CALL VRSet "CHK_MTYPE", "Visible", 1
1879 CALL NLVSetText "DT_NETWORK", "Caption", 22
1880 END
1881 OTHERWISE DO
1882 id = VRMessage( "", 'unknown mount type here >>'mount'<< mtype1=>>'mtype.1'<<', "Mount change error", "E", )
1883 END
1884 END
1885 if options.!debug == 1 then say time()' '||"CB_MOUNT_Change done"
1886RETURN
1887
1888/*:VRX CN_CONDET_Click
1889*/
1890CN_CONDET_Click:
1891 /* ok = VRset("DT_StatusBar","Caption", VRGet("Main", "HintText")) */
1892return
1893
1894/*:VRX CN_CONDET_ContextMenu
1895*/
1896CN_CONDET_ContextMenu:
1897 rh = VRInfo('Record')
1898 if VRMethod( "CN_CONDET", "ValidateRecord", rh) <> 1 then return
1899
1900 /* Hide all context menu entries */
1901 ok = VRSet("Menu_Selected_Remove", "Visible", 0) /* CN_CONDET */
1902 ok = VRSet("Menu_Selected_Retry", "Visible", 0) /* CN_CONDET */
1903 ok = VRSet("Menu_Selected_Connect", "Visible", 0) /* CN_SMBTREE */
1904 ok = VRSet("Menu_Selected_Sep1", "Visible", 0) /* CN_SMBTREE */
1905 ok = VRSet("Menu_Selected_Info", "Visible", 0) /* CN_SMBTREE */
1906 ok = VRSet("Menu_Selected_TimeSync", "Visible", 0) /* CN_SMBTREE */
1907 ok = VRSet("Menu_Selected_Refresh", "Visible", 0) /* CN_SMBTREE */
1908 ok = VRSet("Menu_Selected_Default_Workgroup","Visible", 0) /* CN_SMBTREE */
1909
1910 /* This is the place to enable specific context menu entries */
1911 ok = VRMethod( "CN_CONDET", "GetRecordList", "All", "records." )
1912 ok = VRSet("Menu_Selected_Remove", "Visible", (records.0 <> 0))
1913 ok = VRSet("Menu_Selected_Retry", "Visible", (records.0 <> 0))
1914
1915 if VRMethod( "CN_CONDET", "GetFieldData", rh, CD.StatusFH) = icons.!passive then do
1916 ok = VRSet("Menu_Selected_Retry", "Enabled",1)
1917 ok = VRSet("Menu_Selected_Remove", "Enabled",1)
1918 end
1919 ok = VRMethod( "Menu_Selected", "Popup", , , "", "" )
1920return
1921/*:VRX CN_CONDET_DragStart
1922*/
1923CN_CONDET_DragStart:
1924
1925 obj = VRInfo( "object" )
1926 ok = VRMethod( "CN_CONDET", "GetRecordList", "SourceOrSelected", "selrec." )
1927 if selrec.0 = 0 then return
1928
1929 Icon = VRMethod("CN_CONDET", "GetRecordAttr", selrec.1, "Icon")
1930
1931 if Icon = icons.!printer then do /* Printers not supported at the moment */
1932 call beep 4800,100
1933 CALL VRMessage 'Main', NLVGetMessage( 62 ), NLVGetMessage( 5 ), 'E'
1934 end
1935 else call VRMethod obj, 'StartDrag'
1936return
1937
1938/*:VRX CN_CURRENT_Click
1939*/
1940CN_CURRENT_Click:
1941 if options.!debug == 1 then say time()' CN_CURRENT_Click started'
1942 /* ok = VRset("DT_StatusBar","Caption", VRGet("Main", "HintText")) */
1943
1944 /* Herwig B. */
1945 CALL VRSet "TM_AUTOCLOSE", "ENABLED", 0
1946 ok = VRSet("Menu_Selected_Default_Workgroup","Visible", 0)
1947
1948 rh = VRInfo('Record')
1949 if VRMethod( "CN_CURRENT", "ValidateRecord", rh) <> 1 then return
1950
1951 data = VRMethod("CN_CURRENT", 'GetRecordAttr', rh, 'UserData')
1952 options.currentdata = data
1953
1954 /* ok = VRset("DT_StatusBar","Caption", data' - 'VRGet("Main", "HintText")) */
1955
1956 PARSE VAR data p_node ';' p_mounts ';' p_string
1957
1958 if options.!debug == 1 then do
1959 say ' data = "'data'"'
1960 say ' p_node = "'p_node'"'
1961 say ' p_mounts = "'p_mounts'"'
1962 say ' p_string = "'p_string'"'
1963 end
1964
1965 if p_string = ""
1966 then infotext = fs.!name' 'fs.!version
1967 else infotext = p_string
1968
1969 if infotext = "" then infotext = " "
1970 CALL VRSet "CN_CURRENT", "Caption", infotext
1971 CALL VRSet "CN_CURRENT", 'HintText',infotext
1972
1973 IF p_mounts > 0 THEN DO
1974 CALL VRSet 'PB_UNMOUNT', 'Enabled', 1
1975 CALL VRSet 'MENU_CONTEXT_UNMOUNT', 'Visible', 1
1976
1977 if pos("*",p_string) > 0 | pos(";",p_string) > 0
1978 then CALL VRSet 'MENU_CONTEXT_EDIT', 'Visible', 0
1979 else CALL VRSet 'MENU_CONTEXT_EDIT', 'Visible', 1
1980 END
1981 ELSE DO
1982 CALL VRSet 'PB_UNMOUNT', 'Enabled', 0
1983 CALL VRSet 'MENU_CONTEXT_UNMOUNT', 'Visible', 0
1984 CALL VRSet 'MENU_CONTEXT_EDIT', 'Visible', 0
1985 END
1986
1987 parent = VRMethod("CN_CURRENT", 'GetRecordAttr', rh, 'Parent')
1988
1989 IF parent == '' THEN DO
1990 CALL VRSet 'PB_DETACH', 'Enabled', 1
1991 CALL VRSet 'MENU_CONTEXT_DETACH', 'Visible', 1
1992 CALL VRSet 'MENU_CONTEXT_OPEN', 'Visible', 1
1993/* CALL VRSet 'MENU_CONTEXT_SEP1', 'Visible', 1 */
1994 CALL VRSet 'MENU_CONTEXT_DETACH_ALL', 'Visible', 1
1995/* CALL VRSet 'MENU_CONTEXT_SEP2', 'Visible', 1 */
1996
1997 END
1998 ELSE DO
1999 CALL VRSet 'PB_DETACH', 'Enabled', 0
2000 CALL VRSet 'MENU_CONTEXT_DETACH', 'Visible', 0
2001 CALL VRSet 'MENU_CONTEXT_OPEN', 'Visible', 0
2002/* CALL VRSet 'MENU_CONTEXT_SEP1', 'Visible', 0 */
2003 CALL VRSet 'MENU_CONTEXT_DETACH_ALL', 'Visible', 0
2004/* CALL VRSet 'MENU_CONTEXT_SEP2', 'Visible', 0 */
2005 END
2006
2007 parse var p_string p_workgroup'\\'p_server'\'p_share
2008
2009 p_workgroup = strip(p_workgroup,'T',':')
2010
2011 if options.!debug == 1 then do
2012 say ' p_workgroup = "'p_workgroup'"'
2013 say ' p_server = "'p_server'"'
2014 say ' p_share = "'p_share'"'
2015 end
2016
2017 p_server = translate(p_server)
2018
2019 ok = VRSet("EF_NETWORK","Value", p_workgroup)
2020 if p_workgroup <> "" then do
2021 wgh = _GetMachineHandle(p_workgroup)
2022 if wgh = "" then wgh = _AddWorkGroup(p_workgroup)
2023 call _UpdateObject "EF_SERVER", p_server
2024 mh = _GetMachineHandle(p_server)
2025 if mh = "" & p_server <> "*" then do
2026 mh = _AddSleepingMachine(p_server,'',wgh)
2027 machine = p_server
2028 call _RefreshShares
2029 end
2030 ok = VRSet("EF_Share","Value", p_share)
2031 select
2032 when p_workgroup = "*" then ok = VRSet("CB_MOUNT","Value", mtype.4)
2033 when p_server = "*" then ok = VRSet("CB_MOUNT","Value", mtype.3)
2034 when p_share = "*" then ok = VRSet("CB_MOUNT","Value", mtype.2)
2035 otherwise ok = VRSet("CB_MOUNT","Value", mtype.1)
2036 end
2037 end
2038 if options.!debug == 1 then say time()' CN_CURRENT_Click done'
2039RETURN
2040
2041/*:VRX CN_CURRENT_ContextMenu
2042*/
2043CN_CURRENT_ContextMenu: /* PROCEDURE EXPOSE existrec. options. icons. fs. */
2044 if options.!debug == 1 then say time()' '||"CN_CURRENT_ContextMenu started"
2045
2046 CALL VRSet "TM_AUTOCLOSE", "ENABLED", 0
2047
2048 rh = VRInfo('Record')
2049
2050 /* we have to check whether the record still exists because under certain
2051 circumstances the event routine is executed after the record was already
2052 removed */
2053 if VRMethod( "CN_CURRENT", "ValidateRecord", rh) <> 1 then do
2054 if options.!debug == 1 then say time()' '||"CN_CURRENT_ContextMenu aborted"
2055 return
2056 end
2057
2058 data = VRMethod("CN_CURRENT", 'GetRecordAttr', rh, 'UserData')
2059 PARSE VAR data p_node ';' p_mounts ';' p_string
2060
2061 if options.!debug == 1 then do
2062 say ' data = "'data'"'
2063 say ' p_node = "'p_node'"'
2064 say ' p_mounts = "'p_mounts'"'
2065 say ' p_string = "'p_string'"'
2066 end
2067/*
2068 infotext = p_node
2069 DO i = 1 TO p_mounts
2070 infotext = infotext ' ['p_string']'
2071 END
2072*/
2073 if p_string = ""
2074 then infotext = fs.!name' 'fs.!version
2075 else infotext = p_string
2076
2077 if infotext = "" then infotext = " "
2078 CALL VRSet "CN_CURRENT", "Caption", infotext
2079 CALL VRSet "CN_CURRENT", 'HintText',infotext
2080
2081 CALL VRSet 'MENU_CONTEXT_OPEN', 'Visible', 1
2082/* CALL VRSet 'MENU_CONTEXT_SEP1', 'Visible', 1
2083 CALL VRSet 'MENU_CONTEXT_SEP2', 'Visible', 1
2084 CALL VRSet 'MENU_CONTEXT_SEP3', 'Visible', 1 */
2085 CALL VRSet 'Menu_Context_Open_Default', "Visible", 1
2086
2087 IF p_mounts > 0 THEN DO
2088 CALL VRSet 'PB_UNMOUNT', 'Enabled', 1
2089 CALL VRSet 'MENU_CONTEXT_UNMOUNT', 'Visible', 1
2090
2091 if pos("*",p_string) > 0 | pos(";",p_string) > 0 then CALL VRSet 'MENU_CONTEXT_EDIT', 'Visible', 0
2092 else CALL VRSet 'MENU_CONTEXT_EDIT', 'Visible', 1
2093 END
2094 ELSE DO
2095 CALL VRSet 'PB_UNMOUNT', 'Enabled', 0
2096 CALL VRSet 'MENU_CONTEXT_UNMOUNT', 'Visible', 0
2097 CALL VRSet 'MENU_CONTEXT_EDIT', 'Visible', 0
2098 END
2099
2100 parent = VRMethod("CN_CURRENT", 'GetRecordAttr', rh, 'Parent')
2101
2102 IF parent == '' THEN DO
2103 CALL VRSet 'PB_DETACH', 'Enabled', 1
2104 CALL VRSet 'MENU_CONTEXT_DETACH', 'Visible', 1
2105 CALL VRSet 'MENU_CONTEXT_OPEN', 'Visible', 1
2106/* CALL VRSet 'MENU_CONTEXT_SEP1', 'Visible', 1 */
2107 CALL VRSet 'MENU_CONTEXT_DETACH_ALL', 'Visible', 1
2108/* CALL VRSet 'MENU_CONTEXT_SEP2', 'Visible', 1 */
2109/* CALL VRSet 'MENU_CONTEXT_SEP3', 'Visible', 1 */
2110 END
2111 ELSE DO
2112 CALL VRSet 'PB_DETACH', 'Enabled', 0
2113 CALL VRSet 'MENU_CONTEXT_DETACH', 'Visible', 0
2114 CALL VRSet 'MENU_CONTEXT_OPEN', 'Visible', 0
2115/* CALL VRSet 'MENU_CONTEXT_SEP1', 'Visible', 0 */
2116 CALL VRSet 'MENU_CONTEXT_DETACH_ALL', 'Visible', 0
2117/* CALL VRSet 'MENU_CONTEXT_SEP2', 'Visible', 0 */
2118/* CALL VRSet 'MENU_CONTEXT_SEP3', 'Visible', 0 */
2119 END
2120
2121 ok = VRMethod( "Menu_Context", "Popup", , , "", "" )
2122 if options.!debug == 1 then say time()' '||"CN_CURRENT_ContextMenu done"
2123return
2124
2125/*:VRX CN_CURRENT_DoubleClick
2126*/
2127CN_CURRENT_DoubleClick:
2128 if options.!debug == 1 then say time()' '||"CN_CURRENT_DoubleClick started"
2129
2130 CALL VRSet "TM_AUTOCLOSE", "ENABLED", 0
2131
2132 rh = VRInfo('Record')
2133
2134 /* we have to check whether the record still exists because under certain
2135 circumstances the event routine is executed after the record was already
2136 removed */
2137 if VRMethod( "CN_CURRENT", "ValidateRecord", rh) <> 1 then do
2138 if options.!debug == 1 then say time()' '||"CN_CURRENT_DoubleClick aborted"
2139 return
2140 end
2141
2142 data = VRMethod("CN_CURRENT", 'GetRecordAttr', rh, 'UserData')
2143 PARSE VAR data p_node ';' p_mounts ';' p_string
2144
2145 if options.!debug == 1 then do
2146 say ' data = "'data'"'
2147 say ' p_node = "'p_node'"'
2148 say ' p_mounts = "'p_mounts'"'
2149 say ' p_string = "'p_string'"'
2150 end
2151 call Menu_Context_Open_Default_Click
2152
2153 if options.!debug == 1 then say time()' '||"CN_CURRENT_DoubleClick done"
2154return
2155
2156/*:VRX CN_CURRENT_DragDrop
2157*/
2158CN_CURRENT_DragDrop:
2159 if options.!debug == 1 then say time()' CN_CURRENT_DragDrop started'
2160 ok = VRSet("TM_RefreshCurrentDisplay","Enabled", 0)
2161 if options.!debug == 1 then say " settings.!network = "settings.!network
2162
2163 p_workgroup = ''
2164 p_server = ''
2165 p_share = ''
2166
2167 srcFile = VRInfo( "SourceFile" )
2168 srcCtn = VRInfo( "SourceObject" )
2169 srcRec = VRInfo( "SourceRecord" )
2170 trgCtn = VRInfo( "TargetObject" )
2171 trgRec = VRInfo( "TargetRecord" )
2172
2173 if options.!debug == 1 then do
2174 say ' srcFile = "'srcFile'"'
2175 say ' srcCtn = "'srcCtn'"'
2176 if srcCtn <> "" then say ' srcCtn name = "'VRGet(srcCtn,'Name')'"'
2177 say ' srcRec = "'srcRec'"'
2178 say ' trgCtn = "'trgCtn'"'
2179 if trgCtn <> "" then say ' trgCtn name = "'VRGet(trgCtn,'Name')'"'
2180 say ' trgRec = "'trgRec'"'
2181 end
2182
2183 if srcFile <> "" then do /* A file was dropped onto the container - attempt to load it */
2184 if options.!debug == 1 then say ' Possible profile dropped: "'srcFile'"'
2185
2186 /* was it really a profile ? */
2187 if translate(VRParseFileName(srcFile,'E')) = translate(fs.!profileext) then do /* Yes - load it! */
2188 options.!autoload = 1
2189 Profile = srcFile
2190 call Menu_File_Load_Click
2191 ok = VRSet("EF_NETWORK","Value",options.!workgroup)
2192 end
2193 else do /* No - barf! */
2194 buttons.0 = 1
2195 buttons.1 = NLVGetMessage(9)
2196 ok = VRMessage('Main', NLVGetMessage(103,srcFile ), NLVGetMessage(5), 'E','buttons.')
2197 end
2198 if options.!debug == 1 then say time()' CN_CURRENT_DragDrop done (load profile)'
2199 return
2200 end
2201
2202 ok = VRMethod("CB_MOUNT", "GetStringList", "ShareLevels." )
2203
2204 if VRGet(srcCtn,'Name') = "CN_CONDET" then do
2205 p_mpoint = VRMethod("CN_CONDET", "GetFieldData", srcRec, CD.MpointFH)
2206
2207 p_workgroup = VRMethod("CN_CONDET", "GetFieldData", srcRec, cd.workgrpFH )
2208 p_server = VRMethod("CN_CONDET", "GetFieldData", srcRec, CD.ServerFH)
2209 p_share = VRMethod("CN_CONDET", "GetFieldData", srcRec, CD.ShareFH)
2210 p_user = VRMethod("CN_CONDET", "GetFieldData", srcRec, CD.UserFH)
2211 p_password = x2c(VRMethod("CN_CONDET", "GetFieldData", srcRec, CD.SpasswordFH))
2212
2213 ShareLevel = 1
2214 if p_share = "" then ShareLevel = 2
2215 if p_server = "" then ShareLevel = 3
2216 if p_workgroup = "" then ShareLevel = 4
2217
2218 ok = VRSet("CB_MOUNT", "Selected", Sharelevel )
2219 ok = VRset("CB_MOUNT", "Value", mtype.sharelevel)
2220
2221 call _UpdateObject "EF_SERVER", p_server
2222 ok = VRset("EF_SHARE", "Value", p_share)
2223 ok = VRset("EF_NETWORK", "Value", p_workgroup)
2224 ok = VRset("EF_USER", "Value", p_user)
2225 ok = VRset("EF_PASSWORD", "Value", p_password)
2226
2227 parse var p_mpoint p_drv '\' p_dir
2228
2229 p_dir = strip(p_dir,'T','\')
2230
2231 ok = VRset("CB_DRIVES", "Value", p_drv)
2232 ok = VRset("EF_DIRECTORY", "Value", p_dir)
2233 end /* Drag from CN_CONDET */
2234
2235 else do /* Drag from CN_SMBTREE */
2236 call _GetSMBObjectProperties srcRec
2237 select
2238 when SMBObj.udatatype = "WORKGROUP" then do
2239 say "Workgroup dragged!"
2240 p_workgroup = SMBObj.resname
2241 p_server = ""
2242 p_share = ""
2243
2244 ShareLevel = 3
2245 end
2246 when SMBObj.udatatype = "SERVER" then do
2247 say "Server dragged!"
2248 if SMBObj.parentrh <> "" then do /* detect server without workgroup */
2249 p_workgroup = VRMethod("CN_SMBTREE", "GetRecordAttr", SMBObj.parentrh, "Caption")
2250 end
2251 p_server = SMBObj.resname
2252 p_share = ""
2253
2254 ShareLevel = 2
2255 end
2256 when SMBObj.udatatype = "DISK" then do
2257 say "Shared disk dragged!"
2258 if SMBObj.gparentrh <> "" then do /* detect share on a server without workgroup */
2259 p_workgroup = VRMethod("CN_SMBTREE", "GetRecordAttr", SMBObj.gparentrh, "Caption")
2260 end
2261 p_server = VRMethod("CN_SMBTREE", "GetRecordAttr", SMBObj.parentrh, "Caption")
2262 parse var p_server p_server '0D0A'x .
2263 p_share = SMBObj.resname
2264
2265 ShareLevel = 1
2266 end
2267 otherwise nop /* Printer */
2268 end
2269 ok = VRSet("EF_NETWORK","Value",p_workgroup)
2270 call _UpdateObject "EF_SERVER", p_server
2271 ok = VRSet("EF_Share","Value", p_share)
2272 end /* Drag from CN_SMBTREE */
2273
2274 if options.!debug == 1 then do
2275 say 'p_workgroup = "'p_workgroup'"'
2276 say 'p_server = "'p_server'"'
2277 say 'p_share = "'p_share'"'
2278 end
2279
2280 ok = VRSet( "CB_MOUNT", "Selected", Sharelevel )
2281
2282 settings.!network = VRGet("EF_NETWORK","Value")
2283 call CB_MOUNT_Change
2284
2285 if trgRec = "" then do
2286 ok = VRMethod("CB_DRIVES", "GetStringList", "freedrives.")
2287 if freedrives.0 > 0
2288 then ok = VRSet("CB_DRIVES","Value", freedrives.1)
2289 else ok = VRSet("CB_DRIVES","Value", "")
2290
2291 ok = VRSet("EF_DIRECTORY","Value", "")
2292 end
2293 else do
2294 TargetString = VRMethod(trgCtn, "GetRecordAttr", trgRec, "Caption")
2295
2296 parTrgRH = VRMethod(trgCtn, "GetRecordAttr", trgRec, "Parent")
2297
2298 do while parTrgRH <> ""
2299 partrgCapt = VRMethod(trgCtn, "GetRecordAttr", partrgRH, "Caption")
2300 TargetString = partrgCapt||'\'||TargetString
2301 parTrgRH = VRMethod(trgCtn, "GetRecordAttr", partrgRH , "Parent")
2302 end
2303 say 'TargetString = "'TargetString'"'
2304 ok = VRSet("CB_DRIVES","Value", left(TargetString,2))
2305 ok = VRSet("EF_DIRECTORY","Value", substr(TargetString,4))
2306 end
2307
2308 window = VRLoadSecondary( "SW_MOUNTPOINT", "W" )
2309 if VRGet("CB_DRIVES","Value") = "" then return
2310
2311 window = VRLoadSecondary( "SW_LOGIN", "W" )
2312 if credentials.!entered = 1 then call PB_MOUNT_CLICK
2313
2314 if VRGet(srcCtn,'Name') = "CN_CONDET" & VRMethod( "CN_CONDET", "ValidateRecord", srcRec) = 1 then do
2315 if VRMethod("CN_CONDET", "GetRecordAttr", srcRec, "Icon") = icons.!passive then ok = VRMethod( "CN_CONDET", "RemoveRecord", srcRec)
2316 end
2317 if options.!debug == 1 then say time()' CN_CURRENT_DragDrop done'
2318return
2319/*:VRX CN_SMBTREE_Click
2320*/
2321CN_SMBTREE_Click:
2322 if options.!debug == 1 then say time()' CN_SMBTREE_Click started'
2323 /* ok = VRset("DT_StatusBar","Caption", VRGet("Main", "HintText")) */
2324
2325 call _dropdeprecated
2326 call _GetSmbObjectProperties VRInfo('Record')
2327 call _ContextMenuSelectedSet
2328
2329 ok = VRset("DT_Statusbar", "Caption", SMBObj.udatamsg)
2330
2331 if options.!debug == 1 then say time()' CN_SMBTREE_Click done'
2332return
2333/*:VRX CN_SMBTREE_ContextMenu
2334*/
2335CN_SMBTREE_ContextMenu:
2336 if options.!debug == 1 then say time()' CN_SMBTREE_ContextMenu started'
2337
2338 call _dropdeprecated
2339 call _GetSmbObjectProperties VRInfo('Record')
2340
2341 call _ContextMenuSelectedSet
2342 ok = VRMethod( "Menu_Selected", "Popup", , , "", "" )
2343
2344 if options.!debug == 1 then say time()' CN_SMBTREE_ContextMenu done'
2345return
2346/*:VRX CN_SMBTREE_DoubleClick
2347*/
2348CN_SMBTREE_DoubleClick:
2349 if options.!debug == 1 then say time()' CN_SMBTREE_DoubleClick started'
2350
2351 call _dropdeprecated
2352 call _GetSmbObjectProperties VRInfo('Record')
2353
2354/* if options.!debug == 1 then say time()' CN_SMBTREE_DoubleClick done'
2355return */
2356 /* Enable last 2 lines for 2.0.x (to disable on the fly browsing) */
2357
2358 if options.!debug == 1 then say ' Browsing "'SMBObj.udatatype'"'
2359
2360 If SMBObj.udatatype = "DIRECTORY" then do
2361 BrowsePath = _browsebuildpath(SMBObj.rh)
2362
2363 call _BrowseResetObject(SmbObj.rh)
2364
2365 parse var browsepath '\\'machine'\'sharename '\' browsepath
2366 browsepath = browsepath'\*'
2367
2368 call _BrowseDirectory
2369 end
2370
2371 If SMBObj.udatatype = "FILE" then do
2372 BrowsePath = _browsebuildpath(SMBObj.rh)
2373 call _BrowseResetObject(SmbObj.rh)
2374
2375 parse var browsepath '\\'machine'\'sharename '\' browsepath
2376
2377 OpenOk = _browseobjectopen(machine,sharename,browsepath)
2378
2379 if \OpenOK then do
2380 say " Not connected - trying to connect"
2381 ok = VRMethod( "CN_SMBTREE", "SetRecordAttr", sharerh, "Selected", 1)
2382 call PB_SMBTREE_CONNECT_Click
2383 ok = VRMethod( "CN_SMBTREE", "SetRecordAttr", SMBObj.rh, "Selected", 1)
2384
2385 OpenOk = _browseobjectopen(machine,sharename,browsepath)
2386
2387 if \OpenOk then do
2388 say " Not connected - cannot open - aborting!"
2389 end
2390 end
2391 end
2392
2393 if SMBObj.udatatype = "DISK" then do
2394 machine = VRMethod("CN_SMBTREE","GetRecordAttr",SMBObj.parentrh,"Caption")
2395 parse var machine machine '0D0A'x .
2396 machine = strip(machine)
2397
2398 call _BrowseResetObject(SmbObj.rh)
2399
2400 sharename = SMBObj.resname
2401 BrowsePath = ""
2402
2403 call _BrowseDirectory
2404 end
2405 if options.!debug == 1 then say time()' CN_SMBTREE_DoubleClick done'
2406return
2407/*:VRX CN_SMBTREE_DragFile
2408*/
2409CN_SMBTREE_DragFile:
2410 if options.!debug == 1 then say time()' CN_SMBTREE_DragFile started'
2411
2412 obj = VRInfo( "object" )
2413
2414 ok = VRMethod( "CN_SMBTREE", "GetRecordList", "SourceOrSelected", "SelRH." )
2415 if SelRH.0 = 0 then do
2416 if options.!debug == 1 then say time()' CN_SMBTREE_DragStart aborted'
2417 return
2418 end
2419
2420 call _dropdeprecated
2421 call _GetSMBObjectProperties SelRH.1
2422
2423 select
2424 when SMBObj.udatatype = "WORKGROUP" | SMBObj.udatatype = "SERVER" | SMBObj.udatatype = "DISK" then do
2425 call VRMethod obj, 'StartDrag'
2426 end
2427 when SMBObj.udatatype = "PRINTER" then do
2428 CALL VRMessage 'Main', NLVGetMessage( 62 ), NLVGetMessage( 5 ), 'E'
2429 end
2430 otherwise nop /* FILE DIRECTORY */
2431 end
2432
2433 if options.!debug == 1 then say time()' CN_SMBTREE_DragFile done'
2434return
2435
2436/*:VRX CN_SMBTREE_DragStart
2437*/
2438CN_SMBTREE_DragStart:
2439 if options.!debug == 1 then say time()' CN_SMBTREE_DragStart started'
2440
2441 obj = VRInfo( "object" )
2442
2443 ok = VRMethod( "CN_SMBTREE", "GetRecordList", "SourceOrSelected", "SelRH." )
2444 if SelRH.0 = 0 then do
2445 if options.!debug == 1 then say time()' CN_SMBTREE_DragStart aborted'
2446 return
2447 end
2448
2449 call _dropdeprecated
2450 call _GetSMBObjectProperties SelRH.1
2451
2452 select
2453 when SMBObj.udatatype = "WORKGROUP" | SMBObj.udatatype = "SERVER" | SMBObj.udatatype = "DISK" then do
2454 call VRMethod obj, 'StartDrag'
2455 end
2456 when SMBObj.udatatype = "PRINTER" then do
2457 CALL VRMessage 'Main', NLVGetMessage( 62 ), NLVGetMessage( 5 ), 'E'
2458 end
2459 otherwise nop /* FILE DIRECTORY */
2460 end
2461
2462 if options.!debug == 1 then say time()' CN_SMBTREE_DragStart done'
2463return
2464/*:VRX CreateObject
2465*/
2466CreateObject: procedure
2467 Parse Arg Class, Title, Location, Setup, Collision
2468 /* say 'Creating ['Title']' */
2469say Setup
2470 rc = SysCreateObject( Class, Title, Location, Setup, Collision )
2471 If rc <> 1 Then do
2472 Msg.Text = ' > failed to create ['Title' | 'Class'] at location ['Location']'
2473 Msg.Type = 'Error'
2474 say Msg.Text
2475 end
2476return rc
2477/*:VRX DT_STATUSBAR_ContextMenu
2478*/
2479DT_STATUSBAR_ContextMenu:
2480 ok = VRSet("DT_STATUSBAR","Caption", VRGet("Main", "HintText"))
2481return
2482
2483/*:VRX EF_PASSWORD1_KeyPress
2484*/
2485EF_PASSWORD1_KeyPress:
2486 if options.!debug == 1 then say time()' EF_PASSWORD1_KeyPress started'
2487 obj = VRInfo( "Object" )
2488 keystr = VRGet( obj, "KeyString" )
2489/* say keystr */
2490 select
2491 when keystr = "{Enter}" then call PB_LOGIN_OK_Click
2492 when keystr = "{Newline}" then call PB_LOGIN_OK_Click
2493 when keystr = "{Esc}" then call PB_LOGIN_CANCEL_Click
2494 otherwise nop
2495 end
2496 if options.!debug == 1 then say time()' EF_PASSWORD1_KeyPress done'
2497return
2498
2499/*:VRX EF_PASSWORD_Change
2500*/
2501EF_PASSWORD_Change:
2502 Now = VRGet("EF_PASSWORD","value")
2503 if Now = "" | Now = LastPassword then return
2504 ok = SysSleep(1)
2505 LastPassword = Now
2506 if Now <> VRGet("EF_PASSWORD","value") then return
2507 call _UserCredUpdate
2508return
2509
2510/*:VRX EF_SERVER_Change
2511*/
2512EF_SERVER_Change:
2513 if options.!debug == 1 then say time()' EF_SERVER_Change started'
2514 Now = VRGet("EF_SERVER","value")
2515
2516 if Now = "" | Now = LastServer then return
2517 ok = SysSleep(2)
2518 if Now <> VRGet("EF_SERVER","value") then return
2519
2520 IF options.!editmode = 1 then return
2521
2522 /* Do nothing for incomplete IP addresses */
2523 if strip(translate(VRGet("EF_SERVER","value"),copies(' ',11),'01234567890.')) = "" then do /* got an IP address */
2524 if \_IsValidIPAddress(VRGet("EF_SERVER","value")) then return /* it is invalid or incomplete */
2525 end
2526
2527 /* do nothing if a workgroup was mounted */
2528 if VRGet("EF_SERVER","value") = "*" then return
2529
2530 machine = VRGet("EF_SERVER","value")
2531 ok = VRSet("EF_SHARE","Value", "")
2532 ok = VRMethod("EF_SHARE","Reset")
2533
2534 rh = _GetMachineHandle(machine)
2535 if rh <> "" then do
2536 call _GetSMBObjectProperties rh
2537 if SMBObj.parentrh = ""
2538 then ok = VRSet("EF_NETWORK","Value", "") /* The workgroup might be unknown at this moment */
2539 else ok = VRSet("EF_NETWORK","Value", VRMethod("CN_SMBTREE","GetRecordAttr",SMBObj.parentRH,"Caption"))
2540
2541 call _GetSMBObjectShares SMBObj.rh
2542
2543 if SMBObj.shares.0 > 0 then do
2544 ok = VRMethod("EF_SHARE", "AddStringList", "SMBObj.shares.")
2545 end
2546 end
2547 else do
2548 call _RefreshWorkgroups
2549 smbtree.!machine = _AddSleepingMachine(machine,"","")
2550 call _UserCredUpdate
2551 call _RefreshShares
2552 ok = VRSet( "CN_smbtree", "Painting", 1 )
2553
2554 ok = VRSet("Main", 'Pointer', '<default>' )
2555 ok = VRSet("CN_smbtree","Enabled", 1)
2556 ok = VRSet("TM_Throbber","Enabled", 0)
2557 ok = VRSet("Pict_Throbber","Visible", 0)
2558 end
2559
2560 LastServer = VRGet("EF_SERVER","value")
2561 if options.!debug == 1 then say time()' EF_SERVER_Change done'
2562return
2563
2564/*:VRX EF_USER1_KeyPress
2565*/
2566EF_USER1_KeyPress:
2567 if options.!debug == 1 then say time()' EF_USER1_KeyPress started'
2568 obj = VRInfo( "Object" )
2569 keystr = VRGet( obj, "KeyString" )
2570 say keystr
2571 select
2572 when keystr = "{Enter}" then ok = VRMethod( "EF_Password1", "SetFocus" )
2573 when keystr = "{Newline}" then ok = VRMethod( "EF_Password1", "SetFocus" )
2574 when keystr = "{Esc}" then call PB_LOGIN_CANCEL_Click
2575 otherwise nop
2576 end
2577 if options.!debug == 1 then say time()' EF_USER1_KeyPress done'
2578return
2579
2580/*:VRX EF_USER_Change
2581*/
2582EF_USER_Change:
2583 Now = VRGet("EF_USER","value")
2584 if Now = "" | Now = LastUser then return
2585 ok = SysSleep(1)
2586 LastUser = Now
2587 if Now <> VRGet("EF_USER","value") then return
2588 call _UserCredUpdate
2589return
2590
2591/*:VRX EF_WINS_SERVER_Change
2592*/
2593EF_WINS_SERVER_Change:
2594 advanced.!smbconfchanged = 1
2595return
2596
2597/*:VRX Fini
2598*/
2599Fini:
2600 window = VRWindow()
2601 call VRSet window, "Visible", 0
2602 drop window
2603return 0
2604
2605/*:VRX GetChildren
2606*/
2607GetChildren: PROCEDURE EXPOSE existrec. exc options. icons. fs. cd. samba.
2608 if options.!debug == 1 then say time()' GetChildren started'
2609 PARSE ARG node, parec
2610
2611 CALL _Dynamic "CALL "fs.!prefix"RxGetMount node, 'info.', 'points.', 'res.'"
2612
2613 IF info.2 > 0 THEN icon = icons.!active
2614 ELSE icon = icons.!passive
2615
2616 rh = VRMethod("CN_CURRENT", 'AddRecord', parec, 'Last', info.0, icon )
2617 IF rh == '' | datatype(res.0) <> "NUM" THEN RETURN
2618
2619 exc = exc + 1
2620 existrec.exc = rh
2621 userdata = node';'info.2
2622 DO i = 1 TO res.0
2623 userdata = ParseResourceData( userdata, res.i )
2624 END
2625 if userdata = "UNKNOWN" then ok = VRMethod("CN_CURRENT", 'RemoveRecord', rh)
2626 else do
2627 CALL VRMethod "CN_CURRENT", 'SetRecordAttr', rh, 'UserData', userdata
2628 if options.currentdata = userdata then ok = VRMethod("CN_CURRENT", 'SetRecordAttr', rh, 'Selected', 1)
2629 end
2630
2631 DO i = 1 TO points.0
2632 childnode = node || points.i || '\'
2633 CALL GetChildren childnode, rh
2634 END
2635 if options.!debug == 1 then say time()' GetChildren done'
2636RETURN
2637
2638/*:VRX GetMountPoints
2639*/
2640GetMountPoints: PROCEDURE EXPOSE existrec. options. icons. fs. cd. samba.
2641 if options.!debug == 1 then say time()' GetMountPoints started'
2642/* CALL VRSet "CN_CURRENT", 'Painting', 0 */
2643/* if options.!debug == 1 then say time()' '||"GetMountPoints: SysDriveMap(USED) started" */
2644 drvs = SysDriveMap('C:', 'USED') /* was "REMOTE" */
2645/* if options.!debug == 1 then say time()' '||"GetMountPoints: SysDriveMap(USED) done" */
2646 ac = 0
2647 DO i = 1 TO WORDS( drvs )
2648 fs = TRANSLATE( SysFileSystemType( WORD( drvs, i )))
2649 IF fs == fs.!fileSystemtype THEN DO
2650 ac = ac + 1
2651 attached.ac = WORD( drvs, i )
2652 END
2653 END
2654 attached.0 = ac
2655
2656 exc = 0
2657 DO i = 1 TO attached.0
2658 node = attached.i'\'
2659
2660 CALL VRMethod 'CB_DRIVES', 'AddString', attached.i
2661
2662 CALL _Dynamic "CALL "fs.!prefix"RxGetMount node, 'info.', 'points.', 'res.'"
2663
2664 IF info.2 > 0 THEN icon = icons.!drive
2665 ELSE icon = icons.!drive_inactive
2666
2667 rh = VRMethod("CN_CURRENT", 'AddRecord',, 'Last', attached.i, icon )
2668 IF rh == '' THEN ITERATE
2669
2670 exc = exc + 1
2671 existrec.exc = rh
2672 userdata = node';'info.2
2673 DO j = 1 TO res.0
2674 userdata = ParseResourceData( userdata, res.j )
2675 END
2676/* if options.!debug == 1 then say ' "'attached.i'" "'userdata'"' */
2677 CALL VRMethod "CN_CURRENT", 'SetRecordAttr', rh, 'UserData', userdata /* , 'FileName', 'TESTER.EVP' */
2678 if options.currentdata = userdata then ok = VRMethod("CN_CURRENT", 'SetRecordAttr', rh, 'Selected', 1)
2679
2680 CALL VRMethod "CN_CURRENT", 'SetRecordAttr', rh, 'Expanded', 1
2681
2682 DO j = 1 TO points.0
2683 childnode = node || points.j || '\'
2684 CALL GetChildren childnode, rh
2685 END
2686
2687 END
2688 existrec.0 = exc
2689/* CALL VRSet "CN_CURRENT", 'Painting', 1 */
2690 if options.!debug == 1 then say time()' '||"GetMountPoints done"
2691RETURN
2692
2693/*:VRX Halt
2694*/
2695Halt:
2696 signal _VREHalt
2697return
2698
2699/*:VRX Init
2700*/
2701Init:
2702/* Herwig */
2703/* CALL VRSet 'Console', 'WindowListTitle', '' */
2704
2705 window = VRWindow()
2706 call VRSet window, "Visible", 0
2707 call VRMethod window, "Activate"
2708 drop window
2709
2710RETURN
2711
2712/*:VRX LoadFileSysFuncs
2713*/
2714LoadFileSysFuncs:
2715 if options.!debug == 1 then say time()' LoadFileSysFuncs() started'
2716
2717 Fatal = 1
2718 RestartCount = 0
2719 FoundEVFS = 1
2720 FoundND = 1
2721
2722 program = VRGet("Application", "Program")
2723 if program = "" then parse source . . program
2724 say "Program = '"program"'"
2725 program = translate(VRParseFileName(Program,'N'))
2726 say "Program = '"program"'"
2727
2728 if SysSearchPath("PATH", "EVFSCTL.EXE") = "" | program = "SMBGUI" then do
2729 FoundEVFS = 0
2730 ForceNDFS = 1
2731 end
2732
2733CtlRestart:
2734 if \ForceNDFS then signal NoNetDrive
2735
2736ForceNDFS:
2737 if options.!debug == 1 then say ' NDFS check entered'
2738 call RxFuncAdd 'NdRxLoadFuncs', 'NDCALLS', 'NdRxLoadFuncs'
2739 SIGNAL ON SYNTAX NAME NoNetdrive
2740 call NdRxLoadFuncs
2741 FoundND = 1
2742 SIGNAL OFF SYNTAX
2743 fs.!prefix = 'ND'
2744 fs.!fileSystemtype = "NDFS32"
2745 fs.!profileext = "ndc"
2746 signal CommonToBothFS
2747NoNetdrive:
2748 if options.!debug == 1 then say ' NDFS not found'
2749 CALL RxFuncAdd 'EvfsRxLoadFuncs', 'EVFSCALL.DLL', 'EvfsRxLoadFuncs'
2750 SIGNAL ON SYNTAX NAME NoEVFSCALL
2751 CALL EvfsRxLoadFuncs
2752 FoundEVFS = 1
2753 SIGNAL OFF SYNTAX
2754 fs.!prefix = 'EVFS'
2755 fs.!fileSystemtype = "EVFS"
2756 fs.!profileext = "evp"
2757CommonToBothFS:
2758 if options.!debug == 1 then say ' Common version check'
2759 CALL _Dynamic "fsstat = "fs.!prefix"RxQueryIFS()"
2760 if fsstat = 252 then CALL _Dynamic "Found"fs.!prefix" = 0"
2761
2762 if word(fsstat,1) = '0' then do
2763 PARSE VAR fsstat '0 'fsname fsver fsctl .
2764 fs.!name = fsname
2765 fs.!version = fsver
2766
2767 if options.!debug == 1 then DO
2768 say ' fs.!prefix = 'fs.!prefix
2769 say ' fs.!name = 'fs.!Name
2770 say ' Version = 'fsver
2771 say ' fsctl = 'fsctl
2772 end
2773 end
2774 else do
2775 if FoundND = 0 & FoundEVFS = 0 then do
2776 CALL VRMessage 'Main', 'FATAL: Neither EVFS nor Netdrive found: 'fs.!prefix'RxQueryIFS()='fsstat, NLVGetMessage( 5 ), 'E'
2777 signal Halt
2778 end
2779 signal ForceNDFS
2780 end
2781 IF fsctl \= 1 THEN DO
2782 if ReStartCount = 0 then do
2783 'detach 'fs.!prefix'ctl.exe'
2784 RestartCount = 1
2785 ok = SysSleep(1)
2786 signal CtlRestart
2787 end
2788 else do
2789 CALL VRMessage 'Main', NLVGetMessage( 101 ), NLVGetMessage( 5 ), 'E'
2790 signal Halt
2791 end
2792 END
2793
2794 Fatal = 0
2795
2796 if options.!debug == 1 then say time()' LoadFileSysFuncs() done'
2797return
2798
2799/*:VRX Main_Close
2800*/
2801Main_Close:
2802 CALL Quit
2803RETURN
2804
2805/*:VRX Main_Create
2806*/
2807Main_Create:
2808 options.!debug = 1
2809 if options.!debug == 1 then do
2810 ok = VRRedirectStdIO("ON")
2811 say time()' Main_Create started'
2812 end
2813 else ok = VRRedirectStdIO("OFF")
2814
2815 call _InitTempDir
2816 call _LoadOtherFuncs
2817
2818 call NLVSetup
2819 call _StemsInit
2820
2821 call _TabbedDialogSetup
2822 call _ContainersInit
2823 call _GUIInit
2824
2825 CALL _ParseCommandLine
2826
2827 CALL LoadFileSysFuncs
2828
2829 CALL _CltInit
2830
2831 CALL _INILoad
2832
2833 call _TabFix 1
2834 call SW_ADVANCED_Init_Content
2835 call SW_SMBTREE_Init_Content
2836 call SW_CONDET_Init_Content
2837 call SW_SETTINGS_Init_Content
2838
2839 CALL Refresh
2840
2841 if advanced.!savepassive == 1 then CALL _PassiveLoad
2842
2843 IF options.!timesync == 1 THEN CALL _TimeSync
2844
2845 IF options.!autoload == 1 THEN CALL Menu_File_Load_Click
2846
2847 CALL VRSet "CB_MOUNT", "Selected", 1
2848 CALL VRSet "CB_DRIVES", "Selected", 1
2849 IF options.!autoclose == 1
2850 THEN CALL TM_AutoClose_Trigger
2851 ELSE do
2852 if advanced.!browseauth == 1 then do
2853 /* FIXME: unclear why we have to do the following 4 lines here */
2854 call SW_SETTINGS_Init
2855 call SW_SETTINGS_Init_Content
2856 call SW_ADVANCED_Init
2857 call SW_ADVANCED_Init_Content
2858
2859 window = VRLoadSecondary( "SW_LOGIN", "W" )
2860 call Main_Resize
2861 end
2862 if advanced.!browseimme == 1 then call PB_SMBTREE_REFRESH_Click
2863 end
2864
2865 if options.!debug == 1 then say time()' Main_Create done'
2866return
2867
2868/*:VRX Main_KeyPress
2869*/
2870Main_KeyPress:
2871 key = VRGet('Main', 'KeyString')
2872 IF key == '{F5}' THEN CALL Refresh
2873RETURN
2874
2875/*:VRX Main_Resize
2876*/
2877Main_Resize:
2878 if options.!debug == 1 then say time()' Main_Resize started'
2879 ok = VRset("Main","Painting", 0)
2880
2881 /* Basic measurements */
2882 main_iwidth = VRGet("Main","InteriorWidth") /* Width of window client-area */
2883 main_iheight = VRGet("Main","InteriorHeight") /* Height of window client-area */
2884
2885/** This caused weird resizing glitches, horrible jittering, etc. Instead,
2886 ** what we now do (further down) is set a minimum size in twips for the right
2887 ** pane, below which it simply stops resizing and switches to clipping. (The
2888 ** left pane resizes all its controls dynamically anyway.) This better matches
2889 ** standard application behaviour, and makes resizing behave more smoothly.
2890 *
2891 * if VRMethod( "Screen", "TwipsToPixels", main_iheight) < 600 then
2892 * ok = VRSet("Main","Height",VRMethod( "Screen", "PixelsToTwips", 580))
2893 * if VRMethod( "Screen", "TwipsToPixels", main_iwidth) < 730 then
2894 * ok = VRSet("Main","Width", VRMethod( "Screen", "PixelsToTwips", 730))
2895 */
2896
2897 sbar_height = VRGet("GB_STATUSBAR","Height") /* Height of status-bar */
2898 split_left = VRGet("SPLIT_Main","Left") /* Position of the left edge of the split-bar */
2899 marginx2 = margin * 2 /* Common margin around controls */
2900 pbtn_height = 400 /* Height of the panels' internal button areas */
2901
2902 pane_height = main_iheight - sbar_height - (margin * 4) /* Height of a split-bar panel */
2903 lpane_width = split_left - margin /* Width of the left split-bar panel */
2904 rpane_width = main_iwidth - split_left - 60 - margin /* Width of the right split-bar panel */
2905
2906 /* Tabbed Dialog = right pane */
2907 ok = VRset("TDL_1", "Top", marginx2)
2908 ok = VRset("TDL_1", "Left", split_left + 60)
2909 ok = VRset("TDL_1", "Width", rpane_width )
2910 ok = VRset("TDL_1", "Height", pane_height )
2911
2912 /* Current Panel */
2913 ok = VRSet("GB_CURRENT", "Visible", 1 )
2914 ok = VRSet("GB_CURRENT", "Top", marginx2 )
2915 ok = VRSet("GB_CURRENT", "Left", margin )
2916 ok = VRSet("GB_CURRENT", "Width", lpane_width )
2917 ok = VRSet("GB_CURRENT", "Height", pane_height )
2918
2919 ok = VRset("GB_CURRENT3", "Top", margin )
2920 ok = VRset("GB_CURRENT3", "Left", margin )
2921 ok = VRset("GB_CURRENT3", "Height", 245 )
2922 ok = VRset("GB_CURRENT3", "Width", lpane_width - marginx2)
2923
2924 ok = VRset("DT_CURRENT", "Top", 8 )
2925 ok = VRset("DT_CURRENT", "Left", 8 )
2926 ok = VRset("DT_CURRENT", "Height", 213 )
2927 ok = VRset("DT_CURRENT", "Width", (lpane_width - marginx2) - 24 )
2928
2929 ok = VRset("GB_CURRENT2", "Left", margin )
2930 ok = VRset("GB_CURRENT2", "Top", 245 + marginx2 )
2931 ok = VRset("GB_CURRENT2", "Width", lpane_width - marginx2)
2932 ok = VRset("GB_CURRENT2", "Height", pane_height - (margin * 5) - pbtn_height - 245 )
2933
2934 ok = VRset("CN_CURRENT", "Top", margin )
2935 ok = VRset("CN_CURRENT", "Left", margin )
2936 ok = VRset("CN_CURRENT", "Width", VRGet("GB_CURRENT2","Width") - marginx2)
2937 ok = VRset("CN_CURRENT", "Height", VRGet("GB_CURRENT2","Height") - marginx2)
2938
2939 ok = VRset("PB_DETACH", "Left", margin )
2940 ok = VRset("PB_DETACH", "Top", pane_height - pbtn_height - marginx2 )
2941 ok = VRset("PB_DETACH", "Width", min((lpane_width-margin*3) % 2, 1313) )
2942 ok = VRset("PB_UNMOUNT", "Left", VRGet("PB_DETACH","Width") + marginx2)
2943 ok = VRset("PB_UNMOUNT", "Top", pane_height - pbtn_height - marginx2 )
2944 ok = VRset("PB_UNMOUNT", "Width", min((lpane_width-margin*3) % 2, 1313) )
2945
2946 /* Splitbar - reduced in size to make it more noticable */
2947 ok = VRset("SPLIT_Main", "Visible", 1 )
2948 ok = VRset("SPLIT_Main", "Top", marginx2 + (pane_height-1200)%2 )
2949 ok = VRset("SPLIT_Main", "Height", 1200 /* pane_height */ )
2950
2951 /* Statusbar */
2952 ok = VRSet("GB_STATUSBAR", "Left", margin )
2953 ok = VRSet("GB_STATUSBAR", "Top", main_iheight - sbar_height - margin )
2954 ok = VRSet("GB_STATUSBAR", "Width", lpane_width + 50 + rpane_width )
2955
2956 ok = VRset("DT_STATUSBAR", "Top", 12 )
2957 ok = VRset("DT_STATUSBAR", "Left", 12 )
2958 ok = VRset("DT_STATUSBAR", "Height", VRGet("GB_STATUSBAR","Height") -24 )
2959 ok = VRset("DT_STATUSBAR", "Width", (lpane_width + 50 + rpane_width) - 24 )
2960
2961 /* Modified for notebook pages */
2962 pane_height = marginx2 + pane_height -1180
2963 rpane_width = marginx2 + rpane_width -760
2964 /* Use this as the width for the container pages, which don't have as strict a minimum width */
2965 rcnr_width = rpane_width
2966
2967 /* Minimum size of right panel (based on SW_DIALOG which is the largest) */
2968 if pane_height < 5360 then pane_height = 5360
2969 if rpane_width < 6010 then rpane_width = 6010
2970
2971 /* Dialog page */
2972 ok = VRSet("GB_DIALOG", "Top", margin /* marginx2 */ )
2973 ok = VRSet("GB_DIALOG", "Left", margin /* marginx2 */ /* split_left + 60 */ )
2974 ok = VRset("GB_DIALOG", "Height", pane_height )
2975 ok = VRset("GB_DIALOG", "Width", rpane_width )
2976
2977 ok = VRset("PB_MOUNT", "Left", margin )
2978 ok = VRset("PB_MOUNT", "Top", pane_height - pbtn_height - marginx2)
2979 ok = VRset("PB_EDIT_CANCEL", "Left", VRGet("PB_MOUNT","Width") + marginx2)
2980 ok = VRset("PB_EDIT_CANCEL", "Top", pane_height - pbtn_height - marginx2)
2981
2982 ok = VRset("PB_DIALOG_HELP", "Left", rpane_width - marginx2 - VRGet("PB_DIALOG_HELP","Width") + 24)
2983 ok = VRset("PB_DIALOG_HELP", "Top", pane_height - pbtn_height - marginx2)
2984
2985 ok = VRset("GB_SHARE", "Left", margin )
2986 ok = VRset("GB_SHARE", "Top", marginx2 /* 245 + marginx2 */ )
2987 ok = VRset("GB_SHARE", "Height", 2252 )
2988 ok = VRset("GB_SHARE", "Width", rpane_width - marginx2 )
2989
2990 ok = VRset("GB_AUTH", "Left", margin )
2991 ok = VRset("GB_AUTH", "Top", margin * 3 + VRGet("GB_SHARE","Height") /* 245 + (margin * 3) + VRGet("GB_SHARE","Height") */ )
2992 ok = VRset("GB_AUTH", "Width", rpane_width - marginx2 )
2993
2994 ok = VRset("GB_MPOINT","Left", margin )
2995 ok = VRset("GB_MPOINT","Top", /* 245 + */ (margin * 4) + VRGet("GB_SHARE","Height") + VRGet("GB_AUTH","Height"))
2996 ok = VRset("GB_MPOINT","Width", rpane_width - marginx2 )
2997
2998 /* Advanced page */
2999 ok = VRSet("GB_ADVANCED", "Top", margin /* marginx2 */ )
3000 ok = VRSet("GB_ADVANCED", "Left", margin /* marginx2 */ /* split_left + 60 */ )
3001 ok = VRset("GB_ADVANCED", "Height", pane_height )
3002 ok = VRset("GB_ADVANCED", "Width", rpane_width )
3003
3004 ok = VRset("GB_ADVANCED2", "Left", margin )
3005 ok = VRset("GB_ADVANCED2", "Top", /* 245 + */ marginx2)
3006 ok = VRset("GB_ADVANCED2", "Width", rpane_width - marginx2)
3007 ok = VRset("GB_ADVANCED2", "Height", pane_height - (margin * 5) - pbtn_height /* - 245 */ )
3008
3009 ok = VRset("PB_ADVANCED_APPLY", "Left", margin )
3010 ok = VRset("PB_ADVANCED_APPLY", "Top", pane_height - pbtn_height - marginx2)
3011 ok = VRset("PB_ADVANCED_UNDO", "Left", VRGet("PB_SMBTREE_CONNECT","Width") + marginx2)
3012 ok = VRset("PB_ADVANCED_UNDO", "Top", pane_height - pbtn_height - marginx2)
3013 ok = VRset("PB_ADVANCED_HELP", "Left", rpane_width - marginx2 - VRGet("PB_SMBTREE_HELP","Width") + 24)
3014 ok = VRset("PB_ADVANCED_HELP", "Top", pane_height - pbtn_height - marginx2)
3015
3016 /* SMBTree page */
3017 ok = VRSet("GB_SMBTREE", "Top", margin /* x2 */ )
3018 ok = VRSet("GB_SMBTREE", "Left", margin /* x2 */ /* split_left + 60 */ )
3019 ok = VRset("GB_SMBTREE", "Height", pane_height )
3020 ok = VRset("GB_SMBTREE", "Width", rcnr_width )
3021
3022 ok = VRset("GB_SMBTREE2","Left", margin )
3023 ok = VRset("GB_SMBTREE2","Top", /* 45 + */ marginx2 )
3024 ok = VRset("GB_SMBTREE2","Width", rcnr_width - marginx2)
3025 ok = VRset("GB_SMBTREE2","Height", pane_height - (margin * 5) - pbtn_height /* - 245 */ )
3026
3027 ok = VRset("CN_SMBTREE", "Top", margin )
3028 ok = VRset("CN_SMBTREE", "Left", margin )
3029 ok = VRset("CN_SMBTREE", "Width", VRGet("GB_SMBTREE2","Width") - marginx2)
3030 ok = VRset("CN_SMBTREE", "Height", VRGet("GB_SMBTREE2","Height") - marginx2)
3031
3032 ok = VRset("PB_SMBTREE_CONNECT", "Left", margin )
3033 ok = VRset("PB_SMBTREE_CONNECT", "Top", pane_height - pbtn_height - marginx2)
3034 ok = VRset("PB_SMBTREE_REFRESH", "Left", VRGet("PB_SMBTREE_CONNECT","Width") + marginx2)
3035 ok = VRset("PB_SMBTREE_REFRESH", "Top", pane_height - pbtn_height - marginx2)
3036
3037 hlpmin = VRGet("PB_SMBTREE_REFRESH", "Left") + VRGet("PB_SMBTREE_REFRESH","Width") + marginx2
3038 hlppos = rcnr_width - marginx2 - VRGet("PB_SMBTREE_HELP","Width") + 24
3039 IF hlppos < hlpmin THEN hlppos = hlpmin
3040
3041 ok = VRset("PB_SMBTREE_HELP", "Left", hlppos )
3042 ok = VRset("PB_SMBTREE_HELP", "Top", pane_height - pbtn_height - marginx2)
3043
3044 ok = VRset("PICT_THROBBER", "Top", VRGet("CN_SMBTREE","Height") % 2 - 100 )
3045 ok = VRset("PICT_THROBBER", "Left", VRGet("CN_SMBTREE","Width") % 2 - 200 )
3046
3047 /* Connection details page */
3048 ok = VRSet("GB_CONDET", "Top", margin /* x2 */ )
3049 ok = VRSet("GB_CONDET", "Left", margin /* x2 */ /* split_left + 60 */ )
3050 ok = VRset("GB_CONDET", "Height", pane_height )
3051 ok = VRset("GB_CONDET", "Width", rcnr_width )
3052
3053 ok = VRset("GB_CONDET2", "Left", margin )
3054 ok = VRset("GB_CONDET2", "Top", /* 245 + */ marginx2)
3055 ok = VRset("GB_CONDET2", "Width", rcnr_width - marginx2)
3056 ok = VRset("GB_CONDET2", "Height", pane_height - (margin * 5) - pbtn_height /* - 245 */ )
3057
3058 ok = VRset("CN_CONDET", "Top", margin )
3059 ok = VRset("CN_CONDET", "Left", margin )
3060 ok = VRset("CN_CONDET", "Width", VRGet("GB_CONDET2","Width") - marginx2)
3061 ok = VRset("CN_CONDET", "Height", VRGet("GB_CONDET2","Height") - marginx2)
3062
3063 ok = VRset("PB_CONDET_SAVE", "Left", margin )
3064 ok = VRset("PB_CONDET_SAVE", "Top", pane_height - pbtn_height - marginx2 )
3065 ok = VRset("PB_CONDET_LOAD", "Left", VRGet("PB_CONDET_SAVE","Width") + marginx2)
3066 ok = VRset("PB_CONDET_LOAD", "Top", pane_height - pbtn_height - marginx2 )
3067
3068 hlpmin = VRGet("PB_CONDET_LOAD", "Left") + VRGet("PB_CONDET_LOAD","Width") + marginx2
3069 hlppos = rcnr_width - marginx2 - VRGet("PB_CONDET_HELP","Width") + 24
3070 IF hlppos < hlpmin THEN hlppos = hlpmin
3071
3072 ok = VRset("PB_CONDET_HELP", "Left", hlppos )
3073 ok = VRset("PB_CONDET_HELP", "Top", pane_height - pbtn_height - marginx2)
3074
3075 /* Global settings page */
3076 ok = VRSet("GB_GLOBAL", "Top", margin /* x2 */ )
3077 ok = VRSet("GB_GLOBAL", "Left", margin /* x2 */ /* split_left + 60 */ )
3078 ok = VRset("GB_GLOBAL", "Height", pane_height )
3079 ok = VRset("GB_GLOBAL", "Width", rpane_width )
3080
3081 ok = VRset("GB_GLOBAL2", "Left", margin )
3082 ok = VRset("GB_GLOBAL2", "Top", marginx2 /* 245 + marginx2 */ )
3083 ok = VRset("GB_GLOBAL2", "Width", rpane_width - marginx2 )
3084
3085 ok = VRset("GB_RESOLUTION", "Left", margin )
3086 ok = VRset("GB_RESOLUTION", "Top", margin * 3 + VRGet("GB_GLOBAL2","Height") /* 245 + (margin * 3) + VRGet("GB_GLOBAL2","Height") */ )
3087 ok = VRset("GB_RESOLUTION", "Width", rpane_width - marginx2 )
3088
3089 ok = VRset("GB_LOGGING","Left", margin )
3090 ok = VRset("GB_LOGGING","Top", /* 245 + */ (margin * 4) + VRGet("GB_GLOBAL2","Height") + VRGet("GB_RESOLUTION","Height"))
3091 ok = VRset("GB_LOGGING","Width", rpane_width - marginx2 )
3092
3093 ok = VRset("PB_SETTINGS_APPLY", "Left", margin )
3094 ok = VRset("PB_SETTINGS_APPLY", "Top", pane_height - pbtn_height - marginx2 )
3095 ok = VRset("PB_SETTINGS_APPLY", "Height", pbtn_height)
3096 ok = VRset("PB_SETTINGS_UNDO", "Left", VRGet("PB_CONDET_SAVE","Width") + marginx2)
3097 ok = VRset("PB_SETTINGS_UNDO", "Top", pane_height - pbtn_height - marginx2 )
3098 ok = VRset("PB_SETTINGS_UNDO", "Height", pbtn_height)
3099 ok = VRset("PB_SETTINGS_HELP", "Left", rpane_width - marginx2 - VRGet("PB_CONDET_HELP","Width") + 24)
3100 ok = VRset("PB_SETTINGS_HELP", "Top", pane_height - pbtn_height - marginx2)
3101 ok = VRset("PB_SETTINGS_HELP", "Height", pbtn_height)
3102
3103 /* SMB.CONF Settings page */
3104 ok = VRSet("GB_SMBCONFX", "Top", margin /* x2 */ )
3105 ok = VRSet("GB_SMBCONFX", "Left", margin /* x2 */ /* split_left + 60 */ )
3106 ok = VRset("GB_SMBCONFX", "Height", pane_height )
3107 ok = VRset("GB_SMBCONFX", "Width", rpane_width )
3108
3109 ok = VRset("GB_SMBCONF2", "Left", margin )
3110 ok = VRset("GB_SMBCONF2", "Top", marginx2 )
3111 ok = VRset("GB_SMBCONF2", "Width", rpane_width - marginx2 )
3112 ok = VRset("GB_SMBCONF2", "Height", pane_height - (margin * 7) - pbtn_height /* - 245 */ )
3113
3114 ok = VRset("PB_SMBCONF_APPLY", "Left", margin )
3115 ok = VRset("PB_SMBCONF_APPLY", "Top", pane_height - pbtn_height - marginx2 )
3116 ok = VRset("PB_SMBCONF_APPLY", "Height", pbtn_height)
3117 ok = VRset("PB_SMBCONF_UNDO", "Left", VRGet("PB_CONDET_SAVE","Width") + marginx2)
3118 ok = VRset("PB_SMBCONF_UNDO", "Top", pane_height - pbtn_height - marginx2 )
3119 ok = VRset("PB_SMBCONF_UNDO", "Height", pbtn_height)
3120 ok = VRset("PB_SMBCONF_HELP", "Left", rpane_width - marginx2 - VRGet("PB_CONDET_HELP","Width") + 24)
3121 ok = VRset("PB_SMBCONF_HELP", "Top", pane_height - pbtn_height - marginx2)
3122 ok = VRset("PB_SMBCONF_HELP", "Height", pbtn_height)
3123
3124 /* DOne with pages */
3125 ok = VRset("Main","Painting", 1)
3126
3127 /* check and empty event queue, trash spurious resize events */
3128 EventString = ''
3129 TrashedResize = 0
3130
3131 do until EventString = 'nop'
3132 EventString = VREvent('N')
3133 if EventString <> 'nop' then do
3134 if EventString = 'CALL Main_Resize' then TrashedResize = 1
3135 else interpret eventString
3136 end
3137 end
3138 if TrashedResize then CALL Main_Resize
3139
3140 if options.!debug == 1 then say time()' Main_Resize done'
3141return
3142/*:VRX Menu_Context_ChangeView_Click
3143*/
3144Menu_Context_ChangeView_Click:
3145 ok = VRSet("Cn_Current","View","NameTree")
3146return
3147
3148/*:VRX Menu_Context_Detach_All_Click
3149*/
3150Menu_Context_Detach_All_Click:
3151 ok = VRMethod( "CN_CURRENT", "GetRecordList", "All", "umrh." )
3152 do um = 1 to umrh.0
3153 ok = VRMethod( "CN_CURRENT", "SetRecordAttr", umrh.um, "Selected", 1)
3154 call PB_DETACH_Click
3155 end
3156 drop um umrh.
3157return
3158
3159/*:VRX Menu_Context_Detach_Click
3160*/
3161Menu_Context_Detach_Click:
3162 call PB_DETACH_Click
3163return
3164
3165/*:VRX Menu_Context_Edit_Click
3166*/
3167Menu_Context_Edit_Click:
3168 if options.!debug == 1 then say time()' Menu_Context_Edit_Click started'
3169 /* call VRMethod "TDL_1", 'PostEvent', 'PageSelected', 'Page', 1 */
3170 ok = VRset("TDL_1", 'Selected', 1)
3171 options.!editmode = 1
3172 CALL VRSet "PB_EDIT_CANCEL","Visible", 1
3173 CALL VRSet "PB_UNMOUNT","Enabled", 0
3174
3175 ok = VRMethod( "TDL_1", "SetTabText", 1, " "NLVGetMessage(33)" " )
3176/* CALL NLVSetText "DT_DIALOG","Caption",33 */
3177 CALL VRSet "GB_CURRENT", "ENABLED", 0
3178
3179 ok = VRSet("CB_MOUNT","Value","")
3180 ok = VRSet("CB_MOUNT","Selected",1)
3181 ok = VRSet("CB_MOUNT","Value",mtype.1)
3182
3183 parse var p_string p_workgroup':\\'p_server'\'p_share
3184
3185 /* if options.!debug == 1 then say time()' '||p_workgroup */
3186
3187 if options.!debug == 1 then say time()' data '||data
3188 if options.!debug == 1 then say time()' domain '||p_workgroup
3189 if options.!debug == 1 then say time()' server '||p_server
3190 if options.!debug == 1 then say time()' share '||p_share
3191 if options.!debug == 1 then say time()' string '||p_string
3192
3193
3194 CALL VRSet "EF_SHARE", "VALUE", p_share
3195 CALL VRSet "EF_SERVER", "VALUE", p_server
3196 CALL VRSet "EF_NETWORK","VALUE", p_workgroup
3197
3198 /* if options.!debug == 1 then say time()' '||p_node */
3199 parse var p_node p_drive'\'p_directory'\'
3200 CALL VRSet "CB_DRIVES", "Value", p_drive
3201 CALL VRSet "EF_DIRECTORY", "Value", p_directory
3202 if options.!debug == 1 then say time()' Menu_Context_Edit_Click done'
3203return
3204
3205/*:VRX Menu_Context_Open_Click
3206*/
3207Menu_Context_Open_Click:
3208 ok = VRSet("Menu_Context_Open_Default","Visible",0)
3209return
3210
3211/*:VRX Menu_Context_Open_Default_Click
3212*/
3213Menu_Context_Open_Default_Click:
3214 if options.!debug == 1 then say time()' '||"Menu_Context_Open_Click started"
3215 if \VRIsValidObject(rh) then return
3216
3217 userdata = VRMethod( "CN_CURRENT", 'GetRecordAttr', rh, 'UserData')
3218 PARSE VAR userdata mountpoint ';' mounts ';' .
3219
3220 if length(mountpoint) > 3 then mountpoint = strip(mountpoint,'T','\')
3221
3222 ID = VRMethod( "Application", "StartThread", "wps_open", mountpoint, "DEFAULT" )
3223
3224 if options.!debug == 1 then say time()' '||"Menu_Context_Open_Click done"
3225return
3226
3227/*:VRX Menu_Context_Open_Detail_Click
3228*/
3229Menu_Context_Open_Detail_Click:
3230 if options.!debug == 1 then say time()' '||"Menu_Context_Open_Details_Click started"
3231 if \VRIsValidObject(rh) then return
3232
3233 userdata = VRMethod( "CN_CURRENT", 'GetRecordAttr', rh, 'UserData')
3234 PARSE VAR userdata mountpoint ';' mounts ';' .
3235
3236 if length(mountpoint) > 3 then mountpoint = strip(mountpoint,'T','\')
3237
3238 ID = VRMethod( "Application", "StartThread", "wps_open", mountpoint, "DETAILS" )
3239
3240 if options.!debug == 1 then say time()' '||"Menu_Context_Open_Details_Click done"
3241return
3242
3243/*:VRX Menu_Context_Open_Icon_Click
3244*/
3245Menu_Context_Open_Icon_Click:
3246 if options.!debug == 1 then say time()' '||"Menu_Context_Open_Icon_Click started"
3247 if \VRIsValidObject(rh) then return
3248
3249 userdata = VRMethod( "CN_CURRENT", 'GetRecordAttr', rh, 'UserData')
3250 PARSE VAR userdata mountpoint ';' mounts ';' .
3251
3252 if length(mountpoint) > 3 then mountpoint = strip(mountpoint,'T','\')
3253
3254 ID = VRMethod( "Application", "StartThread", "wps_open", mountpoint, "ICON" )
3255
3256 if options.!debug == 1 then say time()' '||"Menu_Context_Open_Icon_Click done"
3257return
3258
3259/*:VRX Menu_Context_Open_Settings_Click
3260*/
3261Menu_Context_Open_Settings_Click:
3262 if options.!debug == 1 then say time()' '||"Menu_Context_Open_Settings_Click started"
3263 if \VRIsValidObject(rh) then return
3264
3265 userdata = VRMethod( "CN_CURRENT", 'GetRecordAttr', rh, 'UserData')
3266 PARSE VAR userdata mountpoint ';' mounts ';' .
3267
3268 if length(mountpoint) > 3 then mountpoint = strip(mountpoint,'T','\')
3269
3270 ID = VRMethod( "Application", "StartThread", "wps_open", mountpoint, "SETTINGS" )
3271
3272 if options.!debug == 1 then say time()' '||"Menu_Context_Open_Settings_Click done"
3273return
3274
3275/*:VRX Menu_Context_Open_Splitview_Click
3276*/
3277Menu_Context_Open_Splitview_Click:
3278 if options.!debug == 1 then say time()' '||"Menu_Context_Open_Splitview_Click started"
3279 if \VRIsValidObject(rh) then return
3280
3281 userdata = VRMethod( "CN_CURRENT", 'GetRecordAttr', rh, 'UserData')
3282 PARSE VAR userdata mountpoint ';' mounts ';' .
3283
3284 if length(mountpoint) > 3 then mountpoint = strip(mountpoint,'T','\')
3285
3286 ID = VRMethod( "Application", "StartThread", "wps_open", mountpoint, "SPLITVIEW" )
3287
3288 if options.!debug == 1 then say time()' '||"Menu_Context_Open_Splitview_Click done"
3289return
3290
3291/*:VRX Menu_Context_Open_Tree_Click
3292*/
3293Menu_Context_Open_Tree_Click:
3294 if options.!debug == 1 then say time()' '||"Menu_Context_Open_Tree_Click started"
3295 if \VRIsValidObject(rh) then return
3296
3297 userdata = VRMethod( "CN_CURRENT", 'GetRecordAttr', rh, 'UserData')
3298 PARSE VAR userdata mountpoint ';' mounts ';' .
3299
3300 if length(mountpoint) > 3 then mountpoint = strip(mountpoint,'T','\')
3301
3302 ID = VRMethod( "Application", "StartThread", "wps_open", mountpoint, "TREE" )
3303
3304 if options.!debug == 1 then say time()' '||"Menu_Context_Open_Tree_Click done"
3305return
3306
3307/*:VRX Menu_Context_Refresh_Click
3308*/
3309Menu_Context_Refresh_Click:
3310 CALL Refresh
3311return
3312
3313/*:VRX Menu_Context_Unmount_Click
3314*/
3315Menu_Context_Unmount_Click:
3316 call PB_UNMOUNT_Click
3317return
3318
3319/*:VRX Menu_File_Autostart_Activate_Click
3320*/
3321Menu_File_Autostart_Activate_Click:
3322 options.!autostart = 1
3323
3324 Profile = VRParseFilename(settings.!ini,'DPN')'.'fs.!profileext
3325 ExeName = VRParseFileName(VRget("Application","Program"),'DPNE')
3326 if ExeName = "" then do
3327 parse source . . script
3328 ExeName = VRParseFilename(script,'DP')'\EVFSGUI.EXE'
3329 end
3330 StartupDir = VRParseFileName(VRget("Application","Program"),'DP')
3331 if StartupDir = "" then do
3332 parse source . . script
3333 StartUpDir = VRParseFilename(script,'DP')
3334 end
3335
3336 ObjTitle = NLVGetMessage( 59 )
3337 if ObjTitle = "" then ObjTitle = '[EVFS LAN-Connections]'
3338
3339 CALL PB_CONDET_SAVE_Click
3340
3341 rc = CreateObject( 'WPProgram', ObjTitle,'<WP_START>',,
3342 'EXENAME='||ExeName||';'||,
3343 'PROGTYPE=PM;'||,
3344 'TITLE='ObjTitle';'||,
3345 'PARAMETERS='Profile' -AUTOCLOSE -NOGUI;'||,
3346 'STARTUPDIR='StartupDir';'||,
3347 'NOPRINT=YES;'||,
3348 'HIDEBUTTON=DEFAULT;'||,
3349 'MINWIN=DEFAULT;'||,
3350 'CCVIEW=DEFAULT;'||,
3351 'DEFAULTVIEW=DEFAULT;'||,
3352 'OBJECTID=<EVFSGUI_AUTOSTART>',,
3353 'REPLACE' )
3354
3355 IF rc == 1 THEN do
3356 Text = NLVGetMessage( 60 )
3357 if Text = "" then Text = '[Created object in Autostart-Folder]'
3358 CALL VRMessage 'Main', Text, VRGet("Main", "Caption")
3359 end
3360 ELSE do
3361 Text = NLVGetMessage( 61 )
3362 if Text = "" then Text = '[Could not create object in Autostart-Folder]'
3363 Title = NLVGetMessage( 5 )
3364 if Title = "" then Title = '[Error]'
3365 CALL VRMessage 'Main', Text, Title, 'E'
3366 end
3367
3368 options.!autostart = 0
3369return
3370/*:VRX Menu_File_Autostart_Click
3371*/
3372Menu_File_Autostart_Click:
3373
3374return
3375
3376/*:VRX Menu_File_Autostart_Deactivate_Click
3377*/
3378Menu_File_Autostart_Deactivate_Click:
3379 ok = SysDestroyObject("<EVFSGUI_AUTOSTART>")
3380 IF ok == 1 THEN do
3381 Text = NLVGetMessage( 79 )
3382 if Text = "" then Text = '[Autostart object created successfully]'
3383 CALL VRMessage 'Main', Text, VRGet("Main", "Caption")
3384 end
3385 ELSE do
3386 Text = NLVGetMessage( 78 )
3387 if Text = "" then Text = '[Could find Autostart object]'
3388 Title = NLVGetMessage( 5 )
3389 if Title = "" then Title = '[Error]'
3390 CALL VRMessage 'Main', Text, Title, 'E'
3391 end
3392return
3393
3394/*:VRX Menu_File_Click
3395*/
3396Menu_File_Click:
3397 ok = VRSet("Menu_File_LMHosts_Reset", "Enabled", VRFileExists( samba.!lmhosts ))
3398 ok = VRSet("Menu_File_ucCred_Reset", "Enabled", (VRGet("Pict_PWINMEM","PicturePath") = "#36"))
3399return
3400
3401/*:VRX Menu_File_Close_Click
3402*/
3403Menu_File_Close_Click:
3404 call Quit
3405return
3406
3407/*:VRX Menu_File_Daemon_Start_Click
3408*/
3409Menu_File_Daemon_Start_Click:
3410 if options.!debug == 1 then say time()' Menu_File_Daemon_Start_Click started'
3411 if VRFileExists(SysBootDrive()"\ndpsmb.dbg") then do
3412 btns.0 = 2
3413 btns.1 = NLVGetMessage( 6 )
3414 btns.2 = NLVGetMessage( 7 )
3415 confirm = VRMessage('Main', NLVGetMessage( 119 ), NLVGetMessage( 8 ), 'Q', 'btns.', 1, 2 )
3416 IF confirm == 1 THEN do
3417 logFiles = value("LOGFILES",,"OS2ENVIRONMENT")
3418 ok1 = SysFileDelete(Logfiles||'\log.smbc')
3419 ok2 = SysFileDelete(Logfiles||'\log.ndpsmb')
3420 if ok1 <> 0 | ok2 <> 0 then do
3421 ok = VRMessage('Main', NLVGetMessage(5)' 'Logfiles||'\log.smbc RC='ok1||'0D0A'x||NLVGetMessage(5)' 'Logfiles||'\log.ndpsmb RC='ok2, NLVGetMessage( 5 ), 'E')
3422 end
3423 drop ok1 ok2
3424 end
3425 end
3426 address cmd 'detach 'fs.!prefix'CTL.EXE'
3427 ok = VRset("GB_CURRENT","Enabled", 1)
3428 ok = VRset("TDL_1","Enabled", 1)
3429 CALL REFRESH
3430 ok = VRSet("Menu_File_Daemon_Start","Enabled",0)
3431 ok = VRSet("Menu_File_Daemon_Stop","Enabled",1)
3432 if options.!debug == 1 then say time()' Menu_File_Daemon_Start_Click done'
3433return
3434
3435/*:VRX Menu_File_Daemon_Stop_Click
3436*/
3437Menu_File_Daemon_Stop_Click:
3438 if options.!debug == 1 then say time()' Menu_File_Daemon_Stop_Click started'
3439 ok = PRProcessList(proc)
3440 do I = 1 to proc.0
3441 CurProc = VRParseFileName(proc.i.name,'NE')
3442 if CurProc = fs.!prefix"CTL.EXE" then do
3443 call charout , ' 'CurProc' RC='
3444 ok = PRKillProcess(1,proc.i.pid)
3445 say ok
3446 end
3447 end
3448 ok = VRset("GB_CURRENT","Enabled", 0)
3449 ok = VRset("TDL_1","Enabled", 0)
3450 ok = VRSet("Menu_File_Daemon_Start","Enabled",1)
3451 ok = VRSet("Menu_File_Daemon_Stop","Enabled",0)
3452 if options.!debug == 1 then say time()' Menu_File_Daemon_Stop_Click stopped'
3453return
3454/*:VRX Menu_File_LMHosts_Reset_Click
3455*/
3456Menu_File_LMHosts_Reset_Click:
3457 call _LMHostsReset
3458return
3459
3460/*:VRX Menu_File_Load_Click
3461*/
3462Menu_File_Load_Click: PROCEDURE EXPOSE settings. options. icons. advanced. vfs. Profile fs. cd. samba.
3463 IF options.!autoload == 1 then filename = Profile
3464 else filename = VRFileDialog('Main', NLVGetMessage( 55 ), 'L', '*.'fs.!profileext)
3465 IF filename == '' THEN RETURN
3466 IF STREAM( filename, 'C', 'QUERY EXISTS') == '' THEN DO
3467 CALL VRMessage 'Main', NLVGetMessage( 56, filename ), NLVGetMessage( 5 ), 'E'
3468 RETURN
3469 END
3470
3471 CALL LINEIN filename, 1, 0
3472 DO WHILE LINES( filename )
3473 /* Fix Ticket #202 in order to allow blanks in sharenames */
3474 resline = LINEIN( filename )
3475 nodelen = pos('\\',resline)-2
3476 node = left(resline,nodelen)
3477 rwFlag = word(resline,words(resline))
3478 resource = substr(resline,nodelen+2,length(resline)-(nodelen+2)-(length(rwFlag)+1)+1)
3479 drop resline
3480 drop nodelen
3481
3482 vfs.!drive = FILESPEC('DRIVE', node )
3483 vfs.!mountpoint = STRIP( node, 'T', '\')
3484
3485 /* In case we only have a volume we reattach the backslash, otherwise restore will fail */
3486 if vfs.!drive = vfs.!mountpoint then vfs.!mountpoint = vfs.!mountpoint||'\'
3487
3488 call ParseResParmString
3489
3490 options.!workgroup = p_workgroup
3491 options.!server = p_server
3492 options.!share = p_share
3493 options.!user = p_user
3494 options.!password = p_password
3495 options.!spassword = p_spassword
3496 options.!master = p_master
3497 options.!mastertype = p_mtype
3498/* options.!memlen = p_memlen
3499 options.!logfile = p_logfile
3500 options.!loglevel = p_loglevel */
3501 options.!cachetimeout = p_cachetimeout
3502 options.!cachelistings = p_cachelistings
3503 options.!easupport = p_easupport
3504
3505 IF rwFlag == 'R' THEN
3506 options.!readonly = 1
3507 ELSE
3508 options.!readonly = 0
3509
3510 CALL Mount
3511
3512 END
3513 CALL STREAM filename, 'C', 'CLOSE'
3514
3515 options.!autoload = 0
3516
3517 CALL Refresh
3518RETURN
3519/*:VRX Menu_File_Save_Click
3520*/
3521Menu_File_Save_Click:
3522 call PB_CONDET_SAVE_Click
3523return
3524
3525/*:VRX Menu_File_ucCred_Reset_Click
3526*/
3527Menu_File_ucCred_Reset_Click:
3528 if _ucChkUc() then ok = _ucDelUc()
3529 ok = VRSet("Pict_PWINMEM","PicturePath","#37")
3530 ok = VRSet("EF_USER", "Value","")
3531 ok = VRSet("EF_PASSWORD","Value","")
3532 call _UserCredUpdate
3533return
3534
3535/*:VRX Menu_Help_About_Click
3536*/
3537Menu_Help_About_Click:
3538 ok = VRLoadSecondary("SW_ABOUT", "W")
3539return
3540
3541/*:VRX Menu_Help_Extended_Click
3542*/
3543Menu_Help_Extended_Click:
3544 ok = VRMethod( "Main", "InvokeHelp" )
3545return
3546
3547/*:VRX Menu_Selected_Connect_Click
3548*/
3549Menu_Selected_Connect_Click:
3550 call PB_SMBTREE_CONNECT_Click
3551return
3552
3553/*:VRX Menu_Selected_Default_Workgroup_Click
3554*/
3555Menu_Selected_Default_Workgroup_Click:
3556 if options.!debug == 1 then say time()' '||"Menu_Selected_Default_Workgroup_Click started"
3557 if options.!debug == 1 then say ' SMBObj.rh = "'SMBObj.rh'"'
3558 Success = 0
3559 if SMBObj.rh <> "" then do
3560 if options.!debug == 1 then say ' SMBObj.udatatype = "'SMBObj.udatatype'"'
3561 Success = 1
3562 select
3563 when SMBObj.udatatype = "WORKGROUP" then workgroupname = VRMethod("CN_SMBTREE","GetRecordAttr",SMBObj.rh,"Caption")
3564 when SMBObj.udatatype = "DISK" then workgroupname = VRMethod("CN_SMBTREE","GetRecordAttr",SMBObj.gparentrh,"Caption")
3565 when SMBObj.udatatype = "PRINTER" then workgroupname = VRMethod("CN_SMBTREE","GetRecordAttr",SMBObj.gparentrh,"Caption")
3566 when SMBObj.udatatype = "SERVER" then workgroupname = VRMethod("CN_SMBTREE","GetRecordAttr",SMBObj.parentrh,"Caption")
3567 otherwise Success = 0
3568 end
3569
3570 /* FIXME: switch over to REXXIni calls */
3571 if Success = 1 then ok = TRSetIni("[global]","workgroup", workgroupname, samba.!smbconf)
3572 end
3573 Buttons.1 = NLVGetMessage(2)
3574 Buttons.0 = 1
3575
3576 if Success = 0 then do
3577 id = VRMessage( VRWindow(), NLVGetMessage(5), NLVGetMessage(75), "Error", "Buttons.", 1, 1 )
3578 end
3579 else do
3580 id = VRMessage( VRWindow(), NLVGetMessage(117, workgroupname), NLVGetMessage(75), "Information", "Buttons.", 1, 1 )
3581 end
3582 if options.!debug == 1 then say time()' '||"Menu_Selected_Default_Workgroup_Click done"
3583return
3584
3585/*:VRX Menu_Selected_DetailsView_Click
3586*/
3587Menu_Selected_DetailsView_Click:
3588 ok = VRSet("CN_smbtree", "View", "Detail")
3589return
3590
3591/*:VRX Menu_Selected_Info_Click
3592*/
3593Menu_Selected_Info_Click:
3594 if options.!debug == 1 then say time()' Menu_Selected_Info_Click started'
3595
3596 ok = VRMethod( "CN_SMBTREE", "GetRecordList", "SourceOrSelected", "SelRH." )
3597 if SelRH.0 = 0 then do
3598 if options.!debug == 1 then say time()' Menu_Selected_Info_Click aborted'
3599 return
3600 end
3601
3602 call _GetSMBObjectProperties SelRH.1
3603
3604 window = VRLoadSecondary( "SW_INFO", "W" )
3605 if options.!debug == 1 then say time()' Menu_Selected_Info_Click done'
3606return
3607
3608/*:VRX Menu_Selected_Refresh_Click
3609*/
3610Menu_Selected_Refresh_Click:
3611 ok = VRMethod( "CN_smbtree", "SetRecordAttr", SMBObj.rh, "Icon","#61:PMWP.DLL")
3612 call _DelSMBObjectShares SMBObj.rh
3613 machine = SMBObj.resname
3614 ok = VRSet("TM_RefreshTreeDisplay", "Delay", 1000)
3615 call _RefreshShares
3616return
3617
3618/*:VRX Menu_Selected_Remove_Click
3619*/
3620Menu_Selected_Remove_Click:
3621 ok = VRMethod( "CN_CONDET", "GetRecordList", "SourceOrSelected", "selrec." )
3622 if selrec.0 = 0 then return
3623
3624 do I = 1 to selrec.0
3625 if VRMethod("CN_CONDET", "GetFieldData", selrec.I, cd.statusfh) = icons.!passive then do
3626 CALL VRMethod "CN_CONDET", 'RemoveRecord', selrec.I
3627 end
3628 else do
3629 mountpoint = VRMethod("CN_CONDET", "GetFieldData", selrec.I, cd.mpointfh)
3630 mpidx = VRMethod("CN_CONDET", "GetFieldData", selrec.I, cd.mpidxfh)
3631 if mpidx = 1 then do
3632 btns.0 = 2
3633 btns.1 = NLVGetMessage( 6 )
3634 btns.2 = NLVGetMessage( 7 )
3635 confirm = VRMessage('Main', NLVGetMessage( 72, mountpoint ), NLVGetMessage( 8 ), 'Q', 'btns.', 1, 2 )
3636 IF confirm \= 1 THEN RETURN
3637
3638 CALL _Dynamic "ok = "fs.!prefix"RxUnmount('"mountpoint"', "mpidx")"
3639 CALL VRMethod "CN_CONDET", 'RemoveRecord', selrec.I
3640 CALL Refresh
3641 end
3642 else do
3643 CALL VRMessage 'Main', NLVGetMessage( 71 ) , NLVGetMessage( 89 )||" "||mountpoint , 'E'
3644 end
3645 end
3646 end
3647return
3648
3649/*:VRX Menu_Selected_Retry_Click
3650*/
3651Menu_Selected_Retry_Click: PROCEDURE EXPOSE settings. options. icons. vfs. fs. advanced. cd. samba. mtype.
3652
3653 ok = VRMethod( "CN_CONDET", "GetRecordList", "SourceOrSelected", "srcrec." )
3654 if srcrec.0 = 0 then return
3655
3656 srcrec = srcrec.1
3657
3658 p_mpoint = VRMethod("CN_CONDET", "GetFieldData", srcrec, CD.MpointFH)
3659
3660 p_workgroup = VRMethod("CN_CONDET", "GetFieldData", srcrec, cd.workgrpFH )
3661 p_server = VRMethod("CN_CONDET", "GetFieldData", srcrec, CD.ServerFH)
3662 p_share = VRMethod("CN_CONDET", "GetFieldData", srcrec, CD.ShareFH)
3663 p_user = VRMethod("CN_CONDET", "GetFieldData", srcrec, CD.UserFH)
3664 p_password = x2c(VRMethod("CN_CONDET", "GetFieldData", srcrec, CD.SpasswordFH))
3665
3666 ShareLevel = 1
3667 if p_share = "" then ShareLevel = 2
3668 if p_server = "" then ShareLevel = 3
3669 if p_workgroup = "" then ShareLevel = 4
3670
3671 ok = VRSet("CB_MOUNT", "Selected", Sharelevel )
3672 ok = VRset("CB_MOUNT", "Value", mtype.sharelevel)
3673
3674 call _UpdateObject "EF_SERVER", p_server
3675 ok = VRset("EF_SHARE" , "Value", p_share)
3676 ok = VRset("EF_NETWORK", "Value", p_workgroup)
3677 ok = VRset("EF_USER" , "Value", p_user)
3678 ok = VRset("EF_PASSWORD", "Value", p_password)
3679
3680 parse var p_mpoint p_drv '\' p_dir
3681
3682 p_dir = strip(p_dir,'T','\')
3683
3684 ok = VRset("CB_DRIVES" , "Value", p_drv)
3685 ok = VRset("EF_DIRECTORY" , "Value", p_dir)
3686
3687 CALL PB_MOUNT_Click
3688
3689/* if VRMethod( "CN_CONDET", "ValidateRecord", srcRec) = 1 then do
3690 if VRMethod("CN_CONDET", "GetRecordAttr", srcRec, "Icon") = icons.!passive then ok = VRMethod( "CN_CONDET", "RemoveRecord", srcRec)
3691 end */
3692return
3693
3694/*:VRX Menu_Selected_TimeSync_Click
3695*/
3696Menu_Selected_TimeSync_Click:
3697 if options.!debug == 1 then say time()' Menu_Selected_TimeSync_Click started'
3698
3699 ok = VRMethod( "CN_SMBTREE", "GetRecordList", "SourceOrSelected", "SelRH." )
3700 if SelRH.0 = 0 then do
3701 if options.!debug == 1 then say time()' Menu_Selected_TimeSync_Click aborted'
3702 return
3703 end
3704
3705 call _GetSMBObjectProperties SelRH.1
3706
3707 options.!timesrv = SMBObj.resname
3708 call _TimeSync
3709
3710 if options.!debug == 1 then say time()' Menu_Selected_TimeSync_Click done'
3711return
3712
3713/*:VRX Menu_Selected_TreeView_Click
3714*/
3715Menu_Selected_TreeView_Click:
3716 ok = VRSet("CN_smbtree", "View", "IconTree")
3717return
3718
3719/*:VRX Mount
3720*/
3721Mount: PROCEDURE EXPOSE settings. options. icons. vfs. fs. advanced. cd. samba.
3722 if options.!debug == 1 then say time()' Mount procedure started'
3723 /* Set mouse pointer to wait - this operation might take a few seconds */
3724 call VRSet VRWindow(), 'Pointer', 'Wait'
3725
3726/* Disabled, because we merge profile now - in earlier revisions
3727 we replaced it but only for preexisting drives - this made only
3728 sense as long as we were unable to detect double connections -
3729 this could be made an option!
3730
3731 IF options.!autoload then do
3732 CALL _Dynamic "ok = "fs.!prefix"RxDetach('"vfs.!drive"')"
3733 if options.!debug == 1 then say time()' '||'Autoload Detach "'vfs.!drive'" =' ok
3734 end */
3735
3736 /* Attach the virtual drive - only if drive is not already attached */
3737 if pos(vfs.!drive,MyFreeDriveMap("C:","FREE")) > 0 then do
3738 CALL _Dynamic "ok = "fs.!prefix"RxAttach('"vfs.!drive"')"
3739
3740 if options.!debug == 1 then say time()' '||'Attach "'vfs.!drive'" =' ok
3741 end
3742
3743 /* Create the mount point and store whether it was created or already existed */
3744 CALL _Dynamic "CreateMP = "fs.!prefix"RxCreateMountPoint('"vfs.!mountpoint"')"
3745
3746 if options.!debug == 1 then say time()' '||'Create "'vfs.!mountpoint'" = 'CreateMP
3747
3748
3749 /* Build the resource parameter string */
3750 src = ''
3751 IF options.!workgroup \= '' THEN src = src';WORKGROUP='options.!workgroup
3752 IF options.!server \= '' THEN src = src';SERVER='options.!server
3753 IF options.!share \= '' THEN src = src';SHARE='options.!share
3754 IF options.!user \= '' THEN src = src';USER='options.!user
3755 IF options.!password \= '' THEN src = src';PASSWORD='options.!password
3756 IF options.!spassword \= '' THEN src = src';SPASSWORD='options.!spassword
3757 IF options.!master \= '' THEN src = src';MASTER='options.!master
3758 IF options.!mastertype \= '' THEN src = src';MASTERTYPE='options.!mastertype
3759/* IF options.!memlen \= '' THEN src = src';MEMLEN='options.!memlen
3760 IF options.!logfile \= '' THEN src = src';LOGFILE='options.!logfile
3761 IF options.!loglevel \= '' THEN src = src';LOGLEVEL='options.!loglevel */
3762 IF options.!cachetimeout \= '' THEN src = src';CTO='options.!cachetimeout
3763 IF options.!cachelistings \= '' THEN src = src';CLD='options.!cachelistings
3764 IF options.!easupport \= '' THEN src = src';EASUPPORT='options.!easupport
3765
3766 IF options.!readonly = 1 then rwFlag = 'R'; else rwFlag = 'W'
3767
3768 parse var vfs.!mountpoint mpoint ';' .
3769 mpoint = strip(mpoint,'T','\')||'\'
3770
3771 if options.!master = "" then options.!master = "WORKGROUP"
3772 if options.!mtype = "" then options.!mtype = "1"
3773 if options.!loglevel = "" then options.!loglevel = "0"
3774 if options.!memlen = "" then options.!memlen = "2"
3775 if options.!cachetimeout = "" then options.!cachetimeout = "10"
3776 if options.!cachelistings = "" then options.!cachelistings = "32"
3777 if options.!easupport= "" | options.!easupport= " " then options.!easupport = strip(options.!easupport)
3778 if options.!password <> "" & options.!spassword = "" then do
3779 options.!spassword = c2x(options.!password)
3780 options.!password = ""
3781 end
3782
3783 hashstr = mpoint' 'translate(options.!workgroup)' 'translate(options.!server)' 'translate(options.!share)' 'options.!user' 'options.!spassword' 'options.!easupport' 'rwFlag
3784
3785 md5 = rexx_md5(hashstr)
3786
3787 CALL VRMethod "CN_CONDET", 'GetRecordList', 'All', 'records.'
3788 DO i = 1 TO records.0
3789 hash = VRMethod("CN_CONDET","GetFieldData", records.i, cd.hashfh)
3790
3791 if options.!debug == 1 then say VRMethod("CN_CONDET","GetFieldData", records.i, CD.mpointFH)'->'hash
3792 if options.!debug == 1 then say mpoint'->'md5
3793
3794 if hash = md5 then do
3795 If VRMethod("CN_CONDET","GetFieldData", records.i, cd.statusfh) = icons.!active then do /* Same hash, status active */
3796 say "Double connection detected!!"
3797 if options.!spassword <> "" then upw = ":********"
3798 else upw = ""
3799 buttons.0 = 2
3800 buttons.1 = NLVGetMessage(9)
3801 buttons.2 = NLVGetMessage(3)
3802 Answer = VRMessage('Main',NLVGetMessage(64) , NLVGetMessage( 36,options.!user||upw'@'options.!workgroup'\\'options.!server'\'options.!share, vfs.!mountpoint ), 'W','buttons.')
3803 if Answer = 2 then do
3804 call VRSet VRWindow(), 'Pointer', '<default>'
3805 say "Double connection - do not mount!!"
3806 return
3807 end
3808 end
3809 else do /* Same hash, status passive - we have to remove it */
3810 ok = VRMethod("CN_CONDET", "RemoveRecord", records.i )
3811 end
3812 end
3813 end
3814
3815 cd.lastrh = ""
3816 ok = ParseResourceData(vfs.!mountpoint,'SMBFS SMBFS64 \\'options.!workgroup':'options.!server'\'options.!share'@'options.!user||src' 'rwFlag)
3817
3818 /* Now mount the resource */
3819 CALL _Dynamic "ok = "fs.!prefix"RxMount('SMBFS','"vfs.!mountpoint"', '"src"', '"rwFlag"')"
3820
3821 if options.!debug == 1 then say time()' '||'Mount "'vfs.!mountpoint'" =' ok
3822 if ok <> 0 then do
3823 if options.!password <> "" then upw = ":********"
3824 else upw = ""
3825 buttons.0 = 2
3826 buttons.1 = NLVGetMessage(2)
3827 buttons.2 = NLVGetMessage(37)
3828 Answer = VRMessage('Main', SysGetMessage(ok), NLVGetMessage( 36, options.!user||upw'@'options.!workgroup'\\'options.!server'\'options.!share, vfs.!mountpoint ), 'W','buttons.')
3829 if Answer = 2 then do /* Show explanation */
3830 xx = VRMessage('Main', NLVGetMessage( 36, options.!user||upw'@'options.!workgroup'\\'options.!server'\'options.!share, vfs.!mountpoint )||'0D0A'x||'0D0A'x||SysGetMessage(ok)||'0D0A'x||'0D0A'x||SysGetMessage(ok, 'OSO001H.MSG'), NLVGetMessage(37), 'W')
3831 end
3832 if cd.lastrh <> '' then do
3833 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.statusfh, icons.!passive) /* Passive Connection icon */
3834 ok = VRMethod("CN_CONDET", "SetRecordAttr", cd.lastrh, "Icon", icons.!passive) /* Passive Connection icon */
3835 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.passwordfh, '') /* remove pain text password */
3836 end
3837
3838 /* In case the mountpoint was created for this failed operation, it is (optionally) removed again */
3839 if CreateMP = 0 & advanced.!alwaysmp <> 1 then do
3840 CALL _Dynamic "ok = "fs.!prefix"RxDeleteMountPoint('"vfs.!mountpoint"')"
3841 if options.!debug == 1 then say time()' '||'Remove "'vfs.!mountpoint'" = 'ok
3842 end
3843 end
3844 else do
3845 if options.!storecreds = 1 then do
3846 ok = VRSet("EF_User", "Value",options.!user)
3847 ok = VRSet("EF_Password","Value",x2c(options.!spassword))
3848 end
3849 end
3850 drop CreateMP /* not required anymore */
3851
3852/* Obsolete - the IOCtl will not be implemented this way in the plugin
3853 The REXX function is present, but is has no counterpart in the plugin
3854 ok = EvfsRxIoctl( 100 , vfs.!mountpoint, outstring)
3855 if options.!debug == 1 then say time()' '||'RxIoctl "'vfs.!mountpoint'" = 'ok', 'outstring
3856 */
3857 /* Set mouse pointer to default again */
3858 call VRSet VRWindow(), 'Pointer', '<default>'
3859 if options.!debug == 1 then say time()' Mount procedure done'
3860RETURN ok
3861
3862/*:VRX MyFreeDriveMap
3863*/
3864MyFreeDriveMap: procedure expose options. icons. fs. samba.
3865 if options.!debug == 1 then say time()' MyFreeDriveMap(proc) started'
3866 alldrives = "C: D: E: F: G: H: I: J: K: L: M: N: O: P: Q: R: S: T: U: V: W: X: Y: Z:"
3867/* if options.!debug == 1 then say time()' '||"SysDriveMap(USED) started" */
3868 useddrives= SysDriveMap("C:","USED")
3869/* if options.!debug == 1 then say time()' '||"SysDriveMap(USED) done" */
3870
3871 Alldr = words(alldrives)
3872 FreeDriveMap = ""
3873 do I = 1 to AllDr
3874 if word(alldrives,1) = word(useddrives,1) then do
3875 Useddrives = subword(useddrives,2)
3876 Alldrives = subword(Alldrives,2)
3877 end
3878 else do
3879 FreeDriveMap = FreeDriveMap||word(alldrives,1)||' '
3880 Alldrives = subword(Alldrives,2)
3881 end
3882 end
3883 if options.!debug == 1 then say time()' MyFreeDriveMap(proc) done, result "'FreeDriveMap'"'
3884return FreeDriveMap
3885/*:VRX NoEVFSCALL
3886*/
3887NoEVFSCALL:
3888 CALL VRMessage 'Main', NLVGetMessage( 100 ), NLVGetMessage( 5 ), 'E'
3889 signal Halt
3890RETURN
3891
3892/*:VRX ParseResourceData
3893*/
3894ParseResourceData: PROCEDURE EXPOSE userdata options. icons. advanced. fs. cd. samba.
3895 PARSE ARG userdata, resource
3896 if options.!debug == 1 then say time()' ParseResourceData started'
3897 if options.!debug == 1 then say ' receiving "'userdata'" "'resource'" length ('length(resource)')'
3898
3899/* WARNING! resource has a maximal length of 255 and is truncated otherwise */
3900
3901/* PARSE VAR resource . ';WORKGROUP='p_workgroup';SERVER='p_server';SHARE='p_share';' . */
3902
3903 if left(word(resource,1),5) <> "SMBFS" then do
3904 /* Support for other filesystems would come here! */
3905 userData = "UNKNOWN"
3906 end
3907 else do
3908 cd.lastrh = VRMethod("CN_CONDET","AddRecord")
3909 PARSE VAR userdata p_mpoint ';' p_mpidx ';' .
3910
3911 p_mpoint = strip(p_mpoint,'T','\')||'\'
3912 p_rw = word(resource, words(resource))
3913
3914 /* Workaround for truncated resource string */
3915 if length(p_rw) > 1 then do
3916 /* The resource string must have been truncated
3917 p_rw is already wrong and
3918 p_easupport will most likely be also wrong (look below for workaround!) */
3919 p_rw ="W" /* this is guessed only!!! */
3920 if options.!debug == 1 then say ' WARNING! Detected truncated resource string - shorten workgroup name, server name, share name until this message goes away!'
3921 end
3922 /* this should be done unconditionally if the resource string is never truncated */
3923 else resource = left(resource,length(resource)-length(p_rw))
3924
3925 call ParseResParmString
3926
3927 if p_master = "" then p_master = "WORKGROUP"
3928 if p_mtype = "" then p_mtype = "1"
3929 if p_loglevel = "" then p_loglevel = "0"
3930 if p_memlen = "" then p_memlen = "2"
3931
3932 /* Also works around for a truncated resource string! */
3933 if p_easupport= "" | p_easupport= " " then p_easupport = strip(options.!easupport)
3934
3935 if p_password <> "" & p_spassword = "" then do
3936 p_spassword = c2x(p_password)
3937 p_password = ""
3938 end
3939
3940 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.mpointFH, p_mpoint, cd.mpidxfh, p_mpidx, cd.workgrpFH , p_workgroup, cd.serverfh, p_server, cd.sharefh, p_share, cd.userfh, p_user)
3941 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.passwordfh, p_password, cd.spasswordfh, p_spassword, cd.masterfh, p_master, cd.mtypefh, p_mtype)
3942 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.ctoFH, p_cachetimeout, cd.cldFH, p_cachelistings)
3943 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.memlenfh, p_memlen, cd.easupportfh, p_easupport, cd.logfilefh, p_logfile, cd.loglevelfh, p_loglevel, cd.rwfh, p_rw)
3944 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.statusfh, icons.!active) /* Active */
3945 ok = VRMethod("CN_CONDET", "SetRecordAttr", cd.lastrh, "Icon", icons.!active) /* Active */
3946
3947 hashstr = p_mpoint' 'translate(p_workgroup)' 'translate(p_server)' 'translate(p_share)' 'p_user' 'p_spassword' 'p_easupport' 'p_rw
3948
3949 md5 = rexx_md5(hashstr)
3950
3951 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.hashfh,md5)
3952
3953 SELECT
3954 WHEN p_share == '' & p_server \= '' THEN DO /* all shares on server */
3955 IF p_workgroup == '' THEN
3956 userdata = userdata';\\'p_server'\*'
3957 ELSE
3958 userdata = userdata';'p_workgroup':\\'p_server'\*'
3959 END
3960 WHEN p_server == '' & p_workgroup \= '' THEN /* all servers in workgroup */
3961 userdata = userdata';'p_workgroup':\\*'
3962 WHEN p_server == '' & p_workgroup == '' THEN /* all workgroups */
3963 userdata = userdata';*:\\*'
3964 OTHERWISE DO
3965 IF p_workgroup == '' THEN
3966 userdata = userdata';\\'p_server'\'p_share
3967 ELSE
3968 userdata = userdata';'p_workgroup':\\'p_server'\'p_share
3969 END
3970 END
3971 end
3972
3973 if options.!debug == 1 then say ' returning "'userdata'"'
3974 if options.!debug == 1 then say time()' ParseResourceData done'
3975RETURN userdata
3976
3977/*:VRX ParseResParmString
3978*/
3979ParseResParmString:
3980 PARSE VAR resource . ';WORKGROUP=' p_workgroup ';' .
3981 PARSE VAR resource . ';SERVER=' p_server ';' .
3982 PARSE VAR resource . ';SHARE=' p_share ';' .
3983 PARSE VAR resource . ';USER=' p_user ';' .
3984 PARSE VAR resource . ';PASSWORD=' p_password ';' .
3985 PARSE VAR resource . ';SPASSWORD=' p_spassword ';' .
3986 PARSE VAR resource . ';MASTER=' p_master ';' .
3987 PARSE VAR resource . ';MASTERTYPE=' p_mtype ';' .
3988 PARSE VAR resource . ';MEMLEN=' p_memlen ';' .
3989 PARSE VAR resource . ';LOGFILE=' p_logfile ';' .
3990 PARSE VAR resource . ';LOGLEVEL=' p_loglevel ';' .
3991 PARSE VAR resource . ';CTO=' p_cachetimeout ';' .
3992 PARSE VAR resource . ';CLD=' p_cachelistings ';' .
3993 PARSE VAR resource . ';EASUPPORT=' p_easupport ' '
3994return
3995/*:VRX PB_ABOUT_CLOSE_Click
3996*/
3997PB_ABOUT_CLOSE_Click:
3998 CALL SW_ABOUT_Close
3999return
4000
4001/*:VRX PB_ABOUT_COPY_Click
4002*/
4003PB_ABOUT_COPY_Click:
4004
4005 if VRGet("CB_TRAC","set") then DO
4006 remainstr = AboutStr
4007 AboutStr = ''
4008 DO WHILE remainstr <> ''
4009 PARSE VAR remainstr _part '0d0a'x remainstr
4010 AboutStr = AboutStr || _part ||'[[BR]]'||'0d0a'x
4011 END
4012 END
4013 ok = VRMethod( "Application", "PutClipboard", AboutStr )
4014 if options.!debug == 1 then call beep 880*2,10
4015 CALL SW_ABOUT_Close
4016return
4017
4018/*:VRX PB_ADVANCED_APPLY_Click
4019*/
4020PB_ADVANCED_APPLY_Click:
4021 advanced.!easupport = VRGet( "CB_EAS", "Set" )
4022 advanced.!readonly = VRGet( "CB_READONLY", "Set" )
4023 advanced.!alwaysmp = VRGet( "CB_ALWAYSMP", "Set" )
4024 advanced.!cachetimeout = VRGet( "SPIN_CACHETIMEOUT", "Value" )
4025 advanced.!cachelistings = VRGet( "SPIN_CACHELISTINGS", "Value" )
4026
4027 /* Obsolete */
4028 advanced.!memlen = VRGet( "SPB_MEMLEN", "Value" )
4029return
4030
4031/*:VRX PB_ADVANCED_HELP_Click
4032*/
4033PB_ADVANCED_HELP_Click:
4034 CALL VRMethod 'SW_ADVANCED', 'InvokeHelp'
4035return
4036
4037/*:VRX PB_ADVANCED_UNDO_Click
4038*/
4039PB_ADVANCED_UNDO_Click:
4040 CALL SW_ADVANCED_Init_Content
4041RETURN
4042
4043/*:VRX PB_ClearCred_Click
4044*/
4045PB_ClearCred_Click:
4046 call Menu_File_ucCred_Reset_Click
4047return
4048
4049/*:VRX PB_CONDET_HELP_Click
4050*/
4051PB_CONDET_HELP_Click:
4052 CALL VRMethod 'GB_CONDET', 'InvokeHelp'
4053return
4054
4055/*:VRX PB_CONDET_LOAD_Click
4056*/
4057PB_CONDET_LOAD_Click:
4058 if options.!debug == 1 then say time()' '||"PB_CONDET_LOAD_Click started"
4059 call Menu_File_Load_Click
4060 if options.!debug == 1 then say time()' '||"PB_CONDET_LOAD_Click done"
4061RETURN
4062
4063/*:VRX PB_CONDET_SAVE_Click
4064*/
4065PB_CONDET_SAVE_Click: PROCEDURE EXPOSE settings. options. icons. Profile fs. cd. advanced. samba.
4066 if options.!debug == 1 then say time()' '||"PB_CONDET_SAVE_Click started"
4067
4068 if options.!autostart == 0 THEN filename = VRFileDialog('Main', NLVGetMessage( 50 ), 'S', '*.'fs.!profileext)
4069 ELSE filename = Profile
4070
4071 IF filename == '' THEN RETURN
4072
4073 IF STREAM( filename, 'C', 'QUERY EXISTS') \= '' THEN DO
4074 btns.0 = 2
4075 btns.1 = NLVGetMessage( 6 )
4076 if btns.1 = "" then btns.1 = '[Yes]'
4077 btns.2 = NLVGetMessage( 7 )
4078 if btns.2 = "" then btns.2 = '[No]'
4079 Title = NLVGetMessage( 53 )
4080 if Title = "" then Title = "[File exists]"
4081 Text = NLVGetMessage( 54, filename )
4082 if Text = "" then Text = "[File "filename" exists? Overwrite?]"
4083
4084 confirm = VRMessage('Main', Text, Title, 'W', 'btns.', 1, 2 )
4085 IF confirm \= 1 THEN RETURN
4086 CALL VRChAttr filename,, 'HSR'
4087 CALL VRDeleteFile filename
4088 END
4089
4090 CALL VRMethod "CN_CONDET", 'GetRecordList', 'All', 'records.'
4091 DO i = 1 TO records.0
4092 resource = ""
4093 resource = resource||VRMethod("CN_CONDET","GetFieldData", records.i, cd.mpointfh)||" "
4094 resource = resource||'\\'||VRMethod("CN_CONDET","GetFieldData", records.i, cd.workgrpFH )
4095 resource = resource||':'||VRMethod("CN_CONDET","GetFieldData", records.i, cd.serverfh)
4096 resource = resource||'\'||VRMethod("CN_CONDET","GetFieldData", records.i, cd.sharefh)
4097 resource = resource||'@'||VRMethod("CN_CONDET","GetFieldData", records.i, cd.userfh)
4098 resource = resource||';WORKGROUP='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.workgrpFH )
4099 resource = resource||';SERVER='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.serverfh)
4100 resource = resource||';SHARE='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.sharefh)
4101 resource = resource||';USER='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.userfh)
4102 resource = resource||';PASSWORD='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.passwordfh)
4103 resource = resource||';SPASSWORD='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.spasswordfh)
4104 resource = resource||';MASTER='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.masterfh)
4105 resource = resource||';MASTERTYPE='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.mtypefh)
4106 resource = resource||';CTO='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.ctoFH)
4107 resource = resource||';CLD='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.cldFH)
4108/* resource = resource||';MEMLEN='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.memlenfh)
4109 resource = resource||';LOGFILE='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.logfilefh)
4110 resource = resource||';LOGLEVEL='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.loglevelfh) */
4111 resource = resource||';EASUPPORT='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.easupportfh)
4112 resource = resource||' '||VRMethod("CN_CONDET","GetFieldData", records.i, cd.rwfh)
4113 call lineout filename, resource
4114 END
4115 CALL STREAM filename, 'C', 'CLOSE'
4116
4117 if options.!autostart == 0 THEN do
4118 Title = NLVGetMessage( 51 )
4119 if Title = "" then Title = "[Profile saved]"
4120 Text = NLVGetMessage( 52, filename )
4121 if Text = "" then Text = "[Profile saved to "filename"!]"
4122 CALL VRMessage 'Main', Text , Title, 'I'
4123 end
4124
4125 if options.!debug == 1 then say time()' '||"PB_CONDET_SAVE_Click done"
4126RETURN
4127
4128/*:VRX PB_DETACH_Click
4129*/
4130PB_DETACH_Click: PROCEDURE EXPOSE settings. options. icons. fs. cd. samba.
4131 if options.!debug == 1 then say time()' '||"PB_DETACH_Click started"
4132 CALL VRMethod "CN_CURRENT", 'GetRecordList', 'Selected', 'select.'
4133 IF select.0 < 1 THEN RETURN
4134
4135 userdata = VRMethod( "CN_CURRENT", 'GetRecordAttr', select.1, 'UserData')
4136 PARSE VAR userdata mountpoint ';' mounts ';' .
4137 drive = STRIP( mountpoint, 'T', '\')
4138
4139 btns.0 = 2
4140 btns.1 = NLVGetMessage( 6 )
4141 btns.2 = NLVGetMessage( 7 )
4142 confirm = VRMessage('Main', NLVGetMessage( 58, drive ), NLVGetMessage( 8 ), 'Q', 'btns.', 1, 2 )
4143 IF confirm \= 1 THEN RETURN
4144
4145 /* TODO: ?? Unmount & delete all child mountpoints? - Do we need this? */
4146 /* FIXME: This is potentially dangerous on Netdrive - what happens with unknown mount types? */
4147 /* FIXME: Unclear under which circumstances we have an alpha value here (which crahed EVFSGUI) */
4148 if datatype(mounts) = 'NUM' then do
4149 /* Unmount any resources */
4150 DO i = 1 TO mounts
4151 CALL _Dynamic "ok = "fs.!prefix"RxUnmount('"mountpoint"', "i-1")"
4152 END
4153 end
4154 else if options.!debug == 1 then say ' '||"mounts = "mounts
4155
4156 CALL _Dynamic "ok = "fs.!prefix"RxDetach('"drive"')"
4157
4158 CALL Refresh
4159 if options.!debug == 1 then say time()' '||"PB_DETACH_Click done"
4160RETURN
4161
4162/*:VRX PB_DIALOG_HELP_Click
4163*/
4164PB_DIALOG_HELP_Click:
4165 CALL VRMethod 'GB_DIALOG', 'InvokeHelp'
4166return
4167
4168/*:VRX PB_EDIT_CANCEL_Click
4169*/
4170PB_EDIT_CANCEL_Click:
4171 options.!editmode = 0
4172 CALL VRSet "PB_UNMOUNT","Enabled", 1
4173 CALL VRSet "GB_CURRENT", "ENABLED", 1
4174 ok = VRSet("PB_EDIT_CANCEL","Visible", 0)
4175 ok = VRMethod( "TDL_1", "SetTabText", 1, " "NLVGetMessage(13)" " )
4176/* CALL NLVSetText 'DT_DIALOG', "Caption", 13 */
4177RETURN 0
4178
4179/*:VRX PB_INFO_OK_Click
4180*/
4181PB_INFO_OK_Click:
4182 call SW_INFO_Close
4183RETURN
4184
4185/*:VRX PB_LOGIN_CANCEL_Click
4186*/
4187PB_LOGIN_CANCEL_Click:
4188 credentials.!entered = 0
4189 call SW_LOGIN_Close
4190RETURN
4191
4192/*:VRX PB_LOGIN_OK_Click
4193*/
4194PB_LOGIN_OK_Click:
4195 ok = VRSet("EF_USER","Value",VRGet("EF_USER1","Value"))
4196 ok = VRSet("EF_PASSWORD","Value",VRGet("EF_PASSWORD1","Value"))
4197 options.!storecreds = VRGet("CB_STORECREDS1","Set")
4198 credentials.!entered = 1
4199
4200 if p_server <> "" then do
4201 ok = _rpcqueryuser(p_server, VRGet("EF_USER1","Value"), VRGet("EF_PASSWORD1","Value"), VRGet("EF_USER1","Value"))
4202
4203 if word(ok,1) = "1" then do
4204 ok = VRSet("DT_STATUSBAR","Caption", NLVGetMessage(107, rpc.queryuser.FULL_NAME))
4205 say 'rpc.queryuser.DIR_DRIVE = "'rpc.queryuser.DIR_DRIVE'"'
4206 say 'rpc.queryuser.LOGON_SCRIPT = "'rpc.queryuser.LOGON_SCRIPT'"'
4207 end
4208 else do
4209 CALL VRMessage 'Main', VRGet("EF_USER1","Value")" \\"p_server": "rpc.queryuser.LOGONSTATUS, NLVGetMessage(5), "E"
4210 end
4211 end
4212
4213 call SW_LOGIN_Close
4214RETURN
4215
4216/*:VRX PB_MOUNT_Click
4217*/
4218PB_MOUNT_Click:
4219 if options.!debug == 1 then say time()' '||"PB_MOUNT_Click started"
4220 ok = VRSet("TM_RefreshCurrentDisplay","Enabled", 0)
4221 say " network = "network
4222 if options.!editmode = 1 then do
4223 CALL PB_UNMOUNT_Click
4224 options.!editmode = 0
4225 ok = VRMethod("TDL_1","SetTabText", " "strip(NLVGetMessage(13))" ")
4226/* CALL NLVSetText 'DT_DIALOG', "Caption", 13 */
4227
4228 CALL VRSet "PB_UNMOUNT","Enabled", 1
4229 CALL VRSet "GB_CURRENT", "ENABLED", 1
4230 end
4231
4232 options.!workgroup = ''
4233 options.!server = ''
4234 options.!share = ''
4235 options.!user = ''
4236 options.!password = ''
4237 options.!master = ''
4238 options.!mastertype = ''
4239 options.!memlen = advanced.!memlen
4240 options.!easupport = advanced.!easupport
4241 options.!readonly = advanced.!readonly
4242 options.!loglevel = advanced.!loglevel
4243 options.!logfile = advanced.!logfile
4244 options.!cachetimeout = advanced.!cachetimeout
4245 options.!cachelistings = advanced.!cachelistings
4246
4247 vfs.!drive = ''
4248 vfs.!mountpoint = ''
4249
4250 stype = VRGet( "CB_MOUNT", "Selected" )
4251 share = STRIP( VRGet( "EF_SHARE", "Value" ))
4252 server = STRIP( VRGet( "EF_SERVER", "Value" ))
4253 network = STRIP( VRGet( "EF_NETWORK", "Value" ))
4254 mtype = VRGet( "CHK_MTYPE", "Set" )
4255 userid = STRIP( VRGet( "EF_USER", "Value" ))
4256 password = STRIP( VRGet( "EF_PASSWORD", "Value" ))
4257 mdrive = VRGet( "CB_DRIVES", "SelectedText" )
4258 if mdrive = "" then mdrive = VRGet( "CB_DRIVES", "Value" )
4259 mpath = STRIP( VRGet( "EF_DIRECTORY", "Value" ))
4260
4261 IF ( stype < 1 | stype > 4 ) THEN stype = 1
4262
4263 /* The required/optional/ignored parameters depend on the type of mount
4264 * requested. (Note, however, that the user, password, easupport and
4265 * memlen parameters are always optional.)
4266 */
4267 SELECT
4268 /* Scenario 1: Mount a single share.
4269 * Required: share, server
4270 * Optional: workgroup
4271 * Unused: master, mastertype
4272 */
4273 WHEN stype = 1 THEN DO
4274 IF server == '' | share == '' THEN DO
4275 /* error */
4276 RETURN 1
4277 END
4278 options.!server = server
4279 options.!share = share
4280 options.!workgroup = network
4281 END
4282
4283 /* Scenario 2: Mount all shares on a server.
4284 * Required: server
4285 * Optional: workgroup
4286 * Unused: share, master, mastertype
4287 */
4288 WHEN stype = 2 THEN DO
4289 IF server == '' THEN DO
4290 /* error */
4291 RETURN 1
4292 END
4293 options.!server = server
4294 options.!workgroup = network
4295 END
4296
4297 /* Scenario 3: Mount all servers in a workgroup.
4298 * Required: workgroup
4299 * Optional: -
4300 * Unused: share, server, master, mastertype
4301 */
4302 WHEN stype = 3 THEN DO
4303 IF workgroup == '' THEN DO
4304 /* error */
4305 RETURN 1
4306 END
4307 options.!workgroup = network
4308 END
4309
4310 /* Scenario 4: Mount all workgroups known to a master.
4311 * Required: master, mastertype
4312 * Optional: -
4313 * Unused: share, server, workgroup
4314 */
4315 WHEN stype = 4 THEN DO
4316 IF master == '' | mastertype == '' THEN DO
4317 /* error */
4318 RETURN 1
4319 END
4320 options.!master = network
4321 options.!mastertype = mtype
4322 END
4323 END
4324
4325 options.!user = userid
4326 options.!password = password
4327
4328 vfs.!drive = mdrive
4329 vfs.!mountpoint = mdrive'\'mpath
4330
4331 CALL Mount
4332 CALL Refresh
4333 ok = VRSet("TM_RefreshCurrentDisplay","Enabled", 1)
4334 if options.!debug == 1 then say time()' '||"PB_MOUNT_Click done"
4335RETURN 0
4336
4337/*:VRX PB_NEWMOUNTPOINTCANCEL_Click
4338*/
4339PB_NEWMOUNTPOINTCANCEL_Click:
4340 ok = VRSet("CB_DRIVES","Value","")
4341 ok = VRSet("EF_DIRECTORY","Value","")
4342 call SW_MOUNTPOINT_Close
4343RETURN 0
4344
4345/*:VRX PB_NEWMOUNTPOINTOK_Click
4346*/
4347PB_NEWMOUNTPOINTOK_Click:
4348 ok = VRSet("CB_DRIVES","Value",VRGet("CB_DRIVES1","Value"))
4349 ok = VRSet("EF_DIRECTORY","Value",VRGet("EF_DIRECTORY1","Value"))
4350
4351 advanced.!readonly = VRGet("CB_READONLY1","Set")
4352 advanced.!easupport = VRGet("CB_EAS1","Set")
4353 advanced.!alwaysmp = VRGet("CB_ALWAYSMP1","Set")
4354 advanced.!cachetimeout = VRGet( "SPIN_CACHETIMEOUT1", "Value" )
4355 advanced.!cachelistings = VRGet( "SPIN_CACHELISTINGS1", "Value" )
4356
4357 call SW_MOUNTPOINT_Close
4358RETURN
4359
4360/*:VRX PB_NEWPORTCANCEL_Click
4361*/
4362PB_NEWPORTCANCEL_Click:
4363/* ok = VRSet("CB_DRIVES","Value","")
4364 ok = VRSet("EF_DIRECTORY","Value","")
4365 call SW_MOUNTPOINT_Close */
4366RETURN 0
4367
4368/*:VRX PB_NEWPORTCONNECT_Click
4369*/
4370PB_NEWPORTCONNECT_Click:
4371/* ok = VRSet("CB_DRIVES","Value",VRGet("CB_DRIVES1","Value"))
4372 ok = VRSet("EF_DIRECTORY","Value",VRGet("EF_DIRECTORY1","Value"))
4373
4374 advanced.!readonly = VRGet("CB_READONLY1","Set")
4375 advanced.!easupport = VRGet("CB_EAS1","Set")
4376 advanced.!alwaysmp = VRGet("CB_ALWAYSMP1","Set")
4377 advanced.!cachetimeout = VRGet( "SPIN_CACHETIMEOUT1", "Value" )
4378 advanced.!cachelistings = VRGet( "SPIN_CACHELISTINGS1", "Value" )
4379
4380 call SW_MOUNTPOINT_Close */
4381RETURN
4382
4383/*:VRX PB_PROGRESS_ABORT_Click
4384*/
4385PB_PROGRESS_ABORT_Click:
4386 options.!delay = 0
4387 options.!autoload = 0
4388 options.!autoclose = 0
4389 call SW_PROGRESS_Close
4390return
4391
4392/*:VRX PB_SETTINGS_APPLY_Click
4393*/
4394PB_SETTINGS_APPLY_Click:
4395 advanced.!loglevel = VRGet("SPIN_LOGLEVEL", "Value" )
4396 advanced.!logfile = VRGet("EF_LOGFILE", "Value" )
4397 advanced.!browseauth = VRGet("CB_BROWSEAUTH", "Set" )
4398 advanced.!browseimme = VRGet("CB_BROWSEIMME", "Set" )
4399 advanced.!special = VRGet("CB_SPECIAL", "Set" )
4400 advanced.!savepassive = VRGet("CB_SAVEPASSIVE","Set" )
4401 advanced.!lmhosts = VRGet("CB_LMHOSTS", "Set" )
4402 advanced.!broadcast = VRGet("CB_BROADCAST", "Set" )
4403 advanced.!miniicons = VRGet("CB_MINIICONS", "Set" )
4404
4405 /* Note: CB_LOGGING has its own event tied to the click */
4406 options.!storecreds = VRGet("CB_STORECREDS", "Set" )
4407 options.!debug = VRGet("CB_DEBUG", "Set" )
4408
4409 if options.!debug == 1 then do /* Turn on additional columns in connection details view */
4410 ok = VRRedirectStdio("ON")
4411 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.mpidxfh , "Visible", 1)
4412 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.passwordfh , "Visible", 1)
4413 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.spasswordfh , "Visible", 1)
4414 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.masterFH , "Visible", 1)
4415 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.mtypeFH , "Visible", 1)
4416 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.memlenfh , "Visible", 1)
4417 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.logfilefh , "Visible", 1)
4418 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.loglevelfh , "Visible", 1)
4419 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.hashfh , "Visible", 1)
4420 end
4421 else do /* Turn on additional columns in connection details view */
4422 ok = VRRedirectStdio("OFF")
4423 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.mpidxfh , "Visible", 0)
4424 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.passwordfh , "Visible", 0)
4425 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.spasswordfh , "Visible", 0)
4426 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.masterFH , "Visible", 0)
4427 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.mtypeFH , "Visible", 0)
4428 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.memlenfh , "Visible", 0)
4429 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.logfilefh , "Visible", 0)
4430 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.loglevelfh , "Visible", 0)
4431 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.hashfh , "Visible", 0)
4432 end
4433
4434 ok = VRset("CN_CURRENT", "MiniIcons", advanced.!miniicons)
4435 ok = VRset("CN_SMBTREE", "MiniIcons", advanced.!miniicons)
4436 ok = VRset("CN_CONDET", "MiniIcons", advanced.!miniicons)
4437
4438 if advanced.!lmhosts = 1 then do
4439 call _LMHostsRead
4440 call _LMHostsUpdate
4441 end
4442 if advanced.!smbconfchanged = 1 then do
4443 name_resolve_order = VRGet("SPIN_NRO1","value")' 'VRGet("SPIN_NRO2","value")' 'VRGet("SPIN_NRO3","value")' 'VRGet("SPIN_NRO4","value")
4444 handle = IniOpen('global', samba.!smbconf)
4445 call IniSet 'name resolve order', name_resolve_order, handle
4446 /* FIXME: Throw an error in this case */
4447 if \_IsValidIPAddress(VRGet("EF_WINS_SERVER","Value")) then ok = VRSet("EF_WINS_SERVER","Value","")
4448 call IniSet 'wins server', VRGet("EF_WINS_SERVER","Value"), handle
4449 call IniSave handle
4450 call IniClose handle
4451 advanced.!smbconfchanged = 0
4452 ok = VRSet("PB_SETTINGS_UNDO","Enabled", 0)
4453 end
4454 if options.!storecreds = 0 then call Menu_File_ucCred_Reset_Click
4455return
4456
4457/*:VRX PB_SETTINGS_HELP_Click
4458*/
4459PB_SETTINGS_HELP_Click:
4460 CALL VRMethod 'SW_SETTINGS', 'InvokeHelp'
4461return
4462
4463/*:VRX PB_SETTINGS_UNDO_Click
4464*/
4465PB_SETTINGS_UNDO_Click:
4466 call SW_SETTINGS_Init_Content
4467return
4468
4469/*:VRX PB_SMBCONF_APPLY_Click
4470*/
4471PB_SMBCONF_APPLY_Click:
4472 if advanced.!smbconfchanged = 1 then do
4473 client_NTLMv2_auth = VRGet("CB_client_NTLMv2_auth","Set")
4474 client_lanman_auth = VRGet("CB_client_lanman_auth","Set")
4475 client_plaintext_auth = VRGet("CB_client_plaintext_auth","Set")
4476 client_use_spnego = VRGet("CB_client_use_spnego","Set")
4477 client_use_spnego_principal = VRGet("CB_client_use_spnego_principal","Set")
4478 client_signing = VRGet("SPIN_client_signing","Value")
4479 client_ipc_signing = VRGet("SPIN_client_ipc_signing","Value")
4480
4481 if VRGet("SPIN_client_max_protocol","Enabled") = 1 then do
4482 client_max_protocol = VRGet("SPIN_client_max_protocol","Value")
4483 client_min_protocol = VRGet("SPIN_client_min_protocol","Value")
4484 end
4485
4486
4487 handle = IniOpen('global', samba.!smbconf)
4488 call IniSet 'client NTLMv2 auth', YesNo(client_NTLMv2_auth), handle
4489 call IniSet 'client lanman auth', YesNo(client_lanman_auth), handle
4490 call IniSet 'client plaintext auth', YesNo(client_plaintext_auth), handle
4491 call IniSet 'client use spnego', YesNo(client_use_spnego), handle
4492 call IniSet 'client use spnego principal', YesNo(client_use_spnego_principal), handle
4493 call IniSet 'client signing', client_signing, handle
4494 call IniSet 'client ipc signing', client_ipc_signing, handle
4495
4496 if VRGet("SPIN_client_max_protocol","Enabled") = 1 then do
4497 call IniSet 'client max protocol', client_max_protocol, handle
4498 call IniSet 'client min protocol', client_min_protocol, handle
4499 end
4500
4501 call IniSave handle
4502 call IniClose handle
4503 advanced.!smbconfchanged = 0
4504 ok = VRSet("PB_SMBCONF_UNDO","Enabled", 0)
4505 end
4506return
4507
4508/*:VRX PB_SMBCONF_HELP_Click
4509*/
4510PB_SMBCONF_HELP_Click:
4511 CALL VRMethod 'SW_SETTINGS', 'InvokeHelp'
4512return
4513
4514/*:VRX PB_SMBCONF_UNDO_Click
4515*/
4516PB_SMBCONF_UNDO_Click:
4517 call SW_SETTINGS_Init_Content
4518return
4519
4520/*:VRX PB_SMBTREE_CONNECT_Click
4521*/
4522PB_SMBTREE_CONNECT_Click: PROCEDURE EXPOSE settings. options. icons. fs. advanced. cd. samba. mtype.
4523 if options.!debug == 1 then say time()' '||"PB_CONNECT_Click started"
4524
4525 ok = VRMethod( "CN_SMBTREE", "GetRecordList", "SourceOrSelected", "SelRH." )
4526
4527 if SelRH.0 = 0 then do
4528 if options.!debug == 1 then say time()' '||"PB_CONNECT_Click aborted"
4529 return
4530 end
4531
4532 p_workgroup = ''
4533 p_server = ''
4534 p_share = ''
4535
4536 srcFile = ""
4537 srcCtn = VRGet("CN_SMBTREE","Self")
4538 srcRec = SelRH.1
4539 trgCtn = VRGet("CN_CURRENT","Self")
4540 trgRec = ""
4541
4542 if options.!debug == 1 then do
4543 say ' srcCtn = "'srcCtn'"'
4544 if srcCtn <> "" then say ' srcCtn name = "'VRGet(srcCtn,'Name')'"'
4545 say ' srcRec = "'srcRec'"'
4546 say ' trgCtn = "'trgCtn'"'
4547 if trgCtn <> "" then say ' trgCtn name = "'VRGet(trgCtn,'Name')'"'
4548 say ' trgRec = "'trgRec'"'
4549 end
4550
4551 ok = VRMethod("CB_MOUNT", "GetStringList", "ShareLevels." )
4552
4553 DragCapt = VRMethod(srcCtn, "GetRecordAttr", srcRec, "Caption")
4554 ParentRH = VRMethod(srcCtn, "GetRecordAttr", srcRec, "Parent")
4555
4556 if ParentRH = "" then do /* A workgroup was dragged */
4557 say "Workgroup dragged!"
4558 parse var DragCapt p_workgroup '0D0A'x .
4559 p_workgroup = strip(p_workgroup)
4560 ok = VRSet("EF_NETWORK","Value",strip(p_workgroup))
4561 call _UpdateObject "EF_SERVER", ""
4562 ok = VRSet("EF_SHARE","Value","")
4563
4564 ShareLevel = 3
4565 end
4566 else do
4567 ParDragCapt = VRMethod(srcCtn, "GetRecordAttr", ParentRH, "Caption")
4568 GParentRH = VRMethod(srcCtn, "GetRecordAttr", ParentRH, "Parent")
4569
4570 if GParentRH = "" then do /* A server was dragged */
4571 say "Server dragged!"
4572 parse var ParDragCapt p_workgroup '0D0A'x .
4573 ok = VRSet("EF_NETWORK","Value",strip(p_workgroup))
4574 p_workgroup = strip(p_workgroup)
4575
4576 parse var DragCapt p_server '0D0A'x .
4577 p_server = strip(p_server)
4578 call _UpdateObject "EF_SERVER", p_server
4579 ok = VRSet("EF_Share","Value","")
4580
4581 ShareLevel = 2
4582 end
4583 else do /* A share was dragged */
4584 say "Share dragged!"
4585 GParDragCapt = VRMethod(srcCtn, "GetRecordAttr", GParentRH, "Caption")
4586
4587 parse var GParDragCapt p_workgroup '0D0A'x .
4588 p_workgroup = strip(p_workgroup)
4589 ok = VRSet("EF_NETWORK","Value",strip(p_workgroup))
4590
4591 parse var ParDragCapt p_server '0D0A'x .
4592 p_server = strip(p_server)
4593 call _UpdateObject "EF_SERVER", p_server
4594
4595 parse var DragCapt p_share '0D0A'x .
4596 p_share = strip(p_share)
4597 ok = VRSet("EF_Share","Value",strip(p_share))
4598
4599 ShareLevel = 1
4600 end
4601 end
4602
4603 say 'p_workgroup = "'p_workgroup'"'
4604 say 'p_server = "'p_server'"'
4605 say 'p_share = "'p_share'"'
4606
4607 ok = VRSet( "CB_MOUNT", "Selected", Sharelevel )
4608 call CB_MOUNT_Change
4609
4610 if trgRec = "" then do
4611 window = VRLoadSecondary( "SW_MOUNTPOINT", "W" )
4612 if VRGet("CB_DRIVES","Value") = "" then return
4613 end
4614 else do
4615
4616 TargetString = VRMethod(trgCtn, "GetRecordAttr", trgRec, "Caption")
4617
4618 parTrgRH = VRMethod(trgCtn, "GetRecordAttr", trgRec, "Parent")
4619
4620 do while parTrgRH <> ""
4621 partrgCapt = VRMethod(trgCtn, "GetRecordAttr", partrgRH, "Caption")
4622 TargetString = partrgCapt||'\'||TargetString
4623 parTrgRH = VRMethod(trgCtn, "GetRecordAttr", partrgRH , "Parent")
4624 end
4625 say 'TargetString = "'TargetString'"'
4626 ok = VRSet("CB_DRIVES","Value", left(TargetString,2))
4627 ok = VRSet("EF_DIRECTORY","Value", substr(TargetString,4))
4628 end
4629
4630 window = VRLoadSecondary( "SW_LOGIN", "W" )
4631 if credentials.!entered = 1 then call PB_MOUNT_CLICK
4632
4633 if options.!debug == 1 then say time()' '||"PB_CONNECT_Click done"
4634RETURN
4635
4636/*:VRX PB_SMBTREE_HELP_Click
4637*/
4638PB_SMBTREE_HELP_Click:
4639 CALL VRMethod 'GB_SMBTREE', 'InvokeHelp'
4640return
4641
4642/*:VRX PB_SMBTREE_REFRESH_Click
4643*/
4644PB_SMBTREE_REFRESH_Click: /* PROCEDURE EXPOSE settings. options. icons. fs. samba. debuglevel advanced. UserCred Refreshmode Tempdir */
4645 if options.!debug == 1 then say time()' '||"PB_REFRESH_Click started"
4646
4647 if advanced.!browseauth = 1 & (UserCred = "--user=%" | UserCred = "" ) then do
4648 window = VRLoadSecondary( "SW_LOGIN", "W" )
4649 end
4650
4651 call _UserCredUpdate
4652 ok = VRset("Pict_Throbber", "Visible", 1)
4653 ok = VRset("Menu_Selected_Connect", "Visible", 0)
4654 ok = VRset("TM_Throbber", "Enabled", 1)
4655 ShowHidden = advanced.!special
4656 BroadCast = advanced.!broadcast
4657 ok = VRSet("TM_RefreshTreeDisplay", "Delay", 1000)
4658 ok = time('R')
4659 call _RefreshTree
4660 if options.!debug == 1 then say time()' '||"PB_REFRESH_Click done"
4661RETURN
4662
4663/*:VRX PB_UNMOUNT_Click
4664*/
4665PB_UNMOUNT_Click: PROCEDURE EXPOSE settings. options. icons. fs. cd. samba.
4666 if options.!debug == 1 then say time()' '||"PB_UNMOUNT_Click started"
4667 if options.!debug == 1 then say time()' '||'options.!editmode = 'options.!editmode
4668 CALL VRMethod "CN_CURRENT", 'GetRecordList', 'Selected', 'select.'
4669 IF select.0 < 1 THEN RETURN
4670
4671 userdata = VRMethod( "CN_CURRENT", 'GetRecordAttr', select.1, 'UserData')
4672 PARSE VAR userdata mountpoint ';' mounts ';' .
4673say 'userdata="'userdata'"'
4674 IF mounts > 0 & options.!editmode = 0 THEN DO
4675 btns.0 = 2
4676 btns.1 = NLVGetMessage( 6 )
4677 btns.2 = NLVGetMessage( 7 )
4678 confirm = VRMessage('Main', NLVGetMessage( 57, mountpoint ), NLVGetMessage( 8 ), 'Q', 'btns.', 1, 2 )
4679 IF confirm \= 1 THEN RETURN
4680 END
4681
4682 /* Unmount any resources */
4683 DO i = 1 TO mounts
4684 CALL _Dynamic "ok = "fs.!prefix"RxUnmount('"mountpoint"', "i-1")"
4685 END
4686
4687 /* Delete mountpoint */
4688 parent = VRMethod("CN_CURRENT", 'GetRecordAttr', select.1, 'Parent')
4689 IF parent \= '' THEN DO
4690 CALL _Dynamic "ok = "fs.!prefix"RxDeleteMountPoint('"mountpoint"')"
4691 END
4692
4693 CALL Refresh
4694 if options.!debug == 1 then say time()' '||"PB_UNMOUNT_Click done"
4695RETURN 0
4696
4697/*:VRX Pict_PWINMEM_Click
4698*/
4699Pict_PWINMEM_Click:
4700 if VRGet("Pict_PWINMEM","PicturePath") = "#36" then do
4701 call Menu_File_ucCred_Reset_Click
4702 end
4703return
4704
4705/*:VRX Quit
4706*/
4707Quit:
4708 if Fatal <> 1 then CALL _INISave
4709 /* ok = VRREdirectSTdio("OFF") */
4710 window = VRWindow()
4711 call VRSet window, "Shutdown", 1
4712 drop window
4713RETURN
4714
4715/*:VRX Refresh
4716*/
4717Refresh:
4718 if options.!debug == 1 then say time()' Refresh started'
4719 CALL VRSet "CN_CURRENT", 'Painting', 0
4720
4721 CALL VRMethod "CN_CURRENT", 'RemoveRecord', 'All'
4722
4723 /* Remove Active connections from details view */
4724 ok = VRMethod( "CN_CONDET", "GetRecordList", 'All', "rh." )
4725
4726 do I = 1 to rh.0
4727 /* This catches the bug we observed exactly once and were unable to reproduce! */
4728 if cd.statusfh = 'CD.STATUSFH' then do
4729 if options.!debug == 1 then call beep 880, 50
4730 if options.!debug == 1 then call beep 880, 50
4731 if options.!debug == 1 then say " cd.statusfh is undefined - check why!!!!!!"
4732 leave
4733 end
4734 if options.!debug == 1 then say ' Icon.'i' = "'||VRMethod( "CN_CONDET", "GetFieldData", rh.i, cd.statusfh)'"'
4735 if VRMethod("CN_CONDET","GetFieldData", rh.i, cd.statusfh) = icons.!active then CALL VRMethod "CN_CONDET", 'RemoveRecord', rh.i
4736 end
4737
4738/* call _AddTemplates */
4739 CALL VRSet "PB_DETACH", "Enabled", 0
4740 CALL VRSet "PB_UNMOUNT", "Enabled", 0
4741
4742 ok = VRSet("MENU_CONTEXT_OPEN", "Visible", 0)
4743/* ok = VRSet("MENU_CONTEXT_SEP1", "Visible", 0) */
4744 ok = VRSet("MENU_CONTEXT_DETACH", "Visible", 0)
4745 ok = VRSet("MENU_CONTEXT_UNMOUNT", "Visible", 0)
4746 ok = VRSet("MENU_CONTEXT_EDIT", "Visible", 0)
4747
4748 ok = VRSet("MENU_SELECTED_REMOVE", "Visible", 0)
4749 ok = VRSet("MENU_SELECTED_RETRY", "Visible", 0)
4750
4751 if options.!debug == 1 then say ' Remove records, disable buttons done.'
4752
4753 CALL VRMethod 'CB_DRIVES', 'Clear'
4754
4755 CALL VRSet "CN_CURRENT", "Caption", fs.!Name' 'fs.!version
4756
4757 /* Herwig B.: Attention! The SysDrivemap function with the "free" parameter causes hangs in case it is called repeatedly! */
4758 drvs = MyFreeDriveMap('C:', 'FREE')
4759
4760 DO i = 1 TO WORDS( drvs )
4761 drvstem.i = WORD( drvs, i )
4762 END
4763
4764 drvstem.0 = WORDS( drvs )
4765
4766 /* Add any existing EVFS drives */
4767 CALL GetMountPoints
4768
4769 CALL VRMethod "CB_DRIVES", "AddStringList", "drvstem."
4770 CALL VRSet "CN_CURRENT", 'Painting', 1
4771 if options.!debug == 1 then say time()' '||"Refresh done"
4772RETURN 0
4773
4774/*:VRX SPIN_client_ipc_signing_Change
4775*/
4776SPIN_client_ipc_signing_Change:
4777 advanced.!smbconfchanged = 1
4778return
4779
4780/*:VRX SPIN_client_max_protocol_Change
4781*/
4782SPIN_client_max_protocol_Change:
4783 advanced.!smbconfchanged = 1
4784return
4785
4786/*:VRX SPIN_client_min_protocol_Change
4787*/
4788SPIN_client_min_protocol_Change:
4789 advanced.!smbconfchanged = 1
4790return
4791
4792/*:VRX SPIN_client_signing_Change
4793*/
4794SPIN_client_signing_Change:
4795 advanced.!smbconfchanged = 1
4796return
4797
4798/*:VRX SPIN_NRO1_Change
4799*/
4800SPIN_NRO1_Change:
4801 advanced.!smbconfchanged = 1
4802return
4803
4804/*:VRX SPIN_NRO2_Change
4805*/
4806SPIN_NRO2_Change:
4807 advanced.!smbconfchanged = 1
4808return
4809
4810/*:VRX SPIN_NRO3_Change
4811*/
4812SPIN_NRO3_Change:
4813 advanced.!smbconfchanged = 1
4814return
4815
4816/*:VRX SPIN_NRO4_Change
4817*/
4818SPIN_NRO4_Change:
4819 advanced.!smbconfchanged = 1
4820return
4821
4822/*:VRX SPLIT_Main_Move
4823*/
4824SPLIT_Main_Move:
4825 ok = VRset("Main", "Painting", 0)
4826 NewPos = VRInfo("Left")
4827 OldPos = VRGet("SPLIT_Main","Left")
4828 ok = VRSet("SPLIT_Main","Left", NewPos)
4829 ok = VRset("GB_SMBTREE","Left", NewPos+60)
4830 call Main_Resize
4831 ok = VRset("Main", "Painting", 1)
4832return
4833
4834/*:VRX SW_ABOUT_Close
4835*/
4836SW_ABOUT_Close:
4837 options.!tracmark = VRGet('CB_TRAC', 'Set')
4838 call SW_ABOUT_Fini
4839return
4840
4841/*:VRX SW_ABOUT_Create
4842*/
4843SW_ABOUT_Create:
4844 call SW_ABOUT_Init
4845
4846 CALL NLVSetText 'SW_ABOUT', "Caption", 1
4847 CALL NLVSetText 'PB_ABOUT_CLOSE', "Caption", 29
4848 CALL NLVSetText 'PB_ABOUT_COPY', "Caption", 121
4849 CALL NLVSetText 'CB_TRAC', "Caption", 134
4850
4851 CALL VRSet 'CB_TRAC', 'Set', options.!tracmark
4852
4853 ok = VRSet("DT_About","Caption", Program' (c) 2007-2016 Alexander Taylor'||'0D0A'x||'and Herwig Bauernfeind for bww bitwise works GmbH.')
4854
4855 About.DscFH = VRMethod( "CN_ABOUT", "AddField", "String", "Component" )
4856 About.ValFH = VRMethod( "CN_ABOUT", "AddField", "String", "Version" )
4857
4858 call _AboutSambaClientGetInfo
4859
4860return
4861/*:VRX SW_ABOUT_Fini
4862*/
4863SW_ABOUT_Fini:
4864 window = VRInfo( "Window" )
4865 call VRDestroy window
4866 drop window
4867return
4868/*:VRX SW_ABOUT_Init
4869*/
4870SW_ABOUT_Init:
4871 window = VRInfo( "Object" )
4872 if( \VRIsChildOf( window, "TabbedDialog" ) ) then do
4873 call VRMethod window, "CenterWindow"
4874 call VRSet window, "Visible", 1
4875 call VRMethod window, "Activate"
4876 end
4877 drop window
4878return
4879
4880/*:VRX SW_ADVANCED_Close
4881*/
4882SW_ADVANCED_Close:
4883 call SW_ADVANCED_Fini
4884return
4885
4886/*:VRX SW_ADVANCED_Create
4887*/
4888SW_ADVANCED_Create:
4889 call SW_ADVANCED_Init
4890return
4891
4892/*:VRX SW_ADVANCED_Fini
4893*/
4894SW_ADVANCED_Fini:
4895 window = VRInfo( "Window" )
4896 call VRDestroy window
4897 drop window
4898return
4899/*:VRX SW_ADVANCED_Init
4900*/
4901SW_ADVANCED_Init:
4902 /* Title bar */
4903 CALL NLVSetText "SW_ADVANCED", "Caption", 40
4904
4905 /* Options */
4906 CALL NLVSetText "GB_ADVANCED", "Caption", 43
4907 CALL NLVSetText "CB_EAS", "Caption", 44
4908 CALL NLVSetText "CB_READONLY", "Caption", 45
4909 CALL NLVSetText "CB_ALWAYSMP", "Caption", 65
4910 CALL NLVSetText "DT_CACHETIMEOUT", "Caption", 130
4911 CALL NLVSetText "DT_CACHELISTINGS", "Caption", 131
4912
4913 /* Buttons */
4914 CALL NLVSetText "PB_ADVANCED_APPLY", "Caption", 122
4915 CALL NLVSetText "PB_ADVANCED_UNDO", "Caption", 123
4916 CALL NLVSetText "PB_ADVANCED_HELP", "Caption", 4
4917
4918 CALL VRSet "SW_ADVANCED", "HelpTag", NLVGetMessage(40)
4919
4920/* call VRMethod "SW_ADVANCED", "CenterWindow" */
4921 ok = VRSet("SW_ADVANCED", "Visible", 1)
4922/* call VRMethod "SW_ADVANCED", "Activate" */
4923return
4924
4925/*:VRX SW_ADVANCED_Init_Content
4926*/
4927SW_ADVANCED_Init_Content:
4928 IF advanced.!easupport \= "" THEN ok = VRSet("CB_EAS", "Set", advanced.!easupport)
4929 IF advanced.!readonly \= "" THEN ok = VRSet("CB_READONLY","Set", advanced.!readonly)
4930 IF advanced.!alwaysmp \= "" THEN ok = VRSet("CB_ALWAYSMP","Set", advanced.!alwaysmp)
4931 IF advanced.!cachetimeout \= "" THEN ok = VRSet("SPIN_CACHETIMEOUT", "Value", advanced.!cachetimeout)
4932 IF advanced.!cachelistings \= "" THEN ok = VRSet("SPIN_CACHELISTINGS", "Value", advanced.!cachelistings)
4933
4934 /* Obsolete */
4935 IF advanced.!memlen \= "" THEN ok = VRSet("SPB_MEMLEN", "Value", advanced.!memlen)
4936return
4937
4938/*:VRX SW_CONDET_Close
4939*/
4940SW_CONDET_Close:
4941 call SW_CONDET_Fini
4942return
4943
4944/*:VRX SW_CONDET_Create
4945*/
4946SW_CONDET_Create:
4947 call SW_CONDET_Init
4948return
4949
4950/*:VRX SW_CONDET_Fini
4951*/
4952SW_CONDET_Fini:
4953 window = VRInfo( "Window" )
4954 call VRDestroy window
4955 drop window
4956return
4957/*:VRX SW_CONDET_Init
4958*/
4959SW_CONDET_Init:
4960
4961return
4962
4963/*:VRX SW_CONDET_Init_Content
4964*/
4965SW_CONDET_Init_Content:
4966 if VRGet("TM_Throbber","Enabled") = 1 then ok = VRset("Pict_Throbber", "Visible", 0)
4967
4968 /* Hide any "foreign" menu entries */
4969 ok = VRSet("Menu_Selected_Connect", "Visible", 0)
4970return
4971
4972/*:VRX SW_DIALOG_Close
4973*/
4974SW_DIALOG_Close:
4975 call SW_DIALOG_Fini
4976return
4977
4978/*:VRX SW_DIALOG_Create
4979*/
4980SW_DIALOG_Create:
4981 call SW_DIALOG_Init
4982return
4983
4984/*:VRX SW_DIALOG_Fini
4985*/
4986SW_DIALOG_Fini:
4987 window = VRInfo( "Window" )
4988 call VRDestroy window
4989 drop window
4990return
4991/*:VRX SW_DIALOG_Init
4992*/
4993SW_DIALOG_Init:
4994 LEDSize = VRMethod( "Screen", "PixelsToTwips", 16 )
4995
4996 ok = VRSet("Pict_PWINMEM","Top", VRGet("EF_USER","Top")+(VRGet("EF_USER","Height")-LEDSize)%2)
4997 ok = VRSet("Pict_PWINMEM","Width", LEDSize)
4998 ok = VRSet("Pict_PWINMEM","Height", LEDSize)
4999return
5000
5001/*:VRX SW_DIALOG_Init_Content
5002*/
5003SW_DIALOG_Init_Content:
5004 /* obsolete */
5005 if VRGet("TM_Throbber","Enabled") = 1 then ok = VRset("Pict_Throbber", "Visible", 0)
5006
5007 ok = VRSet("Menu_Selected_Remove", "Visible", 0)
5008 ok = VRSet("Menu_Selected_Retry", "Visible", 0)
5009 ok = VRSet("Menu_Selected_Connect", "Visible", 0)
5010
5011 call _DialogPopulate
5012return
5013
5014/*:VRX SW_INFO_Close
5015*/
5016SW_INFO_Close:
5017 call SW_INFO_Fini
5018return
5019
5020/*:VRX SW_INFO_Create
5021*/
5022SW_INFO_Create:
5023 if options.!debug == 1 then say time()' SW_INFO_Create started'
5024 call SW_INFO_Init
5025 CALL NLVSetText 'SW_INFO', "Caption", 92
5026 CALL NLVSetText 'PB_INFO_OK', "Caption", 2
5027 Info.TypeFH = VRMethod( "CN_INFO", "AddField", "String", "Type" )
5028 Info.ValueFH = VRMethod( "CN_INFO", "AddField", "String", "Value" )
5029
5030 if options.!debug == 1 then do
5031 say ' Handle: "'SMBObj.rh'"'
5032 say ' Resource: "'SMBObj.resname'"'
5033 say ' Comment: "'SMBObj.comment'"'
5034 say ' Type: "'SMBObj.udatatype'"'
5035 say ' Message: "'SMBObj.udatamsg'"'
5036 say ' Icon: "'SMBObj.icon'"'
5037 end
5038say "Vorher:"rpc.srvinfo.OS_VERSION
5039 drop rpc.
5040say "Vorher:"rpc.srvinfo.OS_VERSION
5041 rpc_success = _rpcsrvinfo(SMBObj.resname,credentials.!username,credentials.!password)
5042
5043 Info.!nbname = VRMethod( "CN_INFO", "AddRecord")
5044 Info.!comment = VRMethod( "CN_INFO", "AddRecord")
5045 Info.!domain = VRMethod( "CN_INFO", "AddRecord")
5046 Info.!DMBLMB = VRMethod( "CN_INFO", "AddRecord")
5047 if rpc_success = 1 then Info.!capabilities = VRMethod( "CN_INFO", "AddRecord")
5048 Info.!os = VRMethod( "CN_INFO", "AddRecord")
5049 Info.!server = VRMethod( "CN_INFO", "AddRecord")
5050 if rpc_success = 1 then Info.!version = VRMethod( "CN_INFO", "AddRecord")
5051 Info.!status = VRMethod( "CN_INFO", "AddRecord")
5052 Info.!IP = VRMethod( "CN_INFO", "AddRecord")
5053 Info.!MAC = VRMethod( "CN_INFO", "AddRecord")
5054
5055 if rpc_success = 1 then do
5056 if rpc.srvinfo.OS_VERSION = 'RPC.SRVINFO.OS_VERSION' then rpc.srvinfo.OS_VERSION = ''
5057 ok = VRMethod( "CN_INFO", "SetFieldData", Info.!nbname, Info.TypeFH, strip(NLVGetMessage(137),'T',':'),Info.ValueFH, rpc.srvinfo.NETBIOSNAME)
5058 ok = VRMethod( "CN_INFO", "SetFieldData", Info.!comment,Info.TypeFH, strip(NLVGetMessage(125),'T',':'),Info.ValueFH, rpc.srvinfo.SERVERSTRING)
5059 ok = VRMethod( "CN_INFO", "SetFieldData", Info.!capabilities, Info.TypeFH, strip(NLVGetMessage(138),'T',':'),Info.ValueFH, rpc.srvinfo.CAPABILITIES)
5060 ok = VRMethod( "CN_INFO", "SetFieldData", Info.!version,Info.TypeFH, strip(NLVGetMessage(139),'T',':'),Info.ValueFH, rpc.srvinfo.OS_VERSION)
5061 ok = VRMethod( "CN_INFO", "SetFieldData", Info.!status, Info.TypeFH, strip(NLVGetMessage(67),'T',':'),Info.ValueFH, rpc.srvinfo.LOGONSTATUS )
5062 /* we did not get these, but we know them anyway */
5063 if rpc.srvinfo.NETBIOSNAME = "" then ok = VRMethod( "CN_INFO", "SetFieldData", Info.!nbname, Info.TypeFH, strip(NLVGetMessage(137),'T',':'),Info.ValueFH, SMBObj.resname)
5064 if rpc.srvinfo.SERVERSTRING = "" then ok = VRMethod( "CN_INFO", "SetFieldData", Info.!comment,Info.TypeFH, strip(NLVGetMessage(125),'T',':'),Info.ValueFH, SMBObj.comment)
5065 end
5066 else do
5067 ok = VRMethod( "CN_INFO", "SetFieldData", Info.!nbname, Info.TypeFH, strip(NLVGetMessage(137),'T',':'),Info.ValueFH, SMBObj.resname)
5068 ok = VRMethod( "CN_INFO", "SetFieldData", Info.!comment,Info.TypeFH, strip(NLVGetMessage(125),'T',':'),Info.ValueFH, SMBObj.comment)
5069 ok = VRMethod( "CN_INFO", "SetFieldData", Info.!status, Info.TypeFH, strip(NLVGetMessage(67),'T',':'), Info.ValueFH, SMBObj.udatamsg)
5070 end
5071
5072 ok = VRMethod( "CN_INFO", "SetFieldData", Info.!domain, Info.TypeFH, strip(NLVGetMessage(21), 'T',':'),Info.ValueFH, VRMethod("CN_SMBTREE", "GetFieldData", SMBObj.RH, WorkGroupFH ))
5073 ok = VRMethod( "CN_INFO", "SetFieldData", Info.!os, Info.TypeFH, strip(NLVGetMessage(93), 'T',':'),Info.ValueFH, VRMethod("CN_SMBTREE", "GetFieldData", SMBObj.RH, OSFH ))
5074 ok = VRMethod( "CN_INFO", "SetFieldData", Info.!server, Info.TypeFH, strip(NLVGetMessage(19), 'T',':'),Info.ValueFH, VRMethod("CN_SMBTREE", "GetFieldData", SMBObj.RH, VersionFH ))
5075 ok = VRMethod( "CN_INFO", "SetFieldData", Info.!DMBLMB, Info.TypeFH, strip(NLVGetMessage(124),'T',':'),Info.ValueFH, VRMethod("CN_SMBTREE", "GetFieldData", SMBObj.RH, MBFH ))
5076 ok = VRMethod( "CN_INFO", "SetFieldData", Info.!IP, Info.TypeFH, "IP" ,Info.ValueFH, VRMethod("CN_SMBTREE", "GetFieldData", SMBObj.RH, IPFH ))
5077 ok = VRMethod( "CN_INFO", "SetFieldData", Info.!MAC, Info.TypeFH, "MAC" ,Info.ValueFH, VRMethod("CN_SMBTREE", "GetFieldData", SMBObj.RH, MacFH ))
5078
5079 if options.!debug == 1 then say time()' SW_INFO_Create done'
5080return
5081
5082/*:VRX SW_INFO_Fini
5083*/
5084SW_INFO_Fini:
5085 window = VRInfo( "Window" )
5086 call VRDestroy window
5087 drop window
5088return
5089/*:VRX SW_INFO_Init
5090*/
5091SW_INFO_Init:
5092 window = VRInfo( "Object" )
5093 if( \VRIsChildOf( window, "TabbedDialog" ) ) then do
5094 call VRMethod window, "CenterWindow"
5095 call VRSet window, "Visible", 1
5096 call VRMethod window, "Activate"
5097 end
5098 drop window
5099return
5100
5101/*:VRX SW_LOGIN_Close
5102*/
5103SW_LOGIN_Close:
5104 call SW_LOGIN_Fini
5105return
5106
5107/*:VRX SW_LOGIN_Create
5108*/
5109SW_LOGIN_Create:
5110 call SW_LOGIN_Init
5111 ok = VRSet("SW_LOGIN","Caption",NLVGetMessage(136)' 'strip(p_workgroup' \\'p_server'\'p_share,'T','\'))
5112 CALL NLVSetText 'DT_USER1', "Caption", 25
5113 CALL NLVSetText 'DT_PASSWORD1', "Caption", 26
5114 CALL NLVSetText 'CB_STORECREDS1', "Caption", 135
5115 CALL NLVSetText 'PB_LOGIN_OK', "Caption", 2
5116 CALL NLVSetText 'PB_LOGIN_CANCEL',"Caption", 3
5117
5118 if VRIsValidObject(SMBObj.rh) then do
5119 select
5120 when pos("PDC",VRMethod("CN_smbtree", "GetFieldData", SMBObj.rh, MBFH)) > 0 then LoginIcon = "#63:PMWP.DLL" /* icons.!pdc */
5121 when SMBObj.udatatype = "WORKGROUP" then LoginIcon = SMBObj.Icon
5122 when SMBObj.udatatype = "SERVER" then LoginIcon = SMBObj.Icon
5123 when SMBObj.udatatype = "DISK" then do
5124 if pos("PDC",VRMethod("CN_smbtree", "GetFieldData", SMBObj.parentrh, MBFH)) > 0
5125 then LoginIcon = "#63:PMWP.DLL" /* icons.!pdc */
5126 else LoginIcon = "#35:PMWP.DLL" /* icons.!pdc */
5127 end
5128 otherwise LoginIcon = "#35:PMWP.DLL" /* icons.!machine_awake */
5129 end
5130 say loginicon
5131 ok = VRSet("Pict_Login","PicturePath", LoginIcon)
5132 end
5133 ok = VRSet("EF_USER1","Value",VRGet("EF_USER","Value"))
5134 ok = VRSet("EF_PASSWORD1","Value",VRGet("EF_PASSWORD","Value"))
5135 ok = VRSet("CB_STORECREDS1","Set",options.!storecreds)
5136return
5137
5138/*:VRX SW_LOGIN_Fini
5139*/
5140SW_LOGIN_Fini:
5141 window = VRInfo( "Window" )
5142 call VRDestroy window
5143 drop window
5144return
5145/*:VRX SW_LOGIN_Init
5146*/
5147SW_LOGIN_Init:
5148 window = VRInfo( "Object" )
5149 if( \VRIsChildOf( window, "TabbedDialog" ) ) then do
5150 call VRMethod window, "CenterWindow"
5151 call VRSet window, "Visible", 1
5152 call VRMethod window, "Activate"
5153 end
5154 drop window
5155return
5156
5157/*:VRX SW_LOGIN_KeyPress
5158*/
5159SW_LOGIN_KeyPress:
5160 obj = VRInfo( "Object" )
5161 keystr = VRGet( obj, "KeyString" )
5162/* say keystr */
5163 select
5164 when keystr = "{Enter}" then ok = VRMethod( "EF_LoginPassword", "SetFocus" )
5165 when keystr = "{Newline}" then ok = VRMethod( "EF_LoginPassword", "SetFocus" )
5166 when keystr = "{Esc}" then call PB_LOGIN_CANCEL_Click
5167 otherwise nop
5168 end
5169return
5170
5171/*:VRX SW_MOUNTPOINT_Close
5172*/
5173SW_MOUNTPOINT_Close:
5174 call SW_MOUNTPOINT_Fini
5175return
5176
5177/*:VRX SW_MOUNTPOINT_Create
5178*/
5179SW_MOUNTPOINT_Create:
5180 call SW_MOUNTPOINT_Init
5181
5182 ok = VRSet("SW_MOUNTPOINT","Caption",strip(p_workgroup' \\'p_server'\'p_share,'T','\')) /* NLVGetMessage(14)' ' */
5183 CALL NLVSetText 'DT_MPOINT1', "Caption", 27
5184 CALL NLVSetText 'PB_NEWMOUNTPOINTOK', "Caption", 2
5185 CALL NLVSetText 'PB_NEWMOUNTPOINTCANCEL',"Caption", 3
5186 CALL NLVSetText 'CB_EAS1', "Caption", 44
5187 CALL NLVSetText 'CB_READONLY1', "Caption", 45
5188 CALL NLVSetText 'CB_ALWAYSMP1', "Caption", 65
5189 CALL NLVSetText "DT_CACHETIMEOUT1", "Caption", 130
5190 CALL NLVSetText "DT_CACHELISTINGS1", "Caption", 131
5191
5192 ok = VRMethod( "CB_DRIVES", "GetStringList", "freedrives." )
5193 ok = VRMethod( "CB_DRIVES1", "AddStringList", "freedrives." )
5194 ok = VRSet("CB_DRIVES1", "Value", VRGet("CB_Drives","Value"))
5195
5196 if VRGet("EF_Directory","Value") = "" then ok = VRSet("EF_DIRECTORY1", "Value", VRGet("EF_Directory","Value"))
5197
5198 ok = VRMethod("EF_DIRECTORY1","AddString",p_share)
5199
5200 IF advanced.!easupport \= "" THEN ok = VRSet("CB_EAS1", "Set", advanced.!easupport)
5201 IF advanced.!readonly \= "" THEN ok = VRSet("CB_READONLY1", "Set", advanced.!readonly)
5202 IF advanced.!alwaysmp \= "" THEN ok = VRSet("CB_ALWAYSMP1", "Set", advanced.!alwaysmp)
5203 IF advanced.!cachetimeout \= "" THEN ok = VRSet("SPIN_CACHETIMEOUT1", "Value", advanced.!cachetimeout)
5204 IF advanced.!cachelistings \= "" THEN ok = VRSet("SPIN_CACHELISTINGS1","Value", advanced.!cachelistings)
5205return
5206
5207/*:VRX SW_MOUNTPOINT_Fini
5208*/
5209SW_MOUNTPOINT_Fini:
5210 window = VRInfo( "Window" )
5211 call VRDestroy window
5212 drop window
5213return
5214/*:VRX SW_MOUNTPOINT_Init
5215*/
5216SW_MOUNTPOINT_Init:
5217 window = VRInfo( "Object" )
5218 if( \VRIsChildOf( window, "TabbedDialog" ) ) then do
5219 call VRMethod window, "CenterWindow"
5220 call VRSet window, "Visible", 1
5221 call VRMethod window, "Activate"
5222 end
5223 drop window
5224return
5225
5226/*:VRX SW_PORTCONNECT_Close
5227*/
5228SW_PORTCONNECT_Close:
5229 call SW_PORTCONNECT_Fini
5230return
5231
5232/*:VRX SW_PORTCONNECT_Create
5233*/
5234SW_PORTCONNECT_Create:
5235 call SW_PORTCONNECT_Init
5236
5237 ok = VRGetINI("PM_PORT_DRIVER","SMB","SYSTEM")
5238
5239 if ok = "" then do
5240
5241 end
5242 else do
5243 say "Samba Spooler Port driver installed!"
5244 ok = SysINI("SYSTEM","PM_SPOOLER_PORT","ALL:","ports")
5245 smbport.0 = 0
5246 do I = 1 to ports.0
5247 if left(ports.I,3) = "SMB" then do
5248 X = smbport.0
5249 X = X + 1
5250 smbport.0 = X
5251 smbport.X = ports.I
5252 end
5253 end
5254 do I = 1 to smbport.0
5255 say smbport.I
5256 end
5257 end
5258
5259return
5260
5261/*:VRX SW_PORTCONNECT_Fini
5262*/
5263SW_PORTCONNECT_Fini:
5264 window = VRInfo( "Window" )
5265 call VRDestroy window
5266 drop window
5267return
5268/*:VRX SW_PORTCONNECT_Init
5269*/
5270SW_PORTCONNECT_Init:
5271 window = VRInfo( "Object" )
5272 if( \VRIsChildOf( window, "TabbedDialog" ) ) then do
5273 call VRMethod window, "CenterWindow"
5274 call VRSet window, "Visible", 1
5275 call VRMethod window, "Activate"
5276 end
5277 drop window
5278return
5279
5280/*:VRX SW_PROGRESS_Close
5281*/
5282SW_PROGRESS_Close:
5283 options.!delay = 0
5284 call Main_Resize
5285 call VRSet 'Main', 'Visible', 1
5286 call SW_PROGRESS_Fini
5287return
5288
5289/*:VRX SW_PROGRESS_Create
5290*/
5291SW_PROGRESS_Create:
5292 call SW_PROGRESS_Init
5293 CALL NLVSetText 'SW_PROGRESS', "Caption", 1
5294 CALL NLVSetText 'DT_PROGRESS', "Caption", 34
5295 CALL NLVSetText 'PB_PROGRESS_ABORT', "Caption", 3
5296
5297 if options.!delay > 0 then ok = VRSet("TM_TheCloser","Delay", options.!delay*1000)
5298
5299 CALL VRSet "TM_Progress_Throbber","Enabled", 1
5300 CALL VRSet "TM_TheCloser","Enabled", 1
5301return
5302
5303/*:VRX SW_PROGRESS_Fini
5304*/
5305SW_PROGRESS_Fini:
5306 call VRDestroy "SW_PROGRESS"
5307return
5308/*:VRX SW_PROGRESS_Init
5309*/
5310SW_PROGRESS_Init:
5311 call VRMethod "SW_PROGRESS", "CenterWindow", "Parent"
5312 call VRSet "SW_PROGRESS", "Visible", 1
5313 call VRMethod "SW_PROGRESS", "Activate"
5314return
5315
5316/*:VRX SW_SETTINGS_Close
5317*/
5318SW_SETTINGS_Close:
5319 call SW_SETTINGS_Fini
5320return
5321
5322/*:VRX SW_SETTINGS_Create
5323*/
5324SW_SETTINGS_Create:
5325 call SW_SETTINGS_Init
5326return
5327
5328/*:VRX SW_SETTINGS_Fini
5329*/
5330SW_SETTINGS_Fini:
5331 window = VRInfo( "Window" )
5332 call VRDestroy window
5333 drop window
5334return
5335/*:VRX SW_SETTINGS_Init
5336*/
5337SW_SETTINGS_Init:
5338 /* Title bar */
5339 call NLVSetText "SW_SETTINGS", "Caption", 47
5340
5341 /* Options */
5342 call NLVSetText "GB_GLOBAL", "Caption", 47
5343 call NLVSetText "CB_DEBUG", "Caption", 42
5344 call NLVSetText "CB_LOGGING", "Caption", 46
5345 call NLVSetText "CB_BROWSEIMME", "Caption", 48
5346 call NLVSetText "CB_BROWSEAUTH", "Caption", 49
5347 call NLVSetText "CB_SPECIAL", "Caption", 66
5348 call NLVSetText "CB_SAVEPASSIVE", "Caption", 73
5349 call NLVSetText "CB_LMHOSTS", "Caption", 133
5350 call NLVSetText "CB_BROADCAST", "Caption", 74
5351 call NLVSetText "CB_MINIICONS", "Caption", 70
5352 call NLVSetText "CB_STORECREDS", "Caption", 135
5353
5354 /* Buttons */
5355 call NLVSetText "PB_SETTINGS_APPLY", "Caption", 122
5356 call NLVSetText "PB_SETTINGS_UNDO", "Caption", 123
5357 call NLVSetText "PB_SETTINGS_HELP", "Caption", 4
5358
5359/* call VRSet "SW_ADVANCED", "HelpTag", NLVGetMessage(40) */
5360
5361/* call VRMethod "SW_SETTINGS", "CenterWindow" */
5362 ok = VRSet("SW_SETTINGS", "Visible", 1)
5363/* call VRMethod "SW_SETTINGS", "Activate" */
5364return
5365
5366/*:VRX SW_SETTINGS_Init_Content
5367*/
5368SW_SETTINGS_Init_Content:
5369 ok = VRSet("PB_SETTINGS_UNDO","Enabled", 1)
5370
5371 if advanced.!browseauth \= "" then ok = VRSet("CB_BROWSEAUTH", "Set", advanced.!browseauth)
5372 if advanced.!browseimme \= "" then ok = VRSet("CB_BROWSEIMME", "Set", advanced.!browseimme)
5373 if advanced.!broadcast \= "" then ok = VRSet("CB_BROADCAST", "Set", advanced.!broadcast)
5374 if advanced.!special \= "" then ok = VRSet("CB_SPECIAL", "Set", advanced.!special)
5375 if advanced.!savepassive \= "" then ok = VRSet("CB_SAVEPASSIVE","Set", advanced.!savepassive)
5376 if advanced.!lmhosts \= "" then ok = VRSet("CB_LMHOSTS", "Set", advanced.!lmhosts)
5377
5378 call VRSet "CB_LOGGING", "Set", VRFileExists(SysBootDrive()"\ndpsmb.dbg")
5379 if options.!debug \= "" then ok = VRSet("CB_debug", "Set", options.!debug)
5380 if options.!storecreds \= "" then ok = VRSet("CB_STORECREDS", "Set", options.!storecreds)
5381
5382 if advanced.!miniicons \= "" then ok = VRSet("CB_MINIICONS", "Set", advanced.!miniicons)
5383
5384 /* Obsolete */
5385 if advanced.!logfile \= "" then ok = VRSet("EF_LOGFILE", "Value", advanced.!logfile)
5386 if advanced.!loglevel \= "0" then ok = VRSet("SPIN_LOGLEVEL", "Value", advanced.!loglevel)
5387
5388 call _SmbConfCreateShadowCopy
5389
5390 wins_support = translate(IniGet('wins support', 'global', samba.!shadowsmbconf))
5391
5392 if wins_support = "YES" then do /* we are a WINS server ourself */
5393 ok = VRSet("DT_WINS_SERVER","Enabled", 0)
5394 ok = VRSet("EF_WINS_SERVER","BackColor", "PaleGray")
5395 ok = VRSet("EF_WINS_SERVER","Value", "")
5396 ok = VRSet("EF_WINS_SERVER","Enabled", 0)
5397 end
5398 else do
5399 ok = VRSet("EF_WINS_SERVER","Value", IniGet('wins server', 'global', samba.!shadowsmbconf))
5400 end
5401
5402 name_resolve_order = IniGet('name resolve order', 'global', samba.!shadowsmbconf)
5403
5404 do I = 1 to words(name_resolve_order)
5405 ok = VRSet("SPIN_NRO"||I, "value", word(name_resolve_order,I))
5406 end
5407
5408 advanced.!smbconfchanged = 0
5409return
5410
5411/*:VRX SW_SMBCONF_Close
5412*/
5413SW_SMBCONF_Close:
5414 call SW_SMBCONF_Fini
5415return
5416
5417/*:VRX SW_SMBCONF_Create
5418*/
5419SW_SMBCONF_Create:
5420 call SW_SMBCONF_Init
5421return
5422
5423/*:VRX SW_SMBCONF_Fini
5424*/
5425SW_SMBCONF_Fini:
5426 window = VRInfo( "Window" )
5427 call VRDestroy window
5428 drop window
5429return
5430/*:VRX SW_SMBCONF_Init
5431*/
5432SW_SMBCONF_Init:
5433
5434 /* Buttons */
5435 call NLVSetText "PB_SMBCONF_APPLY", "Caption", 122
5436 call NLVSetText "PB_SMBCONF_UNDO", "Caption", 123
5437 call NLVSetText "PB_SMBCONF_HELP", "Caption", 4
5438
5439return
5440
5441/*:VRX SW_SMBCONF_Init_Content
5442*/
5443SW_SMBCONF_Init_Content:
5444 call _SmbConfCreateShadowCopy
5445
5446 client_NTLMv2_auth = ZeroOne(IniGet('client NTLMv2 auth', 'global', samba.!shadowsmbconf))
5447 if client_NTLMv2_auth = 1 then do
5448 ok = VRSet("CB_client_NTLMv2_auth","Set",client_NTLMv2_auth)
5449 ok = VRSet("CB_client_lanman_auth","Enabled", 0)
5450 ok = VRSet("CB_client_plaintext_auth","Enabled", 0)
5451 end
5452 else do
5453 client_lanman_auth = ZeroOne(IniGet('client lanman auth', 'global', samba.!shadowsmbconf))
5454 client_plaintext_auth = ZeroOne(IniGet('client plaintext auth', 'global', samba.!shadowsmbconf))
5455 ok = VRSet("CB_client_lanman_auth","Set",client_lanman_auth)
5456 ok = VRSet("CB_client_plaintext_auth","Set",client_plaintext_auth)
5457 end
5458
5459 client_use_spnego = ZeroOne(IniGet('client use spnego', 'global', samba.!shadowsmbconf))
5460 ok = VRSet("CB_client_use_spnego","Set",client_use_spnego)
5461
5462 client_use_spnego_principal = ZeroOne(IniGet('client use spnego principal', 'global', samba.!shadowsmbconf))
5463 ok = VRSet("CB_client_use_spnego_principal","Set",client_use_spnego_principal)
5464
5465 client_max_protocol = IniGet('client max protocol', 'global', samba.!shadowsmbconf)
5466 if client_max_protocol = "" then do
5467 ok = VRSet("SPIN_client_max_protocol","Enabled", 0)
5468 ok = VRSet("DT_client_max_protocol","Enabled", 0)
5469 end
5470 else ok = VRSet("SPIN_client_max_protocol","Value",client_max_protocol)
5471
5472 client_min_protocol = IniGet('client min protocol', 'global', samba.!shadowsmbconf)
5473 if client_min_protocol = "" then do
5474 ok = VRSet("SPIN_client_min_protocol","Enabled", 0)
5475 ok = VRSet("DT_client_min_protocol","Enabled", 0)
5476 end
5477 else ok = VRSet("SPIN_client_min_protocol","Value",client_min_protocol)
5478
5479 client_signing = IniGet('client signing', 'global', samba.!shadowsmbconf)
5480 client_ipc_signing = IniGet('client ipc signing', 'global', samba.!shadowsmbconf)
5481say "client_signing ="client_signing
5482 ok = VRSet("SPIN_client_signing","Value",client_signing)
5483 ok = VRSet("SPIN_client_ipc_signing","Value",client_signing)
5484
5485 advanced.!smbconfchanged = 0
5486return
5487
5488/*:VRX SW_SMBTREE_Close
5489*/
5490SW_SMBTREE_Close:
5491 call SW_SMBTREE_Fini
5492return
5493
5494/*:VRX SW_SMBTREE_Create
5495*/
5496SW_SMBTREE_Create:
5497 call SW_SMBTREE_Init
5498return
5499
5500/*:VRX SW_SMBTREE_Fini
5501*/
5502SW_SMBTREE_Fini:
5503 window = VRInfo( "Window" )
5504 call VRDestroy window
5505 drop window
5506return
5507/*:VRX SW_SMBTREE_Init
5508*/
5509SW_SMBTREE_Init:
5510
5511return
5512
5513/*:VRX SW_SMBTREE_Init_Content
5514*/
5515SW_SMBTREE_Init_Content:
5516 if VRGet("TM_Throbber","Enabled") = 1 then ok = VRset("Pict_Throbber", "Visible", 1)
5517
5518 /* Hide any "foreign" menu entries */
5519 ok = VRSet("Menu_Selected_Remove", "Visible", 0)
5520 ok = VRSet("Menu_Selected_Retry", "Visible", 0)
5521return
5522
5523/*:VRX TDL_1_PageSelected
5524*/
5525TDL_1_PageSelected:
5526 page = VRInfo("Page")
5527
5528 /* call _TabsStrip */
5529 select
5530 when page = 1 then do /* dialog */
5531 call _TabFix 1
5532 end
5533 when page = 2 then do /* advanced */
5534 call SW_ADVANCED_Init_Content
5535 end
5536 when page = 3 then do /* smbtree */
5537 call SW_SMBTREE_Init_Content
5538 end
5539 when page = 4 then do /* condet */
5540 call SW_CONDET_Init_Content
5541 end
5542 when page = 5 then do /* Settings */
5543 call SW_SETTINGS_Init_Content
5544 end
5545 when page = 6 then do /* SMB.CONF */
5546 call SW_SMBCONF_Init_Content
5547 end
5548 otherwise nop
5549 end
5550return
5551/*:VRX TM_AutoClose_Trigger
5552*/
5553TM_AutoClose_Trigger:
5554 call Quit
5555return
5556
5557/*:VRX TM_Progress_Throbber_Trigger
5558*/
5559TM_Progress_Throbber_Trigger:
5560 pIdx = VRGet("Pict_Progress_Throbber","PicturePath")
5561 parse var pIdx '#' pidx
5562 pidx = pidx + 1
5563 if pidx = 23 then pidx = 11
5564 ok = VRSet("Pict_Progress_Throbber","PicturePath","#"pidx)
5565return
5566
5567/*:VRX TM_RefreshCurrentDisplay_Trigger
5568*/
5569TM_RefreshCurrentDisplay_Trigger:
5570 if RefreshMode <> "" then return
5571 if _DaemonRunning() = 0 then do
5572 say " Daemon not running - disable GUI"
5573 ok = VRset("GB_CURRENT", "Enabled", 0)
5574 ok = VRset("TDL_1", "Enabled", 0)
5575 ok = VRSet("Menu_File_Daemon_Start","Enabled", 1)
5576 ok = VRSet("Menu_File_Daemon_Stop", "Enabled", 0)
5577 end
5578 else do
5579 say " Daemon running - enable GUI"
5580 ok = VRset("GB_CURRENT", "Enabled", 1)
5581 ok = VRset("TDL_1", "Enabled", 1)
5582 ok = VRSet("Menu_File_Daemon_Start","Enabled", 0)
5583 ok = VRSet("Menu_File_Daemon_Stop", "Enabled", 1)
5584 end
5585 CALL REFRESH
5586return
5587
5588/*:VRX TM_RefreshTreeDisplay_Trigger
5589*/
5590TM_RefreshTreeDisplay_Trigger:
5591 ShowHidden = advanced.!special
5592 BroadCast = advanced.!broadcast
5593 DoLMHosts = advanced.!lmhosts
5594
5595 select
5596 when RefreshMode = "TREE" then do
5597 call _RefreshTreeDisplay
5598
5599 if smbtree.!workgroup <> 'SMBTREE.!WORKGROUP' then do
5600 ok = VRset("Menu_Selected_Connect", "Visible", VRMethod("CN_SMBTREE", "ValidateRecord", smbtree.!workgroup ) )
5601 end
5602 end
5603 when RefreshMode = "SHARE" then do
5604 call _AddSharesDisplay
5605 end
5606 otherwise say "RefreshMode = "RefreshMode
5607 end
5608 call _DialogPopulate
5609return
5610
5611/*:VRX TM_TheCloser_Trigger
5612*/
5613TM_TheCloser_Trigger:
5614 call SW_PROGRESS_Close
5615return
5616
5617/*:VRX TM_Throbber_Trigger
5618*/
5619TM_Throbber_Trigger:
5620 pIdx = VRGet("Pict_Throbber","PicturePath")
5621 parse var pIdx '#' pidx
5622 pidx = pidx + 1
5623 if pidx = 23 then pidx = 11
5624 ok = VRSet("Pict_Throbber","PicturePath","#"pidx)
5625return
5626
5627/*:VRX YesNo
5628*/
5629YesNo: procedure
5630 if arg(1) = 1 then answer = "Yes"
5631 else answer = "No"
5632return answer
5633
5634/*:VRX ZeroOne
5635*/
5636ZeroOne: procedure
5637 if translate(arg(1)) = "YES" then answer = 1
5638 else answer = 0
5639return answer
Note: See TracBrowser for help on using the repository browser.