mirror of
https://github.com/rejetto/hfs2.git
synced 2025-12-19 18:13:46 +01:00
Compare commits
44 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6ff458fb73 | ||
|
|
0d71b9946a | ||
|
|
140528bac8 | ||
|
|
29f6bac31c | ||
|
|
e233f6d29a | ||
|
|
6e4dcf5b56 | ||
|
|
61f1a14be6 | ||
|
|
2d1187b6a3 | ||
|
|
ca7caab85d | ||
|
|
9e662960e1 | ||
|
|
21349e5c04 | ||
|
|
db2ad83c77 | ||
|
|
a47541286a | ||
|
|
62c30c8de1 | ||
|
|
ad439fa65f | ||
|
|
2d131f2c5f | ||
|
|
ba2df13122 | ||
|
|
da294807ca | ||
|
|
6625f08419 | ||
|
|
d43983e986 | ||
|
|
4b5bffbd83 | ||
|
|
cf3761b7ed | ||
|
|
b5dc45f214 | ||
|
|
b1a95cd319 | ||
|
|
6c5139d552 | ||
|
|
863c667f1b | ||
|
|
44f37f92cf | ||
|
|
308561090f | ||
|
|
26ddc2b126 | ||
|
|
65d4a142e4 | ||
|
|
07f5f2ca6b | ||
|
|
cba235c7b0 | ||
|
|
9220d33aa4 | ||
|
|
efa99e7cbc | ||
|
|
6729be221a | ||
|
|
8ab5b318a8 | ||
|
|
db092e5eab | ||
|
|
d6d5b8f493 | ||
|
|
151cddad5b | ||
|
|
18f0da77d4 | ||
|
|
70947f179c | ||
|
|
7cc712a245 | ||
|
|
1e7bf6cfc4 | ||
|
|
18f7e5177f |
10
README.md
10
README.md
@ -1,3 +1,9 @@
|
|||||||
|
# Obsolete
|
||||||
|
This is the repository of the old HFS.
|
||||||
|
|
||||||
|
I'm working on HFS 3 on another repository. Check it out!
|
||||||
|
https://github.com/rejetto/hfs
|
||||||
|
|
||||||
## Introduction
|
## Introduction
|
||||||
You can use HFS (HTTP File Server) to send and receive files.
|
You can use HFS (HTTP File Server) to send and receive files.
|
||||||
It's different from classic file sharing because it uses web technology.
|
It's different from classic file sharing because it uses web technology.
|
||||||
@ -9,6 +15,10 @@ The virtual file system will allow you to easily share even one single file.
|
|||||||
Initially developed in 2002 with Delphi 6, now with Delphi 10.3.3 (Community Edition).
|
Initially developed in 2002 with Delphi 6, now with Delphi 10.3.3 (Community Edition).
|
||||||
Icons are generated at http://fontello.com/ . Use fontello.json for further modifications.
|
Icons are generated at http://fontello.com/ . Use fontello.json for further modifications.
|
||||||
|
|
||||||
|
For the default template we are targeting compatibility with Chrome 49 as it's the latest version running on Windows XP.
|
||||||
|
|
||||||
|
Warning: Delphi Community Edition 10.4 removed support for command-line compilation, and is thus unable to compile JEDI Code Library, and is thus unable to compile HFS2, ref [Community Edition no longer includes the command-line compilers](https://blogs.embarcadero.com/delphi-cbuilder-community-editions-now-available-in-version-10-4-2/#comment-1339) - meaning the last version of Community Edition cabale of compiling HFS2 is Delphi 10.3.x
|
||||||
|
|
||||||
## Libs used
|
## Libs used
|
||||||
- [ICS v8.64](http://www.overbyte.be) by François PIETTE
|
- [ICS v8.64](http://www.overbyte.be) by François PIETTE
|
||||||
- [TRegExpr v0.952b](https://github.com/andgineer/TRegExpr/releases) by Andrey V. Sorokin
|
- [TRegExpr v0.952b](https://github.com/andgineer/TRegExpr/releases) by Andrey V. Sorokin
|
||||||
|
|||||||
114
classesLib.pas
114
classesLib.pas
@ -27,6 +27,16 @@ uses
|
|||||||
OverbyteIcsWSocket, OverbyteIcshttpProt;
|
OverbyteIcsWSocket, OverbyteIcshttpProt;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
TantiDos = class
|
||||||
|
protected
|
||||||
|
accepted: boolean;
|
||||||
|
Paddress: string;
|
||||||
|
public
|
||||||
|
constructor create;
|
||||||
|
destructor Destroy; override;
|
||||||
|
function accept(conn:ThttpConn; address:string=''):boolean;
|
||||||
|
end;
|
||||||
|
|
||||||
TfastStringAppend = class
|
TfastStringAppend = class
|
||||||
protected
|
protected
|
||||||
buff: string;
|
buff: string;
|
||||||
@ -89,6 +99,7 @@ type
|
|||||||
constructor create;
|
constructor create;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
function addFile(src:string; dst:string=''; data:Tobject=NIL):boolean; virtual;
|
function addFile(src:string; dst:string=''; data:Tobject=NIL):boolean; virtual;
|
||||||
|
function contains(src:string):boolean;
|
||||||
function count():integer;
|
function count():integer;
|
||||||
procedure reset(); virtual;
|
procedure reset(); virtual;
|
||||||
property totalSize:int64 read getTotal;
|
property totalSize:int64 read getTotal;
|
||||||
@ -139,7 +150,7 @@ type
|
|||||||
PtplSection = ^TtplSection;
|
PtplSection = ^TtplSection;
|
||||||
TtplSection = record
|
TtplSection = record
|
||||||
name, txt: string;
|
name, txt: string;
|
||||||
nolog, nourl, noList, cache: boolean;
|
nolog, public, noList, cache: boolean;
|
||||||
ts: Tdatetime;
|
ts: Tdatetime;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -221,6 +232,70 @@ implementation
|
|||||||
uses
|
uses
|
||||||
utilLib, main, windows, dateUtils, forms;
|
utilLib, main, windows, dateUtils, forms;
|
||||||
|
|
||||||
|
const folderConcurrents: integer = 0;
|
||||||
|
const MAX_CONCURRENTS = 3;
|
||||||
|
const ip2availability: Tdictionary<string,Tdatetime> = NIL;
|
||||||
|
|
||||||
|
constructor TantiDos.create();
|
||||||
|
begin
|
||||||
|
accepted:=FALSE;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TantiDos.accept(conn:ThttpConn; address:string=''):boolean;
|
||||||
|
|
||||||
|
procedure reject();
|
||||||
|
resourcestring
|
||||||
|
MSG_ANTIDOS_REPLY = 'Please wait, server busy';
|
||||||
|
begin
|
||||||
|
conn.reply.mode:=HRM_OVERLOAD;
|
||||||
|
conn.addHeader(ansistring('Refresh: '+intToStr(1+random(2)))); // random for less collisions
|
||||||
|
conn.reply.body:=UTF8Encode(MSG_ANTIDOS_REPLY);
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
if address= '' then
|
||||||
|
address:=conn.address;
|
||||||
|
if ip2availability = NIL then
|
||||||
|
ip2availability:=Tdictionary<string,Tdatetime>.create();
|
||||||
|
try
|
||||||
|
if ip2availability[address] > now() then // this specific address has to wait?
|
||||||
|
begin
|
||||||
|
reject();
|
||||||
|
exit(FALSE);
|
||||||
|
end;
|
||||||
|
except
|
||||||
|
end;
|
||||||
|
if folderConcurrents >= MAX_CONCURRENTS then // max number of concurrent folder loading, others are postponed
|
||||||
|
begin
|
||||||
|
reject();
|
||||||
|
exit(FALSE);
|
||||||
|
end;
|
||||||
|
inc(folderConcurrents);
|
||||||
|
Paddress:=address;
|
||||||
|
ip2availability.AddOrSetValue(address, now()+1/HOURS);
|
||||||
|
accepted:=TRUE;
|
||||||
|
Result:=TRUE;
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TantiDos.Destroy;
|
||||||
|
var
|
||||||
|
pair: Tpair<string,Tdatetime>;
|
||||||
|
t: Tdatetime;
|
||||||
|
begin
|
||||||
|
if not accepted then
|
||||||
|
exit;
|
||||||
|
t:=now();
|
||||||
|
if folderConcurrents = MAX_CONCURRENTS then // serving multiple addresses at max capacity, let's give a grace period for others
|
||||||
|
ip2availability[Paddress]:=t + 1/SECONDS
|
||||||
|
else
|
||||||
|
ip2availability.Remove(Paddress);
|
||||||
|
dec(folderConcurrents);
|
||||||
|
// purge leftovers
|
||||||
|
for pair in ip2availability do
|
||||||
|
if pair.Value < t then
|
||||||
|
ip2availability.Remove(pair.Key);
|
||||||
|
end;
|
||||||
|
|
||||||
class function ThttpClient.createURL(url:string):ThttpClient;
|
class function ThttpClient.createURL(url:string):ThttpClient;
|
||||||
begin
|
begin
|
||||||
if startsText('https://', url)
|
if startsText('https://', url)
|
||||||
@ -450,6 +525,16 @@ if cachedTotal < 0 then calculate();
|
|||||||
result:=cachedTotal;
|
result:=cachedTotal;
|
||||||
end; // getTotal
|
end; // getTotal
|
||||||
|
|
||||||
|
function TarchiveStream.contains(src:string):boolean;
|
||||||
|
var
|
||||||
|
i: integer;
|
||||||
|
begin
|
||||||
|
for i:=0 to Length(flist)-1 do
|
||||||
|
if flist[i].src = src then
|
||||||
|
exit(TRUE);
|
||||||
|
result:=FALSE;
|
||||||
|
end;
|
||||||
|
|
||||||
function TarchiveStream.addFile(src:string; dst:string=''; data:Tobject=NIL):boolean;
|
function TarchiveStream.addFile(src:string; dst:string=''; data:Tobject=NIL):boolean;
|
||||||
|
|
||||||
function getMtime(fh:Thandle):int64;
|
function getMtime(fh:Thandle):int64;
|
||||||
@ -774,10 +859,12 @@ var
|
|||||||
|
|
||||||
var
|
var
|
||||||
i, posBak: int64;
|
i, posBak: int64;
|
||||||
|
n: integer;
|
||||||
begin
|
begin
|
||||||
posBak:=pos;
|
posBak:=pos;
|
||||||
p:=@buffer;
|
p:=@buffer;
|
||||||
while (count > 0) and (cur < length(flist)) do
|
n:=length(flist);
|
||||||
|
while (count > 0) and (cur < n) do
|
||||||
case where of
|
case where of
|
||||||
TW_HEADER:
|
TW_HEADER:
|
||||||
begin
|
begin
|
||||||
@ -1020,8 +1107,8 @@ var
|
|||||||
begin
|
begin
|
||||||
if f='no log' then
|
if f='no log' then
|
||||||
base.nolog:=TRUE
|
base.nolog:=TRUE
|
||||||
else if f='private' then
|
else if f='public' then
|
||||||
base.nourl:=TRUE
|
base.public:=TRUE
|
||||||
else if f='no list' then
|
else if f='no list' then
|
||||||
base.noList:=TRUE
|
base.noList:=TRUE
|
||||||
else if f='cache' then
|
else if f='cache' then
|
||||||
@ -1051,7 +1138,7 @@ var
|
|||||||
ss: TStringDynArray;
|
ss: TStringDynArray;
|
||||||
s, si: string;
|
s, si: string;
|
||||||
till: pchar;
|
till: pchar;
|
||||||
append: boolean;
|
append, prepend, add: boolean;
|
||||||
sect, from: PtplSection;
|
sect, from: PtplSection;
|
||||||
begin
|
begin
|
||||||
till:=pred(bos);
|
till:=pred(bos);
|
||||||
@ -1067,8 +1154,10 @@ var
|
|||||||
if not parseFlagsAndAcceptSection(ss) then
|
if not parseFlagsAndAcceptSection(ss) then
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
append:=ansiStartsStr('+', cur_section);
|
prepend:=startsStr('^', cur_section);
|
||||||
if append then
|
append:=startsStr('+', cur_section);
|
||||||
|
add:=prepend or append;
|
||||||
|
if add then
|
||||||
delete(cur_section,1,1);
|
delete(cur_section,1,1);
|
||||||
|
|
||||||
// there may be several section names separated by =
|
// there may be several section names separated by =
|
||||||
@ -1084,18 +1173,21 @@ var
|
|||||||
from:=NIL;
|
from:=NIL;
|
||||||
if sect = NIL then // not found
|
if sect = NIL then // not found
|
||||||
begin
|
begin
|
||||||
if append then
|
if add then
|
||||||
from:=getSection(s);
|
from:=getSection(s);
|
||||||
sect:=newSection(s);
|
sect:=newSection(s);
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if append then
|
if add then
|
||||||
from:=sect;
|
from:=sect;
|
||||||
if from<>NIL then
|
if from<>NIL then
|
||||||
begin // inherit from it
|
begin // inherit from it
|
||||||
sect.txt:=from.txt+base.txt;
|
if append then
|
||||||
|
sect.txt:=from.txt+base.txt
|
||||||
|
else
|
||||||
|
sect.txt:=base.txt+CRLF+from.txt;
|
||||||
sect.nolog:=from.nolog or base.nolog;
|
sect.nolog:=from.nolog or base.nolog;
|
||||||
sect.nourl:=from.nourl or base.nourl;
|
sect.public:=from.public or base.public;
|
||||||
sect.noList:=from.noList or base.noList;
|
sect.noList:=from.noList or base.noList;
|
||||||
continue;
|
continue;
|
||||||
end;
|
end;
|
||||||
|
|||||||
855
default.tpl
855
default.tpl
File diff suppressed because one or more lines are too long
2
defs.inc
2
defs.inc
@ -1,3 +1,5 @@
|
|||||||
|
{$A+,B-,C+,E-,F-,G+,H+,I-,J+,K-,L+,M-,N+,O+,P+,Q-,R-,S-,T-,U-,V+,X+,Y+,Z1}
|
||||||
|
|
||||||
{$DEFINE NOT STABLE }
|
{$DEFINE NOT STABLE }
|
||||||
{$IFDEF STABLE }
|
{$IFDEF STABLE }
|
||||||
{$ASSERTIONS OFF}
|
{$ASSERTIONS OFF}
|
||||||
|
|||||||
12
hfs.dproj
12
hfs.dproj
@ -206,9 +206,10 @@
|
|||||||
</Platforms>
|
</Platforms>
|
||||||
<ModelSupport>False</ModelSupport>
|
<ModelSupport>False</ModelSupport>
|
||||||
<Deployment Version="3">
|
<Deployment Version="3">
|
||||||
<DeployFile LocalName="hfs.exe" Configuration="Release" Class="ProjectOutput">
|
<DeployFile LocalName="hfs.dpr" Configuration="Release" Class="ProjectFile">
|
||||||
<Platform Name="Win32">
|
<Platform Name="Win32">
|
||||||
<RemoteName>hfs.exe</RemoteName>
|
<RemoteDir>.\</RemoteDir>
|
||||||
|
<Enabled>false</Enabled>
|
||||||
<Overwrite>true</Overwrite>
|
<Overwrite>true</Overwrite>
|
||||||
</Platform>
|
</Platform>
|
||||||
</DeployFile>
|
</DeployFile>
|
||||||
@ -218,16 +219,15 @@
|
|||||||
<Overwrite>true</Overwrite>
|
<Overwrite>true</Overwrite>
|
||||||
</Platform>
|
</Platform>
|
||||||
</DeployFile>
|
</DeployFile>
|
||||||
<DeployFile LocalName="hfs.dpr" Configuration="Debug" Class="ProjectFile">
|
<DeployFile LocalName="hfs.exe" Configuration="Release" Class="ProjectOutput">
|
||||||
<Platform Name="Win32">
|
<Platform Name="Win32">
|
||||||
<RemoteDir>.\</RemoteDir>
|
<RemoteName>hfs.exe</RemoteName>
|
||||||
<Overwrite>true</Overwrite>
|
<Overwrite>true</Overwrite>
|
||||||
</Platform>
|
</Platform>
|
||||||
</DeployFile>
|
</DeployFile>
|
||||||
<DeployFile LocalName="hfs.dpr" Configuration="Release" Class="ProjectFile">
|
<DeployFile LocalName="hfs.dpr" Configuration="Debug" Class="ProjectFile">
|
||||||
<Platform Name="Win32">
|
<Platform Name="Win32">
|
||||||
<RemoteDir>.\</RemoteDir>
|
<RemoteDir>.\</RemoteDir>
|
||||||
<Enabled>false</Enabled>
|
|
||||||
<Overwrite>true</Overwrite>
|
<Overwrite>true</Overwrite>
|
||||||
</Platform>
|
</Platform>
|
||||||
</DeployFile>
|
</DeployFile>
|
||||||
|
|||||||
640
hfs.drc
640
hfs.drc
@ -8,272 +8,273 @@
|
|||||||
resources were bound to the produced executable.
|
resources were bound to the produced executable.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define main_MSG_NUM_ADDR_DL 64656
|
#define main_MSG_NUM_ADDR 64656
|
||||||
#define main_MSG_MAX_LINES 64657
|
#define main_MSG_NUM_ADDR_DL 64657
|
||||||
#define main_MSG_APACHE_LOG_FMT 64658
|
#define main_MSG_MAX_LINES 64658
|
||||||
#define main_MSG_APACHE_LOG_FMT_LONG 64659
|
#define main_MSG_APACHE_LOG_FMT 64659
|
||||||
#define main_MSG_ICONS_ADDED 64660
|
#define main_MSG_APACHE_LOG_FMT_LONG 64660
|
||||||
#define main_MSG_DDNS_DISABLED 64661
|
#define main_MSG_ICONS_ADDED 64661
|
||||||
#define main_MSG_MD5_WARN 64662
|
#define main_MSG_DDNS_DISABLED 64662
|
||||||
#define main_MSG_AUTO_MD5 64663
|
#define main_MSG_MD5_WARN 64663
|
||||||
#define main_MSG_AUTO_MD5_LONG 64664
|
#define main_MSG_AUTO_MD5 64664
|
||||||
#define main_MSG_UPL_HOWTO 64665
|
#define main_MSG_AUTO_MD5_LONG 64665
|
||||||
#define main_MSG_EDIT_RES 64672
|
#define main_MSG_UPL_HOWTO 64666
|
||||||
#define main_MSG_TPL_USE_MACROS 64673
|
#define main_MSG_EVENTS_HLP 64672
|
||||||
#define main_REMOVE_SHELL 64674
|
#define main_MSG_EDIT_RES 64673
|
||||||
#define main_S_OFF 64675
|
#define main_MSG_TPL_USE_MACROS 64674
|
||||||
#define main_S_ON 64676
|
#define main_REMOVE_SHELL 64675
|
||||||
#define main_LOG 64677
|
#define main_S_OFF 64676
|
||||||
#define main_MSG_RE_NOIP 64678
|
#define main_S_ON 64677
|
||||||
#define main_MSG_TRAY_DEF 64679
|
#define main_LOG 64678
|
||||||
#define main_MSG_CLEAN_START 64680
|
#define main_MSG_RE_NOIP 64679
|
||||||
#define main_MSG_RESTORE_BAK 64681
|
#define main_MSG_TRAY_DEF 64680
|
||||||
#define main_MSG_EXT_ADDR_FAIL 64682
|
#define main_MSG_CLEAN_START 64681
|
||||||
#define main_MSG_TO_EXPERT 64683
|
#define main_MSG_RESTORE_BAK 64682
|
||||||
#define main_MSG_DONT_LOG_HINT 64684
|
#define main_MSG_EXT_ADDR_FAIL 64683
|
||||||
#define main_MSG_DL_PERC 64685
|
#define main_MSG_TO_EXPERT 64684
|
||||||
#define main_MSG_UNINSTALL_WARN 64686
|
#define main_MSG_DONT_LOG_HINT 64685
|
||||||
#define main_MSG_NUM_ADDR 64687
|
#define main_MSG_DL_PERC 64686
|
||||||
#define main_MSG_SELF_6 64688
|
#define main_MSG_UNINSTALL_WARN 64687
|
||||||
#define main_MSG_SELF_7 64689
|
#define main_MSG_SELF_3 64688
|
||||||
#define main_MSG_RET_EXT 64690
|
#define main_MSG_SELF_6 64689
|
||||||
#define main_MSG_SELF_CANT_ON 64691
|
#define main_MSG_SELF_7 64690
|
||||||
#define main_MSG_SELF_CANT_LIST 64692
|
#define main_MSG_RET_EXT 64691
|
||||||
#define main_MSG_SELF_CANT_S 64693
|
#define main_MSG_SELF_CANT_ON 64692
|
||||||
#define main_MSG_SELF_ING 64694
|
#define main_MSG_SELF_CANT_LIST 64693
|
||||||
#define main_MSG_TEST_CANC 64695
|
#define main_MSG_SELF_CANT_S 64694
|
||||||
#define main_MSG_TEST_INET 64696
|
#define main_MSG_SELF_ING 64695
|
||||||
#define main_MSG_SELF_UNAV 64697
|
#define main_MSG_TEST_CANC 64696
|
||||||
#define main_MSG_SELF_NO_INET 64698
|
#define main_MSG_TEST_INET 64697
|
||||||
#define main_MSG_SELF_NO_ANSWER 64699
|
#define main_MSG_SELF_UNAV 64698
|
||||||
#define main_MSG_OPEN_BROW 64700
|
#define main_MSG_SELF_NO_INET 64699
|
||||||
#define main_MSG_OPEN_BROW_LONG 64701
|
#define main_MSG_SELF_NO_ANSWER 64700
|
||||||
#define main_MSG_HIDE_PORT 64702
|
#define main_MSG_OPEN_BROW 64701
|
||||||
#define main_MSG_EVENTS_HLP 64703
|
#define main_MSG_OPEN_BROW_LONG 64702
|
||||||
#define main_MSG_DISAB_FIND_EXT 64704
|
#define main_MSG_HIDE_PORT 64703
|
||||||
#define main_MSG_ENT_URL 64705
|
#define main_MSG_RESET_TOT 64704
|
||||||
#define main_MSG_ENT_URL_LONG 64706
|
#define main_MSG_DISAB_FIND_EXT 64705
|
||||||
#define main_MSG_ENT_USR 64707
|
#define main_MSG_ENT_URL 64706
|
||||||
#define main_MSG_ENT_PWD 64708
|
#define main_MSG_ENT_URL_LONG 64707
|
||||||
#define main_MSG_ENT_HOST 64709
|
#define main_MSG_ENT_USR 64708
|
||||||
#define main_MSG_ENT_HOST_LONG 64710
|
#define main_MSG_ENT_PWD 64709
|
||||||
#define main_MSG_HOST_FORM 64711
|
#define main_MSG_ENT_HOST 64710
|
||||||
#define main_MSG_MIN_SPACE 64712
|
#define main_MSG_ENT_HOST_LONG 64711
|
||||||
#define main_MSG_MIN_SPACE_LONG 64713
|
#define main_MSG_HOST_FORM 64712
|
||||||
#define main_MSG_REN_PART 64714
|
#define main_MSG_MIN_SPACE 64713
|
||||||
#define main_MSG_REN_PART_LONG 64715
|
#define main_MSG_MIN_SPACE_LONG 64714
|
||||||
#define main_MSG_SELF_BEFORE 64716
|
#define main_MSG_REN_PART 64715
|
||||||
#define main_MSG_SELF_OK 64717
|
#define main_MSG_REN_PART_LONG 64716
|
||||||
#define main_MSG_SELF_OK_PORT 64718
|
#define main_MSG_SELF_BEFORE 64717
|
||||||
#define main_MSG_SELF_3 64719
|
#define main_MSG_SELF_OK 64718
|
||||||
#define main_MSG_LOG_FILE_LONG 64720
|
#define main_MSG_SELF_OK_PORT 64719
|
||||||
#define main_MSG_SET_URL 64721
|
#define main_MSG_LOG_FILE 64720
|
||||||
#define main_MSG_SET_URL_LONG 64722
|
#define main_MSG_LOG_FILE_LONG 64721
|
||||||
#define main_MSG_REALM 64723
|
#define main_MSG_SET_URL 64722
|
||||||
#define main_MSG_REALM_LONG 64724
|
#define main_MSG_SET_URL_LONG 64723
|
||||||
#define main_MSG_INACT_TIMEOUT 64725
|
#define main_MSG_REALM 64724
|
||||||
#define main_MSG_INACT_TIMEOUT_LONG 64726
|
#define main_MSG_REALM_LONG 64725
|
||||||
#define main_MSG_CHANGES_LOST 64727
|
#define main_MSG_INACT_TIMEOUT 64726
|
||||||
#define main_MSG_FLAG_NEW 64728
|
#define main_MSG_INACT_TIMEOUT_LONG 64727
|
||||||
#define main_MSG_FLAG_NEW_LONG 64729
|
#define main_MSG_CHANGES_LOST 64728
|
||||||
#define main_MSG_DONT_LOG_MASK 64730
|
#define main_MSG_FLAG_NEW 64729
|
||||||
#define main_MSG_DONT_LOG_MASK_LONG 64731
|
#define main_MSG_FLAG_NEW_LONG 64730
|
||||||
#define main_MSG_CUST_IP 64732
|
#define main_MSG_DONT_LOG_MASK 64731
|
||||||
#define main_MSG_CUST_IP_LONG 64733
|
#define main_MSG_DONT_LOG_MASK_LONG 64732
|
||||||
#define main_MSG_NO_EXT_IP 64734
|
#define main_MSG_CUST_IP 64733
|
||||||
#define main_MSG_RESET_TOT 64735
|
#define main_MSG_CUST_IP_LONG 64734
|
||||||
#define main_MSG_LOADING_VFS 64736
|
#define main_MSG_NO_EXT_IP 64735
|
||||||
#define main_MSG_VFS_OLD 64737
|
#define main_MSG_TENTH_SEC 64736
|
||||||
#define main_MSG_UNK_FK 64738
|
#define main_MSG_LOADING_VFS 64737
|
||||||
#define main_MSG_VIS_ONLY_ANON 64739
|
#define main_MSG_VFS_OLD 64738
|
||||||
#define main_MSG_AUTO_DISABLED 64740
|
#define main_MSG_UNK_FK 64739
|
||||||
#define main_MSG_CORRUPTED 64741
|
#define main_MSG_VIS_ONLY_ANON 64740
|
||||||
#define main_MSG_MACROS_FOUND 64742
|
#define main_MSG_AUTO_DISABLED 64741
|
||||||
#define main_MSG_UPD_INFO 64743
|
#define main_MSG_CORRUPTED 64742
|
||||||
#define main_MSG_NEWER 64744
|
#define main_MSG_MACROS_FOUND 64743
|
||||||
#define main_MSG_SRC_UPD 64745
|
#define main_MSG_UPD_INFO 64744
|
||||||
#define main_ARE_EXPERT 64746
|
#define main_MSG_NEWER 64745
|
||||||
#define main_ARE_EASY 64747
|
#define main_MSG_SRC_UPD 64746
|
||||||
#define main_SW2EXPERT 64748
|
#define main_ARE_EXPERT 64747
|
||||||
#define main_SW2EASY 64749
|
#define main_ARE_EASY 64748
|
||||||
#define main_MSG_DL_TIMEOUT_LONG 64750
|
#define main_SW2EXPERT 64749
|
||||||
#define main_MSG_LOG_FILE 64751
|
#define main_SW2EASY 64750
|
||||||
#define main_MSG_ZLIB 64752
|
#define main_MSG_DL_TIMEOUT_LONG 64751
|
||||||
#define main_MSG_BAKAVAILABLE 64753
|
#define main_MSG_NEWER_INCOMP 64752
|
||||||
#define main_MSG_CANT_LOAD_SAVE 64754
|
#define main_MSG_ZLIB 64753
|
||||||
#define main_MSG_OPEN_VFS 64755
|
#define main_MSG_BAKAVAILABLE 64754
|
||||||
#define main_LIMIT 64756
|
#define main_MSG_CANT_LOAD_SAVE 64755
|
||||||
#define main_TOP_SPEED 64757
|
#define main_MSG_OPEN_VFS 64756
|
||||||
#define main_MSG_MAX_BW 64758
|
#define main_LIMIT 64757
|
||||||
#define main_MSG_LIM0 64759
|
#define main_TOP_SPEED 64758
|
||||||
#define main_MSG_MAX_BW_1 64760
|
#define main_MSG_MAX_BW 64759
|
||||||
#define main_MSG_GRAPH_RATE_MENU 64761
|
#define main_MSG_LIM0 64760
|
||||||
#define main_MSG_MAX_CON_LONG 64762
|
#define main_MSG_MAX_BW_1 64761
|
||||||
#define main_MSG_WARN_CONN 64763
|
#define main_MSG_GRAPH_RATE_MENU 64762
|
||||||
#define main_MSG_WARN_ACT_DL 64764
|
#define main_MSG_MAX_CON_LONG 64763
|
||||||
#define main_MSG_MAX_CON_SING_LONG 64765
|
#define main_MSG_WARN_CONN 64764
|
||||||
#define main_MSG_GRAPH_RATE 64766
|
#define main_MSG_WARN_ACT_DL 64765
|
||||||
#define main_MSG_TENTH_SEC 64767
|
#define main_MSG_MAX_CON_SING_LONG 64766
|
||||||
#define main_MSG_CON_STATE_IDLE 64768
|
#define main_MSG_GRAPH_RATE 64767
|
||||||
#define main_MSG_CON_STATE_REQ 64769
|
#define main_MSG_VFS_DONT_CONS_DL_MASK 64768
|
||||||
#define main_MSG_CON_STATE_RCV 64770
|
#define main_MSG_VFS_INHERITED 64769
|
||||||
#define main_MSG_CON_STATE_THINK 64771
|
#define main_MSG_VFS_EXTERNAL 64770
|
||||||
#define main_MSG_CON_STATE_REP 64772
|
#define main_MSG_CON_HINT 64771
|
||||||
#define main_MSG_CON_STATE_SEND 64773
|
#define main_MSG_CON_STATE_IDLE 64772
|
||||||
#define main_MSG_CON_STATE_DISC 64774
|
#define main_MSG_CON_STATE_REQ 64773
|
||||||
#define main_MSG_CON_PAUSED 64775
|
#define main_MSG_CON_STATE_RCV 64774
|
||||||
#define main_MSG_CON_SENT 64776
|
#define main_MSG_CON_STATE_THINK 64775
|
||||||
#define main_MSG_CON_RECEIVED 64777
|
#define main_MSG_CON_STATE_REP 64776
|
||||||
#define main_MSG_TPL_RESET 64778
|
#define main_MSG_CON_STATE_SEND 64777
|
||||||
#define main_MSG_ALLO_REF 64779
|
#define main_MSG_CON_STATE_DISC 64778
|
||||||
#define main_MSG_ALLO_REF_LONG 64780
|
#define main_MSG_TPL_RESET 64779
|
||||||
#define main_MSG_BETTERSTOP 64781
|
#define main_MSG_ALLO_REF 64780
|
||||||
#define main_MSG_BADCRC 64782
|
#define main_MSG_ALLO_REF_LONG 64781
|
||||||
#define main_MSG_NEWER 64783
|
#define main_MSG_BETTERSTOP 64782
|
||||||
#define main_MSG_VFS_ARCABLE 64784
|
#define main_MSG_BADCRC 64783
|
||||||
#define main_MSG_VFS_DEF_MASK 64785
|
#define main_MSG_VFS_HIDE_EMPTY 64784
|
||||||
#define main_MSG_VFS_ACCESS 64786
|
#define main_MSG_VFS_NOT_BROW 64785
|
||||||
#define main_MSG_VFS_UPLOAD 64787
|
#define main_MSG_VFS_HIDE_EMPTY_FLD 64786
|
||||||
#define main_MSG_VFS_DELETE 64788
|
#define main_MSG_VFS_HIDE_EXT 64787
|
||||||
#define main_MSG_VFS_COMMENT 64789
|
#define main_MSG_VFS_ARCABLE 64788
|
||||||
#define main_MSG_VFS_REALM 64790
|
#define main_MSG_VFS_DEF_MASK 64789
|
||||||
#define main_MSG_VFS_DIFF_TPL 64791
|
#define main_MSG_VFS_ACCESS 64790
|
||||||
#define main_MSG_VFS_FILES_FLT 64792
|
#define main_MSG_VFS_UPLOAD 64791
|
||||||
#define main_MSG_VFS_FLD_FLT 64793
|
#define main_MSG_VFS_DELETE 64792
|
||||||
#define main_MSG_VFS_UPL_FLT 64794
|
#define main_MSG_VFS_COMMENT 64793
|
||||||
#define main_MSG_VFS_DONT_CONS_DL 64795
|
#define main_MSG_VFS_REALM 64794
|
||||||
#define main_MSG_VFS_DONT_CONS_DL_MASK 64796
|
#define main_MSG_VFS_DIFF_TPL 64795
|
||||||
#define main_MSG_VFS_INHERITED 64797
|
#define main_MSG_VFS_FILES_FLT 64796
|
||||||
#define main_MSG_VFS_EXTERNAL 64798
|
#define main_MSG_VFS_FLD_FLT 64797
|
||||||
#define main_MSG_CON_HINT 64799
|
#define main_MSG_VFS_UPL_FLT 64798
|
||||||
#define main_VFS_ITEMS 64800
|
#define main_MSG_VFS_DONT_CONS_DL 64799
|
||||||
#define main_MSG_ITEM_EXISTS 64801
|
#define main_IN_SPEED 64800
|
||||||
#define main_MSG_INSTALL_TPL 64802
|
#define main_BANS 64801
|
||||||
#define main_MSG_FOLDER_UPLOAD 64803
|
#define main_MEMORY 64802
|
||||||
#define main_MSG_VFS_DRAG_INVIT 64804
|
#define main_CUST_TPL 64803
|
||||||
#define main_MSG_VFS_URL 64805
|
#define main_VFS_ITEMS 64804
|
||||||
#define main_MSG_VFS_PATH 64806
|
#define main_MSG_ITEM_EXISTS 64805
|
||||||
#define main_MSG_VFS_SIZE 64807
|
#define main_MSG_INSTALL_TPL 64806
|
||||||
#define main_MSG_VFS_DLS 64808
|
#define main_MSG_FOLDER_UPLOAD 64807
|
||||||
#define main_MSG_VFS_INVISIBLE 64809
|
#define main_MSG_VFS_DRAG_INVIT 64808
|
||||||
#define main_MSG_VFS_DL_FORB 64810
|
#define main_MSG_VFS_URL 64809
|
||||||
#define main_MSG_VFS_DONT_LOG 64811
|
#define main_MSG_VFS_PATH 64810
|
||||||
#define main_MSG_VFS_HIDE_EMPTY 64812
|
#define main_MSG_VFS_SIZE 64811
|
||||||
#define main_MSG_VFS_NOT_BROW 64813
|
#define main_MSG_VFS_DLS 64812
|
||||||
#define main_MSG_VFS_HIDE_EMPTY_FLD 64814
|
#define main_MSG_VFS_INVISIBLE 64813
|
||||||
#define main_MSG_VFS_HIDE_EXT 64815
|
#define main_MSG_VFS_DL_FORB 64814
|
||||||
#define main_MSG_CHK_UPD_FAIL 64816
|
#define main_MSG_VFS_DONT_LOG 64815
|
||||||
#define main_MSG_CHK_UPD_HEAD 64817
|
#define main_MSG_UPD_DL 64816
|
||||||
#define main_MSG_CHK_UPD_VER 64818
|
#define main_MSG_UPDATE 64817
|
||||||
#define main_MSG_CHK_UPD_VER_EXT 64819
|
#define main_MSG_REQUESTING 64818
|
||||||
#define main_MSG_CHK_UPD_NONE 64820
|
#define main_MSG_CHK_UPD 64819
|
||||||
#define main_TO_CLIP 64821
|
#define main_MSG_CHK_UPD_FAIL 64820
|
||||||
#define main_ALREADY_CLIP 64822
|
#define main_MSG_CHK_UPD_HEAD 64821
|
||||||
#define main_MSG_NO_SPACE 64823
|
#define main_MSG_CHK_UPD_VER 64822
|
||||||
#define main_CONN 64824
|
#define main_MSG_CHK_UPD_VER_EXT 64823
|
||||||
#define main_TOT_IN 64825
|
#define main_MSG_CHK_UPD_NONE 64824
|
||||||
#define main_TOT_OUT 64826
|
#define main_TO_CLIP 64825
|
||||||
#define main_OUT_SPEED 64827
|
#define main_ALREADY_CLIP 64826
|
||||||
#define main_IN_SPEED 64828
|
#define main_MSG_NO_SPACE 64827
|
||||||
#define main_BANS 64829
|
#define main_CONN 64828
|
||||||
#define main_MEMORY 64830
|
#define main_TOT_IN 64829
|
||||||
#define main_CUST_TPL 64831
|
#define main_TOT_OUT 64830
|
||||||
#define main_AUTOSAVE 64832
|
#define main_OUT_SPEED 64831
|
||||||
#define main_SECONDS 64833
|
#define main_MSG_FILE_ADD_ABORT 64832
|
||||||
#define main_MSG_SPD_LIMIT_SING 64834
|
#define main_MSG_ADDING 64833
|
||||||
#define main_MSG_SPD_LIMIT 64835
|
#define main_MSG_INV_FILENAME 64834
|
||||||
#define main_MSG_AUTO_SAVE 64836
|
#define main_MSG_DELETE 64835
|
||||||
#define main_MSG_AUTO_SAVE_LONG 64837
|
#define main_AUTOSAVE 64836
|
||||||
#define main_MSG_MIN 64838
|
#define main_SECONDS 64837
|
||||||
#define main_MSG_BAN 64839
|
#define main_MSG_SPD_LIMIT_SING 64838
|
||||||
#define main_MSG_CANT_SAVE_OPT 64840
|
#define main_MSG_SPD_LIMIT 64839
|
||||||
#define main_MSG_UPD_SAVE_ERROR 64841
|
#define main_MSG_AUTO_SAVE 64840
|
||||||
#define main_MSG_UPD_REQ_ONLY1 64842
|
#define main_MSG_AUTO_SAVE_LONG 64841
|
||||||
#define main_MSG_UPD_WAIT 64843
|
#define main_MSG_MIN 64842
|
||||||
#define main_MSG_UPD_DL 64844
|
#define main_MSG_BAN 64843
|
||||||
#define main_MSG_UPDATE 64845
|
#define main_MSG_CANT_SAVE_OPT 64844
|
||||||
#define main_MSG_REQUESTING 64846
|
#define main_MSG_UPD_SAVE_ERROR 64845
|
||||||
#define main_MSG_CHK_UPD 64847
|
#define main_MSG_UPD_REQ_ONLY1 64846
|
||||||
#define main_MSG_LOG_UPL 64848
|
#define main_MSG_UPD_WAIT 64847
|
||||||
#define main_MSG_LOG_UPLOADED 64849
|
#define main_MSG_LOG_HEAD 64848
|
||||||
#define main_MSG_LOG_UPL_FAIL 64850
|
#define main_MSG_LOG_NOT_MOD 64849
|
||||||
#define main_MSG_LOG_DL 64851
|
#define main_MSG_LOG_REDIR 64850
|
||||||
#define main_MSG_LOGIN_FAILED 64852
|
#define main_MSG_LOG_NOT_SERVED 64851
|
||||||
#define main_MSG_MIN_DISK_REACHED 64853
|
#define main_MSG_LOG_UPL 64852
|
||||||
#define main_MSG_UPL_NAME_FORB 64854
|
#define main_MSG_LOG_UPLOADED 64853
|
||||||
#define main_MSG_UPL_CANT_CREATE 64855
|
#define main_MSG_LOG_UPL_FAIL 64854
|
||||||
#define main_FINGERPRINT 64856
|
#define main_MSG_LOG_DL 64855
|
||||||
#define main_NO_FINGERPRINT 64857
|
#define main_MSG_LOGIN_FAILED 64856
|
||||||
#define main_MSG_SAVE_VFS 64858
|
#define main_MSG_MIN_DISK_REACHED 64857
|
||||||
#define main_MSG_INP_COMMENT 64859
|
#define main_MSG_UPL_NAME_FORB 64858
|
||||||
#define main_MSG_FILE_ADD_ABORT 64860
|
#define main_MSG_UPL_CANT_CREATE 64859
|
||||||
#define main_MSG_ADDING 64861
|
#define main_FINGERPRINT 64860
|
||||||
#define main_MSG_INV_FILENAME 64862
|
#define main_NO_FINGERPRINT 64861
|
||||||
#define main_MSG_DELETE 64863
|
#define main_MSG_SAVE_VFS 64862
|
||||||
#define main_MSG_PORT_USED_BY 64864
|
#define main_MSG_INP_COMMENT 64863
|
||||||
#define main_MSG_PORT_BLOCKED 64865
|
#define main_MSG_BAN_CMT 64864
|
||||||
#define main_MSG_KICK_ALL 64866
|
#define main_MSG_BAN_CMT_LONG 64865
|
||||||
#define main_MSG_TPL_INCOMPATIBLE 64867
|
#define main_MSG_BREAK_DYN_DNS 64866
|
||||||
#define main_MSG_LOG_SERVER_START 64868
|
#define main_MSG_CANT_OPEN_PORT 64867
|
||||||
#define main_MSG_LOG_SERVER_STOP 64869
|
#define main_MSG_PORT_USED_BY 64868
|
||||||
#define main_MSG_LOG_CONNECTED 64870
|
#define main_MSG_PORT_BLOCKED 64869
|
||||||
#define main_MSG_LOG_DISC_SRV 64871
|
#define main_MSG_KICK_ALL 64870
|
||||||
#define main_MSG_LOG_DISC 64872
|
#define main_MSG_TPL_INCOMPATIBLE 64871
|
||||||
#define main_MSG_LOG_GOT 64873
|
#define main_MSG_LOG_SERVER_START 64872
|
||||||
#define main_MSG_LOG_BYTES_SENT 64874
|
#define main_MSG_LOG_SERVER_STOP 64873
|
||||||
#define main_MSG_LOG_SERVED 64875
|
#define main_MSG_LOG_CONNECTED 64874
|
||||||
#define main_MSG_LOG_HEAD 64876
|
#define main_MSG_LOG_DISC_SRV 64875
|
||||||
#define main_MSG_LOG_NOT_MOD 64877
|
#define main_MSG_LOG_DISC 64876
|
||||||
#define main_MSG_LOG_REDIR 64878
|
#define main_MSG_LOG_GOT 64877
|
||||||
#define main_MSG_LOG_NOT_SERVED 64879
|
#define main_MSG_LOG_BYTES_SENT 64878
|
||||||
#define main_MSG_DDNS_nohost 64880
|
#define main_MSG_LOG_SERVED 64879
|
||||||
#define main_MSG_DDNS_notyours 64881
|
#define main_MSG_DDNS_FAIL 64880
|
||||||
#define main_MSG_DDNS_numhost 64882
|
#define main_MSG_DDNS_REPLY_SIZE 64881
|
||||||
#define main_MSG_DDNS_abuse 64883
|
#define main_MSG_DDNS_badauth 64882
|
||||||
#define main_MSG_DDNS_dnserr 64884
|
#define main_MSG_DDNS_notfqdn 64883
|
||||||
#define main_MSG_DDNS_911 64885
|
#define main_MSG_DDNS_nohost 64884
|
||||||
#define main_MSG_DDNS_notdonator 64886
|
#define main_MSG_DDNS_notyours 64885
|
||||||
#define main_MSG_DDNS_badagent 64887
|
#define main_MSG_DDNS_numhost 64886
|
||||||
#define main_MSG_BAN_MASK 64888
|
#define main_MSG_DDNS_abuse 64887
|
||||||
#define main_MSG_IP_MASK_LONG 64889
|
#define main_MSG_DDNS_dnserr 64888
|
||||||
#define main_MSG_KICK_ADDR 64890
|
#define main_MSG_DDNS_911 64889
|
||||||
#define main_MSG_BAN_ALREADY 64891
|
#define main_MSG_DDNS_notdonator 64890
|
||||||
#define main_MSG_BAN_CMT 64892
|
#define main_MSG_DDNS_badagent 64891
|
||||||
#define main_MSG_BAN_CMT_LONG 64893
|
#define main_MSG_BAN_MASK 64892
|
||||||
#define main_MSG_BREAK_DYN_DNS 64894
|
#define main_MSG_IP_MASK_LONG 64893
|
||||||
#define main_MSG_CANT_OPEN_PORT 64895
|
#define main_MSG_KICK_ADDR 64894
|
||||||
#define main_MSG_NO_TEMP 64896
|
#define main_MSG_BAN_ALREADY 64895
|
||||||
#define main_MSG_ERROR_REGISTRY 64897
|
#define main_MSG_ADDRESSES_EXCEED 64896
|
||||||
#define main_MSG_MANY_ITEMS 64898
|
#define main_MSG_NO_TEMP 64897
|
||||||
#define main_MSG_ADD_TO_HFS 64899
|
#define main_MSG_ERROR_REGISTRY 64898
|
||||||
#define main_MSG_SINGLE_INSTANCE 64900
|
#define main_MSG_MANY_ITEMS 64899
|
||||||
#define main_MSG_COMM_ERROR 64901
|
#define main_MSG_ADD_TO_HFS 64900
|
||||||
#define main_MSG_DDNS_NO_REPLY 64902
|
#define main_MSG_SINGLE_INSTANCE 64901
|
||||||
#define main_MSG_DDNS_OK 64903
|
#define main_MSG_COMM_ERROR 64902
|
||||||
#define main_MSG_DDNS_UNK 64904
|
#define main_MSG_CON_PAUSED 64903
|
||||||
#define main_MSG_DDNS_ERR 64905
|
#define main_MSG_CON_SENT 64904
|
||||||
#define main_MSG_DDNS_REQ 64906
|
#define main_MSG_CON_RECEIVED 64905
|
||||||
#define main_MSG_DDNS_DOING 64907
|
#define main_MSG_DDNS_NO_REPLY 64906
|
||||||
#define main_MSG_DDNS_FAIL 64908
|
#define main_MSG_DDNS_OK 64907
|
||||||
#define main_MSG_DDNS_REPLY_SIZE 64909
|
#define main_MSG_DDNS_UNK 64908
|
||||||
#define main_MSG_DDNS_badauth 64910
|
#define main_MSG_DDNS_ERR 64909
|
||||||
#define main_MSG_DDNS_notfqdn 64911
|
#define main_MSG_DDNS_REQ 64910
|
||||||
#define main_MSG_MAX_SIM_ADDR 64912
|
#define main_MSG_DDNS_DOING 64911
|
||||||
#define main_MSG_MAX_SIM_ADDR_DL 64913
|
#define main_MSG_MAX_CON_SING 64912
|
||||||
#define main_MSG_MAX_SIM_DL_SING 64914
|
#define main_MSG_MAX_SIM_ADDR 64913
|
||||||
#define main_MSG_MAX_SIM_DL 64915
|
#define main_MSG_MAX_SIM_ADDR_DL 64914
|
||||||
#define main_MSG_SET_LIMIT 64916
|
#define main_MSG_MAX_SIM_DL_SING 64915
|
||||||
#define main_MSG_UNPROTECTED_LINKS 64917
|
#define main_MSG_MAX_SIM_DL 64916
|
||||||
#define main_MSG_SAME_NAME 64918
|
#define main_MSG_SET_LIMIT 64917
|
||||||
#define main_MSG_CONTINUE 64919
|
#define main_MSG_UNPROTECTED_LINKS 64918
|
||||||
#define main_MSG_PROCESSING 64920
|
#define main_MSG_SAME_NAME 64919
|
||||||
#define main_MSG_SPEED_KBS 64921
|
#define main_MSG_CONTINUE 64920
|
||||||
#define main_MSG_OPTIONS_SAVED 64922
|
#define main_MSG_PROCESSING 64921
|
||||||
#define main_MSG_SOME_LOCKED 64923
|
#define main_MSG_SPEED_KBS 64922
|
||||||
#define main_MSG_ITEM_LOCKED 64924
|
#define main_MSG_OPTIONS_SAVED 64923
|
||||||
#define main_MSG_INVALID_VALUE 64925
|
#define main_MSG_SOME_LOCKED 64924
|
||||||
#define main_MSG_EMPTY_NO_LIMIT 64926
|
#define main_MSG_ITEM_LOCKED 64925
|
||||||
#define main_MSG_ADDRESSES_EXCEED 64927
|
#define main_MSG_INVALID_VALUE 64926
|
||||||
|
#define main_MSG_EMPTY_NO_LIMIT 64927
|
||||||
#define JclResources_RsIntelCacheDescrF0 64928
|
#define JclResources_RsIntelCacheDescrF0 64928
|
||||||
#define JclResources_RsIntelCacheDescrF1 64929
|
#define JclResources_RsIntelCacheDescrF1 64929
|
||||||
#define JclResources_RsIntelCacheDescrFF 64930
|
#define JclResources_RsIntelCacheDescrFF 64930
|
||||||
@ -281,15 +282,15 @@
|
|||||||
#define JclResources_RsOSVersionWinServer2012 64932
|
#define JclResources_RsOSVersionWinServer2012 64932
|
||||||
#define JclResources_RsOSVersionWin81 64933
|
#define JclResources_RsOSVersionWin81 64933
|
||||||
#define JclResources_RsOSVersionWinServer2012R2 64934
|
#define JclResources_RsOSVersionWinServer2012R2 64934
|
||||||
#define optionsDlg_MSG_INVERT_BAN 64935
|
#define classesLib_MSG_ANTIDOS_REPLY 64935
|
||||||
#define main_S_PORT_LABEL 64936
|
#define optionsDlg_MSG_INVERT_BAN 64936
|
||||||
#define main_S_PORT_ANY 64937
|
#define main_S_PORT_LABEL 64937
|
||||||
#define main_DISABLED 64938
|
#define main_S_PORT_ANY 64938
|
||||||
#define main_S_OK 64939
|
#define main_DISABLED 64939
|
||||||
#define main_MSG_MENU_VAL 64940
|
#define main_S_OK 64940
|
||||||
#define main_MSG_DL_TIMEOUT 64941
|
#define main_MSG_MENU_VAL 64941
|
||||||
#define main_MSG_MAX_CON 64942
|
#define main_MSG_DL_TIMEOUT 64942
|
||||||
#define main_MSG_MAX_CON_SING 64943
|
#define main_MSG_MAX_CON 64943
|
||||||
#define JclResources_RsIntelCacheDescrCA 64944
|
#define JclResources_RsIntelCacheDescrCA 64944
|
||||||
#define JclResources_RsIntelCacheDescrD0 64945
|
#define JclResources_RsIntelCacheDescrD0 64945
|
||||||
#define JclResources_RsIntelCacheDescrD1 64946
|
#define JclResources_RsIntelCacheDescrD1 64946
|
||||||
@ -884,6 +885,7 @@
|
|||||||
#define System_SysConst_SDiskFull 65535
|
#define System_SysConst_SDiskFull 65535
|
||||||
STRINGTABLE
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
|
main_MSG_NUM_ADDR, L"In this moment there are %d different addresses"
|
||||||
main_MSG_NUM_ADDR_DL, L"In this moment there are %d different addresses downloading"
|
main_MSG_NUM_ADDR_DL, L"In this moment there are %d different addresses downloading"
|
||||||
main_MSG_MAX_LINES, L"Max lines on screen."
|
main_MSG_MAX_LINES, L"Max lines on screen."
|
||||||
main_MSG_APACHE_LOG_FMT, L"Apache log file format"
|
main_MSG_APACHE_LOG_FMT, L"Apache log file format"
|
||||||
@ -894,6 +896,7 @@ BEGIN
|
|||||||
main_MSG_AUTO_MD5, L"Auto fingerprint"
|
main_MSG_AUTO_MD5, L"Auto fingerprint"
|
||||||
main_MSG_AUTO_MD5_LONG, L"When you add files and no fingerprint is found, it is calculated.\rTo avoid long waitings, set a limit to file size (in KiloBytes).\rLeave empty to disable, and have no fingerprint created."
|
main_MSG_AUTO_MD5_LONG, L"When you add files and no fingerprint is found, it is calculated.\rTo avoid long waitings, set a limit to file size (in KiloBytes).\rLeave empty to disable, and have no fingerprint created."
|
||||||
main_MSG_UPL_HOWTO, L"1. Add a folder (choose \"real folder\")\r\rYou should now see a RED folder in your virtual file sytem, inside HFS\r\r2. Right click on this folder\r3. Properties -> Permissions -> Upload\r4. Check on \"Anyone\"\r5. Ok\r\rNow anyone who has access to your HFS server can upload files to you."
|
main_MSG_UPL_HOWTO, L"1. Add a folder (choose \"real folder\")\r\rYou should now see a RED folder in your virtual file sytem, inside HFS\r\r2. Right click on this folder\r3. Properties -> Permissions -> Upload\r4. Check on \"Anyone\"\r5. Ok\r\rNow anyone who has access to your HFS server can upload files to you."
|
||||||
|
main_MSG_EVENTS_HLP, L"For help on how to use this file please refer http://www.rejetto.com/wiki/?title=HFS:_Event_scripts"
|
||||||
main_MSG_EDIT_RES, L"Edit resource"
|
main_MSG_EDIT_RES, L"Edit resource"
|
||||||
main_MSG_TPL_USE_MACROS, L"The current template is using macros.\rDo you want to cancel this action?"
|
main_MSG_TPL_USE_MACROS, L"The current template is using macros.\rDo you want to cancel this action?"
|
||||||
main_REMOVE_SHELL, L"Remove from shell context menu"
|
main_REMOVE_SHELL, L"Remove from shell context menu"
|
||||||
@ -909,7 +912,7 @@ BEGIN
|
|||||||
main_MSG_DONT_LOG_HINT, L"Select the files/folder you don't want to be logged,\rthen right click and select \"Don't log\"."
|
main_MSG_DONT_LOG_HINT, L"Select the files/folder you don't want to be logged,\rthen right click and select \"Don't log\"."
|
||||||
main_MSG_DL_PERC, L"Downloading %d%%"
|
main_MSG_DL_PERC, L"Downloading %d%%"
|
||||||
main_MSG_UNINSTALL_WARN, L"Delete HFS and all settings?"
|
main_MSG_UNINSTALL_WARN, L"Delete HFS and all settings?"
|
||||||
main_MSG_NUM_ADDR, L"In this moment there are %d different addresses"
|
main_MSG_SELF_3, L"You may be behind a router or firewall."
|
||||||
main_MSG_SELF_6, L"You are behind a router.\rEnsure it is configured to forward port %s to your computer."
|
main_MSG_SELF_6, L"You are behind a router.\rEnsure it is configured to forward port %s to your computer."
|
||||||
main_MSG_SELF_7, L"You may be behind a firewall.\rEnsure nothing is blocking HFS."
|
main_MSG_SELF_7, L"You may be behind a firewall.\rEnsure nothing is blocking HFS."
|
||||||
main_MSG_RET_EXT, L"Retrieving external address..."
|
main_MSG_RET_EXT, L"Retrieving external address..."
|
||||||
@ -925,7 +928,7 @@ BEGIN
|
|||||||
main_MSG_OPEN_BROW, L"Open directly in browser"
|
main_MSG_OPEN_BROW, L"Open directly in browser"
|
||||||
main_MSG_OPEN_BROW_LONG, L"\"Suggest\" the browser to open directly the specified files.\rOther files should pop up a save dialog."
|
main_MSG_OPEN_BROW_LONG, L"\"Suggest\" the browser to open directly the specified files.\rOther files should pop up a save dialog."
|
||||||
main_MSG_HIDE_PORT, L"You should not use this option unless you really know its meaning.\rContinue?"
|
main_MSG_HIDE_PORT, L"You should not use this option unless you really know its meaning.\rContinue?"
|
||||||
main_MSG_EVENTS_HLP, L"For help on how to use this file please refer http://www.rejetto.com/wiki/?title=HFS:_Event_scripts"
|
main_MSG_RESET_TOT, L"Do you want to reset total in/out?"
|
||||||
main_MSG_DISAB_FIND_EXT, L"This option makes pointless the option \"Find external address at startup\", which has now been disabled for your convenience."
|
main_MSG_DISAB_FIND_EXT, L"This option makes pointless the option \"Find external address at startup\", which has now been disabled for your convenience."
|
||||||
main_MSG_ENT_URL, L"Enter URL"
|
main_MSG_ENT_URL, L"Enter URL"
|
||||||
main_MSG_ENT_URL_LONG, L"Enter URL for updating.\r%ip% will be translated to your external IP."
|
main_MSG_ENT_URL_LONG, L"Enter URL for updating.\r%ip% will be translated to your external IP."
|
||||||
@ -941,7 +944,7 @@ BEGIN
|
|||||||
main_MSG_SELF_BEFORE, L"Here you can test if your server does work on the Internet.\rIf you are not interested in serving files over the Internet, this is NOT for you.\r\rWe'll now perform a test involving network activity.\rIn order to complete this test, you may need to allow HFS's activity in your firewall, by clicking Allow on the warning prompt.\r\rWARNING: for the duration of the test, all ban rules and limits on the number of connections won't apply."
|
main_MSG_SELF_BEFORE, L"Here you can test if your server does work on the Internet.\rIf you are not interested in serving files over the Internet, this is NOT for you.\r\rWe'll now perform a test involving network activity.\rIn order to complete this test, you may need to allow HFS's activity in your firewall, by clicking Allow on the warning prompt.\r\rWARNING: for the duration of the test, all ban rules and limits on the number of connections won't apply."
|
||||||
main_MSG_SELF_OK, L"The test is successful. The server should be working fine."
|
main_MSG_SELF_OK, L"The test is successful. The server should be working fine."
|
||||||
main_MSG_SELF_OK_PORT, L"Port %s is not working, but another working port has been found and set: %s."
|
main_MSG_SELF_OK_PORT, L"Port %s is not working, but another working port has been found and set: %s."
|
||||||
main_MSG_SELF_3, L"You may be behind a router or firewall."
|
main_MSG_LOG_FILE, L"Log file"
|
||||||
main_MSG_LOG_FILE_LONG, L"This function does not save any previous information to the log file.\rInstead, it saves all information that appears in the log box in real-time (from when you click \"OK\", below).\rSpecify a filename for the log.\rIf you leave the filename blank, no log file is saved.\r\rHere are some symbols you can use in the filename to split the log:\r %d% -- day of the month (1..31)\r %m% -- month (1..12)\r %y% -- year (2000..)\r %dow% -- day of the week (0..6)\r %w% -- week of the year (1..53)\r %user% -- username surrounded by parenthesis"
|
main_MSG_LOG_FILE_LONG, L"This function does not save any previous information to the log file.\rInstead, it saves all information that appears in the log box in real-time (from when you click \"OK\", below).\rSpecify a filename for the log.\rIf you leave the filename blank, no log file is saved.\r\rHere are some symbols you can use in the filename to split the log:\r %d% -- day of the month (1..31)\r %m% -- month (1..12)\r %y% -- year (2000..)\r %dow% -- day of the week (0..6)\r %w% -- week of the year (1..53)\r %user% -- username surrounded by parenthesis"
|
||||||
main_MSG_SET_URL, L"Set URL"
|
main_MSG_SET_URL, L"Set URL"
|
||||||
main_MSG_SET_URL_LONG, L"Please insert an URL for the link\r\rDo not forget to specify http:// or whatever.\r%%ip%% will be translated to your address"
|
main_MSG_SET_URL_LONG, L"Please insert an URL for the link\r\rDo not forget to specify http:// or whatever.\r%%ip%% will be translated to your address"
|
||||||
@ -957,7 +960,7 @@ BEGIN
|
|||||||
main_MSG_CUST_IP, L"Custom IP addresses"
|
main_MSG_CUST_IP, L"Custom IP addresses"
|
||||||
main_MSG_CUST_IP_LONG, L"Specify your addresses, each per line"
|
main_MSG_CUST_IP_LONG, L"Specify your addresses, each per line"
|
||||||
main_MSG_NO_EXT_IP, L"Can't find external address\r( %s )"
|
main_MSG_NO_EXT_IP, L"Can't find external address\r( %s )"
|
||||||
main_MSG_RESET_TOT, L"Do you want to reset total in/out?"
|
main_MSG_TENTH_SEC, L"Tenths of second"
|
||||||
main_MSG_LOADING_VFS, L"Loading VFS"
|
main_MSG_LOADING_VFS, L"Loading VFS"
|
||||||
main_MSG_VFS_OLD, L"This file is old and uses different settings.\rThe \"let browse\" folder option will be reset.\rRe-saving the file will update its format."
|
main_MSG_VFS_OLD, L"This file is old and uses different settings.\rThe \"let browse\" folder option will be reset.\rRe-saving the file will update its format."
|
||||||
main_MSG_UNK_FK, L"This file has been created with a newer version.\rSome data was discarded because unknown.\rIf you save the file now, the discarded data will NOT be saved."
|
main_MSG_UNK_FK, L"This file has been created with a newer version.\rSome data was discarded because unknown.\rIf you save the file now, the discarded data will NOT be saved."
|
||||||
@ -973,7 +976,7 @@ BEGIN
|
|||||||
main_SW2EXPERT, L"Switch to Expert mode"
|
main_SW2EXPERT, L"Switch to Expert mode"
|
||||||
main_SW2EASY, L"Switch to Easy mode"
|
main_SW2EASY, L"Switch to Easy mode"
|
||||||
main_MSG_DL_TIMEOUT_LONG, L"Enter the number of MINUTES with no download after which the program automatically shuts down.\rLeave blank to get no timeout."
|
main_MSG_DL_TIMEOUT_LONG, L"Enter the number of MINUTES with no download after which the program automatically shuts down.\rLeave blank to get no timeout."
|
||||||
main_MSG_LOG_FILE, L"Log file"
|
main_MSG_NEWER_INCOMP, L"This file has been created with a newer and incompatible version."
|
||||||
main_MSG_ZLIB, L"This file is corrupted (ZLIB)."
|
main_MSG_ZLIB, L"This file is corrupted (ZLIB)."
|
||||||
main_MSG_BAKAVAILABLE, L"This file is corrupted but a backup is available.\rContinue with backup?"
|
main_MSG_BAKAVAILABLE, L"This file is corrupted but a backup is available.\rContinue with backup?"
|
||||||
main_MSG_CANT_LOAD_SAVE, L"Cannot load or save while adding files"
|
main_MSG_CANT_LOAD_SAVE, L"Cannot load or save while adding files"
|
||||||
@ -989,7 +992,10 @@ BEGIN
|
|||||||
main_MSG_WARN_ACT_DL, L"In this moment there are %d active downloads"
|
main_MSG_WARN_ACT_DL, L"In this moment there are %d active downloads"
|
||||||
main_MSG_MAX_CON_SING_LONG, L"Max simultaneous connections to accept from a single IP address.\rMost people don't know this function well, and have problems. If you are unsure, please use the \"Max simultaneous downloads from a single IP address\"."
|
main_MSG_MAX_CON_SING_LONG, L"Max simultaneous connections to accept from a single IP address.\rMost people don't know this function well, and have problems. If you are unsure, please use the \"Max simultaneous downloads from a single IP address\"."
|
||||||
main_MSG_GRAPH_RATE, L"Graph refresh rate"
|
main_MSG_GRAPH_RATE, L"Graph refresh rate"
|
||||||
main_MSG_TENTH_SEC, L"Tenths of second"
|
main_MSG_VFS_DONT_CONS_DL_MASK, L"Don't consider as download (mask): %s"
|
||||||
|
main_MSG_VFS_INHERITED, L" [inherited]"
|
||||||
|
main_MSG_VFS_EXTERNAL, L" [external]"
|
||||||
|
main_MSG_CON_HINT, L"Connection time: %s\rLast request time: %s\rAgent: %s"
|
||||||
main_MSG_CON_STATE_IDLE, L"idle"
|
main_MSG_CON_STATE_IDLE, L"idle"
|
||||||
main_MSG_CON_STATE_REQ, L"requesting"
|
main_MSG_CON_STATE_REQ, L"requesting"
|
||||||
main_MSG_CON_STATE_RCV, L"receiving"
|
main_MSG_CON_STATE_RCV, L"receiving"
|
||||||
@ -997,15 +1003,15 @@ BEGIN
|
|||||||
main_MSG_CON_STATE_REP, L"replying"
|
main_MSG_CON_STATE_REP, L"replying"
|
||||||
main_MSG_CON_STATE_SEND, L"sending"
|
main_MSG_CON_STATE_SEND, L"sending"
|
||||||
main_MSG_CON_STATE_DISC, L"disconnected"
|
main_MSG_CON_STATE_DISC, L"disconnected"
|
||||||
main_MSG_CON_PAUSED, L"paused"
|
|
||||||
main_MSG_CON_SENT, L"%s / %s sent"
|
|
||||||
main_MSG_CON_RECEIVED, L"%s / %s received"
|
|
||||||
main_MSG_TPL_RESET, L"The template has been reset"
|
main_MSG_TPL_RESET, L"The template has been reset"
|
||||||
main_MSG_ALLO_REF, L"Allowed referer"
|
main_MSG_ALLO_REF, L"Allowed referer"
|
||||||
main_MSG_ALLO_REF_LONG, L"Leave empty to disable this feature.\rHere you can specify a mask.\rWhen a file is requested, if the mask doesn't match the \"Referer\" HTTP field, the request is rejected."
|
main_MSG_ALLO_REF_LONG, L"Leave empty to disable this feature.\rHere you can specify a mask.\rWhen a file is requested, if the mask doesn't match the \"Referer\" HTTP field, the request is rejected."
|
||||||
main_MSG_BETTERSTOP, L"\rGoing on may lead to problems.\rIt is adviced to stop loading.\rStop?"
|
main_MSG_BETTERSTOP, L"\rGoing on may lead to problems.\rIt is adviced to stop loading.\rStop?"
|
||||||
main_MSG_BADCRC, L"This file is corrupted (CRC)."
|
main_MSG_BADCRC, L"This file is corrupted (CRC)."
|
||||||
main_MSG_NEWER, L"This file has been created with a newer and incompatible version."
|
main_MSG_VFS_HIDE_EMPTY, L"Hidden if empty"
|
||||||
|
main_MSG_VFS_NOT_BROW, L"Not browsable"
|
||||||
|
main_MSG_VFS_HIDE_EMPTY_FLD, L"Hide empty folders"
|
||||||
|
main_MSG_VFS_HIDE_EXT, L"Hide extention"
|
||||||
main_MSG_VFS_ARCABLE, L"Archivable"
|
main_MSG_VFS_ARCABLE, L"Archivable"
|
||||||
main_MSG_VFS_DEF_MASK, L"Default file mask: %s"
|
main_MSG_VFS_DEF_MASK, L"Default file mask: %s"
|
||||||
main_MSG_VFS_ACCESS, L"Access for"
|
main_MSG_VFS_ACCESS, L"Access for"
|
||||||
@ -1018,10 +1024,10 @@ BEGIN
|
|||||||
main_MSG_VFS_FLD_FLT, L"Folders filter: %s"
|
main_MSG_VFS_FLD_FLT, L"Folders filter: %s"
|
||||||
main_MSG_VFS_UPL_FLT, L"Upload filter: %s"
|
main_MSG_VFS_UPL_FLT, L"Upload filter: %s"
|
||||||
main_MSG_VFS_DONT_CONS_DL, L"Don't consider as download"
|
main_MSG_VFS_DONT_CONS_DL, L"Don't consider as download"
|
||||||
main_MSG_VFS_DONT_CONS_DL_MASK, L"Don't consider as download (mask): %s"
|
main_IN_SPEED, L"In: %.1f KB/s"
|
||||||
main_MSG_VFS_INHERITED, L" [inherited]"
|
main_BANS, L"Ban rules: %d"
|
||||||
main_MSG_VFS_EXTERNAL, L" [external]"
|
main_MEMORY, L"Mem"
|
||||||
main_MSG_CON_HINT, L"Connection time: %s\rLast request time: %s\rAgent: %s"
|
main_CUST_TPL, L"Customized template"
|
||||||
main_VFS_ITEMS, L"VFS: %d items"
|
main_VFS_ITEMS, L"VFS: %d items"
|
||||||
main_MSG_ITEM_EXISTS, L"%s item(s) already exists:\r%s\r\rContinue?"
|
main_MSG_ITEM_EXISTS, L"%s item(s) already exists:\r%s\r\rContinue?"
|
||||||
main_MSG_INSTALL_TPL, L"Install this template?"
|
main_MSG_INSTALL_TPL, L"Install this template?"
|
||||||
@ -1034,10 +1040,10 @@ BEGIN
|
|||||||
main_MSG_VFS_INVISIBLE, L"Invisible"
|
main_MSG_VFS_INVISIBLE, L"Invisible"
|
||||||
main_MSG_VFS_DL_FORB, L"Download forbidden"
|
main_MSG_VFS_DL_FORB, L"Download forbidden"
|
||||||
main_MSG_VFS_DONT_LOG, L"Don't log"
|
main_MSG_VFS_DONT_LOG, L"Don't log"
|
||||||
main_MSG_VFS_HIDE_EMPTY, L"Hidden if empty"
|
main_MSG_UPD_DL, L"Downloading new version..."
|
||||||
main_MSG_VFS_NOT_BROW, L"Not browsable"
|
main_MSG_UPDATE, L"You are invited to use the new version.\r\rUpdate now?"
|
||||||
main_MSG_VFS_HIDE_EMPTY_FLD, L"Hide empty folders"
|
main_MSG_REQUESTING, L"Requesting..."
|
||||||
main_MSG_VFS_HIDE_EXT, L"Hide extention"
|
main_MSG_CHK_UPD, L"Checking for updates"
|
||||||
main_MSG_CHK_UPD_FAIL, L"Check update: failed"
|
main_MSG_CHK_UPD_FAIL, L"Check update: failed"
|
||||||
main_MSG_CHK_UPD_HEAD, L"Check update: "
|
main_MSG_CHK_UPD_HEAD, L"Check update: "
|
||||||
main_MSG_CHK_UPD_VER, L"new version found: %s"
|
main_MSG_CHK_UPD_VER, L"new version found: %s"
|
||||||
@ -1050,10 +1056,10 @@ BEGIN
|
|||||||
main_TOT_IN, L"Total In: %s"
|
main_TOT_IN, L"Total In: %s"
|
||||||
main_TOT_OUT, L"Total Out: %s"
|
main_TOT_OUT, L"Total Out: %s"
|
||||||
main_OUT_SPEED, L"Out: %.1f KB/s"
|
main_OUT_SPEED, L"Out: %.1f KB/s"
|
||||||
main_IN_SPEED, L"In: %.1f KB/s"
|
main_MSG_FILE_ADD_ABORT, L"File addition was aborted.\rThe list of files is incomplete."
|
||||||
main_BANS, L"Ban rules: %d"
|
main_MSG_ADDING, L"Adding item #%d"
|
||||||
main_MEMORY, L"Mem"
|
main_MSG_INV_FILENAME, L"Invalid filename"
|
||||||
main_CUST_TPL, L"Customized template"
|
main_MSG_DELETE, L"Delete?"
|
||||||
main_AUTOSAVE, L"Auto save every: "
|
main_AUTOSAVE, L"Auto save every: "
|
||||||
main_SECONDS, L"%d seconds"
|
main_SECONDS, L"%d seconds"
|
||||||
main_MSG_SPD_LIMIT_SING, L"Speed limit for single address"
|
main_MSG_SPD_LIMIT_SING, L"Speed limit for single address"
|
||||||
@ -1066,10 +1072,10 @@ BEGIN
|
|||||||
main_MSG_UPD_SAVE_ERROR, L"Cannot save the update"
|
main_MSG_UPD_SAVE_ERROR, L"Cannot save the update"
|
||||||
main_MSG_UPD_REQ_ONLY1, L"The auto-update feature cannot work because it requires the \"Only 1 instance\" option enabled.\r\rYour browser will now be pointed to the update, so you can install it manually."
|
main_MSG_UPD_REQ_ONLY1, L"The auto-update feature cannot work because it requires the \"Only 1 instance\" option enabled.\r\rYour browser will now be pointed to the update, so you can install it manually."
|
||||||
main_MSG_UPD_WAIT, L"Waiting for last requests to be served, then we'll update"
|
main_MSG_UPD_WAIT, L"Waiting for last requests to be served, then we'll update"
|
||||||
main_MSG_UPD_DL, L"Downloading new version..."
|
main_MSG_LOG_HEAD, L"Served head"
|
||||||
main_MSG_UPDATE, L"You are invited to use the new version.\r\rUpdate now?"
|
main_MSG_LOG_NOT_MOD, L"Not modified, use cache"
|
||||||
main_MSG_REQUESTING, L"Requesting..."
|
main_MSG_LOG_REDIR, L"Redirected to %s"
|
||||||
main_MSG_CHK_UPD, L"Checking for updates"
|
main_MSG_LOG_NOT_SERVED, L"Not served: %d - %s"
|
||||||
main_MSG_LOG_UPL, L"Uploading %s"
|
main_MSG_LOG_UPL, L"Uploading %s"
|
||||||
main_MSG_LOG_UPLOADED, L"Fully uploaded %s - %s @ %sB/s"
|
main_MSG_LOG_UPLOADED, L"Fully uploaded %s - %s @ %sB/s"
|
||||||
main_MSG_LOG_UPL_FAIL, L"Upload failed %s"
|
main_MSG_LOG_UPL_FAIL, L"Upload failed %s"
|
||||||
@ -1082,10 +1088,10 @@ BEGIN
|
|||||||
main_NO_FINGERPRINT, L"Create fingerprint on addition: disabled"
|
main_NO_FINGERPRINT, L"Create fingerprint on addition: disabled"
|
||||||
main_MSG_SAVE_VFS, L"Your current file system is not saved.\rSave it?"
|
main_MSG_SAVE_VFS, L"Your current file system is not saved.\rSave it?"
|
||||||
main_MSG_INP_COMMENT, L"Please insert a comment for \"%s\".\rYou should use HTML: <br> for break line."
|
main_MSG_INP_COMMENT, L"Please insert a comment for \"%s\".\rYou should use HTML: <br> for break line."
|
||||||
main_MSG_FILE_ADD_ABORT, L"File addition was aborted.\rThe list of files is incomplete."
|
main_MSG_BAN_CMT, L"Ban comment"
|
||||||
main_MSG_ADDING, L"Adding item #%d"
|
main_MSG_BAN_CMT_LONG, L"A comment for this ban..."
|
||||||
main_MSG_INV_FILENAME, L"Invalid filename"
|
main_MSG_BREAK_DYN_DNS, L"This option is NOT compatible with \"dynamic dns updater\".\rContinue?"
|
||||||
main_MSG_DELETE, L"Delete?"
|
main_MSG_CANT_OPEN_PORT, L"Cannot open port."
|
||||||
main_MSG_PORT_USED_BY, L"It is already used by %s"
|
main_MSG_PORT_USED_BY, L"It is already used by %s"
|
||||||
main_MSG_PORT_BLOCKED, L"Something is blocking, maybe your system firewall."
|
main_MSG_PORT_BLOCKED, L"Something is blocking, maybe your system firewall."
|
||||||
main_MSG_KICK_ALL, L"There are %d connections open.\rDo you want to close them now?"
|
main_MSG_KICK_ALL, L"There are %d connections open.\rDo you want to close them now?"
|
||||||
@ -1098,10 +1104,10 @@ BEGIN
|
|||||||
main_MSG_LOG_GOT, L"Got %d bytes"
|
main_MSG_LOG_GOT, L"Got %d bytes"
|
||||||
main_MSG_LOG_BYTES_SENT, L"%s bytes sent"
|
main_MSG_LOG_BYTES_SENT, L"%s bytes sent"
|
||||||
main_MSG_LOG_SERVED, L"Served %s"
|
main_MSG_LOG_SERVED, L"Served %s"
|
||||||
main_MSG_LOG_HEAD, L"Served head"
|
main_MSG_DDNS_FAIL, L"DNS update failed: %s\rUser intervention is required."
|
||||||
main_MSG_LOG_NOT_MOD, L"Not modified, use cache"
|
main_MSG_DDNS_REPLY_SIZE, L"%d bytes reply"
|
||||||
main_MSG_LOG_REDIR, L"Redirected to %s"
|
main_MSG_DDNS_badauth, L"invalid user/password"
|
||||||
main_MSG_LOG_NOT_SERVED, L"Not served: %d - %s"
|
main_MSG_DDNS_notfqdn, L"incomplete hostname, required form aaa.bbb.com"
|
||||||
main_MSG_DDNS_nohost, L"specified hostname does not exist"
|
main_MSG_DDNS_nohost, L"specified hostname does not exist"
|
||||||
main_MSG_DDNS_notyours, L"specified hostname belongs to another username"
|
main_MSG_DDNS_notyours, L"specified hostname belongs to another username"
|
||||||
main_MSG_DDNS_numhost, L"too many or too few hosts found"
|
main_MSG_DDNS_numhost, L"too many or too few hosts found"
|
||||||
@ -1114,26 +1120,23 @@ BEGIN
|
|||||||
main_MSG_IP_MASK_LONG, L"You can edit the address.\rMasks and ranges are allowed."
|
main_MSG_IP_MASK_LONG, L"You can edit the address.\rMasks and ranges are allowed."
|
||||||
main_MSG_KICK_ADDR, L"There are %d open connections from this address.\rDo you want to kick them all now?"
|
main_MSG_KICK_ADDR, L"There are %d open connections from this address.\rDo you want to kick them all now?"
|
||||||
main_MSG_BAN_ALREADY, L"This IP address is already banned"
|
main_MSG_BAN_ALREADY, L"This IP address is already banned"
|
||||||
main_MSG_BAN_CMT, L"Ban comment"
|
main_MSG_ADDRESSES_EXCEED, L"The following addresses exceed the limit:\r%s"
|
||||||
main_MSG_BAN_CMT_LONG, L"A comment for this ban..."
|
|
||||||
main_MSG_BREAK_DYN_DNS, L"This option is NOT compatible with \"dynamic dns updater\".\rContinue?"
|
|
||||||
main_MSG_CANT_OPEN_PORT, L"Cannot open port."
|
|
||||||
main_MSG_NO_TEMP, L"Cannot save temporary file"
|
main_MSG_NO_TEMP, L"Cannot save temporary file"
|
||||||
main_MSG_ERROR_REGISTRY, L"Can't write to registry.\rYou may lack necessary rights."
|
main_MSG_ERROR_REGISTRY, L"Can't write to registry.\rYou may lack necessary rights."
|
||||||
main_MSG_MANY_ITEMS, L"You are putting many files.\rTry using real folders instead of virtual folders.\rRead documentation or ask on the forum for help."
|
main_MSG_MANY_ITEMS, L"You are putting many files.\rTry using real folders instead of virtual folders.\rRead documentation or ask on the forum for help."
|
||||||
main_MSG_ADD_TO_HFS, L"\"Add to HFS\" has been added to your Window's Explorer right-click menu."
|
main_MSG_ADD_TO_HFS, L"\"Add to HFS\" has been added to your Window's Explorer right-click menu."
|
||||||
main_MSG_SINGLE_INSTANCE, L"Sorry, this feature only works with the \"Only 1 instance\" option enabled.\r\rYou can find this option under Menu -> Start/Exit\r(only in expert mode)"
|
main_MSG_SINGLE_INSTANCE, L"Sorry, this feature only works with the \"Only 1 instance\" option enabled.\r\rYou can find this option under Menu -> Start/Exit\r(only in expert mode)"
|
||||||
main_MSG_COMM_ERROR, L"Network error. Request failed."
|
main_MSG_COMM_ERROR, L"Network error. Request failed."
|
||||||
|
main_MSG_CON_PAUSED, L"paused"
|
||||||
|
main_MSG_CON_SENT, L"%s / %s sent"
|
||||||
|
main_MSG_CON_RECEIVED, L"%s / %s received"
|
||||||
main_MSG_DDNS_NO_REPLY, L"no reply"
|
main_MSG_DDNS_NO_REPLY, L"no reply"
|
||||||
main_MSG_DDNS_OK, L"successful"
|
main_MSG_DDNS_OK, L"successful"
|
||||||
main_MSG_DDNS_UNK, L"unknown reply: %s"
|
main_MSG_DDNS_UNK, L"unknown reply: %s"
|
||||||
main_MSG_DDNS_ERR, L"error: %s"
|
main_MSG_DDNS_ERR, L"error: %s"
|
||||||
main_MSG_DDNS_REQ, L"DNS update requested for %s: %s"
|
main_MSG_DDNS_REQ, L"DNS update requested for %s: %s"
|
||||||
main_MSG_DDNS_DOING, L"Updating dynamic DNS..."
|
main_MSG_DDNS_DOING, L"Updating dynamic DNS..."
|
||||||
main_MSG_DDNS_FAIL, L"DNS update failed: %s\rUser intervention is required."
|
main_MSG_MAX_CON_SING, L"Max connections from single address"
|
||||||
main_MSG_DDNS_REPLY_SIZE, L"%d bytes reply"
|
|
||||||
main_MSG_DDNS_badauth, L"invalid user/password"
|
|
||||||
main_MSG_DDNS_notfqdn, L"incomplete hostname, required form aaa.bbb.com"
|
|
||||||
main_MSG_MAX_SIM_ADDR, L"Max simultaneous addresses"
|
main_MSG_MAX_SIM_ADDR, L"Max simultaneous addresses"
|
||||||
main_MSG_MAX_SIM_ADDR_DL, L"Max simultaneous addresses downloading"
|
main_MSG_MAX_SIM_ADDR_DL, L"Max simultaneous addresses downloading"
|
||||||
main_MSG_MAX_SIM_DL_SING, L"Max simultaneous downloads from single address"
|
main_MSG_MAX_SIM_DL_SING, L"Max simultaneous downloads from single address"
|
||||||
@ -1149,7 +1152,6 @@ BEGIN
|
|||||||
main_MSG_ITEM_LOCKED, L"The item is locked"
|
main_MSG_ITEM_LOCKED, L"The item is locked"
|
||||||
main_MSG_INVALID_VALUE, L"Invalid value"
|
main_MSG_INVALID_VALUE, L"Invalid value"
|
||||||
main_MSG_EMPTY_NO_LIMIT, L"Leave blank to get no limits."
|
main_MSG_EMPTY_NO_LIMIT, L"Leave blank to get no limits."
|
||||||
main_MSG_ADDRESSES_EXCEED, L"The following addresses exceed the limit:\r%s"
|
|
||||||
JclResources_RsIntelCacheDescrF0, L"64-Byte Prefetching"
|
JclResources_RsIntelCacheDescrF0, L"64-Byte Prefetching"
|
||||||
JclResources_RsIntelCacheDescrF1, L"128-Byte Prefetching"
|
JclResources_RsIntelCacheDescrF1, L"128-Byte Prefetching"
|
||||||
JclResources_RsIntelCacheDescrFF, L"CPUID leaf 2 does not report cache descriptor information, use CPUID leaf 4 to query cache parameters"
|
JclResources_RsIntelCacheDescrFF, L"CPUID leaf 2 does not report cache descriptor information, use CPUID leaf 4 to query cache parameters"
|
||||||
@ -1157,6 +1159,7 @@ BEGIN
|
|||||||
JclResources_RsOSVersionWinServer2012, L"Windows Server 2012"
|
JclResources_RsOSVersionWinServer2012, L"Windows Server 2012"
|
||||||
JclResources_RsOSVersionWin81, L"Windows 8.1"
|
JclResources_RsOSVersionWin81, L"Windows 8.1"
|
||||||
JclResources_RsOSVersionWinServer2012R2, L"Windows Server 2012 R2"
|
JclResources_RsOSVersionWinServer2012R2, L"Windows Server 2012 R2"
|
||||||
|
classesLib_MSG_ANTIDOS_REPLY, L"Please wait, server busy"
|
||||||
optionsDlg_MSG_INVERT_BAN, L"Normal behavior of the Ban is to prevent access to the addresses you specify (also called black-list).\rIf you want the opposite, to allow the addresses that you specify (white-list), enter all addresses in a single row preceded by a \\ character.\r\rLet say you want to allow all your 192.168 local network plus your office at 1.1.1.1.\rJust put this IP address mask: \\192.168.*;1.1.1.1\rThe opening \\ character inverts the logic, so everything else is banned.\r\rIf you want to know more about address masks, check the guide."
|
optionsDlg_MSG_INVERT_BAN, L"Normal behavior of the Ban is to prevent access to the addresses you specify (also called black-list).\rIf you want the opposite, to allow the addresses that you specify (white-list), enter all addresses in a single row preceded by a \\ character.\r\rLet say you want to allow all your 192.168 local network plus your office at 1.1.1.1.\rJust put this IP address mask: \\192.168.*;1.1.1.1\rThe opening \\ character inverts the logic, so everything else is banned.\r\rIf you want to know more about address masks, check the guide."
|
||||||
main_S_PORT_LABEL, L"Port: %s"
|
main_S_PORT_LABEL, L"Port: %s"
|
||||||
main_S_PORT_ANY, L"any"
|
main_S_PORT_ANY, L"any"
|
||||||
@ -1165,7 +1168,6 @@ BEGIN
|
|||||||
main_MSG_MENU_VAL, L" (%s)"
|
main_MSG_MENU_VAL, L" (%s)"
|
||||||
main_MSG_DL_TIMEOUT, L"No downloads timeout"
|
main_MSG_DL_TIMEOUT, L"No downloads timeout"
|
||||||
main_MSG_MAX_CON, L"Max connections"
|
main_MSG_MAX_CON, L"Max connections"
|
||||||
main_MSG_MAX_CON_SING, L"Max connections from single address"
|
|
||||||
JclResources_RsIntelCacheDescrCA, L"Shared 2nd-Level TLB: 4 KByte pages, 4-way associative, 512 entries"
|
JclResources_RsIntelCacheDescrCA, L"Shared 2nd-Level TLB: 4 KByte pages, 4-way associative, 512 entries"
|
||||||
JclResources_RsIntelCacheDescrD0, L"3rd-level cache: 512 KByte, 4-way set associative, 64 byte line size"
|
JclResources_RsIntelCacheDescrD0, L"3rd-level cache: 512 KByte, 4-way set associative, 64 byte line size"
|
||||||
JclResources_RsIntelCacheDescrD1, L"3rd-level cache: 1 MByte, 4-way set associative, 64 byte line size"
|
JclResources_RsIntelCacheDescrD1, L"3rd-level cache: 1 MByte, 4-way set associative, 64 byte line size"
|
||||||
|
|||||||
554
hfs.lng
554
hfs.lng
@ -1,5 +1,5 @@
|
|||||||
; Kryvich's Delphi Localizer Language File.
|
; Kryvich's Delphi Localizer Language File.
|
||||||
; Generated by K.D.L. Scanner, 6/5/2020 6:56:45 PM
|
; Generated by K.D.L. Scanner, 02/08/2020 18:30:32
|
||||||
|
|
||||||
Humanize=1
|
Humanize=1
|
||||||
HumanizedCR=\^
|
HumanizedCR=\^
|
||||||
@ -282,7 +282,6 @@ menu.Debug1.dumpTrafficChk.Caption=Dump traffic
|
|||||||
menu.Debug1.Showcustomizedoptions1.Caption=Show customized options...
|
menu.Debug1.Showcustomizedoptions1.Caption=Show customized options...
|
||||||
menu.Debug1.highSpeedChk.Caption=Experimental high speed handling
|
menu.Debug1.highSpeedChk.Caption=Experimental high speed handling
|
||||||
menu.Debug1.macrosLogChk.Caption=Enable macros.log
|
menu.Debug1.macrosLogChk.Caption=Enable macros.log
|
||||||
menu.Debug1.Appendmacroslog1.Caption=Append macros.log
|
|
||||||
menu.Debug1.Runscript1.Caption=Run script...
|
menu.Debug1.Runscript1.Caption=Run script...
|
||||||
menu.Debug1.showMemUsageChk.Caption=Show memory usage
|
menu.Debug1.showMemUsageChk.Caption=Show memory usage
|
||||||
menu.Debug1.noContentdispositionChk.Caption=No Content-disposition
|
menu.Debug1.noContentdispositionChk.Caption=No Content-disposition
|
||||||
@ -452,281 +451,282 @@ Panel1.Button1.Caption=&Yes
|
|||||||
Panel1.Button2.Caption=&No
|
Panel1.Button2.Caption=&No
|
||||||
|
|
||||||
[ResourceStrings]
|
[ResourceStrings]
|
||||||
64656_main_MSG_NUM_ADDR_DL=In this moment there are %d different addresses downloading
|
64656_main_MSG_NUM_ADDR=In this moment there are %d different addresses
|
||||||
64657_main_MSG_MAX_LINES=Max lines on screen.
|
64657_main_MSG_NUM_ADDR_DL=In this moment there are %d different addresses downloading
|
||||||
64658_main_MSG_APACHE_LOG_FMT=Apache log file format
|
64658_main_MSG_MAX_LINES=Max lines on screen.
|
||||||
64659_main_MSG_APACHE_LOG_FMT_LONG=Here you can specify how to format the log file complying Apache standard.\^Leave blank to get bare copy of screen on file.\^\^Example:\^ %h %l %u %t "%r" %>s %b
|
64659_main_MSG_APACHE_LOG_FMT=Apache log file format
|
||||||
64660_main_MSG_ICONS_ADDED=%d new icons added
|
64660_main_MSG_APACHE_LOG_FMT_LONG=Here you can specify how to format the log file complying Apache standard.\^Leave blank to get bare copy of screen on file.\^\^Example:\^ %h %l %u %t "%r" %>s %b
|
||||||
64661_main_MSG_DDNS_DISABLED=Dynamic DNS updater disabled
|
64661_main_MSG_ICONS_ADDED=%d new icons added
|
||||||
64662_main_MSG_MD5_WARN=This option creates an .md5 file for every new calculated fingerprint.\^Use with care to get not your disk invaded by these files.
|
64662_main_MSG_DDNS_DISABLED=Dynamic DNS updater disabled
|
||||||
64663_main_MSG_AUTO_MD5=Auto fingerprint
|
64663_main_MSG_MD5_WARN=This option creates an .md5 file for every new calculated fingerprint.\^Use with care to get not your disk invaded by these files.
|
||||||
64664_main_MSG_AUTO_MD5_LONG=When you add files and no fingerprint is found, it is calculated.\^To avoid long waitings, set a limit to file size (in KiloBytes).\^Leave empty to disable, and have no fingerprint created.
|
64664_main_MSG_AUTO_MD5=Auto fingerprint
|
||||||
64665_main_MSG_UPL_HOWTO=1. Add a folder (choose "real folder")\^\^You should now see a RED folder in your virtual file sytem, inside HFS\^\^2. Right click on this folder\^3. Properties -> Permissions -> Upload\^4. Check on "Anyone"\^5. Ok\^\^Now anyone who has access to your HFS server can upload files to you.
|
64665_main_MSG_AUTO_MD5_LONG=When you add files and no fingerprint is found, it is calculated.\^To avoid long waitings, set a limit to file size (in KiloBytes).\^Leave empty to disable, and have no fingerprint created.
|
||||||
64672_main_MSG_EDIT_RES=Edit resource
|
64666_main_MSG_UPL_HOWTO=1. Add a folder (choose "real folder")\^\^You should now see a RED folder in your virtual file sytem, inside HFS\^\^2. Right click on this folder\^3. Properties -> Permissions -> Upload\^4. Check on "Anyone"\^5. Ok\^\^Now anyone who has access to your HFS server can upload files to you.
|
||||||
64673_main_MSG_TPL_USE_MACROS=The current template is using macros.\^Do you want to cancel this action?
|
64672_main_MSG_EVENTS_HLP=For help on how to use this file please refer http://www.rejetto.com/wiki/?title=HFS:_Event_scripts
|
||||||
64674_main_REMOVE_SHELL=Remove from shell context menu
|
64673_main_MSG_EDIT_RES=Edit resource
|
||||||
64675_main_S_OFF=Switch OFF
|
64674_main_MSG_TPL_USE_MACROS=The current template is using macros.\^Do you want to cancel this action?
|
||||||
64676_main_S_ON{1}=Switch ON
|
64675_main_REMOVE_SHELL=Remove from shell context menu
|
||||||
64677_main_LOG=Log
|
64676_main_S_OFF=Switch OFF
|
||||||
64678_main_MSG_RE_NOIP=You are invited to re-insert your No-IP configuration, otherwise the updater won't work as expected.
|
64677_main_S_ON{1}=Switch ON
|
||||||
64679_main_MSG_TRAY_DEF=%ip%\^Uptime: %uptime%\^Downloads: %downloads%
|
64678_main_LOG=Log
|
||||||
64680_main_MSG_CLEAN_START=Clean start
|
64679_main_MSG_RE_NOIP=You are invited to re-insert your No-IP configuration, otherwise the updater won't work as expected.
|
||||||
64681_main_MSG_RESTORE_BAK=A file system backup has been created for a system shutdown.\^Do you want to restore this backup?
|
64680_main_MSG_TRAY_DEF=%ip%\^Uptime: %uptime%\^Downloads: %downloads%
|
||||||
64682_main_MSG_EXT_ADDR_FAIL=Search for external address failed
|
64681_main_MSG_CLEAN_START=Clean start
|
||||||
64683_main_MSG_TO_EXPERT=Switch to expert mode.
|
64682_main_MSG_RESTORE_BAK=A file system backup has been created for a system shutdown.\^Do you want to restore this backup?
|
||||||
64684_main_MSG_DONT_LOG_HINT=Select the files/folder you don't want to be logged,\^then right click and select "Don't log".
|
64683_main_MSG_EXT_ADDR_FAIL=Search for external address failed
|
||||||
64685_main_MSG_DL_PERC=Downloading %d%%
|
64684_main_MSG_TO_EXPERT=Switch to expert mode.
|
||||||
64686_main_MSG_UNINSTALL_WARN=Delete HFS and all settings?
|
64685_main_MSG_DONT_LOG_HINT=Select the files/folder you don't want to be logged,\^then right click and select "Don't log".
|
||||||
64687_main_MSG_NUM_ADDR=In this moment there are %d different addresses
|
64686_main_MSG_DL_PERC=Downloading %d%%
|
||||||
64688_main_MSG_SELF_6=You are behind a router.\^Ensure it is configured to forward port %s to your computer.
|
64687_main_MSG_UNINSTALL_WARN=Delete HFS and all settings?
|
||||||
64689_main_MSG_SELF_7=You may be behind a firewall.\^Ensure nothing is blocking HFS.
|
64688_main_MSG_SELF_3=You may be behind a router or firewall.
|
||||||
64690_main_MSG_RET_EXT=Retrieving external address...
|
64689_main_MSG_SELF_6=You are behind a router.\^Ensure it is configured to forward port %s to your computer.
|
||||||
64691_main_MSG_SELF_CANT_ON=Unable to switch the server on
|
64690_main_MSG_SELF_7=You may be behind a firewall.\^Ensure nothing is blocking HFS.
|
||||||
64692_main_MSG_SELF_CANT_LIST=Self test cannot be performed because HFS was configured to accept connections only on 127.0.0.1
|
64691_main_MSG_RET_EXT=Retrieving external address...
|
||||||
64693_main_MSG_SELF_CANT_S=Self test doesn't support HTTPS.\^It's likely it won't work.
|
64692_main_MSG_SELF_CANT_ON=Unable to switch the server on
|
||||||
64694_main_MSG_SELF_ING=Self testing...
|
64693_main_MSG_SELF_CANT_LIST=Self test cannot be performed because HFS was configured to accept connections only on 127.0.0.1
|
||||||
64695_main_MSG_TEST_CANC=Test cancelled
|
64694_main_MSG_SELF_CANT_S=Self test doesn't support HTTPS.\^It's likely it won't work.
|
||||||
64696_main_MSG_TEST_INET=Testing internet connection...
|
64695_main_MSG_SELF_ING=Self testing...
|
||||||
64697_main_MSG_SELF_UNAV=Sorry, the test is unavailable at the moment
|
64696_main_MSG_TEST_CANC=Test cancelled
|
||||||
64698_main_MSG_SELF_NO_INET=Your internet connection does not work
|
64697_main_MSG_TEST_INET=Testing internet connection...
|
||||||
64699_main_MSG_SELF_NO_ANSWER=The test failed: server does not answer.
|
64698_main_MSG_SELF_UNAV=Sorry, the test is unavailable at the moment
|
||||||
64700_main_MSG_OPEN_BROW=Open directly in browser
|
64699_main_MSG_SELF_NO_INET=Your internet connection does not work
|
||||||
64701_main_MSG_OPEN_BROW_LONG="Suggest" the browser to open directly the specified files.\^Other files should pop up a save dialog.
|
64700_main_MSG_SELF_NO_ANSWER=The test failed: server does not answer.
|
||||||
64702_main_MSG_HIDE_PORT=You should not use this option unless you really know its meaning.\^Continue?
|
64701_main_MSG_OPEN_BROW=Open directly in browser
|
||||||
64703_main_MSG_EVENTS_HLP=For help on how to use this file please refer http://www.rejetto.com/wiki/?title=HFS:_Event_scripts
|
64702_main_MSG_OPEN_BROW_LONG="Suggest" the browser to open directly the specified files.\^Other files should pop up a save dialog.
|
||||||
64704_main_MSG_DISAB_FIND_EXT=This option makes pointless the option "Find external address at startup", which has now been disabled for your convenience.
|
64703_main_MSG_HIDE_PORT=You should not use this option unless you really know its meaning.\^Continue?
|
||||||
64705_main_MSG_ENT_URL=Enter URL
|
64704_main_MSG_RESET_TOT=Do you want to reset total in/out?
|
||||||
64706_main_MSG_ENT_URL_LONG=Enter URL for updating.\^%ip% will be translated to your external IP.
|
64705_main_MSG_DISAB_FIND_EXT=This option makes pointless the option "Find external address at startup", which has now been disabled for your convenience.
|
||||||
64707_main_MSG_ENT_USR=Enter user
|
64706_main_MSG_ENT_URL=Enter URL
|
||||||
64708_main_MSG_ENT_PWD=Enter password
|
64707_main_MSG_ENT_URL_LONG=Enter URL for updating.\^%ip% will be translated to your external IP.
|
||||||
64709_main_MSG_ENT_HOST=Enter host
|
64708_main_MSG_ENT_USR=Enter user
|
||||||
64710_main_MSG_ENT_HOST_LONG=Enter domain (full form!)
|
64709_main_MSG_ENT_PWD=Enter password
|
||||||
64711_main_MSG_HOST_FORM=Please, enter it in the FULL form, with dots
|
64710_main_MSG_ENT_HOST=Enter host
|
||||||
64712_main_MSG_MIN_SPACE=Min disk space
|
64711_main_MSG_ENT_HOST_LONG=Enter domain (full form!)
|
||||||
64713_main_MSG_MIN_SPACE_LONG=The upload will fail if your disk has less than the specified amount of free MegaBytes.
|
64712_main_MSG_HOST_FORM=Please, enter it in the FULL form, with dots
|
||||||
64714_main_MSG_REN_PART=Rename partial uploads
|
64713_main_MSG_MIN_SPACE=Min disk space
|
||||||
64715_main_MSG_REN_PART_LONG=This string will be appended to the filename.\^\^If you need more control, enter a string with %name% in it, and this symbol will be replaced by the original filename.
|
64714_main_MSG_MIN_SPACE_LONG=The upload will fail if your disk has less than the specified amount of free MegaBytes.
|
||||||
64716_main_MSG_SELF_BEFORE=Here you can test if your server does work on the Internet.\^If you are not interested in serving files over the Internet, this is NOT for you.\^\^We'll now perform a test involving network activity.\^In order to complete this test, you may need to allow HFS's activity in your firewall, by clicking Allow on the warning prompt.\^\^WARNING: for the duration of the test, all ban rules and limits on the number of connections won't apply.
|
64715_main_MSG_REN_PART=Rename partial uploads
|
||||||
64717_main_MSG_SELF_OK=The test is successful. The server should be working fine.
|
64716_main_MSG_REN_PART_LONG=This string will be appended to the filename.\^\^If you need more control, enter a string with %name% in it, and this symbol will be replaced by the original filename.
|
||||||
64718_main_MSG_SELF_OK_PORT=Port %s is not working, but another working port has been found and set: %s.
|
64717_main_MSG_SELF_BEFORE=Here you can test if your server does work on the Internet.\^If you are not interested in serving files over the Internet, this is NOT for you.\^\^We'll now perform a test involving network activity.\^In order to complete this test, you may need to allow HFS's activity in your firewall, by clicking Allow on the warning prompt.\^\^WARNING: for the duration of the test, all ban rules and limits on the number of connections won't apply.
|
||||||
64719_main_MSG_SELF_3=You may be behind a router or firewall.
|
64718_main_MSG_SELF_OK=The test is successful. The server should be working fine.
|
||||||
64720_main_MSG_LOG_FILE_LONG=This function does not save any previous information to the log file.\^Instead, it saves all information that appears in the log box in real-time (from when you click "OK", below).\^Specify a filename for the log.\^If you leave the filename blank, no log file is saved.\^\^Here are some symbols you can use in the filename to split the log:\^ %d% -- day of the month (1..31)\^ %m% -- month (1..12)\^ %y% -- year (2000..)\^ %dow% -- day of the week (0..6)\^ %w% -- week of the year (1..53)\^ %user% -- username surrounded by parenthesis
|
64719_main_MSG_SELF_OK_PORT=Port %s is not working, but another working port has been found and set: %s.
|
||||||
64721_main_MSG_SET_URL=Set URL
|
64720_main_MSG_LOG_FILE=Log file
|
||||||
64722_main_MSG_SET_URL_LONG=Please insert an URL for the link\^\^Do not forget to specify http:// or whatever.\^%%ip%% will be translated to your address
|
64721_main_MSG_LOG_FILE_LONG=This function does not save any previous information to the log file.\^Instead, it saves all information that appears in the log box in real-time (from when you click "OK", below).\^Specify a filename for the log.\^If you leave the filename blank, no log file is saved.\^\^Here are some symbols you can use in the filename to split the log:\^ %d% -- day of the month (1..31)\^ %m% -- month (1..12)\^ %y% -- year (2000..)\^ %dow% -- day of the week (0..6)\^ %w% -- week of the year (1..53)\^ %user% -- username surrounded by parenthesis
|
||||||
64723_main_MSG_REALM=Login realm
|
64722_main_MSG_SET_URL=Set URL
|
||||||
64724_main_MSG_REALM_LONG=The realm string is shown on the user/pass dialog of the browser.\^Here you can customize the realm for the login button
|
64723_main_MSG_SET_URL_LONG=Please insert an URL for the link\^\^Do not forget to specify http:// or whatever.\^%%ip%% will be translated to your address
|
||||||
64725_main_MSG_INACT_TIMEOUT=Connection inactivity timeout
|
64724_main_MSG_REALM=Login realm
|
||||||
64726_main_MSG_INACT_TIMEOUT_LONG=The connection is kicked after a timeout.\^Specify in seconds.\^Leave blank to get no timeout.
|
64725_main_MSG_REALM_LONG=The realm string is shown on the user/pass dialog of the browser.\^Here you can customize the realm for the login button
|
||||||
64727_main_MSG_CHANGES_LOST=All changes will be lost\^Continue?
|
64726_main_MSG_INACT_TIMEOUT=Connection inactivity timeout
|
||||||
64728_main_MSG_FLAG_NEW=Flag new files
|
64727_main_MSG_INACT_TIMEOUT_LONG=The connection is kicked after a timeout.\^Specify in seconds.\^Leave blank to get no timeout.
|
||||||
64729_main_MSG_FLAG_NEW_LONG=Enter the number of MINUTES files stay flagged from their addition.\^Leave blank to disable.
|
64728_main_MSG_CHANGES_LOST=All changes will be lost\^Continue?
|
||||||
64730_main_MSG_DONT_LOG_MASK=Do not log address
|
64729_main_MSG_FLAG_NEW=Flag new files
|
||||||
64731_main_MSG_DONT_LOG_MASK_LONG=Any event from the following IP address mask will be not logged.
|
64730_main_MSG_FLAG_NEW_LONG=Enter the number of MINUTES files stay flagged from their addition.\^Leave blank to disable.
|
||||||
64732_main_MSG_CUST_IP=Custom IP addresses
|
64731_main_MSG_DONT_LOG_MASK=Do not log address
|
||||||
64733_main_MSG_CUST_IP_LONG=Specify your addresses, each per line
|
64732_main_MSG_DONT_LOG_MASK_LONG=Any event from the following IP address mask will be not logged.
|
||||||
64734_main_MSG_NO_EXT_IP=Can't find external address\^( %s )
|
64733_main_MSG_CUST_IP=Custom IP addresses
|
||||||
64735_main_MSG_RESET_TOT=Do you want to reset total in/out?
|
64734_main_MSG_CUST_IP_LONG=Specify your addresses, each per line
|
||||||
64736_main_MSG_LOADING_VFS=Loading VFS
|
64735_main_MSG_NO_EXT_IP=Can't find external address\^( %s )
|
||||||
64737_main_MSG_VFS_OLD=This file is old and uses different settings.\^The "let browse" folder option will be reset.\^Re-saving the file will update its format.
|
64736_main_MSG_TENTH_SEC=Tenths of second
|
||||||
64738_main_MSG_UNK_FK=This file has been created with a newer version.\^Some data was discarded because unknown.\^If you save the file now, the discarded data will NOT be saved.
|
64737_main_MSG_LOADING_VFS=Loading VFS
|
||||||
64739_main_MSG_VIS_ONLY_ANON=This VFS file uses the "Visible only to anonymous users" feature.\^This feature is not available anymore.\^You can achieve similar results by restricting access to @anonymous,\^then enabling "List protected items only for allowed users".
|
64738_main_MSG_VFS_OLD=This file is old and uses different settings.\^The "let browse" folder option will be reset.\^Re-saving the file will update its format.
|
||||||
64740_main_MSG_AUTO_DISABLED=Because of the problems encountered in loading,\^automatic saving has been disabled\^until you save manually or load another one.
|
64739_main_MSG_UNK_FK=This file has been created with a newer version.\^Some data was discarded because unknown.\^If you save the file now, the discarded data will NOT be saved.
|
||||||
64741_main_MSG_CORRUPTED=This file does not contain valid data.
|
64740_main_MSG_VIS_ONLY_ANON=This VFS file uses the "Visible only to anonymous users" feature.\^This feature is not available anymore.\^You can achieve similar results by restricting access to @anonymous,\^then enabling "List protected items only for allowed users".
|
||||||
64742_main_MSG_MACROS_FOUND=!!!!!!!!! DANGER !!!!!!!!!\^This file contains macros.\^Don't accept macros from people you don't trust.\^\^Trust this file?
|
64741_main_MSG_AUTO_DISABLED=Because of the problems encountered in loading,\^automatic saving has been disabled\^until you save manually or load another one.
|
||||||
64743_main_MSG_UPD_INFO=Last stable version: %s\^\^Last untested version: %s\^
|
64742_main_MSG_CORRUPTED=This file does not contain valid data.
|
||||||
64744_main_MSG_NEWER=There's a new version available online: %s
|
64743_main_MSG_MACROS_FOUND=!!!!!!!!! DANGER !!!!!!!!!\^This file contains macros.\^Don't accept macros from people you don't trust.\^\^Trust this file?
|
||||||
64745_main_MSG_SRC_UPD=Searching for updates...
|
64744_main_MSG_UPD_INFO=Last stable version: %s\^\^Last untested version: %s\^
|
||||||
64746_main_ARE_EXPERT{1}=You are in Expert mode
|
64745_main_MSG_NEWER=There's a new version available online: %s
|
||||||
64747_main_ARE_EASY=You are in Easy mode
|
64746_main_MSG_SRC_UPD=Searching for updates...
|
||||||
64748_main_SW2EXPERT=Switch to Expert mode
|
64747_main_ARE_EXPERT{1}=You are in Expert mode
|
||||||
64749_main_SW2EASY=Switch to Easy mode
|
64748_main_ARE_EASY=You are in Easy mode
|
||||||
64750_main_MSG_DL_TIMEOUT_LONG=Enter the number of MINUTES with no download after which the program automatically shuts down.\^Leave blank to get no timeout.
|
64749_main_SW2EXPERT=Switch to Expert mode
|
||||||
64751_main_MSG_LOG_FILE=Log file
|
64750_main_SW2EASY=Switch to Easy mode
|
||||||
64752_main_MSG_ZLIB=This file is corrupted (ZLIB).
|
64751_main_MSG_DL_TIMEOUT_LONG=Enter the number of MINUTES with no download after which the program automatically shuts down.\^Leave blank to get no timeout.
|
||||||
64753_main_MSG_BAKAVAILABLE=This file is corrupted but a backup is available.\^Continue with backup?
|
64752_main_MSG_NEWER_INCOMP=This file has been created with a newer and incompatible version.
|
||||||
64754_main_MSG_CANT_LOAD_SAVE=Cannot load or save while adding files
|
64753_main_MSG_ZLIB=This file is corrupted (ZLIB).
|
||||||
64755_main_MSG_OPEN_VFS=Open VFS file
|
64754_main_MSG_BAKAVAILABLE=This file is corrupted but a backup is available.\^Continue with backup?
|
||||||
64756_main_LIMIT{2}=Limit
|
64755_main_MSG_CANT_LOAD_SAVE=Cannot load or save while adding files
|
||||||
64757_main_TOP_SPEED=Top speed
|
64756_main_MSG_OPEN_VFS=Open VFS file
|
||||||
64758_main_MSG_MAX_BW=Max bandwidth (KB/s).
|
64757_main_LIMIT{2}=Limit
|
||||||
64759_main_MSG_LIM0=Zero is an effective limit.\^To disable instead, leave empty.
|
64758_main_TOP_SPEED=Top speed
|
||||||
64760_main_MSG_MAX_BW_1=Max bandwidth for single address (KB/s).
|
64759_main_MSG_MAX_BW=Max bandwidth (KB/s).
|
||||||
64761_main_MSG_GRAPH_RATE_MENU=Graph refresh rate: %d (tenths of second)
|
64760_main_MSG_LIM0=Zero is an effective limit.\^To disable instead, leave empty.
|
||||||
64762_main_MSG_MAX_CON_LONG=Max simultaneous connections to serve.\^Most people don't know this function well, and have problems. If you are unsure, please use the "Max simultaneous downloads".
|
64761_main_MSG_MAX_BW_1=Max bandwidth for single address (KB/s).
|
||||||
64763_main_MSG_WARN_CONN=In this moment there are %d active connections
|
64762_main_MSG_GRAPH_RATE_MENU=Graph refresh rate: %d (tenths of second)
|
||||||
64764_main_MSG_WARN_ACT_DL=In this moment there are %d active downloads
|
64763_main_MSG_MAX_CON_LONG=Max simultaneous connections to serve.\^Most people don't know this function well, and have problems. If you are unsure, please use the "Max simultaneous downloads".
|
||||||
64765_main_MSG_MAX_CON_SING_LONG=Max simultaneous connections to accept from a single IP address.\^Most people don't know this function well, and have problems. If you are unsure, please use the "Max simultaneous downloads from a single IP address".
|
64764_main_MSG_WARN_CONN=In this moment there are %d active connections
|
||||||
64766_main_MSG_GRAPH_RATE{1}=Graph refresh rate
|
64765_main_MSG_WARN_ACT_DL=In this moment there are %d active downloads
|
||||||
64767_main_MSG_TENTH_SEC=Tenths of second
|
64766_main_MSG_MAX_CON_SING_LONG=Max simultaneous connections to accept from a single IP address.\^Most people don't know this function well, and have problems. If you are unsure, please use the "Max simultaneous downloads from a single IP address".
|
||||||
64768_main_MSG_CON_STATE_IDLE=idle
|
64767_main_MSG_GRAPH_RATE{1}=Graph refresh rate
|
||||||
64769_main_MSG_CON_STATE_REQ=requesting
|
64768_main_MSG_VFS_DONT_CONS_DL_MASK=Don't consider as download (mask): %s
|
||||||
64770_main_MSG_CON_STATE_RCV=receiving
|
64769_main_MSG_VFS_INHERITED= [inherited]
|
||||||
64771_main_MSG_CON_STATE_THINK=thinking
|
64770_main_MSG_VFS_EXTERNAL= [external]
|
||||||
64772_main_MSG_CON_STATE_REP=replying
|
64771_main_MSG_CON_HINT=Connection time: %s\^Last request time: %s\^Agent: %s
|
||||||
64773_main_MSG_CON_STATE_SEND=sending
|
64772_main_MSG_CON_STATE_IDLE=idle
|
||||||
64774_main_MSG_CON_STATE_DISC=disconnected
|
64773_main_MSG_CON_STATE_REQ=requesting
|
||||||
64775_main_MSG_CON_PAUSED=paused
|
64774_main_MSG_CON_STATE_RCV=receiving
|
||||||
64776_main_MSG_CON_SENT=%s / %s sent
|
64775_main_MSG_CON_STATE_THINK=thinking
|
||||||
64777_main_MSG_CON_RECEIVED=%s / %s received
|
64776_main_MSG_CON_STATE_REP=replying
|
||||||
64778_main_MSG_TPL_RESET=The template has been reset
|
64777_main_MSG_CON_STATE_SEND=sending
|
||||||
64779_main_MSG_ALLO_REF=Allowed referer
|
64778_main_MSG_CON_STATE_DISC=disconnected
|
||||||
64780_main_MSG_ALLO_REF_LONG=Leave empty to disable this feature.\^Here you can specify a mask.\^When a file is requested, if the mask doesn't match the "Referer" HTTP field, the request is rejected.
|
64779_main_MSG_TPL_RESET=The template has been reset
|
||||||
64781_main_MSG_BETTERSTOP=\^Going on may lead to problems.\^It is adviced to stop loading.\^Stop?
|
64780_main_MSG_ALLO_REF=Allowed referer
|
||||||
64782_main_MSG_BADCRC=This file is corrupted (CRC).
|
64781_main_MSG_ALLO_REF_LONG=Leave empty to disable this feature.\^Here you can specify a mask.\^When a file is requested, if the mask doesn't match the "Referer" HTTP field, the request is rejected.
|
||||||
64744_main_MSG_NEWER{1}=This file has been created with a newer and incompatible version.
|
64782_main_MSG_BETTERSTOP=\^Going on may lead to problems.\^It is adviced to stop loading.\^Stop?
|
||||||
64784_main_MSG_VFS_ARCABLE=Archivable
|
64783_main_MSG_BADCRC=This file is corrupted (CRC).
|
||||||
64785_main_MSG_VFS_DEF_MASK=Default file mask: %s
|
64784_main_MSG_VFS_HIDE_EMPTY=Hidden if empty
|
||||||
64786_main_MSG_VFS_ACCESS=Access for
|
64785_main_MSG_VFS_NOT_BROW=Not browsable
|
||||||
64787_main_MSG_VFS_UPLOAD=Upload allowed for
|
64786_main_MSG_VFS_HIDE_EMPTY_FLD=Hide empty folders
|
||||||
64788_main_MSG_VFS_DELETE=Delete allowed for
|
64787_main_MSG_VFS_HIDE_EXT=Hide extention
|
||||||
64789_main_MSG_VFS_COMMENT=Comment: %s
|
64788_main_MSG_VFS_ARCABLE=Archivable
|
||||||
64790_main_MSG_VFS_REALM=Realm: %s
|
64789_main_MSG_VFS_DEF_MASK=Default file mask: %s
|
||||||
64791_main_MSG_VFS_DIFF_TPL=Diff template: %s
|
64790_main_MSG_VFS_ACCESS=Access for
|
||||||
64792_main_MSG_VFS_FILES_FLT=Files filter: %s
|
64791_main_MSG_VFS_UPLOAD=Upload allowed for
|
||||||
64793_main_MSG_VFS_FLD_FLT=Folders filter: %s
|
64792_main_MSG_VFS_DELETE=Delete allowed for
|
||||||
64794_main_MSG_VFS_UPL_FLT=Upload filter: %s
|
64793_main_MSG_VFS_COMMENT=Comment: %s
|
||||||
64795_main_MSG_VFS_DONT_CONS_DL=Don't consider as download
|
64794_main_MSG_VFS_REALM=Realm: %s
|
||||||
64796_main_MSG_VFS_DONT_CONS_DL_MASK=Don't consider as download (mask): %s
|
64795_main_MSG_VFS_DIFF_TPL=Diff template: %s
|
||||||
64797_main_MSG_VFS_INHERITED= [inherited]
|
64796_main_MSG_VFS_FILES_FLT=Files filter: %s
|
||||||
64798_main_MSG_VFS_EXTERNAL= [external]
|
64797_main_MSG_VFS_FLD_FLT=Folders filter: %s
|
||||||
64799_main_MSG_CON_HINT=Connection time: %s\^Last request time: %s\^Agent: %s
|
64798_main_MSG_VFS_UPL_FLT=Upload filter: %s
|
||||||
64800_main_VFS_ITEMS=VFS: %d items
|
64799_main_MSG_VFS_DONT_CONS_DL=Don't consider as download
|
||||||
64801_main_MSG_ITEM_EXISTS=%s item(s) already exists:\^%s\^\^Continue?
|
64800_main_IN_SPEED=In: %.1f KB/s
|
||||||
64802_main_MSG_INSTALL_TPL=Install this template?
|
64801_main_BANS=Ban rules: %d
|
||||||
64803_main_MSG_FOLDER_UPLOAD=Do you want ANYONE to be able to upload to this folder?
|
64802_main_MEMORY=Mem
|
||||||
64804_main_MSG_VFS_DRAG_INVIT=Drag your files here
|
64803_main_CUST_TPL=Customized template
|
||||||
64805_main_MSG_VFS_URL=URL: %s
|
64804_main_VFS_ITEMS=VFS: %d items
|
||||||
64806_main_MSG_VFS_PATH=Path: %s
|
64805_main_MSG_ITEM_EXISTS=%s item(s) already exists:\^%s\^\^Continue?
|
||||||
64807_main_MSG_VFS_SIZE=Size: %s
|
64806_main_MSG_INSTALL_TPL=Install this template?
|
||||||
64808_main_MSG_VFS_DLS=Downloads: %s
|
64807_main_MSG_FOLDER_UPLOAD=Do you want ANYONE to be able to upload to this folder?
|
||||||
64809_main_MSG_VFS_INVISIBLE=Invisible
|
64808_main_MSG_VFS_DRAG_INVIT=Drag your files here
|
||||||
64810_main_MSG_VFS_DL_FORB=Download forbidden
|
64809_main_MSG_VFS_URL=URL: %s
|
||||||
64811_main_MSG_VFS_DONT_LOG=Don't log
|
64810_main_MSG_VFS_PATH=Path: %s
|
||||||
64812_main_MSG_VFS_HIDE_EMPTY=Hidden if empty
|
64811_main_MSG_VFS_SIZE=Size: %s
|
||||||
64813_main_MSG_VFS_NOT_BROW=Not browsable
|
64812_main_MSG_VFS_DLS=Downloads: %s
|
||||||
64814_main_MSG_VFS_HIDE_EMPTY_FLD=Hide empty folders
|
64813_main_MSG_VFS_INVISIBLE=Invisible
|
||||||
64815_main_MSG_VFS_HIDE_EXT=Hide extention
|
64814_main_MSG_VFS_DL_FORB=Download forbidden
|
||||||
64816_main_MSG_CHK_UPD_FAIL=Check update: failed
|
64815_main_MSG_VFS_DONT_LOG=Don't log
|
||||||
64817_main_MSG_CHK_UPD_HEAD=Check update:
|
64816_main_MSG_UPD_DL=Downloading new version...
|
||||||
64818_main_MSG_CHK_UPD_VER=new version found: %s
|
64817_main_MSG_UPDATE=You are invited to use the new version.\^\^Update now?
|
||||||
64819_main_MSG_CHK_UPD_VER_EXT=Build #%s (current is #%s)
|
64818_main_MSG_REQUESTING=Requesting...
|
||||||
64820_main_MSG_CHK_UPD_NONE=no new version
|
64819_main_MSG_CHK_UPD=Checking for updates
|
||||||
64821_main_TO_CLIP=Copy to clipboard
|
64820_main_MSG_CHK_UPD_FAIL=Check update: failed
|
||||||
64822_main_ALREADY_CLIP=Already in clipboard
|
64821_main_MSG_CHK_UPD_HEAD=Check update:
|
||||||
64823_main_MSG_NO_SPACE=Out of space
|
64822_main_MSG_CHK_UPD_VER=new version found: %s
|
||||||
64824_main_CONN=Connections: %d
|
64823_main_MSG_CHK_UPD_VER_EXT=Build #%s (current is #%s)
|
||||||
64825_main_TOT_IN=Total In: %s
|
64824_main_MSG_CHK_UPD_NONE=no new version
|
||||||
64826_main_TOT_OUT{1}=Total Out: %s
|
64825_main_TO_CLIP=Copy to clipboard
|
||||||
64827_main_OUT_SPEED=Out: %.1f KB/s
|
64826_main_ALREADY_CLIP=Already in clipboard
|
||||||
64828_main_IN_SPEED=In: %.1f KB/s
|
64827_main_MSG_NO_SPACE=Out of space
|
||||||
64829_main_BANS=Ban rules: %d
|
64828_main_CONN=Connections: %d
|
||||||
64830_main_MEMORY=Mem
|
64829_main_TOT_IN=Total In: %s
|
||||||
64831_main_CUST_TPL=Customized template
|
64830_main_TOT_OUT{1}=Total Out: %s
|
||||||
64832_main_AUTOSAVE=Auto save every:
|
64831_main_OUT_SPEED=Out: %.1f KB/s
|
||||||
64833_main_SECONDS=%d seconds
|
64832_main_MSG_FILE_ADD_ABORT=File addition was aborted.\^The list of files is incomplete.
|
||||||
64834_main_MSG_SPD_LIMIT_SING=Speed limit for single address
|
64833_main_MSG_ADDING=Adding item #%d
|
||||||
64835_main_MSG_SPD_LIMIT=Speed limit
|
64834_main_MSG_INV_FILENAME=Invalid filename
|
||||||
64836_main_MSG_AUTO_SAVE=Auto-save %s
|
64835_main_MSG_DELETE=Delete?
|
||||||
64837_main_MSG_AUTO_SAVE_LONG=Auto-save %s.\^Specify in seconds.\^Leave blank to disable.
|
64836_main_AUTOSAVE=Auto save every:
|
||||||
64838_main_MSG_MIN=We don't accept less than %d
|
64837_main_SECONDS=%d seconds
|
||||||
64839_main_MSG_BAN=Your ban configuration may have been screwed up.\^Please verify it.
|
64838_main_MSG_SPD_LIMIT_SING=Speed limit for single address
|
||||||
64840_main_MSG_CANT_SAVE_OPT=Can't save options there.\^Should I try to save to user registry?
|
64839_main_MSG_SPD_LIMIT=Speed limit
|
||||||
64841_main_MSG_UPD_SAVE_ERROR=Cannot save the update
|
64840_main_MSG_AUTO_SAVE=Auto-save %s
|
||||||
64842_main_MSG_UPD_REQ_ONLY1=The auto-update feature cannot work because it requires the "Only 1 instance" option enabled.\^\^Your browser will now be pointed to the update, so you can install it manually.
|
64841_main_MSG_AUTO_SAVE_LONG=Auto-save %s.\^Specify in seconds.\^Leave blank to disable.
|
||||||
64843_main_MSG_UPD_WAIT=Waiting for last requests to be served, then we'll update
|
64842_main_MSG_MIN=We don't accept less than %d
|
||||||
64844_main_MSG_UPD_DL=Downloading new version...
|
64843_main_MSG_BAN=Your ban configuration may have been screwed up.\^Please verify it.
|
||||||
64845_main_MSG_UPDATE=You are invited to use the new version.\^\^Update now?
|
64844_main_MSG_CANT_SAVE_OPT=Can't save options there.\^Should I try to save to user registry?
|
||||||
64846_main_MSG_REQUESTING=Requesting...
|
64845_main_MSG_UPD_SAVE_ERROR=Cannot save the update
|
||||||
64847_main_MSG_CHK_UPD=Checking for updates
|
64846_main_MSG_UPD_REQ_ONLY1=The auto-update feature cannot work because it requires the "Only 1 instance" option enabled.\^\^Your browser will now be pointed to the update, so you can install it manually.
|
||||||
64848_main_MSG_LOG_UPL=Uploading %s
|
64847_main_MSG_UPD_WAIT=Waiting for last requests to be served, then we'll update
|
||||||
64849_main_MSG_LOG_UPLOADED=Fully uploaded %s - %s @ %sB/s
|
64848_main_MSG_LOG_HEAD=Served head
|
||||||
64850_main_MSG_LOG_UPL_FAIL=Upload failed %s
|
64849_main_MSG_LOG_NOT_MOD=Not modified, use cache
|
||||||
64851_main_MSG_LOG_DL=Fully downloaded - %s @ %sB/s - %s
|
64850_main_MSG_LOG_REDIR=Redirected to %s
|
||||||
64852_main_MSG_LOGIN_FAILED=Login failed
|
64851_main_MSG_LOG_NOT_SERVED=Not served: %d - %s
|
||||||
64853_main_MSG_MIN_DISK_REACHED=Minimum disk space reached.
|
64852_main_MSG_LOG_UPL=Uploading %s
|
||||||
64854_main_MSG_UPL_NAME_FORB=File name or extension forbidden.
|
64853_main_MSG_LOG_UPLOADED=Fully uploaded %s - %s @ %sB/s
|
||||||
64855_main_MSG_UPL_CANT_CREATE=Error creating file.
|
64854_main_MSG_LOG_UPL_FAIL=Upload failed %s
|
||||||
64856_main_FINGERPRINT=Create fingerprint on addition under %d KB
|
64855_main_MSG_LOG_DL=Fully downloaded - %s @ %sB/s - %s
|
||||||
64857_main_NO_FINGERPRINT=Create fingerprint on addition: disabled
|
64856_main_MSG_LOGIN_FAILED=Login failed
|
||||||
64858_main_MSG_SAVE_VFS=Your current file system is not saved.\^Save it?
|
64857_main_MSG_MIN_DISK_REACHED=Minimum disk space reached.
|
||||||
64859_main_MSG_INP_COMMENT=Please insert a comment for "%s".\^You should use HTML: <br> for break line.
|
64858_main_MSG_UPL_NAME_FORB=File name or extension forbidden.
|
||||||
64860_main_MSG_FILE_ADD_ABORT=File addition was aborted.\^The list of files is incomplete.
|
64859_main_MSG_UPL_CANT_CREATE=Error creating file.
|
||||||
64861_main_MSG_ADDING=Adding item #%d
|
64860_main_FINGERPRINT=Create fingerprint on addition under %d KB
|
||||||
64862_main_MSG_INV_FILENAME=Invalid filename
|
64861_main_NO_FINGERPRINT=Create fingerprint on addition: disabled
|
||||||
64863_main_MSG_DELETE=Delete?
|
64862_main_MSG_SAVE_VFS=Your current file system is not saved.\^Save it?
|
||||||
64864_main_MSG_PORT_USED_BY=It is already used by %s
|
64863_main_MSG_INP_COMMENT=Please insert a comment for "%s".\^You should use HTML: <br> for break line.
|
||||||
64865_main_MSG_PORT_BLOCKED=Something is blocking, maybe your system firewall.
|
64864_main_MSG_BAN_CMT=Ban comment
|
||||||
64866_main_MSG_KICK_ALL=There are %d connections open.\^Do you want to close them now?
|
64865_main_MSG_BAN_CMT_LONG=A comment for this ban...
|
||||||
64867_main_MSG_TPL_INCOMPATIBLE=The template you are trying to load is not compatible with current HFS version.\^HFS will now use default template.\^Ask on the forum if you need further help.
|
64866_main_MSG_BREAK_DYN_DNS=This option is NOT compatible with "dynamic dns updater".\^Continue?
|
||||||
64868_main_MSG_LOG_SERVER_START=Server start
|
64867_main_MSG_CANT_OPEN_PORT=Cannot open port.
|
||||||
64869_main_MSG_LOG_SERVER_STOP=Server stop
|
64868_main_MSG_PORT_USED_BY=It is already used by %s
|
||||||
64870_main_MSG_LOG_CONNECTED=Connected
|
64869_main_MSG_PORT_BLOCKED=Something is blocking, maybe your system firewall.
|
||||||
64871_main_MSG_LOG_DISC_SRV=Disconnected by server
|
64870_main_MSG_KICK_ALL=There are %d connections open.\^Do you want to close them now?
|
||||||
64872_main_MSG_LOG_DISC=Disconnected
|
64871_main_MSG_TPL_INCOMPATIBLE=The template you are trying to load is not compatible with current HFS version.\^HFS will now use default template.\^Ask on the forum if you need further help.
|
||||||
64873_main_MSG_LOG_GOT=Got %d bytes
|
64872_main_MSG_LOG_SERVER_START=Server start
|
||||||
64874_main_MSG_LOG_BYTES_SENT=%s bytes sent
|
64873_main_MSG_LOG_SERVER_STOP=Server stop
|
||||||
64875_main_MSG_LOG_SERVED=Served %s
|
64874_main_MSG_LOG_CONNECTED=Connected
|
||||||
64876_main_MSG_LOG_HEAD=Served head
|
64875_main_MSG_LOG_DISC_SRV=Disconnected by server
|
||||||
64877_main_MSG_LOG_NOT_MOD=Not modified, use cache
|
64876_main_MSG_LOG_DISC=Disconnected
|
||||||
64878_main_MSG_LOG_REDIR=Redirected to %s
|
64877_main_MSG_LOG_GOT=Got %d bytes
|
||||||
64879_main_MSG_LOG_NOT_SERVED=Not served: %d - %s
|
64878_main_MSG_LOG_BYTES_SENT=%s bytes sent
|
||||||
64880_main_MSG_DDNS_nohost=specified hostname does not exist
|
64879_main_MSG_LOG_SERVED=Served %s
|
||||||
64881_main_MSG_DDNS_notyours=specified hostname belongs to another username
|
64880_main_MSG_DDNS_FAIL=DNS update failed: %s\^User intervention is required.
|
||||||
64882_main_MSG_DDNS_numhost=too many or too few hosts found
|
64881_main_MSG_DDNS_REPLY_SIZE=%d bytes reply
|
||||||
64883_main_MSG_DDNS_abuse=specified hostname is blocked for update abuse
|
64882_main_MSG_DDNS_badauth=invalid user/password
|
||||||
64884_main_MSG_DDNS_dnserr=server error
|
64883_main_MSG_DDNS_notfqdn=incomplete hostname, required form aaa.bbb.com
|
||||||
64885_main_MSG_DDNS_911=server error
|
64884_main_MSG_DDNS_nohost=specified hostname does not exist
|
||||||
64886_main_MSG_DDNS_notdonator=an option specified requires payment
|
64885_main_MSG_DDNS_notyours=specified hostname belongs to another username
|
||||||
64887_main_MSG_DDNS_badagent=banned client
|
64886_main_MSG_DDNS_numhost=too many or too few hosts found
|
||||||
64888_main_MSG_BAN_MASK=Ban IP mask
|
64887_main_MSG_DDNS_abuse=specified hostname is blocked for update abuse
|
||||||
64889_main_MSG_IP_MASK_LONG=You can edit the address.\^Masks and ranges are allowed.
|
64888_main_MSG_DDNS_dnserr=server error
|
||||||
64890_main_MSG_KICK_ADDR=There are %d open connections from this address.\^Do you want to kick them all now?
|
64889_main_MSG_DDNS_911=server error
|
||||||
64891_main_MSG_BAN_ALREADY=This IP address is already banned
|
64890_main_MSG_DDNS_notdonator=an option specified requires payment
|
||||||
64892_main_MSG_BAN_CMT=Ban comment
|
64891_main_MSG_DDNS_badagent=banned client
|
||||||
64893_main_MSG_BAN_CMT_LONG=A comment for this ban...
|
64892_main_MSG_BAN_MASK=Ban IP mask
|
||||||
64894_main_MSG_BREAK_DYN_DNS=This option is NOT compatible with "dynamic dns updater".\^Continue?
|
64893_main_MSG_IP_MASK_LONG=You can edit the address.\^Masks and ranges are allowed.
|
||||||
64895_main_MSG_CANT_OPEN_PORT=Cannot open port.
|
64894_main_MSG_KICK_ADDR=There are %d open connections from this address.\^Do you want to kick them all now?
|
||||||
64896_main_MSG_NO_TEMP=Cannot save temporary file
|
64895_main_MSG_BAN_ALREADY=This IP address is already banned
|
||||||
64897_main_MSG_ERROR_REGISTRY=Can't write to registry.\^You may lack necessary rights.
|
64896_main_MSG_ADDRESSES_EXCEED=The following addresses exceed the limit:\^%s
|
||||||
64898_main_MSG_MANY_ITEMS=You are putting many files.\^Try using real folders instead of virtual folders.\^Read documentation or ask on the forum for help.
|
64897_main_MSG_NO_TEMP=Cannot save temporary file
|
||||||
64899_main_MSG_ADD_TO_HFS="Add to HFS" has been added to your Window's Explorer right-click menu.
|
64898_main_MSG_ERROR_REGISTRY=Can't write to registry.\^You may lack necessary rights.
|
||||||
64900_main_MSG_SINGLE_INSTANCE=Sorry, this feature only works with the "Only 1 instance" option enabled.\^\^You can find this option under Menu -> Start/Exit\^(only in expert mode)
|
64899_main_MSG_MANY_ITEMS=You are putting many files.\^Try using real folders instead of virtual folders.\^Read documentation or ask on the forum for help.
|
||||||
64901_main_MSG_COMM_ERROR=Network error. Request failed.
|
64900_main_MSG_ADD_TO_HFS="Add to HFS" has been added to your Window's Explorer right-click menu.
|
||||||
64902_main_MSG_DDNS_NO_REPLY=no reply
|
64901_main_MSG_SINGLE_INSTANCE=Sorry, this feature only works with the "Only 1 instance" option enabled.\^\^You can find this option under Menu -> Start/Exit\^(only in expert mode)
|
||||||
64903_main_MSG_DDNS_OK=successful
|
64902_main_MSG_COMM_ERROR=Network error. Request failed.
|
||||||
64904_main_MSG_DDNS_UNK=unknown reply: %s
|
64903_main_MSG_CON_PAUSED=paused
|
||||||
64905_main_MSG_DDNS_ERR=error: %s
|
64904_main_MSG_CON_SENT=%s / %s sent
|
||||||
64906_main_MSG_DDNS_REQ=DNS update requested for %s: %s
|
64905_main_MSG_CON_RECEIVED=%s / %s received
|
||||||
64907_main_MSG_DDNS_DOING=Updating dynamic DNS...
|
64906_main_MSG_DDNS_NO_REPLY=no reply
|
||||||
64908_main_MSG_DDNS_FAIL=DNS update failed: %s\^User intervention is required.
|
64907_main_MSG_DDNS_OK=successful
|
||||||
64909_main_MSG_DDNS_REPLY_SIZE=%d bytes reply
|
64908_main_MSG_DDNS_UNK=unknown reply: %s
|
||||||
64910_main_MSG_DDNS_badauth=invalid user/password
|
64909_main_MSG_DDNS_ERR=error: %s
|
||||||
64911_main_MSG_DDNS_notfqdn=incomplete hostname, required form aaa.bbb.com
|
64910_main_MSG_DDNS_REQ=DNS update requested for %s: %s
|
||||||
64912_main_MSG_MAX_SIM_ADDR{1}=Max simultaneous addresses
|
64911_main_MSG_DDNS_DOING=Updating dynamic DNS...
|
||||||
64913_main_MSG_MAX_SIM_ADDR_DL=Max simultaneous addresses downloading
|
64912_main_MSG_MAX_CON_SING=Max connections from single address
|
||||||
64914_main_MSG_MAX_SIM_DL_SING{2}=Max simultaneous downloads from single address
|
64913_main_MSG_MAX_SIM_ADDR{1}=Max simultaneous addresses
|
||||||
64915_main_MSG_MAX_SIM_DL=Max simultaneous downloads
|
64914_main_MSG_MAX_SIM_ADDR_DL=Max simultaneous addresses downloading
|
||||||
64916_main_MSG_SET_LIMIT=Set limit
|
64915_main_MSG_MAX_SIM_DL_SING{2}=Max simultaneous downloads from single address
|
||||||
64917_main_MSG_UNPROTECTED_LINKS=Links are NOT actually protected.\^The feature is there to be used with the "list protected items only..." option.\^Continue?
|
64916_main_MSG_MAX_SIM_DL=Max simultaneous downloads
|
||||||
64918_main_MSG_SAME_NAME=An item with the same name is already present in this folder.\^Continue?
|
64917_main_MSG_SET_LIMIT=Set limit
|
||||||
64919_main_MSG_CONTINUE=Continue?
|
64918_main_MSG_UNPROTECTED_LINKS=Links are NOT actually protected.\^The feature is there to be used with the "list protected items only..." option.\^Continue?
|
||||||
64920_main_MSG_PROCESSING=Processing...
|
64919_main_MSG_SAME_NAME=An item with the same name is already present in this folder.\^Continue?
|
||||||
64921_main_MSG_SPEED_KBS=%.1f kB/s
|
64920_main_MSG_CONTINUE=Continue?
|
||||||
64922_main_MSG_OPTIONS_SAVED=Options saved
|
64921_main_MSG_PROCESSING=Processing...
|
||||||
64923_main_MSG_SOME_LOCKED=Some items were not affected because locked
|
64922_main_MSG_SPEED_KBS=%.1f kB/s
|
||||||
64924_main_MSG_ITEM_LOCKED=The item is locked
|
64923_main_MSG_OPTIONS_SAVED=Options saved
|
||||||
64925_main_MSG_INVALID_VALUE=Invalid value
|
64924_main_MSG_SOME_LOCKED=Some items were not affected because locked
|
||||||
64926_main_MSG_EMPTY_NO_LIMIT=Leave blank to get no limits.
|
64925_main_MSG_ITEM_LOCKED=The item is locked
|
||||||
64927_main_MSG_ADDRESSES_EXCEED=The following addresses exceed the limit:\^%s
|
64926_main_MSG_INVALID_VALUE=Invalid value
|
||||||
64935_optionsDlg_MSG_INVERT_BAN=Normal behavior of the Ban is to prevent access to the addresses you specify (also called black-list).\^If you want the opposite, to allow the addresses that you specify (white-list), enter all addresses in a single row preceded by a \ character.\^\^Let say you want to allow all your 192.168 local network plus your office at 1.1.1.1.\^Just put this IP address mask: \192.168.*;1.1.1.1\^The opening \ character inverts the logic, so everything else is banned.\^\^If you want to know more about address masks, check the guide.
|
64927_main_MSG_EMPTY_NO_LIMIT=Leave blank to get no limits.
|
||||||
64936_main_S_PORT_LABEL=Port: %s
|
64935_classesLib_MSG_ANTIDOS_REPLY=Please wait, server busy
|
||||||
64937_main_S_PORT_ANY=any
|
64936_optionsDlg_MSG_INVERT_BAN=Normal behavior of the Ban is to prevent access to the addresses you specify (also called black-list).\^If you want the opposite, to allow the addresses that you specify (white-list), enter all addresses in a single row preceded by a \ character.\^\^Let say you want to allow all your 192.168 local network plus your office at 1.1.1.1.\^Just put this IP address mask: \192.168.*;1.1.1.1\^The opening \ character inverts the logic, so everything else is banned.\^\^If you want to know more about address masks, check the guide.
|
||||||
64938_main_DISABLED=disabled
|
64937_main_S_PORT_LABEL=Port: %s
|
||||||
64939_main_S_OK=Ok
|
64938_main_S_PORT_ANY=any
|
||||||
64940_main_MSG_MENU_VAL= (%s)
|
64939_main_DISABLED=disabled
|
||||||
64941_main_MSG_DL_TIMEOUT{1}=No downloads timeout
|
64940_main_S_OK=Ok
|
||||||
64942_main_MSG_MAX_CON=Max connections
|
64941_main_MSG_MENU_VAL= (%s)
|
||||||
64943_main_MSG_MAX_CON_SING=Max connections from single address
|
64942_main_MSG_DL_TIMEOUT{1}=No downloads timeout
|
||||||
|
64943_main_MSG_MAX_CON=Max connections
|
||||||
65046_OverbyteIcsHttpContCod_ERR_GETCODING_OVERRIDE=GetCoding must be overridden in %s
|
65046_OverbyteIcsHttpContCod_ERR_GETCODING_OVERRIDE=GetCoding must be overridden in %s
|
||||||
65088_OverbyteIcsCharsetUtils_sHebrewISOVisual=Hebrew (ISO-Visual)
|
65088_OverbyteIcsCharsetUtils_sHebrewISOVisual=Hebrew (ISO-Visual)
|
||||||
65089_OverbyteIcsCharsetUtils_sHebrewWindows=Hebrew (Windows)
|
65089_OverbyteIcsCharsetUtils_sHebrewWindows=Hebrew (Windows)
|
||||||
|
|||||||
@ -579,7 +579,8 @@ if url = '' then
|
|||||||
encodeHTML:=[];
|
encodeHTML:=[];
|
||||||
if nonascii then
|
if nonascii then
|
||||||
encodeHTML:=[#128..#255];
|
encodeHTML:=[#128..#255];
|
||||||
encodePerc:=[#0..#31,'#','%','?','"','''','&','<','>',':'];
|
encodePerc:=[#0..#31,'#','%','?','"','''','&','<','>',':',
|
||||||
|
',',';']; // these for content-disposition
|
||||||
// actually ':' needs encoding only in relative url
|
// actually ':' needs encoding only in relative url
|
||||||
if spaces then include(encodePerc,' ');
|
if spaces then include(encodePerc,' ');
|
||||||
if not htmlEncoding then
|
if not htmlEncoding then
|
||||||
@ -1598,7 +1599,7 @@ end; // initInputStream
|
|||||||
|
|
||||||
function ThttpConn.sendNextChunk(max:integer=MAXINT):integer;
|
function ThttpConn.sendNextChunk(max:integer=MAXINT):integer;
|
||||||
var
|
var
|
||||||
n: int64;
|
n, toSend: int64;
|
||||||
buf: ansistring;
|
buf: ansistring;
|
||||||
begin
|
begin
|
||||||
result:=0;
|
result:=0;
|
||||||
@ -1610,7 +1611,8 @@ if (n = 0) or (bytesSentLastItem = 0) then n:=max;
|
|||||||
if n > MAXIMUM_CHUNK_SIZE then n:=MAXIMUM_CHUNK_SIZE;
|
if n > MAXIMUM_CHUNK_SIZE then n:=MAXIMUM_CHUNK_SIZE;
|
||||||
if n < MINIMUM_CHUNK_SIZE then n:=MINIMUM_CHUNK_SIZE;
|
if n < MINIMUM_CHUNK_SIZE then n:=MINIMUM_CHUNK_SIZE;
|
||||||
if n > max then n:=max;
|
if n > max then n:=max;
|
||||||
if n > bytesToSend then n:=bytesToSend;
|
toSend:=bytesToSend;
|
||||||
|
if n > toSend then n:=toSend;
|
||||||
if n = 0 then exit;
|
if n = 0 then exit;
|
||||||
setLength(buf, n);
|
setLength(buf, n);
|
||||||
n:=stream.read(buf[1], n);
|
n:=stream.read(buf[1], n);
|
||||||
|
|||||||
4
main.dfm
4
main.dfm
@ -2963,10 +2963,6 @@ object mainFrm: TmainFrm
|
|||||||
AutoCheck = True
|
AutoCheck = True
|
||||||
Caption = 'Enable macros.log'
|
Caption = 'Enable macros.log'
|
||||||
end
|
end
|
||||||
object Appendmacroslog1: TMenuItem
|
|
||||||
AutoCheck = True
|
|
||||||
Caption = 'Append macros.log'
|
|
||||||
end
|
|
||||||
object Runscript1: TMenuItem
|
object Runscript1: TMenuItem
|
||||||
Caption = 'Run script...'
|
Caption = 'Run script...'
|
||||||
OnClick = Runscript1Click
|
OnClick = Runscript1Click
|
||||||
|
|||||||
247
main.pas
247
main.pas
@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
Copyright (C) 2002-2020 Massimo Melina (www.rejetto.com)
|
Copyright (C) 2002-2020 Massimo Melina (www.rejetto.com)
|
||||||
|
|
||||||
This file is part of HFS ~ HTTP File Server.
|
This file is part of HFS ~ HTTP File Server.
|
||||||
@ -17,7 +17,6 @@ This file is part of HFS ~ HTTP File Server.
|
|||||||
along with HFS; if not, write to the Free Software
|
along with HFS; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
}
|
}
|
||||||
{$A+,B-,C+,E-,F-,G+,H+,I-,J+,K-,L+,M-,N+,O+,P+,Q-,R-,S-,T-,U-,V+,X+,Y+,Z1}
|
|
||||||
{$INCLUDE defs.inc }
|
{$INCLUDE defs.inc }
|
||||||
|
|
||||||
unit main;
|
unit main;
|
||||||
@ -36,8 +35,8 @@ uses
|
|||||||
HSlib, traylib, monoLib, progFrmLib, classesLib;
|
HSlib, traylib, monoLib, progFrmLib, classesLib;
|
||||||
|
|
||||||
const
|
const
|
||||||
VERSION = '2.4.0 RC3';
|
VERSION = '2.4.0 RC8';
|
||||||
VERSION_BUILD = '315';
|
VERSION_BUILD = '320';
|
||||||
VERSION_STABLE = {$IFDEF STABLE } TRUE {$ELSE} FALSE {$ENDIF};
|
VERSION_STABLE = {$IFDEF STABLE } TRUE {$ELSE} FALSE {$ENDIF};
|
||||||
CURRENT_VFS_FORMAT :integer = 1;
|
CURRENT_VFS_FORMAT :integer = 1;
|
||||||
CRLF = #13#10;
|
CRLF = #13#10;
|
||||||
@ -160,6 +159,9 @@ resourcestring
|
|||||||
MSG_ENABLED = 'Option enabled';
|
MSG_ENABLED = 'Option enabled';
|
||||||
MSG_DISABLED = 'Option disabled';
|
MSG_DISABLED = 'Option disabled';
|
||||||
MSG_COMM_ERROR = 'Network error. Request failed.';
|
MSG_COMM_ERROR = 'Network error. Request failed.';
|
||||||
|
MSG_CON_PAUSED = 'paused';
|
||||||
|
MSG_CON_SENT = '%s / %s sent';
|
||||||
|
MSG_CON_RECEIVED = '%s / %s received';
|
||||||
|
|
||||||
type
|
type
|
||||||
Pboolean = ^boolean;
|
Pboolean = ^boolean;
|
||||||
@ -669,7 +671,6 @@ type
|
|||||||
Speedlimitforsingleaddress1: TMenuItem;
|
Speedlimitforsingleaddress1: TMenuItem;
|
||||||
macrosLogChk: TMenuItem;
|
macrosLogChk: TMenuItem;
|
||||||
Debug1: TMenuItem;
|
Debug1: TMenuItem;
|
||||||
Appendmacroslog1: TMenuItem;
|
|
||||||
preventStandbyChk: TMenuItem;
|
preventStandbyChk: TMenuItem;
|
||||||
titlePnl: TPanel;
|
titlePnl: TPanel;
|
||||||
HTMLtemplate1: TMenuItem;
|
HTMLtemplate1: TMenuItem;
|
||||||
@ -1366,8 +1367,10 @@ begin result:=reMatch(txt, '^'+quoteRegExprMetaChars(quoteIfAnyChar(' ',name)),
|
|||||||
|
|
||||||
type
|
type
|
||||||
TfileListing = class
|
TfileListing = class
|
||||||
|
actualCount: integer;
|
||||||
public
|
public
|
||||||
dir: array of Tfile;
|
dir: array of Tfile;
|
||||||
|
timeout: TDateTime;
|
||||||
ignoreConnFilter: boolean;
|
ignoreConnFilter: boolean;
|
||||||
constructor create();
|
constructor create();
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
@ -1518,16 +1521,13 @@ end; // loadIon
|
|||||||
function TfileListing.fromFolder(folder:Tfile; cd:TconnData;
|
function TfileListing.fromFolder(folder:Tfile; cd:TconnData;
|
||||||
recursive:boolean=FALSE; limit:integer=-1; toSkip:integer=-1; doClear:boolean=TRUE):integer;
|
recursive:boolean=FALSE; limit:integer=-1; toSkip:integer=-1; doClear:boolean=TRUE):integer;
|
||||||
var
|
var
|
||||||
actualCount: integer;
|
|
||||||
seeProtected, noEmptyFolders, forArchive: boolean;
|
seeProtected, noEmptyFolders, forArchive: boolean;
|
||||||
filesFilter, foldersFilter, urlFilesFilter, urlFoldersFilter: string;
|
filesFilter, foldersFilter, urlFilesFilter, urlFoldersFilter: string;
|
||||||
|
|
||||||
procedure recurOn(f:Tfile);
|
procedure recurOn(f:Tfile);
|
||||||
begin
|
begin
|
||||||
if not f.isFolder() then exit;
|
if not f.isFolder() then exit;
|
||||||
setLength(dir, actualCount);
|
|
||||||
toSkip:=fromFolder(f, cd, TRUE, limit, toSkip, FALSE);
|
toSkip:=fromFolder(f, cd, TRUE, limit, toSkip, FALSE);
|
||||||
actualCount:=length(dir);
|
|
||||||
end; // recurOn
|
end; // recurOn
|
||||||
|
|
||||||
procedure addToListing(f:Tfile);
|
procedure addToListing(f:Tfile);
|
||||||
@ -1541,7 +1541,11 @@ var
|
|||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
if actualCount >= length(dir) then
|
if actualCount >= length(dir) then
|
||||||
setLength(dir, actualCount+100);
|
begin
|
||||||
|
setLength(dir, actualCount+1000);
|
||||||
|
if actualCount > 0 then
|
||||||
|
mainfrm.setStatusBarText(format('Listing files: %s',[dotted(actualCount)]));
|
||||||
|
end;
|
||||||
dir[actualCount]:=f;
|
dir[actualCount]:=f;
|
||||||
inc(actualCount);
|
inc(actualCount);
|
||||||
end;
|
end;
|
||||||
@ -1660,6 +1664,8 @@ this would let us have "=" inside the names, but names cannot be assigned
|
|||||||
repeat
|
repeat
|
||||||
application.ProcessMessages();
|
application.ProcessMessages();
|
||||||
cd.lastActivityTime:=now();
|
cd.lastActivityTime:=now();
|
||||||
|
if (timeout > 0) and (cd.lastActivityTime > timeout) then
|
||||||
|
break;
|
||||||
// we don't list these entries
|
// we don't list these entries
|
||||||
if (sr.name = '.') or (sr.name = '..')
|
if (sr.name = '.') or (sr.name = '..')
|
||||||
or isCommentFile(sr.name) or isFingerprintFile(sr.name) or sameText(sr.name, DIFF_TPL_FILE)
|
or isCommentFile(sr.name) or isFingerprintFile(sr.name) or sameText(sr.name, DIFF_TPL_FILE)
|
||||||
@ -1720,8 +1726,7 @@ this would let us have "=" inside the names, but names cannot be assigned
|
|||||||
sr: TSearchRec;
|
sr: TSearchRec;
|
||||||
n: Ttreenode;
|
n: Ttreenode;
|
||||||
begin
|
begin
|
||||||
{ this folder has been dinamically generated, thus the node is not actually
|
// this folder has been dinamically generated, thus the node is not actually its own... skip
|
||||||
{ its own... skip }
|
|
||||||
if folder.isTemp() then exit;
|
if folder.isTemp() then exit;
|
||||||
|
|
||||||
// include (valid) items from the VFS branch
|
// include (valid) items from the VFS branch
|
||||||
@ -1786,7 +1791,8 @@ this would let us have "=" inside the names, but names cannot be assigned
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
result:=toSkip;
|
result:=toSkip;
|
||||||
if doClear then dir:=NIL;
|
if doClear then
|
||||||
|
actualCount:=0;
|
||||||
|
|
||||||
if not folder.isFolder()
|
if not folder.isFolder()
|
||||||
or not folder.accessFor(cd)
|
or not folder.accessFor(cd)
|
||||||
@ -1804,7 +1810,6 @@ if assigned(cd) then
|
|||||||
toSkip:=max(0, pred(strToIntDef(par('page'), 1))*limit);
|
toSkip:=max(0, pred(strToIntDef(par('page'), 1))*limit);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
actualCount:=length(dir);
|
|
||||||
folder.getFiltersRecursively(filesFilter, foldersFilter);
|
folder.getFiltersRecursively(filesFilter, foldersFilter);
|
||||||
if assigned(cd) and not ignoreConnFilter then
|
if assigned(cd) and not ignoreConnFilter then
|
||||||
begin
|
begin
|
||||||
@ -1828,7 +1833,10 @@ try
|
|||||||
if folder.isRealFolder() and not (FA_HIDDENTREE in folder.flags) and allowedTo(folder) then
|
if folder.isRealFolder() and not (FA_HIDDENTREE in folder.flags) and allowedTo(folder) then
|
||||||
includeFilesFromDisk();
|
includeFilesFromDisk();
|
||||||
includeItemsFromVFS();
|
includeItemsFromVFS();
|
||||||
finally setLength(dir, actualCount) end;
|
finally
|
||||||
|
if doClear then
|
||||||
|
setLength(dir, actualCount)
|
||||||
|
end;
|
||||||
result:=toSkip;
|
result:=toSkip;
|
||||||
end; // fromFolder
|
end; // fromFolder
|
||||||
|
|
||||||
@ -3605,59 +3613,21 @@ var
|
|||||||
fast.append(s);
|
fast.append(s);
|
||||||
end; // handleItem
|
end; // handleItem
|
||||||
|
|
||||||
const ip2availability: Tdictionary<string,Tdatetime> = NIL;
|
|
||||||
const folderConcurrents: integer = 0;
|
|
||||||
const MAX_CONCURRENTS = 3;
|
|
||||||
|
|
||||||
procedure updateAvailability();
|
|
||||||
var
|
|
||||||
pair: Tpair<string,Tdatetime>;
|
|
||||||
t: Tdatetime;
|
|
||||||
begin
|
|
||||||
t:=now();
|
|
||||||
if folderConcurrents = MAX_CONCURRENTS then // serving multiple addresses at max capacity, let's give a grace period for others
|
|
||||||
ip2availability[cd.address]:=t + 1/SECONDS
|
|
||||||
else
|
|
||||||
ip2availability.Remove(cd.address);
|
|
||||||
dec(folderConcurrents);
|
|
||||||
// purge leftovers
|
|
||||||
for pair in ip2availability do
|
|
||||||
if pair.Value < t then
|
|
||||||
ip2availability.Remove(pair.Key);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function available():boolean;
|
|
||||||
begin
|
|
||||||
if ip2availability = NIL then
|
|
||||||
ip2availability:=Tdictionary<string,Tdatetime>.create();
|
|
||||||
try
|
|
||||||
if ip2availability[cd.address] > now() then // this specific address has to wait?
|
|
||||||
exit(FALSE);
|
|
||||||
except
|
|
||||||
end;
|
|
||||||
if folderConcurrents >= MAX_CONCURRENTS then // max number of concurrent folder loading, others are postponed
|
|
||||||
exit(FALSE);
|
|
||||||
inc(folderConcurrents);
|
|
||||||
ip2availability.AddOrSetValue(cd.address, now()+1);
|
|
||||||
result:=TRUE;
|
|
||||||
end; // available
|
|
||||||
|
|
||||||
var
|
var
|
||||||
i, n: integer;
|
i, n: integer;
|
||||||
f: Tfile;
|
f: Tfile;
|
||||||
useList: boolean;
|
useList: boolean;
|
||||||
mainSection: PtplSection;
|
mainSection: PtplSection;
|
||||||
|
antiDos: TantiDos;
|
||||||
begin
|
begin
|
||||||
result:='';
|
result:='';
|
||||||
if (folder = NIL) or not folder.isFolder() then exit;
|
if (folder = NIL) or not folder.isFolder() then exit;
|
||||||
|
|
||||||
if macrosLogChk.checked and not appendmacroslog1.checked then
|
|
||||||
resetLog();
|
|
||||||
diffTpl:=Ttpl.create();
|
diffTpl:=Ttpl.create();
|
||||||
folder.lock();
|
folder.lock();
|
||||||
try
|
try
|
||||||
buildTime:=now();
|
buildTime:=now();
|
||||||
cd.conn.addHeader('Cache-Control: no-cache, no-store, must-revalidate, max-age=-1');
|
cd.conn.setHeaderIfNone('Cache-Control: no-cache, no-store, must-revalidate, max-age=-1');
|
||||||
recur:=shouldRecur(cd);
|
recur:=shouldRecur(cd);
|
||||||
baseurl:=protoColon()+getSafeHost(cd)+folder.url(TRUE);
|
baseurl:=protoColon()+getSafeHost(cd)+folder.url(TRUE);
|
||||||
|
|
||||||
@ -3677,12 +3647,9 @@ try
|
|||||||
exit;
|
exit;
|
||||||
useList:=not mainSection.noList;
|
useList:=not mainSection.noList;
|
||||||
|
|
||||||
if useList and not available() then
|
antiDos:=TantiDos.create();
|
||||||
begin
|
if useList and not antiDos.accept(cd.conn, cd.address) then
|
||||||
cd.conn.reply.mode:=HRM_OVERLOAD;
|
exit(cd.conn.reply.body);
|
||||||
cd.conn.addHeader('Refresh: '+intToStr(1+random(2))); // random for less collisions
|
|
||||||
exit('Please wait, server busy');
|
|
||||||
end;
|
|
||||||
|
|
||||||
fullEncode:=FALSE;
|
fullEncode:=FALSE;
|
||||||
ofsRelUrl:=length(folder.url(fullEncode))+1;
|
ofsRelUrl:=length(folder.url(fullEncode))+1;
|
||||||
@ -3792,8 +3759,7 @@ try
|
|||||||
result:=replaceText(result, '%build-time%',
|
result:=replaceText(result, '%build-time%',
|
||||||
floatToStrF((now()-buildTime)*SECONDS, ffFixed, 7,3) );
|
floatToStrF((now()-buildTime)*SECONDS, ffFixed, 7,3) );
|
||||||
finally
|
finally
|
||||||
if useList then
|
freeAndNIL(antiDos);
|
||||||
updateAvailability();
|
|
||||||
folder.unlock();
|
folder.unlock();
|
||||||
diffTpl.free;
|
diffTpl.free;
|
||||||
end;
|
end;
|
||||||
@ -4040,9 +4006,9 @@ if result then
|
|||||||
conn.reply.mode:=HRM_NOT_MODIFIED;
|
conn.reply.mode:=HRM_NOT_MODIFIED;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
conn.addHeader('ETag: '+UTF8encode(etag));
|
conn.setHeaderIfNone('ETag: '+UTF8encode(etag));
|
||||||
if ts > '' then
|
if ts > '' then
|
||||||
conn.addHeader('Last-Modified: '+UTF8encode(ts));
|
conn.setHeaderIfNone('Last-Modified: '+UTF8encode(ts));
|
||||||
end; // notModified
|
end; // notModified
|
||||||
|
|
||||||
function notModified(conn:ThttpConn; f:string):boolean; overload;
|
function notModified(conn:ThttpConn; f:string):boolean; overload;
|
||||||
@ -4473,7 +4439,7 @@ end; // apacheLogCb
|
|||||||
procedure removeFilesFromComments(files:TStringDynArray);
|
procedure removeFilesFromComments(files:TStringDynArray);
|
||||||
var
|
var
|
||||||
fn, lastPath, path: string;
|
fn, lastPath, path: string;
|
||||||
trancheStart, trancheEnd: integer; // the tranche is a window within 'files' of items sharing the same path
|
trancheStart, trancheEnd: integer; // the tranche is a window within 'selection' of items sharing the same path
|
||||||
ss: TstringList;
|
ss: TstringList;
|
||||||
|
|
||||||
procedure doTheTranche();
|
procedure doTheTranche();
|
||||||
@ -4572,13 +4538,17 @@ resourcestring
|
|||||||
MSG_TPL_INCOMPATIBLE = 'The template you are trying to load is not compatible with current HFS version.'
|
MSG_TPL_INCOMPATIBLE = 'The template you are trying to load is not compatible with current HFS version.'
|
||||||
+#13'HFS will now use default template.'
|
+#13'HFS will now use default template.'
|
||||||
+#13'Ask on the forum if you need further help.';
|
+#13'Ask on the forum if you need further help.';
|
||||||
|
var
|
||||||
|
sec: PtplSection;
|
||||||
begin
|
begin
|
||||||
result:=FALSE; // mod by mars
|
result:=FALSE; // mod by mars
|
||||||
//patch290();
|
//patch290();
|
||||||
if trim(text) = trim(defaultTpl.fullText) then
|
if trim(text) = trim(defaultTpl.fullText) then
|
||||||
text:='';
|
text:='';
|
||||||
tpl.fullText:=text;
|
tpl.fullText:=text;
|
||||||
if tpl.sectionExist('unauthorized') then
|
sec:=tpl.getSection('api level', FALSE);
|
||||||
|
if (text>'')
|
||||||
|
and ((sec=NIL) or (strToIntDef(sec.txt.trim,0) < 2)) then
|
||||||
begin
|
begin
|
||||||
tpl.fullText:='';
|
tpl.fullText:='';
|
||||||
tplFilename:='';
|
tplFilename:='';
|
||||||
@ -4970,8 +4940,8 @@ var
|
|||||||
var s:ansistring;
|
var s:ansistring;
|
||||||
begin
|
begin
|
||||||
s:=ansistring(HSlib.encodeURL(data.lastFN));
|
s:=ansistring(HSlib.encodeURL(data.lastFN));
|
||||||
conn.addHeader( ansistring('Content-Disposition: '+if_(attach, 'attachment; ')
|
conn.setHeaderIfNone( ansistring('Content-Disposition: '+if_(attach, 'attachment; ')
|
||||||
+'filename*=UTF-8''''"'+s+'"; filename="'+s+'"'));
|
+'filename*=UTF-8'''''+s+'; filename='+s));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function sessionRedirect():boolean;
|
function sessionRedirect():boolean;
|
||||||
@ -5038,15 +5008,28 @@ var
|
|||||||
begin
|
begin
|
||||||
result:=NIL;
|
result:=NIL;
|
||||||
for i:=0 to data.postvars.count-1 do
|
for i:=0 to data.postvars.count-1 do
|
||||||
if sameText('files', data.postvars.names[i]) then
|
if sameText('selection', data.postvars.names[i]) then
|
||||||
addString(getTill('#', data.postvars.valueFromIndex[i]), result) // omit #anchors
|
addString(getTill('#', data.postvars.valueFromIndex[i]), result) // omit #anchors
|
||||||
end; // getFilesSelection
|
end; // getFilesSelection
|
||||||
|
|
||||||
|
function possibleCSRF():boolean;
|
||||||
|
var s: string;
|
||||||
|
begin
|
||||||
|
s:= conn.getHeader('origin');
|
||||||
|
result:=(s > '') and not s.endsWith( conn.getHeader('Host'))
|
||||||
|
end; // possibleCSRF
|
||||||
|
|
||||||
procedure serveTar();
|
procedure serveTar();
|
||||||
var
|
var
|
||||||
tar: TtarStream;
|
tar: TtarStream;
|
||||||
nofolders, selection, itsAsearch: boolean;
|
nofolders, selection, itsAsearch: boolean;
|
||||||
|
|
||||||
|
procedure addToTar(src,dst:string);
|
||||||
|
begin
|
||||||
|
if not selection or not tar.contains(src) then
|
||||||
|
tar.addFile(src, dst);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure addFolder(f:Tfile; ignoreConnFilters:boolean=FALSE);
|
procedure addFolder(f:Tfile; ignoreConnFilters:boolean=FALSE);
|
||||||
var
|
var
|
||||||
i, ofs: integer;
|
i, ofs: integer;
|
||||||
@ -5059,6 +5042,7 @@ var
|
|||||||
listing:=TfileListing.create();
|
listing:=TfileListing.create();
|
||||||
try
|
try
|
||||||
listing.ignoreConnFilter:=ignoreConnFilters;
|
listing.ignoreConnFilter:=ignoreConnFilters;
|
||||||
|
listing.timeout:= now()+1/MINUTES;
|
||||||
listing.fromFolder( f, data, shouldRecur(data));
|
listing.fromFolder( f, data, shouldRecur(data));
|
||||||
fIsTemp:=f.isTemp();
|
fIsTemp:=f.isTemp();
|
||||||
ofs:=length(f.resource)-length(f.name)+1;
|
ofs:=length(f.resource)-length(f.name)+1;
|
||||||
@ -5080,7 +5064,7 @@ var
|
|||||||
else
|
else
|
||||||
s:=fi.pathTill(f.parent); // we want the path to include also f, so stop at f.parent
|
s:=fi.pathTill(f.parent); // we want the path to include also f, so stop at f.parent
|
||||||
|
|
||||||
tar.addFile(fi.resource, s);
|
addToTar(fi.resource, s);
|
||||||
end
|
end
|
||||||
finally listing.free end;
|
finally listing.free end;
|
||||||
end; // addFolder
|
end; // addFolder
|
||||||
@ -5115,11 +5099,13 @@ var
|
|||||||
t:=substr(s, lastDelimiter('\/', s)+1)
|
t:=substr(s, lastDelimiter('\/', s)+1)
|
||||||
else
|
else
|
||||||
t:=s;
|
t:=s;
|
||||||
tar.addFile(ft.resource, t);
|
addToTar(ft.resource, t);
|
||||||
finally freeIfTemp(ft) end;
|
finally freeIfTemp(ft) end;
|
||||||
end;
|
end;
|
||||||
end; // addSelection
|
end; // addSelection
|
||||||
|
|
||||||
|
var
|
||||||
|
antiDos: TantiDos;
|
||||||
begin
|
begin
|
||||||
if not f.hasRecursive(FA_ARCHIVABLE) then
|
if not f.hasRecursive(FA_ARCHIVABLE) then
|
||||||
begin
|
begin
|
||||||
@ -5135,12 +5121,17 @@ var
|
|||||||
noFolders:=not stringExists(data.postVars.values['nofolders'], ['','0','false']);
|
noFolders:=not stringExists(data.postVars.values['nofolders'], ['','0','false']);
|
||||||
itsAsearch:=data.urlvars.values['search'] > '';
|
itsAsearch:=data.urlvars.values['search'] > '';
|
||||||
|
|
||||||
tar:=TtarStream.create(); // this is freed by ThttpSrv
|
antiDos:=TantiDos.create;
|
||||||
|
try
|
||||||
|
tar:=TtarStream.create();
|
||||||
try
|
try
|
||||||
tar.fileNamesOEM:=oemTarChk.checked;
|
tar.fileNamesOEM:=oemTarChk.checked;
|
||||||
addSelection();
|
addSelection();
|
||||||
if not selection then
|
if not selection then
|
||||||
addFolder(f);
|
if antiDos.accept(data.conn, data.address) then
|
||||||
|
addFolder(f)
|
||||||
|
else
|
||||||
|
exit;
|
||||||
|
|
||||||
if tar.count = 0 then
|
if tar.count = 0 then
|
||||||
begin
|
begin
|
||||||
@ -5153,7 +5144,7 @@ var
|
|||||||
conn.reply.mode:=HRM_REPLY;
|
conn.reply.mode:=HRM_REPLY;
|
||||||
conn.reply.contentType:=DEFAULT_MIME;
|
conn.reply.contentType:=DEFAULT_MIME;
|
||||||
conn.reply.bodyMode:=RBM_STREAM;
|
conn.reply.bodyMode:=RBM_STREAM;
|
||||||
conn.reply.bodyStream:=tar;
|
conn.reply.bodyStream:=tar; // it will be freed by ThttpSrv
|
||||||
|
|
||||||
if f.name = '' then exit; // can this really happen?
|
if f.name = '' then exit; // can this really happen?
|
||||||
data.lastFN:=if_(f.name='/', 'home', f.name)
|
data.lastFN:=if_(f.name='/', 'home', f.name)
|
||||||
@ -5166,7 +5157,10 @@ var
|
|||||||
]), data.lastFN);
|
]), data.lastFN);
|
||||||
if not noContentdispositionChk.checked then
|
if not noContentdispositionChk.checked then
|
||||||
addContentDisposition();
|
addContentDisposition();
|
||||||
except tar.free end;
|
except tar.free
|
||||||
|
end;
|
||||||
|
finally freeAndNIL(antiDos)
|
||||||
|
end;
|
||||||
end; // serveTar
|
end; // serveTar
|
||||||
|
|
||||||
procedure checkCurrentAddress();
|
procedure checkCurrentAddress();
|
||||||
@ -5258,7 +5252,9 @@ var
|
|||||||
begin
|
begin
|
||||||
if (conn.request.method <> HM_POST)
|
if (conn.request.method <> HM_POST)
|
||||||
or (data.postVars.values['action'] <> 'delete')
|
or (data.postVars.values['action'] <> 'delete')
|
||||||
or not accountAllowed(FA_DELETE, data, f) then exit;
|
or not accountAllowed(FA_DELETE, data, f)
|
||||||
|
or possibleCSRF()
|
||||||
|
then exit;
|
||||||
|
|
||||||
doneRes:=NIL;
|
doneRes:=NIL;
|
||||||
errors:=NIL;
|
errors:=NIL;
|
||||||
@ -5346,8 +5342,32 @@ var
|
|||||||
data.user:=acc.user;
|
data.user:=acc.user;
|
||||||
data.pwd:=acc.pwd;
|
data.pwd:=acc.pwd;
|
||||||
data.session.redirect:='.';
|
data.session.redirect:='.';
|
||||||
|
runEventScript('login')
|
||||||
end; //urlAuth
|
end; //urlAuth
|
||||||
|
|
||||||
|
function thumb():Boolean;
|
||||||
|
var
|
||||||
|
b: rawbytestring;
|
||||||
|
s, e: integer;
|
||||||
|
begin
|
||||||
|
if mode <> 'thumb' then
|
||||||
|
exit(FALSE);
|
||||||
|
result:=TRUE;
|
||||||
|
b:=loadFile(f.resource, 0, 96*KILO);
|
||||||
|
s:= pos(rawbytestring(#$FF#$D8#$FF), b, 2);
|
||||||
|
if s > 0 then
|
||||||
|
e:=pos(rawbytestring(#$FF#$D9), b, s);
|
||||||
|
if (s=0) or (e=0) then
|
||||||
|
begin
|
||||||
|
data.conn.reply.mode:=HRM_NOT_FOUND;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
conn.reply.contentType:='image/jpeg';
|
||||||
|
conn.reply.mode:=HRM_REPLY;
|
||||||
|
conn.reply.bodyMode:=RBM_STRING;
|
||||||
|
conn.reply.body:=Copy(b, s, e-s+2);
|
||||||
|
end;
|
||||||
|
|
||||||
var
|
var
|
||||||
b: boolean;
|
b: boolean;
|
||||||
s: string;
|
s: string;
|
||||||
@ -5405,6 +5425,13 @@ var
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
runEventScript('pre-filter-request');
|
runEventScript('pre-filter-request');
|
||||||
|
if conn.disconnectedByServer then
|
||||||
|
exit;
|
||||||
|
if data.disconnectReason > '' then
|
||||||
|
begin
|
||||||
|
getPage('deny', data);
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
|
||||||
if (length(conn.request.user) > 100) or anycharIn('/\:?*<>|', conn.request.user) then
|
if (length(conn.request.user) > 100) or anycharIn('/\:?*<>|', conn.request.user) then
|
||||||
begin
|
begin
|
||||||
@ -5459,12 +5486,17 @@ var
|
|||||||
end
|
end
|
||||||
else
|
else
|
||||||
s:='bad password'; //TODO shouldn't this change http code?
|
s:='bad password'; //TODO shouldn't this change http code?
|
||||||
|
if s='ok' then
|
||||||
|
runEventScript('login')
|
||||||
|
else
|
||||||
|
runEventScript('unauthorized');
|
||||||
replyWithString(s);
|
replyWithString(s);
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
s:=urlAuth();
|
s:=urlAuth();
|
||||||
if s > '' then
|
if s > '' then
|
||||||
begin
|
begin
|
||||||
|
runEventScript('unauthorized');
|
||||||
conn.reply.mode:=HRM_DENY;
|
conn.reply.mode:=HRM_DENY;
|
||||||
replyWithString(s);
|
replyWithString(s);
|
||||||
exit;
|
exit;
|
||||||
@ -5534,7 +5566,7 @@ var
|
|||||||
url:=chop(lastDelimiter('/', urlCmd)+1, 0, urlCmd);
|
url:=chop(lastDelimiter('/', urlCmd)+1, 0, urlCmd);
|
||||||
// we know an urlCmd must begin with ~
|
// we know an urlCmd must begin with ~
|
||||||
// favicon is handled as an urlCmd: we provide HFS icon.
|
// favicon is handled as an urlCmd: we provide HFS icon.
|
||||||
// an non-existent ~file will be detected a hundred lines below.
|
// a non-existent ~file will be detected a hundred lines below.
|
||||||
if ansiStartsStr('~', urlCmd) or (urlCmd = 'favicon.ico') then
|
if ansiStartsStr('~', urlCmd) or (urlCmd = 'favicon.ico') then
|
||||||
f:=findFileByURL(url);
|
f:=findFileByURL(url);
|
||||||
end;
|
end;
|
||||||
@ -5611,7 +5643,7 @@ var
|
|||||||
with tplFromFile(f) do // temporarily builds from diff tpls
|
with tplFromFile(f) do // temporarily builds from diff tpls
|
||||||
try
|
try
|
||||||
section:=getsection(s);
|
section:=getsection(s);
|
||||||
if assigned(section) and not section.nourl then // it has to exist and be accessible
|
if assigned(section) and section.public then // it has to exist and be accessible
|
||||||
begin
|
begin
|
||||||
if not section.cache
|
if not section.cache
|
||||||
or not notModified(conn, s+floatToStr(section.ts), '') then
|
or not notModified(conn, s+floatToStr(section.ts), '') then
|
||||||
@ -5695,6 +5727,9 @@ var
|
|||||||
|
|
||||||
if notModified(conn, f) then // calling notModified before limitsExceededOnDownload makes possible for [download] to manipualate headers set here
|
if notModified(conn, f) then // calling notModified before limitsExceededOnDownload makes possible for [download] to manipualate headers set here
|
||||||
exit;
|
exit;
|
||||||
|
if thumb() then
|
||||||
|
Exit;
|
||||||
|
|
||||||
data.countAsDownload:=f.shouldCountAsDownload();
|
data.countAsDownload:=f.shouldCountAsDownload();
|
||||||
if data.countAsDownload and limitsExceededOnDownload() then
|
if data.countAsDownload and limitsExceededOnDownload() then
|
||||||
exit;
|
exit;
|
||||||
@ -5979,7 +6014,7 @@ case event of
|
|||||||
|
|
||||||
refreshConn(data);
|
refreshConn(data);
|
||||||
end;
|
end;
|
||||||
HE_POST_VAR: data.postVars.add(conn.post.varname+'='+conn.post.data);
|
HE_POST_VAR: data.postVars.add(conn.post.varname+'='+UTF8toString(conn.post.data));
|
||||||
HE_POST_VARS:
|
HE_POST_VARS:
|
||||||
if conn.post.mode = PM_URLENCODED then
|
if conn.post.mode = PM_URLENCODED then
|
||||||
urlToStrings(conn.post.data, data.postVars);
|
urlToStrings(conn.post.data, data.postVars);
|
||||||
@ -7850,7 +7885,12 @@ finally freeAndNIL(info) end;
|
|||||||
end; // autoCheckUpdates
|
end; // autoCheckUpdates
|
||||||
|
|
||||||
procedure loadEvents();
|
procedure loadEvents();
|
||||||
begin eventScripts.fullText:=loadTextFile(cfgpath+EVENTSCRIPTS_FILE) end;
|
begin
|
||||||
|
if not newMtime(cfgpath+EVENTSCRIPTS_FILE, eventScriptsLast) then
|
||||||
|
exit;
|
||||||
|
eventScripts.fullText:=loadTextFile(cfgpath+EVENTSCRIPTS_FILE);
|
||||||
|
runEventScript('init');
|
||||||
|
end;
|
||||||
|
|
||||||
procedure Tmainfrm.updateCopyBtn();
|
procedure Tmainfrm.updateCopyBtn();
|
||||||
resourcestring
|
resourcestring
|
||||||
@ -8078,10 +8118,10 @@ var
|
|||||||
|
|
||||||
if userSocketBuffer > 0 then
|
if userSocketBuffer > 0 then
|
||||||
data.conn.sndBuf:=userSocketBuffer
|
data.conn.sndBuf:=userSocketBuffer
|
||||||
else
|
else if highSpeedChk.checked then
|
||||||
begin
|
begin
|
||||||
size:=minmax(8192, MEGA, round(data.averageSpeed));
|
size:=minmax(8192, MEGA, round(data.averageSpeed));
|
||||||
if highSpeedChk.checked and (safeDiv(0.0+size, data.conn.sndbuf, 2) > 2) then
|
if safeDiv(0.0+size, data.conn.sndbuf, 2) > 2 then
|
||||||
data.conn.sndBuf:=size;
|
data.conn.sndBuf:=size;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -8107,8 +8147,6 @@ var
|
|||||||
updateCopyBtn();
|
updateCopyBtn();
|
||||||
keepTplUpdated();
|
keepTplUpdated();
|
||||||
updateCurrentCFG();
|
updateCurrentCFG();
|
||||||
|
|
||||||
if newMtime(cfgpath+EVENTSCRIPTS_FILE, eventScriptsLast) then
|
|
||||||
loadEvents();
|
loadEvents();
|
||||||
|
|
||||||
if assigned(runScriptFrm) and runScriptFrm.visible
|
if assigned(runScriptFrm) and runScriptFrm.visible
|
||||||
@ -8828,10 +8866,30 @@ procedure TmainFrm.appEventsShowHint(var HintStr: String; var CanShow: Boolean;
|
|||||||
MSG_CON_HINT = 'Connection time: %s'#13'Last request time: %s'#13'Agent: %s';
|
MSG_CON_HINT = 'Connection time: %s'#13'Last request time: %s'#13'Agent: %s';
|
||||||
var
|
var
|
||||||
cd: TconnData;
|
cd: TconnData;
|
||||||
|
st: string;
|
||||||
begin
|
begin
|
||||||
cd:=pointedConnection();
|
cd:=pointedConnection();
|
||||||
if assigned(cd) then
|
if assigned(cd) then
|
||||||
result:=format(MSG_CON_HINT, [dateTimeToStr(cd.time), dateTimeToStr(cd.requestTime), first(cd.agent,'<unknown>')])
|
begin
|
||||||
|
if isSendingFile(cd) then
|
||||||
|
st:=format(MSG_CON_SENT, [
|
||||||
|
dotted(cd.conn.bytesSentLastItem),
|
||||||
|
dotted(cd.conn.bytesPartial)
|
||||||
|
])
|
||||||
|
else if isReceivingFile(cd) then
|
||||||
|
st:=format(MSG_CON_received, [
|
||||||
|
dotted(cd.conn.bytesPosted),
|
||||||
|
dotted(cd.conn.post.length)
|
||||||
|
])
|
||||||
|
else
|
||||||
|
st:='';
|
||||||
|
|
||||||
|
result:=format(MSG_CON_HINT, [
|
||||||
|
dateTimeToStr(cd.time),
|
||||||
|
dateTimeToStr(cd.requestTime),
|
||||||
|
first(cd.agent,'<unknown>')
|
||||||
|
])+nonEmptyConcat(#13,st);
|
||||||
|
end
|
||||||
else
|
else
|
||||||
result:=if_(HintsForNewcomersChk.checked, 'This box shows info about current connections');
|
result:=if_(HintsForNewcomersChk.checked, 'This box shows info about current connections');
|
||||||
end;
|
end;
|
||||||
@ -9112,10 +9170,6 @@ var
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
function getStatus():string;
|
function getStatus():string;
|
||||||
resourcestring
|
|
||||||
MSG_CON_PAUSED = 'paused';
|
|
||||||
MSG_CON_SENT = '%s / %s sent';
|
|
||||||
MSG_CON_RECEIVED = '%s / %s received';
|
|
||||||
begin
|
begin
|
||||||
if isSendingFile(data) then
|
if isSendingFile(data) then
|
||||||
begin
|
begin
|
||||||
@ -9123,16 +9177,16 @@ var
|
|||||||
result:=MSG_CON_PAUSED
|
result:=MSG_CON_PAUSED
|
||||||
else
|
else
|
||||||
result:=format(MSG_CON_SENT, [
|
result:=format(MSG_CON_SENT, [
|
||||||
dotted(data.conn.bytesSentLastItem),
|
smartsize(data.conn.bytesSentLastItem),
|
||||||
dotted(data.conn.bytesPartial)
|
smartsize(data.conn.bytesPartial)
|
||||||
]);
|
]);
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
if isReceivingFile(data) then
|
if isReceivingFile(data) then
|
||||||
begin
|
begin
|
||||||
result:=format(MSG_CON_received, [
|
result:=format(MSG_CON_received, [
|
||||||
dotted(data.conn.bytesPosted),
|
smartsize(data.conn.bytesPosted),
|
||||||
dotted(data.conn.post.length)
|
smartsize(data.conn.post.length)
|
||||||
]);
|
]);
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
@ -9562,7 +9616,7 @@ resourcestring
|
|||||||
+#13'It is adviced to stop loading.'
|
+#13'It is adviced to stop loading.'
|
||||||
+#13'Stop?';
|
+#13'Stop?';
|
||||||
MSG_BADCRC = 'This file is corrupted (CRC).';
|
MSG_BADCRC = 'This file is corrupted (CRC).';
|
||||||
MSG_NEWER='This file has been created with a newer and incompatible version.';
|
MSG_NEWER_INCOMP='This file has been created with a newer and incompatible version.';
|
||||||
MSG_ZLIB = 'This file is corrupted (ZLIB).';
|
MSG_ZLIB = 'This file is corrupted (ZLIB).';
|
||||||
MSG_BAKAVAILABLE = 'This file is corrupted but a backup is available.'#13'Continue with backup?';
|
MSG_BAKAVAILABLE = 'This file is corrupted but a backup is available.'#13'Continue with backup?';
|
||||||
|
|
||||||
@ -9649,7 +9703,7 @@ while not tlv.isOver() do
|
|||||||
after.resetLetBrowse:=TRUE;
|
after.resetLetBrowse:=TRUE;
|
||||||
end;
|
end;
|
||||||
if (int_(data) > CURRENT_VFS_FORMAT)
|
if (int_(data) > CURRENT_VFS_FORMAT)
|
||||||
and (msgDlg(MSG_NEWER+MSG_BETTERSTOP, MB_ICONERROR+MB_YESNO) = IDYES) then
|
and (msgDlg(MSG_NEWER_INCOMP+MSG_BETTERSTOP, MB_ICONERROR+MB_YESNO) = IDYES) then
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
FK_CRC:
|
FK_CRC:
|
||||||
@ -11846,7 +11900,6 @@ if menu.items.find(logmenu.items.caption) = NIL then
|
|||||||
SwitchON1.imageIndex:=if_(srv.active, 11, 4);
|
SwitchON1.imageIndex:=if_(srv.active, 11, 4);
|
||||||
SwitchON1.caption:=if_(srv.active, S_OFF, S_ON);
|
SwitchON1.caption:=if_(srv.active, S_OFF, S_ON);
|
||||||
|
|
||||||
Appendmacroslog1.Enabled:=macrosLogChk.checked;
|
|
||||||
stopSpidersChk.Enabled:=not fileExistsByURL('/robots.txt');
|
stopSpidersChk.Enabled:=not fileExistsByURL('/robots.txt');
|
||||||
Showbandwidthgraph1.visible:=not graphBox.visible;
|
Showbandwidthgraph1.visible:=not graphBox.visible;
|
||||||
if bakShellMenuText='' then
|
if bakShellMenuText='' then
|
||||||
@ -12071,7 +12124,7 @@ tray:=TmyTrayicon.create(self);
|
|||||||
DragAcceptFiles(handle, true);
|
DragAcceptFiles(handle, true);
|
||||||
caption:=format('HFS ~ HTTP File Server %s', [VERSION]);
|
caption:=format('HFS ~ HTTP File Server %s', [VERSION]);
|
||||||
application.Title:=format('HFS %s', [VERSION]);
|
application.Title:=format('HFS %s', [VERSION]);
|
||||||
setSpeedLimit(-1);
|
setSpeedLimit(50000);
|
||||||
setSpeedLimitIP(-1);
|
setSpeedLimitIP(-1);
|
||||||
setGraphRate(10);
|
setGraphRate(10);
|
||||||
setMaxConnections(0);
|
setMaxConnections(0);
|
||||||
|
|||||||
@ -161,16 +161,18 @@ var
|
|||||||
procedure deprecatedMacro(what:string=''; instead:string='');
|
procedure deprecatedMacro(what:string=''; instead:string='');
|
||||||
begin mainfrm.add2log('WARNING, deprecated macro: '+first(what, name)+nonEmptyConcat(' - Use instead: ',instead), NIL, clRed) end;
|
begin mainfrm.add2log('WARNING, deprecated macro: '+first(what, name)+nonEmptyConcat(' - Use instead: ',instead), NIL, clRed) end;
|
||||||
|
|
||||||
|
procedure unsatisfied(b:boolean=TRUE);
|
||||||
|
begin
|
||||||
|
if b then
|
||||||
|
macroError('cannot be used here')
|
||||||
|
end;
|
||||||
|
|
||||||
function satisfied(p:pointer):boolean;
|
function satisfied(p:pointer):boolean;
|
||||||
begin
|
begin
|
||||||
result:=assigned(p);
|
result:=assigned(p);
|
||||||
if not result then
|
unsatisfied(not result);
|
||||||
macroError('cannot be used here');
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure unsatisfied(b:boolean=TRUE);
|
|
||||||
begin if b then macroError('cannot be used here') end;
|
|
||||||
|
|
||||||
function parEx(idx:integer; name:string=''; doTrim:boolean=TRUE):string; overload;
|
function parEx(idx:integer; name:string=''; doTrim:boolean=TRUE):string; overload;
|
||||||
var
|
var
|
||||||
i: integer;
|
i: integer;
|
||||||
@ -262,9 +264,9 @@ var
|
|||||||
result:=staticVars;
|
result:=staticVars;
|
||||||
delete(varname,1,length(G_VAR_PREFIX));
|
delete(varname,1,length(G_VAR_PREFIX));
|
||||||
end
|
end
|
||||||
else if satisfied(md.cd) then
|
else if assigned(md.cd) then
|
||||||
result:=md.cd.vars
|
result:=md.cd.vars
|
||||||
else if satisfied(md.tempVars) then
|
else if assigned(md.tempVars) then
|
||||||
result:=md.tempVars
|
result:=md.tempVars
|
||||||
else
|
else
|
||||||
raise Exception.create('no namespace available');
|
raise Exception.create('no namespace available');
|
||||||
@ -293,7 +295,7 @@ var
|
|||||||
if not satisfied(space) then exit;
|
if not satisfied(space) then exit;
|
||||||
i:=space.indexOfName(varname);
|
i:=space.indexOfName(varname);
|
||||||
if i < 0 then
|
if i < 0 then
|
||||||
if value = '' then exit // all is good the way it is
|
if value = '' then exit(TRUE) // all is good the way it is
|
||||||
else i:=space.add(varname+'='+value)
|
else i:=space.add(varname+'='+value)
|
||||||
else
|
else
|
||||||
if value > '' then // in case of empty value, there's no need to assign, because we are going to delete it (after we cleared the bound object)
|
if value > '' then // in case of empty value, there's no need to assign, because we are going to delete it (after we cleared the bound object)
|
||||||
@ -660,8 +662,11 @@ var
|
|||||||
|
|
||||||
procedure inc_(v:integer=+1);
|
procedure inc_(v:integer=+1);
|
||||||
begin
|
begin
|
||||||
|
try
|
||||||
|
setVar(p, intToStr(strToIntDef(getVar(p),0)+v*parI(1,1)));
|
||||||
result:='';
|
result:='';
|
||||||
try setVar(p, intToStr(strToIntDef(getVar(p),0)+v*parI(1,1))) except end;
|
except
|
||||||
|
end;
|
||||||
end; // inc_
|
end; // inc_
|
||||||
|
|
||||||
procedure convert();
|
procedure convert();
|
||||||
@ -688,7 +693,9 @@ var
|
|||||||
result:='';
|
result:='';
|
||||||
for c in UTF8encode(s) do
|
for c in UTF8encode(s) do
|
||||||
result:=result+intToHex(ord(c));
|
result:=result+intToHex(ord(c));
|
||||||
end
|
end;
|
||||||
|
if isFalse(par('macros')) then
|
||||||
|
result:=noMacrosAllowed(result);
|
||||||
end; // convert
|
end; // convert
|
||||||
|
|
||||||
procedure encodeuri();
|
procedure encodeuri();
|
||||||
@ -950,9 +957,9 @@ var
|
|||||||
i: integer;
|
i: integer;
|
||||||
begin
|
begin
|
||||||
code:=macroDequote(par(pars.count-1));
|
code:=macroDequote(par(pars.count-1));
|
||||||
|
lines:=TStringList.create();
|
||||||
with TfastStringAppend.create do
|
with TfastStringAppend.create do
|
||||||
try
|
try
|
||||||
lines:=TStringList.create();
|
|
||||||
lines.text:= getVar(par('var'));
|
lines.text:= getVar(par('var'));
|
||||||
for line in lines do
|
for line in lines do
|
||||||
begin
|
begin
|
||||||
@ -1225,19 +1232,19 @@ var
|
|||||||
'information=64'
|
'information=64'
|
||||||
);
|
);
|
||||||
var
|
var
|
||||||
i, j, code: integer;
|
code: integer;
|
||||||
decode: TStringDynArray;
|
decode: TStringDynArray;
|
||||||
s: string;
|
s, d: string;
|
||||||
buttons, icon: boolean;
|
buttons, icon: boolean;
|
||||||
begin
|
begin
|
||||||
decode:=split(' ',par(1));
|
decode:=split(' ',par(1));
|
||||||
code:=0;
|
code:=0;
|
||||||
for i:=0 to length(decode)-1 do
|
for d in decode do
|
||||||
for j:=1 to length(STR2CODE) do
|
for s in STR2CODE do
|
||||||
|
if startsStr(d+'=', s) then
|
||||||
begin
|
begin
|
||||||
s:=STR2CODE[j];
|
inc(code, strToIntDef(substr(s, 2+d.length), 0));
|
||||||
if ansiStartsStr(decode[i], s) then
|
Break
|
||||||
inc(code, strToIntDef(substr(s, 1+pos('=',s)), 0));
|
|
||||||
end;
|
end;
|
||||||
buttons:=code AND 15 > 0;
|
buttons:=code AND 15 > 0;
|
||||||
icon:=code SHR 4 > 0;
|
icon:=code SHR 4 > 0;
|
||||||
@ -1367,19 +1374,20 @@ var
|
|||||||
if not satisfied(space) then exit;
|
if not satisfied(space) then exit;
|
||||||
// set the table variable as text
|
// set the table variable as text
|
||||||
v:=par(1);
|
v:=par(1);
|
||||||
space.values[p]:=nonEmptyConcat('', space.values[p], CRLF)+v;
|
|
||||||
// access the table object
|
// access the table object
|
||||||
i:=space.indexOfName(p);
|
i:=space.indexOfName(p);
|
||||||
h:=space.objects[i] as THashedStringList;
|
if i < 0 then
|
||||||
if h = NIL then
|
|
||||||
begin
|
begin
|
||||||
h:=ThashedStringList.create();
|
h:=ThashedStringList.create();
|
||||||
space.objects[i]:=h;
|
space.AddPair(p, v, h);
|
||||||
end;
|
end
|
||||||
|
else
|
||||||
|
h:=space.objects[i] as THashedStringList;
|
||||||
// fill the object
|
// fill the object
|
||||||
k:=chop('=',v);
|
k:=chop('=',v);
|
||||||
v:=macroDequote(v);
|
v:=macroDequote(v);
|
||||||
h.values[k]:=v;
|
h.values[k]:=v;
|
||||||
|
space.values[p]:=h.text;
|
||||||
end; // setTable
|
end; // setTable
|
||||||
|
|
||||||
procedure disconnect();
|
procedure disconnect();
|
||||||
@ -1472,7 +1480,8 @@ var
|
|||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
a:=findEnabledLinkedAccount(a, split(';',s));
|
a:=findEnabledLinkedAccount(a, split(';',s));
|
||||||
if assigned(a) then result:=a.user;
|
if assigned(a) then
|
||||||
|
result:=a.user;
|
||||||
end; // memberOf
|
end; // memberOf
|
||||||
|
|
||||||
procedure canArchive(f:Tfile);
|
procedure canArchive(f:Tfile);
|
||||||
@ -1957,10 +1966,7 @@ try
|
|||||||
begin
|
begin
|
||||||
try
|
try
|
||||||
if isFalse(parEx('if')) then
|
if isFalse(parEx('if')) then
|
||||||
begin
|
exit('');
|
||||||
result:='';
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
except end;
|
except end;
|
||||||
result:=md.cd.disconnectReason; // return the previous state
|
result:=md.cd.disconnectReason; // return the previous state
|
||||||
if pars.count > 0 then md.cd.disconnectReason:=p;
|
if pars.count > 0 then md.cd.disconnectReason:=p;
|
||||||
@ -1997,7 +2003,11 @@ try
|
|||||||
if name = 'base64' then
|
if name = 'base64' then
|
||||||
result:=string(base64encode(UTF8encode(p)));
|
result:=string(base64encode(UTF8encode(p)));
|
||||||
if name = 'base64decode' then
|
if name = 'base64decode' then
|
||||||
|
begin
|
||||||
result:=utf8ToString(base64decode(ansistring(p)));
|
result:=utf8ToString(base64decode(ansistring(p)));
|
||||||
|
if isFalse(par('macros')) then
|
||||||
|
result:=noMacrosAllowed(result);
|
||||||
|
end;
|
||||||
if name = 'md5' then
|
if name = 'md5' then
|
||||||
result:=strMD5(p);
|
result:=strMD5(p);
|
||||||
if name = 'sha1' then
|
if name = 'sha1' then
|
||||||
@ -2076,7 +2086,7 @@ try
|
|||||||
encodeuri();
|
encodeuri();
|
||||||
|
|
||||||
if name = 'decodeuri' then
|
if name = 'decodeuri' then
|
||||||
result:=decodeURL(ansistring(p));
|
result:=noMacrosAllowed(decodeURL(ansistring(p)));
|
||||||
|
|
||||||
if name = 'set cfg' then
|
if name = 'set cfg' then
|
||||||
trueIf(mainfrm.setcfg(p));
|
trueIf(mainfrm.setcfg(p));
|
||||||
|
|||||||
8
todo.txt
8
todo.txt
@ -29,12 +29,15 @@ document: {.if|var}
|
|||||||
document: {.exec|out|timeout|exitcode.}
|
document: {.exec|out|timeout|exitcode.}
|
||||||
document: [+section]
|
document: [+section]
|
||||||
document: {.set item|diff template.}
|
document: {.set item|diff template.}
|
||||||
|
document: {.add header|overwrite=0.}
|
||||||
document: {.calc| ][ }
|
document: {.calc| ][ }
|
||||||
document: single line diff templates (file path)
|
document: single line diff templates (file path)
|
||||||
document: {.disconnection reason|if=XXX.}
|
document: {.disconnection reason|if=XXX.}
|
||||||
document: %url%
|
document: %url%
|
||||||
document: commands returning white space: add folder, save, set account, exec, mkdir, chdir, delete, rename, move copy, set
|
document: commands returning white space: add folder, save, set account, exec, mkdir, chdir, delete, rename, move copy, set
|
||||||
document: dir, disk free, filetime, file changed, load tpl, sha256, for line
|
document: pipe, base64, base64decode, dir, disk free, filetime, file changed, load tpl, sha256, for line
|
||||||
|
document {.convert|macros|dec|hex.}
|
||||||
|
document: new event [login]
|
||||||
+ event to filter logging http://www.rejetto.com/forum/index.php/topic,9784.0.html
|
+ event to filter logging http://www.rejetto.com/forum/index.php/topic,9784.0.html
|
||||||
- wrong browser http://www.rejetto.com/forum/index.php/topic,9710.0.html
|
- wrong browser http://www.rejetto.com/forum/index.php/topic,9710.0.html
|
||||||
solution:
|
solution:
|
||||||
@ -52,8 +55,7 @@ document: dir, disk free, filetime, file changed, load tpl, sha256, for line
|
|||||||
? in getPage() many %symbols% are translated in a way incompatible with {.section.}
|
? in getPage() many %symbols% are translated in a way incompatible with {.section.}
|
||||||
? Windows Script Interfaces
|
? Windows Script Interfaces
|
||||||
? {.image|src=file|width=x|dst=outfile.}
|
? {.image|src=file|width=x|dst=outfile.}
|
||||||
+ replace /~imgXX with ?mode=icon&id=XX
|
+ user input through {.dialog.} or similar
|
||||||
+ user input through {.dialog.}
|
|
||||||
+ show missing files in VFS http://www.rejetto.com/forum/index.php/topic,8203.new.html
|
+ show missing files in VFS http://www.rejetto.com/forum/index.php/topic,8203.new.html
|
||||||
* {.cache.} should be able to work on a simple variable
|
* {.cache.} should be able to work on a simple variable
|
||||||
+ plugins system http://www.rejetto.com/wiki/index.php/HFS:_plugins_design
|
+ plugins system http://www.rejetto.com/wiki/index.php/HFS:_plugins_design
|
||||||
|
|||||||
26
utillib.pas
26
utillib.pas
@ -2220,7 +2220,7 @@ const
|
|||||||
var
|
var
|
||||||
sa : TSecurityAttributes;
|
sa : TSecurityAttributes;
|
||||||
ReadPipe,WritePipe : THandle;
|
ReadPipe,WritePipe : THandle;
|
||||||
start : TStartUpInfoA;
|
start : TStartUpInfoW;
|
||||||
ProcessInfo : TProcessInformation;
|
ProcessInfo : TProcessInformation;
|
||||||
Buffer : Pansichar;
|
Buffer : Pansichar;
|
||||||
TotalBytesRead,
|
TotalBytesRead,
|
||||||
@ -2251,7 +2251,7 @@ else
|
|||||||
timeout:=now()+timeout/SECONDS;
|
timeout:=now()+timeout/SECONDS;
|
||||||
// Create a Console Child Process with redirected input and output
|
// Create a Console Child Process with redirected input and output
|
||||||
try
|
try
|
||||||
if CreateProcessA(nil, PansiChar(ansistring(DosApp)), @sa, @sa, true, CREATE_NO_WINDOW or NORMAL_PRIORITY_CLASS, nil, nil, start, ProcessInfo) then
|
if CreateProcess(nil, PChar(dosApp), @sa, @sa, true, CREATE_NO_WINDOW or NORMAL_PRIORITY_CLASS, nil, nil, start, ProcessInfo) then
|
||||||
repeat
|
repeat
|
||||||
result:=TRUE;
|
result:=TRUE;
|
||||||
// wait for end of child process
|
// wait for end of child process
|
||||||
@ -2261,16 +2261,22 @@ try
|
|||||||
// so that the pipe is not blocked by an overflow. New information
|
// so that the pipe is not blocked by an overflow. New information
|
||||||
// can be written from the console app to the pipe only if there is
|
// can be written from the console app to the pipe only if there is
|
||||||
// enough buffer space.
|
// enough buffer space.
|
||||||
if not PeekNamedPipe(ReadPipe, @Buffer[TotalBytesRead], ReadBuffer,
|
if not PeekNamedPipe(ReadPipe, @Buffer[TotalBytesRead], ReadBuffer, @BytesRead, @TotalBytesAvail, @BytesLeftThisMessage )
|
||||||
@BytesRead, @TotalBytesAvail, @BytesLeftThisMessage ) then
|
or (BytesRead > 0) and not ReadFile(ReadPipe, Buffer[TotalBytesRead], BytesRead, BytesRead, nil ) then
|
||||||
break
|
break;
|
||||||
else if BytesRead > 0 then
|
|
||||||
ReadFile(ReadPipe, Buffer[TotalBytesRead], BytesRead, BytesRead, nil );
|
|
||||||
inc(TotalBytesRead, BytesRead);
|
inc(TotalBytesRead, BytesRead);
|
||||||
until (Apprunning <> WAIT_TIMEOUT) or (now() >= timeout);
|
until (Apprunning <> WAIT_TIMEOUT) or (now() >= timeout);
|
||||||
|
if IsTextUnicode(Buffer, TotalBytesRead, NIL) then
|
||||||
|
begin
|
||||||
|
Pchar(@Buffer[TotalBytesRead])^:= #0;
|
||||||
|
output:=pchar(Buffer)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
Buffer[TotalBytesRead]:= #0;
|
Buffer[TotalBytesRead]:= #0;
|
||||||
OemToCharA(PansiChar(Buffer),Buffer);
|
OemToCharA(Buffer,Buffer);
|
||||||
output:=string(ansistrings.strPas(Buffer));
|
output:=string(ansistrings.strPas(Buffer));
|
||||||
|
end;
|
||||||
finally
|
finally
|
||||||
GetExitCodeProcess(ProcessInfo.hProcess, exitcode);
|
GetExitCodeProcess(ProcessInfo.hProcess, exitcode);
|
||||||
TerminateProcess(ProcessInfo.hProcess, 0);
|
TerminateProcess(ProcessInfo.hProcess, 0);
|
||||||
@ -2576,7 +2582,8 @@ var
|
|||||||
i:=mImp+dir;
|
i:=mImp+dir;
|
||||||
repeat
|
repeat
|
||||||
j:=i+dir;
|
j:=i+dir;
|
||||||
if (j > 0) and (j <= length(s)) and charInSet(s[j], ['0'..'9','.']) then
|
if (j > 0) and (j <= length(s))
|
||||||
|
and (charInSet(s[j], ['0'..'9','.','E']) or (j>1) and charInSet(s[j],['+','-']) and (s[j-1]='E')) then
|
||||||
i:=j
|
i:=j
|
||||||
else
|
else
|
||||||
break;
|
break;
|
||||||
@ -2606,6 +2613,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
if (i = 1) // a starting operator is not an operator
|
if (i = 1) // a starting operator is not an operator
|
||||||
|
or (s[i-1]='E') // exponential syntax
|
||||||
or (v <= mImpV) // left-to-right precedence
|
or (v <= mImpV) // left-to-right precedence
|
||||||
then continue;
|
then continue;
|
||||||
// we got a better one, record it
|
// we got a better one, record it
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user