• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Доступ к файлу вне папки Lotus\data

  • Автор темы doc
  • Дата начала
D

doc

Существует ли возможность доступа к файлу .nsf вне папки data.
Ситуация такая я программно с помощью консольной команды (CL COPY mail\someOne e:\Terminations\mail\someOne.nsf) копирую некую базу в папку на другой диск (e:\Terminations\). Сама папка data находится на D:\Lotus\data. Теперь я хочу программно проверить скопировалась ли дааня база в нужную папку. Можно ли это как-нибудь проверить.
если напишу Set db = new NotesDatabse("ServerName", "e:\Terminations\mail\someOne.nsf")
Предполагаю, что не сработает. Я так предполагяю, что вообще доступ к таким файлам, вне папки data, отсутсвует в целях безопастности.
Кто-нибудь может помочь?
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
быренько замапить нужный путь как папку, проверить и размапить :eek:oo:
 

VladSh

начинающий
Lotus Team
11.12.2009
1 784
157
BIT
57
На основе хелпа: "If you specify a fileName that does not exist, LotusScript generates an error if the mode is Input;..",
как-то так:

Код:
Function IsFileExist(FileName As String) As Boolean
RezOpen% = IsFileOpen(FileName)
Select Case RezOpen%
Case 0	', <код ошибки доступа к файлу>, наличие которой также означает, что файл существует
IsFileExist = True
End Select
End Function

Function IsFileOpen(FileName As String) As Integer
Err = 0
On Error Resume Next
fileNum% = FreeFile()
Open FileName For Input As fileNum%
If Err = 0 Then Close fileNum%
IsFileOpen = Err		'Если смог открыть файл - возвращает 0
Err = 0
End Function
не покатит? :)
 

VladSh

начинающий
Lotus Team
11.12.2009
1 784
157
BIT
57
Dir короче, а делает тоже самое
Ага. Только тогда не забыть attributeMask = 6 выставить, чтобы все файлы проверяло, а то "флаг по умолчанию" проваливается если нужно проверить наличие файла вне зависимости от атрибута.
 
D

doc

Thanx a lot Я так понимаю, что функция dir возвращает список файлов и папок (Returns file or directory names from a specified directory, or returns a drive volume label). А мне бы хотелось скажем получить размер некого файла, причем файл может находится на другом сервере. В этом плане new NotesDatabse("ServerName", "e:\Terminations\mail\someOne.nsf") было бы удобно.
 
T

TIA

А мне бы хотелось скажем получить размер некого файла, причем файл может находится на другом сервере
Если агент работает на сервере, то сможете
Соответственно, если агент работает не на сервере, где лежит БД, то не сможете. В зависимости от задачи, размер можно считать например из каталога.

Ещё есть FileLen .
 

VladSh

начинающий
Lotus Team
11.12.2009
1 784
157
BIT
57
Что-то она у меня для файла 3Gb возвращает пургу какую-то в виде отрицательного значения... я разделил два раза на 1024 и получилось -749.6.
Может можно как-то заставить её давать правильные значения?
 

VladSh

начинающий
Lotus Team
11.12.2009
1 784
157
BIT
57
Преобразуй знаковый Long в беззнаковое 4-байтное целое. В пределах ~4Гб будет правильно, выше - нет.
Такой код
Код:
Strconv(Cstr(Filelen(filename)), 4) / (1024 ^ 2)
работает нормально до 1 Гб. Где-то в пределах 1 - 3,5 Гб (файлов в 2 Гб у меня сейчас нет проверить) клинит и он о5 начинает возвращать отрицательное значение.
Может что-то не так делаю?
 

VladSh

начинающий
Lotus Team
11.12.2009
1 784
157
BIT
57
ToxaRat, ничего не изменилось, - результат тот же((

To All
Так есть ли у кого готовая функция на LS по "взвешиванию" файлов/папок, а то использую WinAPI, а так не хочется его использовать... :ya_lamo:
 

VladSh

начинающий
Lotus Team
11.12.2009
1 784
157
BIT
57
Попробовал
Код:
fileSize = stream.Bytes / (1024 ^ digit)
на больших файлах возвращает -1.
В хэлпе на метод notesStream.ReadText: "Defaults to the entire stream to a maximum of 2GB." Так что, наверное, в обоих случаях отсюда ноги растут.
 
N

nvyush

Попробовал
Код:
fileSize = stream.Bytes / (1024 ^ digit)
на больших файлах возвращает -1.
В хэлпе на метод notesStream.ReadText: "Defaults to the entire stream to a maximum of 2GB." Так что, наверное, в обоих случаях отсюда ноги растут.
Имхо, ноги растут от типа Long:
A Long value is a whole number in the range -2,147,483,648 to 2,147,483,647 inclusive.
 
H

hosm

VladSh а вот на это, имхо, стоит выругаться в ИБМ.
Пусть делают беззнаковый тип, нормально вмещающий размер файла! :D
 
N

nvyush

VladSh а вот на это, имхо, стоит выругаться в ИБМ.
Пусть делают беззнаковый тип, нормально вмещающий размер файла! :D
Notes and Domino known limits:
Database size The maximum OS file size limit -- (up to 64GB)

Беззнаковый Long тут тоже не поможет, он только до 4Г. Либо double, либо Long64
 
T

TIA

A Long value is a whole number in the range -2,147,483,648 to 2,147,483,647 inclusive.
Именно. Размер файла выше 2,147,483,647 вызывает переполнение и представляется отрицательным числом. Потому и надо перевести в беззнаковое. Чую не справишься. Вот, до 4Гб будет работать, а выше уже FileLen нельзя использовать:

Код:
Function SignToUnsign( x As Long) As Currency
SignToUnsign = x	
If x<0 Then		
SignToUnsign = (x And &h7FFFFFFF) + 2147483648
End If
End Function
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!