что-то топик перестал жить походу... у меня получается разговор с самим собою =)
Ну да ладно, думаю, поможет кому-нить када-нить...
В общем, до чего я дошёл в решении проблемы, описанной выше.
Как сделать так, что-бы с определённой папки на фтп можно было скачивать в определённые часы в сутки...
Вот такой скрипт:
Dim ARNb
ReDim ARListPaths(0),ARListFileAccess(0)
Const Verbose = True
Const DebugMode = True
Const StrDenied = "No download video Day hours."
' R for download right
' W for upload and append right
' D for delete right
Add_AR "/games/*", "R"
Add_AR "/music/*", "R"
Add_AR "/soft/*", "R"
Add_AR "/video/*", ""
Sub HookDeleteFile(FileName, FileNameReal) ' client tries to delete a file
If GetAccessFor(FileName, "D") Then
Hook.Result = 0 'allowed
Else
Hook.Result = 1 'denied
If Verbose Then
Hook.SetReply 599, StrDenied
End If
End If
End Sub
Sub HookRetrieve(FileName, FileNameReal) ' client tries to download a file
If GetAccessFor(FileName, "R") Then
Hook.Result = 0 'allowed
Else
Hook.Result = 1 'denied
If Verbose Then
Hook.SetReply 599, StrDenied
End If
End If
End Sub
Sub HookStore(FileName, FileNameReal) ' client tries to upload a file
If GetAccessFor(FileName, "W") Then
Hook.Result = 0 'allowed
Else
Hook.Result = 1 'denied
If Verbose Then
Hook.SetReply 599, StrDenied
End If
End If
End Sub
Sub HookMove(FileName, FileNameReal, ToFileName, ToFileNameReal) ' client tries to rename/move a file or folder
If GetAccessFor(FileName, "W") And GetAccessFor(FileName, "R") Then
Hook.Result = 0 'allowed
Else
Hook.Result = 1 'denied
If Verbose Then
Hook.SetReply 599, StrDenied
End If
End If
End Sub
Function GetAccessFor(FileName, RightNeeded)
Log "We need to find if """ & RightNeeded & """ is allowed on """ & FileName & """"
Log ARNb & " paths to match to"
Set RE = New RegExp
RE.IgnoreCase = True
'RE.global = True
For i = 1 to ARNb
If ARListPaths(i) <> "" Then
Log "Matching with """ & ARListPaths(i) & """"
RE.Pattern = ARListPaths(i)
If RE.Test(FileName) Then
Log "Matched ! Rights on that are """ & ARListFileAccess(i) & """"
If InStr( ARListFileAccess(i), RightNeeded) > 0 Then
Log "This is good ! --> Access granted"
GetAccessFor = True
Else
Log "Too bad --> Access denied"
GetAccessFor = False
End If
Exit Function
End If
End If
Next
Log "Not matched --> Access denied"
GetAccessFor = False
End Function
Sub Add_AR (VirtualPath, Rights)
Set RE = New RegExp
RE.IgnoreCase = True
RE.global = True
VirtualPath = "^" & VirtualPath
RE.pattern = "\."
VirtualPath = RE.Replace(VirtualPath, "\.")
RE.pattern = "\*"
VirtualPath = RE.Replace(VirtualPath, ".*")
RE.pattern = "\?"
VirtualPath = RE.Replace(VirtualPath, ".")
ARNb = ARNb + 1
ReDim Preserve ARListPaths(ARNb)
ARListPaths(ARNb) = VirtualPath
ReDim Preserve ARListFileAccess(ARNb)
ARListFileAccess(ARNb) = Rights
End Sub
Sub Log (Text)
If DebugMode Then
WriteLog Text
End If
End Sub
В общем, в самом верху задаём доступ на папки:
Add_AR "/soft/*", "R"
Add_AR "/video/*", ""
тут видно, что из папки "soft", можно скачивать (R)
а из папки "video" нельзя "" (пусто)
я создал два одинаковых скрипта, где в первом есть разрешение скачивать из папки "видео", а во втором нет. И в заданные часы просто меняю эти скрипты в папке "..\Scripts\SFVConfig"
ВОПРОС: Помогите дописать в скрипт обработки текущего времени, что-бы в скрипте задавался интервал во времени, например: с 02:00 до 06:00. Если условие совпадает, то скрипт выполнять, иначе - пропускать весь код. Что-то я не въеду с обработками времени в этих скриптах
Ну да ладно, думаю, поможет кому-нить када-нить...
В общем, до чего я дошёл в решении проблемы, описанной выше.
Как сделать так, что-бы с определённой папки на фтп можно было скачивать в определённые часы в сутки...
Вот такой скрипт:
Dim ARNb
ReDim ARListPaths(0),ARListFileAccess(0)
Const Verbose = True
Const DebugMode = True
Const StrDenied = "No download video Day hours."
' R for download right
' W for upload and append right
' D for delete right
Add_AR "/games/*", "R"
Add_AR "/music/*", "R"
Add_AR "/soft/*", "R"
Add_AR "/video/*", ""
Sub HookDeleteFile(FileName, FileNameReal) ' client tries to delete a file
If GetAccessFor(FileName, "D") Then
Hook.Result = 0 'allowed
Else
Hook.Result = 1 'denied
If Verbose Then
Hook.SetReply 599, StrDenied
End If
End If
End Sub
Sub HookRetrieve(FileName, FileNameReal) ' client tries to download a file
If GetAccessFor(FileName, "R") Then
Hook.Result = 0 'allowed
Else
Hook.Result = 1 'denied
If Verbose Then
Hook.SetReply 599, StrDenied
End If
End If
End Sub
Sub HookStore(FileName, FileNameReal) ' client tries to upload a file
If GetAccessFor(FileName, "W") Then
Hook.Result = 0 'allowed
Else
Hook.Result = 1 'denied
If Verbose Then
Hook.SetReply 599, StrDenied
End If
End If
End Sub
Sub HookMove(FileName, FileNameReal, ToFileName, ToFileNameReal) ' client tries to rename/move a file or folder
If GetAccessFor(FileName, "W") And GetAccessFor(FileName, "R") Then
Hook.Result = 0 'allowed
Else
Hook.Result = 1 'denied
If Verbose Then
Hook.SetReply 599, StrDenied
End If
End If
End Sub
Function GetAccessFor(FileName, RightNeeded)
Log "We need to find if """ & RightNeeded & """ is allowed on """ & FileName & """"
Log ARNb & " paths to match to"
Set RE = New RegExp
RE.IgnoreCase = True
'RE.global = True
For i = 1 to ARNb
If ARListPaths(i) <> "" Then
Log "Matching with """ & ARListPaths(i) & """"
RE.Pattern = ARListPaths(i)
If RE.Test(FileName) Then
Log "Matched ! Rights on that are """ & ARListFileAccess(i) & """"
If InStr( ARListFileAccess(i), RightNeeded) > 0 Then
Log "This is good ! --> Access granted"
GetAccessFor = True
Else
Log "Too bad --> Access denied"
GetAccessFor = False
End If
Exit Function
End If
End If
Next
Log "Not matched --> Access denied"
GetAccessFor = False
End Function
Sub Add_AR (VirtualPath, Rights)
Set RE = New RegExp
RE.IgnoreCase = True
RE.global = True
VirtualPath = "^" & VirtualPath
RE.pattern = "\."
VirtualPath = RE.Replace(VirtualPath, "\.")
RE.pattern = "\*"
VirtualPath = RE.Replace(VirtualPath, ".*")
RE.pattern = "\?"
VirtualPath = RE.Replace(VirtualPath, ".")
ARNb = ARNb + 1
ReDim Preserve ARListPaths(ARNb)
ARListPaths(ARNb) = VirtualPath
ReDim Preserve ARListFileAccess(ARNb)
ARListFileAccess(ARNb) = Rights
End Sub
Sub Log (Text)
If DebugMode Then
WriteLog Text
End If
End Sub
В общем, в самом верху задаём доступ на папки:
Add_AR "/soft/*", "R"
Add_AR "/video/*", ""
тут видно, что из папки "soft", можно скачивать (R)
а из папки "video" нельзя "" (пусто)
я создал два одинаковых скрипта, где в первом есть разрешение скачивать из папки "видео", а во втором нет. И в заданные часы просто меняю эти скрипты в папке "..\Scripts\SFVConfig"
ВОПРОС: Помогите дописать в скрипт обработки текущего времени, что-бы в скрипте задавался интервал во времени, например: с 02:00 до 06:00. Если условие совпадает, то скрипт выполнять, иначе - пропускать весь код. Что-то я не въеду с обработками времени в этих скриптах