Compare commits

..

No commits in common. "master" and "v2.4-beta08" have entirely different histories.

21 changed files with 1479 additions and 3100 deletions

1
.gitignore vendored
View File

@ -3,7 +3,6 @@ __history/
__recovery/ __recovery/
win32/ win32/
.vscode/ .vscode/
.idea/
*.vfs *.vfs
*.dcu *.dcu
*.exe *.exe

View File

@ -1,26 +1,5 @@
# 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
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.
It also differs from classic web servers because it's very easy to use and runs "right out-of-the box". It also differs from classic web servers because it's very easy to use and runs "right out-of-the box".
The virtual file system will allow you to easily share even one single file. The virtual file system will allow you to easily share even one single file.
## Dev notes
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.
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
- [ICS v8.64](http://www.overbyte.be) by François PIETTE
- [TRegExpr v0.952b](https://github.com/andgineer/TRegExpr/releases) by Andrey V. Sorokin
- [JEDI Code Library v2.7](https://github.com/project-jedi/jcl)
- [Kryvich's Delphi Localizer v4.1](http://sites.google.com/site/kryvich)

View File

@ -1,5 +1,5 @@
{ {
Copyright (C) 2002-2020 Massimo Melina (www.rejetto.com) Copyright (C) 2002-2012 Massimo Melina (www.rejetto.com)
This file is part of HFS ~ HTTP File Server. This file is part of HFS ~ HTTP File Server.
@ -27,16 +27,6 @@ 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;
@ -99,7 +89,6 @@ 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;
@ -150,7 +139,7 @@ type
PtplSection = ^TtplSection; PtplSection = ^TtplSection;
TtplSection = record TtplSection = record
name, txt: string; name, txt: string;
nolog, public, noList, cache: boolean; nolog, nourl, cache: boolean;
ts: Tdatetime; ts: Tdatetime;
end; end;
@ -203,7 +192,7 @@ type
ThttpClient = class(TSslHttpCli) ThttpClient = class(TSslHttpCli)
constructor Create(AOwner: TComponent); override; constructor Create(AOwner: TComponent); override;
destructor Destroy; override; destructor destroy;
class function createURL(url:string):ThttpClient; class function createURL(url:string):ThttpClient;
end; end;
@ -232,70 +221,6 @@ 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)
@ -313,11 +238,11 @@ agent:=HFS_HTTP_AGENT;
SslContext := TSslContext.Create(NIL); SslContext := TSslContext.Create(NIL);
end; // create end; // create
destructor ThttpClient.Destroy; destructor ThttpClient.destroy;
begin begin
SslContext.free; SslContext.free;
SslContext:=NIl; SslContext:=NIl;
inherited destroy; inherited;
end; end;
constructor TperIp.create(); constructor TperIp.create();
@ -525,16 +450,6 @@ 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;
@ -859,12 +774,10 @@ var
var var
i, posBak: int64; i, posBak: int64;
n: integer;
begin begin
posBak:=pos; posBak:=pos;
p:=@buffer; p:=@buffer;
n:=length(flist); while (count > 0) and (cur < length(flist)) do
while (count > 0) and (cur < n) do
case where of case where of
TW_HEADER: TW_HEADER:
begin begin
@ -1028,7 +941,7 @@ if sections.containsKey(section) then
result:=sections[section] result:=sections[section]
else else
result:=NIL; result:=NIL;
if inherit and assigned(over) and (result = NIL) then if inherit and assigned(over) and ((result = NIL) or (trim(result.txt) = '')) then
result:=over.getSection(section); result:=over.getSection(section);
end; // getSection end; // getSection
@ -1043,7 +956,7 @@ else
end; // getTxt end; // getTxt
function Ttpl.getTxtByExt(fileExt:string):string; function Ttpl.getTxtByExt(fileExt:string):string;
begin result:=getTxt('file'+fileExt) end; begin result:=getTxt('file.'+fileExt) end;
procedure Ttpl.fromString(txt:string); procedure Ttpl.fromString(txt:string);
var var
@ -1092,53 +1005,13 @@ var
end; // findNextSection end; // findNextSection
procedure saveInSection(); procedure saveInSection();
var
base: TtplSection;
function parseFlagsAndAcceptSection(flags:TStringDynArray):boolean;
var
f, k, v, s: string;
i: integer;
begin
for f in flags do
begin
i:=pos('=',f);
if i = 0 then
begin
if f='no log' then
base.nolog:=TRUE
else if f='public' then
base.public:=TRUE
else if f='no list' then
base.noList:=TRUE
else if f='cache' then
base.cache:=TRUE;
Continue;
end;
k:=copy(f,1,i-1);
v:=copy(f,i+1,MAXINT);
if k = 'build' then
begin
s:=chop('-',v);
if (v > '') and (VERSION_BUILD > v) // max
or (s > '') and (VERSION_BUILD < s) then // min
exit(FALSE);
end
else if k = 'ver' then
if fileMatch(v, VERSION) then continue
else exit(FALSE)
else if k = 'template' then
if fileMatch(v, getTill(#13,getTxt('template id'))) then continue
else exit(FALSE)
end;
result:=TRUE;
end;
var var
ss: TStringDynArray; ss: TStringDynArray;
s, si: string; s: string;
i: integer;
base: TtplSection;
till: pchar; till: pchar;
append, prepend, add: boolean; append: boolean;
sect, from: PtplSection; sect, from: PtplSection;
begin begin
till:=pred(bos); till:=pred(bos);
@ -1146,49 +1019,44 @@ var
if till^ = #10 then dec(till); if till^ = #10 then dec(till);
if till^ = #13 then dec(till); if till^ = #13 then dec(till);
base:=default(TtplSection);
base.txt:=getStr(ptxt, till); base.txt:=getStr(ptxt, till);
// there may be flags after |
s:=cur_section;
cur_section:=chop('|', s);
base.nolog:=ansiPos('no log', s) > 0;
base.nourl:=ansiPos('private', s) > 0;
base.cache:=ansiPos('cache', s) > 0;
base.ts:=now(); base.ts:=now();
ss:=split('|',cur_section);
cur_section:=popString(ss);
if not parseFlagsAndAcceptSection(ss) then
exit;
prepend:=startsStr('^', cur_section); s:=cur_section;
append:=startsStr('+', cur_section); append:=ansiStartsStr('+', s);
add:=prepend or append; if append then
if add then delete(s,1,1);
delete(cur_section,1,1);
// there may be several section names separated by = // there may be several section names separated by =
ss:=split('=', cur_section); ss:=split('=', s);
// handle the main section specific case // handle the main section specific case
if ss = NIL then if ss = NIL then addString('', ss);
addString('', ss);
// assign to every name the same txt // assign to every name the same txt
for si in ss do for i:=0 to length(ss)-1 do
begin begin
s:=trim(si); s:=trim(ss[i]);
sect:=getSection(s, FALSE); sect:=getSection(s, FALSE);
from:=NIL; from:=NIL;
if sect = NIL then // not found if sect = NIL then // not found
begin begin
if add then if append then
from:=getSection(s); from:=getSection(s);
sect:=newSection(s); sect:=newSection(s);
end end
else else
if add then if append then
from:=sect; from:=sect;
if from<>NIL then if from<>NIL then
begin // inherit from it begin // inherit from it
if append then sect.txt:=from.txt+base.txt;
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.public:=from.public or base.public; sect.nourl:=from.nourl or base.nourl;
sect.noList:=from.noList or base.noList;
continue; continue;
end; end;
sect^:=base; sect^:=base;
@ -1197,12 +1065,13 @@ var
end; // saveInSection end; // saveInSection
const const
UTF8_BOM = #$EF#$BB#$BF; BOM = #$EF#$BB#$BF;
var var
first: boolean; first: boolean;
begin begin
if ansiStartsStr(UTF8_BOM, txt) then // this is used by some unicode files. at the moment we just ignore it.
delete(txt, 1, length(UTF8_BOM)); if ansiStartsStr(BOM, txt) then
delete(txt, 1, length(BOM));
if txt = '' then exit; if txt = '' then exit;
src:=src+txt; src:=src+txt;

View File

@ -1,7 +1,9 @@
1 24 "WindowsXP.manifest" 1 24 "WindowsXP.manifest"
defaultTpl TEXT default.tpl defaultTpl TEXT default.tpl
dmBrowserTpl TEXT dmBrowser.tpl dmBrowserTpl TEXT dmBrowser.tpl
invertban TEXT invertban.txt
filelistTpl TEXT filelist.tpl filelistTpl TEXT filelist.tpl
uploadHowTo TEXT upload_how.txt
alias TEXT alias.txt alias TEXT alias.txt
IPservices TEXT ipservices.txt IPservices TEXT ipservices.txt
jquery TEXT jquery.min.js jquery TEXT jquery.min.js

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,3 @@
{$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}

9
developer notes.txt Normal file
View File

@ -0,0 +1,9 @@
Initially developed with Delphi 6, now with Delphi 10.3.3
Icons are generated at http://fontello.com/ . Use fontello.json for further modifications.
=== LIBS USED
ICS v8.63 by François PIETTE http://www.overbyte.be
TRegExpr v0.952 by Andrey V. Sorokin http://www.regexpstudio.com/TRegExpr/TRegExpr.html
JEDI Code Library v2.7 https://github.com/project-jedi/jcl
Kryvich's Delphi Localizer v4.1 http://sites.google.com/site/kryvich

View File

@ -206,31 +206,31 @@
</Platforms> </Platforms>
<ModelSupport>False</ModelSupport> <ModelSupport>False</ModelSupport>
<Deployment Version="3"> <Deployment Version="3">
<DeployFile LocalName="hfs.dpr" Configuration="Release" Class="ProjectFile">
<Platform Name="Win32">
<RemoteDir>.\</RemoteDir>
<Enabled>false</Enabled>
<Overwrite>true</Overwrite>
</Platform>
</DeployFile>
<DeployFile LocalName="hfs.exe" Configuration="Debug" Class="ProjectOutput"> <DeployFile LocalName="hfs.exe" Configuration="Debug" Class="ProjectOutput">
<Platform Name="Win32"> <Platform Name="Win32">
<RemoteName>hfs.exe</RemoteName> <RemoteName>hfs.exe</RemoteName>
<Overwrite>true</Overwrite> <Overwrite>true</Overwrite>
</Platform> </Platform>
</DeployFile> </DeployFile>
<DeployFile LocalName="hfs.exe" Configuration="Release" Class="ProjectOutput">
<Platform Name="Win32">
<RemoteName>hfs.exe</RemoteName>
<Overwrite>true</Overwrite>
</Platform>
</DeployFile>
<DeployFile LocalName="hfs.dpr" Configuration="Debug" Class="ProjectFile"> <DeployFile LocalName="hfs.dpr" Configuration="Debug" Class="ProjectFile">
<Platform Name="Win32"> <Platform Name="Win32">
<RemoteDir>.\</RemoteDir> <RemoteDir>.\</RemoteDir>
<Overwrite>true</Overwrite> <Overwrite>true</Overwrite>
</Platform> </Platform>
</DeployFile> </DeployFile>
<DeployFile LocalName="hfs.dpr" Configuration="Release" Class="ProjectFile">
<Platform Name="Win32">
<RemoteDir>.\</RemoteDir>
<Enabled>false</Enabled>
<Overwrite>true</Overwrite>
</Platform>
</DeployFile>
<DeployFile LocalName="hfs.exe" Configuration="Release" Class="ProjectOutput">
<Platform Name="Win32">
<RemoteName>hfs.exe</RemoteName>
<Overwrite>true</Overwrite>
</Platform>
</DeployFile>
<DeployClass Name="AdditionalDebugSymbols"> <DeployClass Name="AdditionalDebugSymbols">
<Platform Name="OSX32"> <Platform Name="OSX32">
<Operation>1</Operation> <Operation>1</Operation>

758
hfs.drc
View File

@ -8,273 +8,133 @@
resources were bound to the produced executable. resources were bound to the produced executable.
*/ */
#define main_MSG_NUM_ADDR 64656 #define main_CAPTION 64800
#define main_MSG_NUM_ADDR_DL 64657 #define main_MSG 64801
#define main_MSG_MAX_LINES 64658 #define main_REMOVE_SHELL 64802
#define main_MSG_APACHE_LOG_FMT 64659 #define main_S_OFF 64803
#define main_MSG_APACHE_LOG_FMT_LONG 64660 #define main_S_ON 64804
#define main_MSG_ICONS_ADDED 64661 #define main_LOG 64805
#define main_MSG_DDNS_DISABLED 64662 #define main_MSG 64806
#define main_MSG_MD5_WARN 64663 #define main_MSG 64807
#define main_MSG_AUTO_MD5 64664 #define main_MSG2 64808
#define main_MSG_AUTO_MD5_LONG 64665 #define main_MSG 64809
#define main_MSG_UPL_HOWTO 64666 #define main_MSG2 64810
#define main_MSG_EVENTS_HLP 64672 #define main_MSG 64811
#define main_MSG_EDIT_RES 64673 #define main_MSG 64812
#define main_MSG_TPL_USE_MACROS 64674 #define main_MSG 64813
#define main_REMOVE_SHELL 64675 #define main_MSG 64814
#define main_S_OFF 64676 #define main_MSG 64816
#define main_S_ON 64677 #define main_MSG 64817
#define main_LOG 64678 #define main_MSG 64818
#define main_MSG_RE_NOIP 64679 #define main_MSG 64819
#define main_MSG_TRAY_DEF 64680 #define main_MSG 64820
#define main_MSG_CLEAN_START 64681 #define main_MSG 64821
#define main_MSG_RESTORE_BAK 64682 #define main_MSG 64822
#define main_MSG_EXT_ADDR_FAIL 64683 #define main_MSG_BEFORE 64823
#define main_MSG_TO_EXPERT 64684 #define main_MSG_OK 64824
#define main_MSG_DONT_LOG_HINT 64685 #define main_MSG_OK_PORT 64825
#define main_MSG_DL_PERC 64686 #define main_MSG_3 64826
#define main_MSG_UNINSTALL_WARN 64687 #define main_MSG_6 64827
#define main_MSG_SELF_3 64688 #define main_MSG_7 64828
#define main_MSG_SELF_6 64689 #define main_MSG 64829
#define main_MSG_SELF_7 64690 #define main_MSG 64830
#define main_MSG_RET_EXT 64691 #define main_HELP 64831
#define main_MSG_SELF_CANT_ON 64692 #define main_MSG_AUTO_DISABLED 64832
#define main_MSG_SELF_CANT_LIST 64693 #define main_MSG_CORRUPTED 64833
#define main_MSG_SELF_CANT_S 64694 #define main_MSG_MACROS_FOUND 64834
#define main_MSG_SELF_ING 64695 #define main_MSG_INFO 64835
#define main_MSG_TEST_CANC 64696 #define main_MSG_NEWER 64836
#define main_MSG_TEST_INET 64697 #define main_ARE_EXPERT 64837
#define main_MSG_SELF_UNAV 64698 #define main_ARE_EASY 64838
#define main_MSG_SELF_NO_INET 64699 #define main_SW2EXPERT 64839
#define main_MSG_SELF_NO_ANSWER 64700 #define main_SW2EASY 64840
#define main_MSG_OPEN_BROW 64701 #define main_MSG 64841
#define main_MSG_OPEN_BROW_LONG 64702 #define main_MSG 64842
#define main_MSG_HIDE_PORT 64703 #define main_MSG 64843
#define main_MSG_RESET_TOT 64704 #define main_MSG 64844
#define main_MSG_DISAB_FIND_EXT 64705 #define main_MSG 64845
#define main_MSG_ENT_URL 64706 #define main_MSG 64846
#define main_MSG_ENT_URL_LONG 64707 #define main_MSG 64847
#define main_MSG_ENT_USR 64708 #define main_ZEROMSG 64848
#define main_MSG_ENT_PWD 64709 #define main_LIMIT 64849
#define main_MSG_ENT_HOST 64710 #define main_MSG_MAX_BW_1 64850
#define main_MSG_ENT_HOST_LONG 64711 #define main_LIMIT1 64851
#define main_MSG_HOST_FORM 64712 #define main_NODL 64852
#define main_MSG_MIN_SPACE 64713 #define main_MSG 64853
#define main_MSG_MIN_SPACE_LONG 64714 #define main_MSG 64854
#define main_MSG_REN_PART 64715 #define main_MSG2 64855
#define main_MSG_REN_PART_LONG 64716 #define main_MSG 64856
#define main_MSG_SELF_BEFORE 64717 #define main_MSG2 64857
#define main_MSG_SELF_OK 64718 #define main_MSG 64858
#define main_MSG_SELF_OK_PORT 64719 #define main_MSG 64859
#define main_MSG_LOG_FILE 64720 #define main_MSG_TITLE 64860
#define main_MSG_LOG_FILE_LONG 64721 #define main_MSG_OLD 64861
#define main_MSG_SET_URL 64722 #define main_MSG_UNK_FK 64862
#define main_MSG_SET_URL_LONG 64723 #define main_MSG_VIS_ONLY_ANON 64863
#define main_MSG_REALM 64724 #define main_OUT_SPEED 64864
#define main_MSG_REALM_LONG 64725 #define main_IN_SPEED 64865
#define main_MSG_INACT_TIMEOUT 64726 #define main_BANS 64866
#define main_MSG_INACT_TIMEOUT_LONG 64727 #define main_MEMORY 64867
#define main_MSG_CHANGES_LOST 64728 #define main_CUSTOMIZED 64868
#define main_MSG_FLAG_NEW 64729 #define main_ITEMS 64869
#define main_MSG_FLAG_NEW_LONG 64730 #define main_MSG1 64870
#define main_MSG_DONT_LOG_MASK 64731 #define main_MSG 64871
#define main_MSG_DONT_LOG_MASK_LONG 64732 #define main_MSG_BETTERSTOP 64872
#define main_MSG_CUST_IP 64733 #define main_MSG_BADCRC 64873
#define main_MSG_CUST_IP_LONG 64734 #define main_MSG_NEWER 64874
#define main_MSG_NO_EXT_IP 64735 #define main_MSG_ZLIB 64875
#define main_MSG_TENTH_SEC 64736 #define main_MSG_BAKAVAILABLE 64876
#define main_MSG_LOADING_VFS 64737 #define main_LIMIT 64877
#define main_MSG_VFS_OLD 64738 #define main_TOP_SPEED 64878
#define main_MSG_UNK_FK 64739 #define main_MSG_MAX_BW 64879
#define main_MSG_VIS_ONLY_ANON 64740 #define main_MSG 64880
#define main_MSG_AUTO_DISABLED 64741 #define main_AUTOSAVE 64881
#define main_MSG_CORRUPTED 64742 #define main_MSG 64882
#define main_MSG_MACROS_FOUND 64743 #define main_MSG_MIN 64883
#define main_MSG_UPD_INFO 64744 #define main_MSG_BAN 64884
#define main_MSG_NEWER 64745 #define main_MSG 64885
#define main_MSG_SRC_UPD 64746 #define main_MSG_SAVE_ERROR 64886
#define main_ARE_EXPERT 64747 #define main_MSG_LIMITED 64887
#define main_ARE_EASY 64748 #define main_MSG_UPDATE 64888
#define main_SW2EXPERT 64749 #define main_MSG_FROMDISK 64889
#define main_SW2EASY 64750 #define main_COPY 64890
#define main_MSG_DL_TIMEOUT_LONG 64751 #define main_ALREADY 64891
#define main_MSG_NEWER_INCOMP 64752 #define main_NOSPACE 64892
#define main_MSG_ZLIB 64753 #define main_CONN 64893
#define main_MSG_BAKAVAILABLE 64754 #define main_TOT_IN 64894
#define main_MSG_CANT_LOAD_SAVE 64755 #define main_TOT_OUT 64895
#define main_MSG_OPEN_VFS 64756 #define main_MSG_DDNS_notdonator 64896
#define main_LIMIT 64757 #define main_MSG_DDNS_badagent 64897
#define main_TOP_SPEED 64758 #define main_MSG 64898
#define main_MSG_MAX_BW 64759 #define main_MSG2 64899
#define main_MSG_LIM0 64760 #define main_MSG 64900
#define main_MSG_MAX_BW_1 64761 #define main_MSG2 64901
#define main_MSG_GRAPH_RATE_MENU 64762 #define main_MSG_OLD 64902
#define main_MSG_MAX_CON_LONG 64763 #define main_FAILED 64903
#define main_MSG_WARN_CONN 64764 #define main_LIMIT 64904
#define main_MSG_WARN_ACT_DL 64765 #define main_LIMIT 64905
#define main_MSG_MAX_CON_SING_LONG 64766 #define main_LIMIT 64906
#define main_MSG_GRAPH_RATE 64767 #define main_LIMIT 64907
#define main_MSG_VFS_DONT_CONS_DL_MASK 64768 #define main_LIMIT 64908
#define main_MSG_VFS_INHERITED 64769 #define main_LIMIT 64909
#define main_MSG_VFS_EXTERNAL 64770 #define main_FINGERPRINT 64910
#define main_MSG_CON_HINT 64771 #define main_NO_FINGERPRINT 64911
#define main_MSG_CON_STATE_IDLE 64772 #define main_MSG_EMPTY_NO_LIMIT 64912
#define main_MSG_CON_STATE_REQ 64773 #define main_MSG_ADDRESSES_EXCEED 64913
#define main_MSG_CON_STATE_RCV 64774 #define main_MSG_NO_TEMP 64914
#define main_MSG_CON_STATE_THINK 64775 #define main_MSG_ERROR_REGISTRY 64915
#define main_MSG_CON_STATE_REP 64776 #define main_MSG_MANY_ITEMS 64916
#define main_MSG_CON_STATE_SEND 64777 #define main_MSG_ADD_TO_HFS 64917
#define main_MSG_CON_STATE_DISC 64778 #define main_MSG_SINGLE_INSTANCE 64918
#define main_MSG_TPL_RESET 64779 #define main_MSG_COMM_ERROR 64919
#define main_MSG_ALLO_REF 64780 #define main_MSG_DDNS_badauth 64920
#define main_MSG_ALLO_REF_LONG 64781 #define main_MSG_DDNS_notfqdn 64921
#define main_MSG_BETTERSTOP 64782 #define main_MSG_DDNS_nohost 64922
#define main_MSG_BADCRC 64783 #define main_MSG_DDNS_notyours 64923
#define main_MSG_VFS_HIDE_EMPTY 64784 #define main_MSG_DDNS_numhost 64924
#define main_MSG_VFS_NOT_BROW 64785 #define main_MSG_DDNS_abuse 64925
#define main_MSG_VFS_HIDE_EMPTY_FLD 64786 #define main_MSG_DDNS_dnserr 64926
#define main_MSG_VFS_HIDE_EXT 64787 #define main_MSG_DDNS_911 64927
#define main_MSG_VFS_ARCABLE 64788
#define main_MSG_VFS_DEF_MASK 64789
#define main_MSG_VFS_ACCESS 64790
#define main_MSG_VFS_UPLOAD 64791
#define main_MSG_VFS_DELETE 64792
#define main_MSG_VFS_COMMENT 64793
#define main_MSG_VFS_REALM 64794
#define main_MSG_VFS_DIFF_TPL 64795
#define main_MSG_VFS_FILES_FLT 64796
#define main_MSG_VFS_FLD_FLT 64797
#define main_MSG_VFS_UPL_FLT 64798
#define main_MSG_VFS_DONT_CONS_DL 64799
#define main_IN_SPEED 64800
#define main_BANS 64801
#define main_MEMORY 64802
#define main_CUST_TPL 64803
#define main_VFS_ITEMS 64804
#define main_MSG_ITEM_EXISTS 64805
#define main_MSG_INSTALL_TPL 64806
#define main_MSG_FOLDER_UPLOAD 64807
#define main_MSG_VFS_DRAG_INVIT 64808
#define main_MSG_VFS_URL 64809
#define main_MSG_VFS_PATH 64810
#define main_MSG_VFS_SIZE 64811
#define main_MSG_VFS_DLS 64812
#define main_MSG_VFS_INVISIBLE 64813
#define main_MSG_VFS_DL_FORB 64814
#define main_MSG_VFS_DONT_LOG 64815
#define main_MSG_UPD_DL 64816
#define main_MSG_UPDATE 64817
#define main_MSG_REQUESTING 64818
#define main_MSG_CHK_UPD 64819
#define main_MSG_CHK_UPD_FAIL 64820
#define main_MSG_CHK_UPD_HEAD 64821
#define main_MSG_CHK_UPD_VER 64822
#define main_MSG_CHK_UPD_VER_EXT 64823
#define main_MSG_CHK_UPD_NONE 64824
#define main_TO_CLIP 64825
#define main_ALREADY_CLIP 64826
#define main_MSG_NO_SPACE 64827
#define main_CONN 64828
#define main_TOT_IN 64829
#define main_TOT_OUT 64830
#define main_OUT_SPEED 64831
#define main_MSG_FILE_ADD_ABORT 64832
#define main_MSG_ADDING 64833
#define main_MSG_INV_FILENAME 64834
#define main_MSG_DELETE 64835
#define main_AUTOSAVE 64836
#define main_SECONDS 64837
#define main_MSG_SPD_LIMIT_SING 64838
#define main_MSG_SPD_LIMIT 64839
#define main_MSG_AUTO_SAVE 64840
#define main_MSG_AUTO_SAVE_LONG 64841
#define main_MSG_MIN 64842
#define main_MSG_BAN 64843
#define main_MSG_CANT_SAVE_OPT 64844
#define main_MSG_UPD_SAVE_ERROR 64845
#define main_MSG_UPD_REQ_ONLY1 64846
#define main_MSG_UPD_WAIT 64847
#define main_MSG_LOG_HEAD 64848
#define main_MSG_LOG_NOT_MOD 64849
#define main_MSG_LOG_REDIR 64850
#define main_MSG_LOG_NOT_SERVED 64851
#define main_MSG_LOG_UPL 64852
#define main_MSG_LOG_UPLOADED 64853
#define main_MSG_LOG_UPL_FAIL 64854
#define main_MSG_LOG_DL 64855
#define main_MSG_LOGIN_FAILED 64856
#define main_MSG_MIN_DISK_REACHED 64857
#define main_MSG_UPL_NAME_FORB 64858
#define main_MSG_UPL_CANT_CREATE 64859
#define main_FINGERPRINT 64860
#define main_NO_FINGERPRINT 64861
#define main_MSG_SAVE_VFS 64862
#define main_MSG_INP_COMMENT 64863
#define main_MSG_BAN_CMT 64864
#define main_MSG_BAN_CMT_LONG 64865
#define main_MSG_BREAK_DYN_DNS 64866
#define main_MSG_CANT_OPEN_PORT 64867
#define main_MSG_PORT_USED_BY 64868
#define main_MSG_PORT_BLOCKED 64869
#define main_MSG_KICK_ALL 64870
#define main_MSG_TPL_INCOMPATIBLE 64871
#define main_MSG_LOG_SERVER_START 64872
#define main_MSG_LOG_SERVER_STOP 64873
#define main_MSG_LOG_CONNECTED 64874
#define main_MSG_LOG_DISC_SRV 64875
#define main_MSG_LOG_DISC 64876
#define main_MSG_LOG_GOT 64877
#define main_MSG_LOG_BYTES_SENT 64878
#define main_MSG_LOG_SERVED 64879
#define main_MSG_DDNS_FAIL 64880
#define main_MSG_DDNS_REPLY_SIZE 64881
#define main_MSG_DDNS_badauth 64882
#define main_MSG_DDNS_notfqdn 64883
#define main_MSG_DDNS_nohost 64884
#define main_MSG_DDNS_notyours 64885
#define main_MSG_DDNS_numhost 64886
#define main_MSG_DDNS_abuse 64887
#define main_MSG_DDNS_dnserr 64888
#define main_MSG_DDNS_911 64889
#define main_MSG_DDNS_notdonator 64890
#define main_MSG_DDNS_badagent 64891
#define main_MSG_BAN_MASK 64892
#define main_MSG_IP_MASK_LONG 64893
#define main_MSG_KICK_ADDR 64894
#define main_MSG_BAN_ALREADY 64895
#define main_MSG_ADDRESSES_EXCEED 64896
#define main_MSG_NO_TEMP 64897
#define main_MSG_ERROR_REGISTRY 64898
#define main_MSG_MANY_ITEMS 64899
#define main_MSG_ADD_TO_HFS 64900
#define main_MSG_SINGLE_INSTANCE 64901
#define main_MSG_COMM_ERROR 64902
#define main_MSG_CON_PAUSED 64903
#define main_MSG_CON_SENT 64904
#define main_MSG_CON_RECEIVED 64905
#define main_MSG_DDNS_NO_REPLY 64906
#define main_MSG_DDNS_OK 64907
#define main_MSG_DDNS_UNK 64908
#define main_MSG_DDNS_ERR 64909
#define main_MSG_DDNS_REQ 64910
#define main_MSG_DDNS_DOING 64911
#define main_MSG_MAX_CON_SING 64912
#define main_MSG_MAX_SIM_ADDR 64913
#define main_MSG_MAX_SIM_ADDR_DL 64914
#define main_MSG_MAX_SIM_DL_SING 64915
#define main_MSG_MAX_SIM_DL 64916
#define main_MSG_SET_LIMIT 64917
#define main_MSG_UNPROTECTED_LINKS 64918
#define main_MSG_SAME_NAME 64919
#define main_MSG_CONTINUE 64920
#define main_MSG_PROCESSING 64921
#define main_MSG_SPEED_KBS 64922
#define main_MSG_OPTIONS_SAVED 64923
#define main_MSG_SOME_LOCKED 64924
#define main_MSG_ITEM_LOCKED 64925
#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
@ -282,15 +142,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 classesLib_MSG_ANTIDOS_REPLY 64935 #define main_S_PORT_LABEL 64935
#define optionsDlg_MSG_INVERT_BAN 64936 #define main_S_PORT_ANY 64936
#define main_S_PORT_LABEL 64937 #define main_DISABLED 64937
#define main_S_PORT_ANY 64938 #define main_MSG_UNPROTECTED_LINKS 64938
#define main_DISABLED 64939 #define main_MSG_SAME_NAME 64939
#define main_S_OK 64940 #define main_MSG_OPTIONS_SAVED 64940
#define main_MSG_MENU_VAL 64941 #define main_MSG_SOME_LOCKED 64941
#define main_MSG_DL_TIMEOUT 64942 #define main_MSG_ITEM_LOCKED 64942
#define main_MSG_MAX_CON 64943 #define main_MSG_INVALID_VALUE 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
@ -885,227 +745,125 @@
#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_CAPTION, L"Edit resource"
main_MSG_NUM_ADDR_DL, L"In this moment there are %d different addresses downloading" main_MSG, L"The current template is using macros.\rDo you want to cancel this action?"
main_MSG_MAX_LINES, L"Max lines on screen."
main_MSG_APACHE_LOG_FMT, L"Apache log file format"
main_MSG_APACHE_LOG_FMT_LONG, L"Here you can specify how to format the log file complying Apache standard.\rLeave blank to get bare copy of screen on file.\r\rExample:\r %h %l %u %t \"%r\" %>s %b"
main_MSG_ICONS_ADDED, L"%d new icons added"
main_MSG_DDNS_DISABLED, L"Dynamic DNS updater disabled"
main_MSG_MD5_WARN, L"This option creates an .md5 file for every new calculated fingerprint.\rUse with care to get not your disk invaded by these files."
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_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_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"
main_S_OFF, L"Switch OFF" main_S_OFF, L"Switch OFF"
main_S_ON, L"Switch ON" main_S_ON, L"Switch ON"
main_LOG, L"Log" main_LOG, L"Log"
main_MSG_RE_NOIP, L"You are invited to re-insert your No-IP configuration, otherwise the updater won't work as expected." main_MSG, L"You are invited to re-insert your No-IP configuration, otherwise the updater won't work as expected."
main_MSG_TRAY_DEF, L"%ip%\rUptime: %uptime%\rDownloads: %downloads%" main_MSG, L"Max simultaneous addresses."
main_MSG_CLEAN_START, L"Clean start" main_MSG2, L"In this moment there are %d different addresses"
main_MSG_RESTORE_BAK, L"A file system backup has been created for a system shutdown.\rDo you want to restore this backup?" main_MSG, L"Max simultaneous addresses downloading."
main_MSG_EXT_ADDR_FAIL, L"Search for external address failed" main_MSG2, L"In this moment there are %d different addresses downloading"
main_MSG_TO_EXPERT, L"Switch to expert mode." main_MSG, L"Max lines on screen"
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, L"Here you can specify how to format the log file complying Apache standard.\rLeave blank to get bare copy of screen on file.\r\rExample:\r %h %l %u %t \"%r\" %>s %b"
main_MSG_DL_PERC, L"Downloading %d%%" main_MSG, L"This option creates an .md5 file for every new calculated fingerprint.\rUse with care to get not your disk invaded by these files."
main_MSG_UNINSTALL_WARN, L"Delete HFS and all settings?" main_MSG, 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_SELF_3, L"You may be behind a router or firewall." main_MSG, L"Any event from the following IP address mask will be not logged."
main_MSG_SELF_6, L"You are behind a router.\rEnsure it is configured to forward port %s to your computer." main_MSG, L"Specify your addresses, each per line"
main_MSG_SELF_7, L"You may be behind a firewall.\rEnsure nothing is blocking HFS." main_MSG, L"Can't find external address\r( %s )"
main_MSG_RET_EXT, L"Retrieving external address..." main_MSG, L"This option makes pointless the option \"Find external address at startup\", which has now been disabled for your convenience."
main_MSG_SELF_CANT_ON, L"Unable to switch the server on" main_MSG, L"Enter URL for updating.\r%ip% will be translated to your external IP."
main_MSG_SELF_CANT_LIST, L"Self test cannot be performed because HFS was configured to accept connections only on 127.0.0.1" main_MSG, L"The upload will fail if your disk has less than the specified amount of free MegaBytes."
main_MSG_SELF_CANT_S, L"Self test doesn't support HTTPS.\rIt's likely it won't work." main_MSG, L"This string will be appended to the filename.\r\rIf you need more control, enter a string with %name% in it, and this symbol will be replaced by the original filename."
main_MSG_SELF_ING, L"Self testing..." main_MSG_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_TEST_CANC, L"Test cancelled" main_MSG_OK, L"The test is successful. The server should be working fine."
main_MSG_TEST_INET, L"Testing internet connection..." main_MSG_OK_PORT, L"Port %s is not working, but another working port has been found and set: %s."
main_MSG_SELF_UNAV, L"Sorry, the test is unavailable at the moment" main_MSG_3, L"You may be behind a router or firewall."
main_MSG_SELF_NO_INET, L"Your internet connection does not work" main_MSG_6, L"You are behind a router.\rEnsure it is configured to forward port %s to your computer."
main_MSG_SELF_NO_ANSWER, L"The test failed: server does not answer." main_MSG_7, L"You may be behind a firewall.\rEnsure nothing is blocking HFS."
main_MSG_OPEN_BROW, L"Open directly in browser" main_MSG, 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, 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_HELP, 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_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_USR, L"Enter user"
main_MSG_ENT_PWD, L"Enter password"
main_MSG_ENT_HOST, L"Enter host"
main_MSG_ENT_HOST_LONG, L"Enter domain (full form!)"
main_MSG_HOST_FORM, L"Please, enter it in the FULL form, with dots"
main_MSG_MIN_SPACE, L"Min disk space"
main_MSG_MIN_SPACE_LONG, L"The upload will fail if your disk has less than the specified amount of free MegaBytes."
main_MSG_REN_PART, L"Rename partial uploads"
main_MSG_REN_PART_LONG, L"This string will be appended to the filename.\r\rIf you need more control, enter a string with %name% in it, and this symbol will be replaced by the original filename."
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_PORT, L"Port %s is not working, but another working port has been found and set: %s."
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_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_REALM, L"Login realm"
main_MSG_REALM_LONG, L"The realm string is shown on the user/pass dialog of the browser.\rHere you can customize the realm for the login button"
main_MSG_INACT_TIMEOUT, L"Connection inactivity timeout"
main_MSG_INACT_TIMEOUT_LONG, L"The connection is kicked after a timeout.\rSpecify in seconds.\rLeave blank to get no timeout."
main_MSG_CHANGES_LOST, L"All changes will be lost\rContinue?"
main_MSG_FLAG_NEW, L"Flag new files"
main_MSG_FLAG_NEW_LONG, L"Enter the number of MINUTES files stay flagged from their addition.\rLeave blank to disable."
main_MSG_DONT_LOG_MASK, L"Do not log address"
main_MSG_DONT_LOG_MASK_LONG, L"Any event from the following IP address mask will be not logged."
main_MSG_CUST_IP, L"Custom IP addresses"
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_TENTH_SEC, L"Tenths of second"
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_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_VIS_ONLY_ANON, L"This VFS file uses the \"Visible only to anonymous users\" feature.\rThis feature is not available anymore.\rYou can achieve similar results by restricting access to @anonymous,\rthen enabling \"List protected items only for allowed users\"."
main_MSG_AUTO_DISABLED, L"Because of the problems encountered in loading,\rautomatic saving has been disabled\runtil you save manually or load another one." main_MSG_AUTO_DISABLED, L"Because of the problems encountered in loading,\rautomatic saving has been disabled\runtil you save manually or load another one."
main_MSG_CORRUPTED, L"This file does not contain valid data." main_MSG_CORRUPTED, L"This file does not contain valid data."
main_MSG_MACROS_FOUND, L"!!!!!!!!! DANGER !!!!!!!!!\rThis file contains macros.\rDon't accept macros from people you don't trust.\r\rTrust this file?" main_MSG_MACROS_FOUND, L"!!!!!!!!! DANGER !!!!!!!!!\rThis file contains macros.\rDon't accept macros from people you don't trust.\r\rTrust this file?"
main_MSG_UPD_INFO, L"Last stable version: %s\r\rLast untested version: %s\r" main_MSG_INFO, L"Last stable version: %s\r\rLast untested version: %s\r"
main_MSG_NEWER, L"There's a new version available online: %s" main_MSG_NEWER, L"There's a new version available online: %s"
main_MSG_SRC_UPD, L"Searching for updates..."
main_ARE_EXPERT, L"You are in Expert mode" main_ARE_EXPERT, L"You are in Expert mode"
main_ARE_EASY, L"You are in Easy mode" main_ARE_EASY, L"You are in Easy mode"
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, L"Enter the number of MINUTES with no download after which the program automatically shuts down.\rLeave blank to get no timeout."
main_MSG_NEWER_INCOMP, L"This file has been created with a newer and incompatible version." main_MSG, 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_ZLIB, L"This file is corrupted (ZLIB)." main_MSG, 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_BAKAVAILABLE, L"This file is corrupted but a backup is available.\rContinue with backup?" main_MSG, L"The realm string is shown on the user/pass dialog of the browser.\rHere you can customize the realm for the login button"
main_MSG_CANT_LOAD_SAVE, L"Cannot load or save while adding files" main_MSG, L"The connection is kicked after a timeout.\rSpecify in seconds.\rLeave blank to get no timeout."
main_MSG_OPEN_VFS, L"Open VFS file" main_MSG, L"All changes will be lost\rContinue?"
main_LIMIT, L"Limit" main_MSG, L"Enter the number of MINUTES files stay flagged from their addition.\rLeave blank to disable."
main_TOP_SPEED, L"Top speed" main_ZEROMSG, L"Zero is an effective limit.\rTo disable instead, leave empty."
main_MSG_MAX_BW, L"Max bandwidth (KB/s)." main_LIMIT, L"Speed limit"
main_MSG_LIM0, L"Zero is an effective limit.\rTo disable instead, leave empty."
main_MSG_MAX_BW_1, L"Max bandwidth for single address (KB/s)." main_MSG_MAX_BW_1, L"Max bandwidth for single address (KB/s)."
main_MSG_GRAPH_RATE_MENU, L"Graph refresh rate: %d (tenths of second)" main_LIMIT1, L"Speed limit for single address"
main_MSG_MAX_CON_LONG, L"Max simultaneous connections to serve.\rMost people don't know this function well, and have problems. If you are unsure, please use the \"Max simultaneous downloads\"." main_NODL, L"No downloads timeout: "
main_MSG_WARN_CONN, L"In this moment there are %d active connections" main_MSG, L"Graph refresh rate: %d (tenths of second)"
main_MSG_WARN_ACT_DL, L"In this moment there are %d active downloads" main_MSG, L"Max simultaneous connections to serve.\rMost people don't know this function well, and have problems. If you are unsure, please use the \"Max simultaneous 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_MSG2, L"In this moment there are %d active connections"
main_MSG_GRAPH_RATE, L"Graph refresh rate" main_MSG, L"Max simultaneous downloads."
main_MSG_VFS_DONT_CONS_DL_MASK, L"Don't consider as download (mask): %s" main_MSG2, L"In this moment there are %d active downloads"
main_MSG_VFS_INHERITED, L" [inherited]" main_MSG, 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_VFS_EXTERNAL, L" [external]" main_MSG, L"Max simultaneous downloads from a single IP address."
main_MSG_CON_HINT, L"Connection time: %s\rLast request time: %s\rAgent: %s" main_MSG_TITLE, L"Loading VFS"
main_MSG_CON_STATE_IDLE, L"idle" main_MSG_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_CON_STATE_REQ, L"requesting" 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_CON_STATE_RCV, L"receiving" main_MSG_VIS_ONLY_ANON, L"This VFS file uses the \"Visible only to anonymous users\" feature.\rThis feature is not available anymore.\rYou can achieve similar results by restricting access to @anonymous,\rthen enabling \"List protected items only for allowed users\"."
main_MSG_CON_STATE_THINK, L"thinking" main_OUT_SPEED, L"Out: %.1f KB/s"
main_MSG_CON_STATE_REP, L"replying"
main_MSG_CON_STATE_SEND, L"sending"
main_MSG_CON_STATE_DISC, L"disconnected"
main_MSG_TPL_RESET, L"The template has been reset"
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_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_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_DEF_MASK, L"Default file mask: %s"
main_MSG_VFS_ACCESS, L"Access for"
main_MSG_VFS_UPLOAD, L"Upload allowed for"
main_MSG_VFS_DELETE, L"Delete allowed for"
main_MSG_VFS_COMMENT, L"Comment: %s"
main_MSG_VFS_REALM, L"Realm: %s"
main_MSG_VFS_DIFF_TPL, L"Diff template: %s"
main_MSG_VFS_FILES_FLT, L"Files filter: %s"
main_MSG_VFS_FLD_FLT, L"Folders filter: %s"
main_MSG_VFS_UPL_FLT, L"Upload filter: %s"
main_MSG_VFS_DONT_CONS_DL, L"Don't consider as download"
main_IN_SPEED, L"In: %.1f KB/s" main_IN_SPEED, L"In: %.1f KB/s"
main_BANS, L"Ban rules: %d" main_BANS, L"Ban rules: %d"
main_MEMORY, L"Mem" main_MEMORY, L"Mem"
main_CUST_TPL, L"Customized template" main_CUSTOMIZED, L"Customized template"
main_VFS_ITEMS, L"VFS: %d items" main_ITEMS, L"VFS: %d items"
main_MSG_ITEM_EXISTS, L"%s item(s) already exists:\r%s\r\rContinue?" main_MSG1, L"%s item(s) already exists:\r%s\r\rContinue?"
main_MSG_INSTALL_TPL, L"Install this template?" main_MSG, 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_FOLDER_UPLOAD, L"Do you want ANYONE to be able to upload to this folder?" main_MSG_BETTERSTOP, L"\rGoing on may lead to problems.\rIt is adviced to stop loading.\rStop?"
main_MSG_VFS_DRAG_INVIT, L"Drag your files here" main_MSG_BADCRC, L"This file is corrupted (CRC)."
main_MSG_VFS_URL, L"URL: %s" main_MSG_NEWER, L"This file has been created with a newer and incompatible version."
main_MSG_VFS_PATH, L"Path: %s" main_MSG_ZLIB, L"This file is corrupted (ZLIB)."
main_MSG_VFS_SIZE, L"Size: %s" main_MSG_BAKAVAILABLE, L"This file is corrupted but a backup is available.\rContinue with backup?"
main_MSG_VFS_DLS, L"Downloads: %s" main_LIMIT, L"Limit"
main_MSG_VFS_INVISIBLE, L"Invisible" main_TOP_SPEED, L"Top speed"
main_MSG_VFS_DL_FORB, L"Download forbidden" main_MSG_MAX_BW, L"Max bandwidth (KB/s)."
main_MSG_VFS_DONT_LOG, L"Don't log" main_MSG, L"Please insert a comment for \"%s\".\rYou should use HTML: <br> for break line."
main_MSG_UPD_DL, L"Downloading new version..." main_AUTOSAVE, L"Auto save every: "
main_MSG, L"Auto-save %s.\rSpecify in seconds.\rLeave blank to disable."
main_MSG_MIN, L"We don't accept less than %d"
main_MSG_BAN, L"Your ban configuration may have been screwed up.\rPlease verify it."
main_MSG, L"Can't save options there.\rShould I try to save to user registry?"
main_MSG_SAVE_ERROR, L"Cannot save the update"
main_MSG_LIMITED, 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_UPDATE, L"You are invited to use the new version.\r\rUpdate now?" main_MSG_UPDATE, L"You are invited to use the new version.\r\rUpdate now?"
main_MSG_REQUESTING, L"Requesting..." main_MSG_FROMDISK, L"Update info has been read from local file.\rTo resume normal operation of the updater, delete the file hfs.updateinfo.txt from the HFS program folder."
main_MSG_CHK_UPD, L"Checking for updates" main_COPY, L"Copy to clipboard"
main_MSG_CHK_UPD_FAIL, L"Check update: failed" main_ALREADY, L"Already in clipboard"
main_MSG_CHK_UPD_HEAD, L"Check update: " main_NOSPACE, L"Out of space"
main_MSG_CHK_UPD_VER, L"new version found: %s"
main_MSG_CHK_UPD_VER_EXT, L"Build #%s (current is #%s)"
main_MSG_CHK_UPD_NONE, L"no new version"
main_TO_CLIP, L"Copy to clipboard"
main_ALREADY_CLIP, L"Already in clipboard"
main_MSG_NO_SPACE, L"Out of space"
main_CONN, L"Connections: %d" main_CONN, L"Connections: %d"
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_MSG_DDNS_notdonator, L"an option specified requires payment"
main_MSG_FILE_ADD_ABORT, L"File addition was aborted.\rThe list of files is incomplete." main_MSG_DDNS_badagent, L"banned client"
main_MSG_ADDING, L"Adding item #%d" main_MSG, L"There are %d open connections from this address.\rDo you want to kick them all now?"
main_MSG_INV_FILENAME, L"Invalid filename" main_MSG2, L"You can edit the address.\rMasks and ranges are allowed."
main_MSG_DELETE, L"Delete?" main_MSG, L"This option is NOT compatible with \"dynamic dns updater\".\rContinue?"
main_AUTOSAVE, L"Auto save every: " main_MSG2, L"There are %d connections open.\rDo you want to close them now?"
main_SECONDS, L"%d seconds" main_MSG_OLD, L"The template you are trying to load is not compatible with current HFS version.\rHFS will now use default template.\rAsk on the forum if you need further help."
main_MSG_SPD_LIMIT_SING, L"Speed limit for single address" main_FAILED, L"Login failed"
main_MSG_SPD_LIMIT, L"Speed limit" main_LIMIT, L"Max simultaneous addresses: %s ..."
main_MSG_AUTO_SAVE, L"Auto-save %s" main_LIMIT, L"Max simultaneous addresses downloading: %s ..."
main_MSG_AUTO_SAVE_LONG, L"Auto-save %s.\rSpecify in seconds.\rLeave blank to disable." main_LIMIT, L"Max connections: %s ..."
main_MSG_MIN, L"We don't accept less than %d" main_LIMIT, L"Max connections from single address: %s ..."
main_MSG_BAN, L"Your ban configuration may have been screwed up.\rPlease verify it." main_LIMIT, L"Max simultaneous downloads: %s ..."
main_MSG_CANT_SAVE_OPT, L"Can't save options there.\rShould I try to save to user registry?" main_LIMIT, L"Max simultaneous downloads from single address: %s ..."
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_WAIT, L"Waiting for last requests to be served, then we'll update"
main_MSG_LOG_HEAD, L"Served head"
main_MSG_LOG_NOT_MOD, L"Not modified, use cache"
main_MSG_LOG_REDIR, L"Redirected to %s"
main_MSG_LOG_NOT_SERVED, L"Not served: %d - %s"
main_MSG_LOG_UPL, L"Uploading %s"
main_MSG_LOG_UPLOADED, L"Fully uploaded %s - %s @ %sB/s"
main_MSG_LOG_UPL_FAIL, L"Upload failed %s"
main_MSG_LOG_DL, L"Fully downloaded - %s @ %sB/s - %s"
main_MSG_LOGIN_FAILED, L"Login failed"
main_MSG_MIN_DISK_REACHED, L"Minimum disk space reached."
main_MSG_UPL_NAME_FORB, L"File name or extension forbidden."
main_MSG_UPL_CANT_CREATE, L"Error creating file."
main_FINGERPRINT, L"Create fingerprint on addition under %d KB" main_FINGERPRINT, L"Create fingerprint on addition under %d KB"
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_EMPTY_NO_LIMIT, L"Leave blank to get no limits."
main_MSG_INP_COMMENT, L"Please insert a comment for \"%s\".\rYou should use HTML: <br> for break line." main_MSG_ADDRESSES_EXCEED, L"The following addresses exceed the limit:\r%s"
main_MSG_BAN_CMT, L"Ban comment" main_MSG_NO_TEMP, L"Cannot save temporary file"
main_MSG_BAN_CMT_LONG, L"A comment for this ban..." main_MSG_ERROR_REGISTRY, L"Can't write to registry.\rYou may lack necessary rights."
main_MSG_BREAK_DYN_DNS, L"This option is NOT compatible with \"dynamic dns updater\".\rContinue?" 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_CANT_OPEN_PORT, L"Cannot open port." main_MSG_ADD_TO_HFS, L"\"Add to HFS\" has been added to your Window's Explorer right-click menu."
main_MSG_PORT_USED_BY, L"It is already used by %s" 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_PORT_BLOCKED, L"Something is blocking, maybe your system firewall." main_MSG_COMM_ERROR, L"Network error. Request failed."
main_MSG_KICK_ALL, L"There are %d connections open.\rDo you want to close them now?"
main_MSG_TPL_INCOMPATIBLE, L"The template you are trying to load is not compatible with current HFS version.\rHFS will now use default template.\rAsk on the forum if you need further help."
main_MSG_LOG_SERVER_START, L"Server start"
main_MSG_LOG_SERVER_STOP, L"Server stop"
main_MSG_LOG_CONNECTED, L"Connected"
main_MSG_LOG_DISC_SRV, L"Disconnected by server"
main_MSG_LOG_DISC, L"Disconnected"
main_MSG_LOG_GOT, L"Got %d bytes"
main_MSG_LOG_BYTES_SENT, L"%s bytes sent"
main_MSG_LOG_SERVED, L"Served %s"
main_MSG_DDNS_FAIL, L"DNS update failed: %s\rUser intervention is required."
main_MSG_DDNS_REPLY_SIZE, L"%d bytes reply"
main_MSG_DDNS_badauth, L"invalid user/password" main_MSG_DDNS_badauth, L"invalid user/password"
main_MSG_DDNS_notfqdn, L"incomplete hostname, required form aaa.bbb.com" 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"
@ -1114,44 +872,6 @@ BEGIN
main_MSG_DDNS_abuse, L"specified hostname is blocked for update abuse" main_MSG_DDNS_abuse, L"specified hostname is blocked for update abuse"
main_MSG_DDNS_dnserr, L"server error" main_MSG_DDNS_dnserr, L"server error"
main_MSG_DDNS_911, L"server error" main_MSG_DDNS_911, L"server error"
main_MSG_DDNS_notdonator, L"an option specified requires payment"
main_MSG_DDNS_badagent, L"banned client"
main_MSG_BAN_MASK, L"Ban IP mask"
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_BAN_ALREADY, L"This IP address is already banned"
main_MSG_ADDRESSES_EXCEED, L"The following addresses exceed the limit:\r%s"
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_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_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_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_OK, L"successful"
main_MSG_DDNS_UNK, L"unknown reply: %s"
main_MSG_DDNS_ERR, L"error: %s"
main_MSG_DDNS_REQ, L"DNS update requested for %s: %s"
main_MSG_DDNS_DOING, L"Updating dynamic DNS..."
main_MSG_MAX_CON_SING, L"Max connections from single address"
main_MSG_MAX_SIM_ADDR, L"Max simultaneous addresses"
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, L"Max simultaneous downloads"
main_MSG_SET_LIMIT, L"Set limit"
main_MSG_UNPROTECTED_LINKS, L"Links are NOT actually protected.\rThe feature is there to be used with the \"list protected items only...\" option.\rContinue?"
main_MSG_SAME_NAME, L"An item with the same name is already present in this folder.\rContinue?"
main_MSG_CONTINUE, L"Continue?"
main_MSG_PROCESSING, L"Processing..."
main_MSG_SPEED_KBS, L"%.1f kB/s"
main_MSG_OPTIONS_SAVED, L"Options saved"
main_MSG_SOME_LOCKED, L"Some items were not affected because locked"
main_MSG_ITEM_LOCKED, L"The item is locked"
main_MSG_INVALID_VALUE, L"Invalid value"
main_MSG_EMPTY_NO_LIMIT, L"Leave blank to get no limits."
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"
@ -1159,15 +879,15 @@ 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."
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"
main_DISABLED, L"disabled" main_DISABLED, L"disabled"
main_S_OK, L"Ok" main_MSG_UNPROTECTED_LINKS, L"Links are NOT actually protected.\rThe feature is there to be used with the \"list protected items only...\" option.\rContinue?"
main_MSG_MENU_VAL, L" (%s)" main_MSG_SAME_NAME, L"An item with the same name is already present in this folder.\rContinue?"
main_MSG_DL_TIMEOUT, L"No downloads timeout" main_MSG_OPTIONS_SAVED, L"Options saved"
main_MSG_MAX_CON, L"Max connections" main_MSG_SOME_LOCKED, L"Some items were not affected because locked"
main_MSG_ITEM_LOCKED, L"The item is locked"
main_MSG_INVALID_VALUE, L"Invalid value"
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"

763
hfs.lng
View File

@ -1,763 +0,0 @@
; Kryvich's Delphi Localizer Language File.
; Generated by K.D.L. Scanner, 02/08/2020 18:30:32
Humanize=1
HumanizedCR=\^
HumanizedCRLF=\+
HumanizedLF=\#10
[TdiffFrm]
Caption=Customized options
[TfilepropFrm]
Caption=filepropFrm
pages.permTab.Caption=Permissions
pages.permTab.actionTabs.newaccBtn.Caption=New account
pages.permTab.actionTabs.anyAccChk.Caption=Any account
pages.permTab.actionTabs.anonChk.Caption=Anonymous
pages.permTab.actionTabs.allBtn.Caption=All / None
pages.permTab.actionTabs.anyoneChk.Caption=Anyone
pages.permTab.actionTabs.goToAccountsBtn.Caption=Manage accounts
pages.flagsTab.Caption=Flags
pages.flagsTab.hiddenChk.Hint=Test
pages.flagsTab.hiddenChk.Caption=Hidden
pages.flagsTab.hidetreeChk.Caption=Recursively hidden
pages.flagsTab.archivableChk.Caption=Archivable
pages.flagsTab.browsableChk.Caption=Browsable
pages.flagsTab.dontlogChk.Caption=Don't log
pages.flagsTab.nodlChk.Caption=No download
pages.flagsTab.dontconsiderChk.Caption=Don't consider as download
pages.flagsTab.hideemptyChk.Caption=Auto-hide empty folders
pages.flagsTab.hideextChk.Caption=Hide file extension in listing
pages.diffTab.Caption=Diff template
pages.diffTab.difftplBox.Hint=Here you can put a partial template that will overlap the main one.
pages.commentTab.Caption=Comment
pages.maskTab.Caption=File masks
pages.maskTab.filesfilterBox.EditLabel.Caption=Files filter
pages.maskTab.foldersfilterBox.EditLabel.Caption=Folders filter
pages.maskTab.deffileBox.Hint=When a folder is browsed, the default file mask is used to find a file to serve in place of the folder page. If no file is found, the folder page is served.
pages.maskTab.deffileBox.EditLabel.Caption=Default file mask
pages.maskTab.uploadfilterBox.Hint=Uploaded files are allowed only complying with this file mask
pages.maskTab.uploadfilterBox.EditLabel.Caption=Upload filter mask
pages.maskTab.dontconsiderBox.Hint=Files matching this filemask are not considered for global downloads counter. Moreover they never get tray icon.
pages.maskTab.dontconsiderBox.EditLabel.Caption=Don't consider as download (mask)
pages.otherTab.Caption=Other
pages.otherTab.Label1.Caption=Icon
pages.otherTab.realmBox.Hint=The realm string is shown on the user/pass dialog of the browser. This realm will be used for selected files and their descendants.
pages.otherTab.realmBox.EditLabel.Caption=Realm
pages.otherTab.addiconBtn.Caption=Add new...
Panel1.okBtn.Caption=&OK
Panel1.cancelBtn.Caption=Cancel
Panel1.applyBtn.Caption=&Apply
[TfolderKindFrm]
Caption=What kind of folder do you want?
realLbl.Caption=A real folder is faster, good for big folders
virtuaLbl.Caption=A virtual folder is easier, good for small folders
hintLbl.Caption=Not sure? Hint: most time you need real folders!
realBtn.Caption=&Real folder
virtuaBtn.Caption=&Virtual folder
[TipsEverFrm]
Caption=Addresses ever connected
totalLbl.Caption=Total label...
resetBtn.Caption=&Reset
editBtn.Caption=&Open in editor
[TlistSelectFrm]
Panel1.okBtn.Caption=&OK
Panel1.cancelBtn.Caption=&Cancel
[TlonginputFrm]
Caption=longinputFrm
bottomPnl.okBtn.Caption=&OK
bottomPnl.cancelBtn.Caption=&Cancel
topPnl.msgLbl.Caption=test
inputBox.Lines.Strings=Memo1
[TmainFrm]
Caption=HFS ~ HTTP File Server
graphBox.Hint=Pink = Out\+Yellow = In
topToolbar.Caption=topToolbar
topToolbar.menuBtn.Hint=Hit ALT or F10 to pop it up
topToolbar.menuBtn.Caption=Menu
topToolbar.ToolButton4.Caption=ToolButton4
topToolbar.portBtn.Caption=Port: any
topToolbar.ToolButton2.Caption=ToolButton2
topToolbar.modeBtn.Hint=Click to switch\+F5 on keyboard
topToolbar.modeBtn.Caption=You are in Easy mode
topToolbar.ToolButton1.Caption=ToolButton1
topToolbar.startBtn.Hint=Click to switch ON\^F4 on keyboard
topToolbar.startBtn.Caption=Server is currently OFF
topToolbar.abortBtn.Caption=Abort file addition
topToolbar.restoreCfgBtn.Caption=Restore my options
topToolbar.updateBtn.Caption=Update now
urlToolbar.browseBtn.Caption=Open in browser
urlToolbar.copyBtn.Caption=Copy to clipboard
centralPnl.logPnl.logTitle.titlePnl.Caption=Log
centralPnl.logPnl.logTitle.logToolbar.collapsedPnl.expandBtn.Hint=Expand toolbar
centralPnl.logPnl.logTitle.logToolbar.expandedPnl.openFilteredLog.Hint=Copy to editor only lines matched by the search pattern
centralPnl.logPnl.logTitle.logToolbar.expandedPnl.openLogBtn.Hint=Copy to editor
centralPnl.logPnl.logTitle.logToolbar.expandedPnl.collapseBtn.Hint=Collapse toolbar
centralPnl.logPnl.logTitle.logToolbar.expandedPnl.searchPnl.logSearchBox.Hint=Wildcards allowed
centralPnl.logPnl.logTitle.logToolbar.expandedPnl.searchPnl.logSearchBox.EditLabel.Caption=Search
centralPnl.filesPnl.Caption=filesPnl
centralPnl.filesPnl.filesTitle.Caption=Virtual File System
centralPnl.connPnl.connBox.Columns.(0).Caption=IP address
centralPnl.connPnl.connBox.Columns.(1).Caption=File
centralPnl.connPnl.connBox.Columns.(2).Caption=Status
centralPnl.connPnl.connBox.Columns.(3).Caption=Speed
centralPnl.connPnl.connBox.Columns.(4).Caption=Time left
centralPnl.connPnl.connBox.Columns.(5).Caption=Progress
filemenu.Addfiles1.Caption=Add files...
filemenu.Addfolder1.Caption=Add folder from disk...
filemenu.newfolder1.Caption=New empty folder
filemenu.Newlink1.Caption=New link
filemenu.Remove1.Caption=Remove
filemenu.Rename1.Caption=Rename
filemenu.Paste1.Caption=Paste
filemenu.Editresource1.Caption=Edit resource...
filemenu.CopyURL1.Caption=Copy URL address
filemenu.CopyURL1.Hint=just double click!
filemenu.CopyURLwithpassword1.Caption=Copy URL with password
filemenu.CopyURLwithdifferentaddress1.Caption=Copy URL with different host address
filemenu.CopyURLwithfingerprint1.Caption=Copy URL with fingerprint
filemenu.Browseit1.Caption=Browse it
filemenu.SetURL1.Caption=Set URL...
filemenu.Openit1.Caption=Open it
filemenu.Flagasnew1.Caption=Flag as new
filemenu.Resetnewflag1.Caption=Reset <new> flag
filemenu.Setuserpass1.Caption=Set user/pass...
filemenu.Resetuserpass1.Caption=Reset user/pass
filemenu.Purge1.Caption=Purge...
filemenu.Switchtovirtual1.Caption=Change to virtual-folder
filemenu.Switchtorealfolder1.Caption=Change to real-folder
filemenu.Bindroottorealfolder1.Caption=Bind root to real-folder
filemenu.Unbindroot1.Caption=Unbind root
filemenu.Defaultpointtoaddfiles1.Caption=Default point to add files
filemenu.Properties1.Caption=Properties...
menu.SelfTest1.Caption=Self Test
menu.Showbandwidthgraph1.Caption=Show bandwidth graph
menu.Otheroptions1.Caption=Other options
menu.Otheroptions1.switchMode.Caption=Switch to expert mode
menu.Otheroptions1.Accounts1.Caption=User accounts...
menu.Otheroptions1.Shellcontextmenu1.Caption=Integrate in shell context menu
menu.Otheroptions1.AutocopyURLonadditionChk.Caption=Auto-copy URL on addition
menu.Otheroptions1.alwaysontopChk.Caption=Always on top
menu.Otheroptions1.sendHFSidentifierChk.Caption=Send HFS identifier
menu.Otheroptions1.persistentconnectionsChk.Caption=Persistent connections
menu.Otheroptions1.DMbrowserTplChk.Caption=Specific HTML for download managers
menu.Otheroptions1.Graphrefreshrate1.Caption=Graph refresh rate...
menu.Otheroptions1.MIMEtypes1.Caption=MIME types...
menu.Otheroptions1.Opendirectlyinbrowser1.Caption=Open directly in browser...
menu.Otheroptions1.freeLoginChk.Caption=Accept any login for unprotected resources
menu.Otheroptions1.usecommentasrealmChk.Caption=Use comment as realm
menu.Otheroptions1.Loginrealm1.Caption=Login realm...
menu.Otheroptions1.HintsfornewcomersChk.Caption=Hints for newcomers
menu.Otheroptions1.compressedbrowsingChk.Caption=Compressed browsing
menu.Otheroptions1.modalOptionsChk.Caption=Modal dialog for options
menu.Otheroptions1.useISOdateChk.Caption=Use ISO date format
menu.Otheroptions1.browseUsingLocalhostChk.Caption=Browse using localhost
menu.Otheroptions1.enableNoDefaultChk.Caption=Enable ~nodefault
menu.Otheroptions1.preventStandbyChk.Caption=Prevent system standby on network activity
menu.Otheroptions1.Addicons1.Caption=Add icons...
menu.Otheroptions1.Changeport1.Caption=Change port...
menu.Otheroptions1.autoCommentChk.Caption=Input comment on file addition
menu.Otheroptions1.Defaultsorting1.Caption=Default sorting
menu.Otheroptions1.Defaultsorting1.Name1.Caption=Name
menu.Otheroptions1.Defaultsorting1.Extension1.Caption=Extension
menu.Otheroptions1.Defaultsorting1.Size1.Caption=Size
menu.Otheroptions1.Defaultsorting1.Time1.Caption=Time
menu.Otheroptions1.Defaultsorting1.Hits1.Caption=Hits
menu.Otheroptions1.Editeventscripts1.Caption=Edit event scripts...
menu.Otheroptions1.oemTarChk.Caption=OEM file names for TAR archives
menu.HTMLtemplate1.Caption=HTML template
menu.HTMLtemplate1.Edit1.Caption=Edit...
menu.HTMLtemplate1.Changefile1.Caption=Change file...
menu.HTMLtemplate1.Changeeditor1.Caption=Change editor...
menu.HTMLtemplate1.Restoredefault1.Caption=Restore default
menu.HTMLtemplate1.enableMacrosChk.Caption=Enable macros
menu.Upload2.Caption=Upload
menu.Upload2.Howto1.Caption=How to?
menu.Upload2.deletePartialUploadsChk.Caption=Delete partial uploads
menu.Upload2.Renamepartialuploads1.Caption=Rename partial uploads...
menu.Upload2.numberFilesOnUploadChk.Caption=Number files on upload instead of overwriting
menu.StartExit1.Caption=Start/Exit
menu.StartExit1.autocopyURLonstartChk.Caption=Auto-copy URL on start
menu.StartExit1.startminimizedChk.Caption=Start minimized
menu.StartExit1.reloadonstartupChk.Caption=Reload on startup VFS file previously open
menu.StartExit1.saveTotalsChk.Caption=Save totals
menu.StartExit1.autosaveVFSchk.Caption=Auto-save VFS on exit
menu.StartExit1.Autoclose1.Caption=Auto-close
menu.StartExit1.Autoclose1.Nodownloadtimeout1.Caption=No download timeout...
menu.StartExit1.only1instanceChk.Caption=Only 1 instance
menu.StartExit1.confirmexitChk.Caption=Confirm exit
menu.StartExit1.findExtOnStartupChk.Caption=Find external address on startup
menu.StartExit1.RunHFSwhenWindowsstarts1.Caption=Run HFS when Windows starts
menu.StartExit1.trayInsteadOfQuitChk.Caption=Minimize to tray clicking the close button [ X ]
menu.StartExit1.quitWithoutAskingToSaveChk.Caption=Force quitting (no dialogs)
menu.VirtualFileSystem1.Caption=Virtual File System
menu.VirtualFileSystem1.foldersbeforeChk.Caption=Folders before
menu.VirtualFileSystem1.linksBeforeChk.Caption=Links before
menu.VirtualFileSystem1.usesystemiconsChk.Caption=Use system icons
menu.VirtualFileSystem1.loadSingleCommentsChk.Caption=Load single comment files
menu.VirtualFileSystem1.supportDescriptionChk.Caption=Support DESCRIPT.ION
menu.VirtualFileSystem1.oemForIonChk.Caption=Use OEM for DESCRIPT.ION
menu.VirtualFileSystem1.recursiveListingChk.Caption=Enable recursive listing
menu.VirtualFileSystem1.deleteDontAskChk.Caption=Skip confirmation on deletion
menu.VirtualFileSystem1.listfileswithhiddenattributeChk.Caption=List files with <hidden> attribute
menu.VirtualFileSystem1.listfileswithsystemattributeChk.Caption=List files with <system> attribute
menu.VirtualFileSystem1.hideProtectedItemsChk.Caption=List protected items only for allowed users
menu.VirtualFileSystem1.Iconmasks1.Caption=Icon masks...
menu.VirtualFileSystem1.Flagfilesaddedrecently1.Caption=Flag files added recently...
menu.VirtualFileSystem1.Autosaveevery1.Caption=Auto-save every...
menu.VirtualFileSystem1.backupSavingChk.Caption=Backup on save
menu.VirtualFileSystem1.Addingfolder1.Caption=Adding folder
menu.VirtualFileSystem1.Addingfolder1.askFolderKindChk.Caption=Ask
menu.VirtualFileSystem1.Addingfolder1.defaultToVirtualChk.Caption=Default to virtual-folder
menu.VirtualFileSystem1.Addingfolder1.defaultToRealChk.Caption=Default to real-folder
menu.VirtualFileSystem1.Resetfileshits1.Caption=Reset files hits
menu.VirtualFileSystem1.Resettotals1.Caption=Reset totals
menu.Limits1.Caption=Limits
menu.Limits1.Speedlimit1.Caption=Speed limit (disabled)...
menu.Limits1.Speedlimitforsingleaddress1.Caption=Speed limit for single address...
menu.Limits1.Pausestreaming1.Caption=Pause streaming
menu.Limits1.Pausestreaming1.Hint=Sets speed limit temporarily to zero
menu.Limits1.maxDLs1.Caption=Max simultaneous downloads...
menu.Limits1.maxDLsIP1.Caption=Max simultaneous downloads from single address...
menu.Limits1.maxIPs1.Caption=Max simultaneous addresses...
menu.Limits1.maxIPsDLing1.Caption=Max simultaneous addresses downloading...
menu.Limits1.Maxconnections1.Caption=Max connections...
menu.Limits1.Maxconnectionsfromsingleaddress1.Caption=Max connections from single address...
menu.Limits1.Connectionsinactivitytimeout1.Caption=Connections inactivity timeout...
menu.Limits1.BannedIPaddresses1.Caption=Bans...
menu.Limits1.Minimumdiskspace1.Caption=Minimum disk space...
menu.Limits1.preventLeechingChk.Caption=Prevent leeching (download accelerators)
menu.Limits1.Allowedreferer1.Caption=Allowed referer...
menu.Limits1.stopSpidersChk.Caption=Stop spiders
menu.Flashtaskbutton1.Caption=Flash taskbutton
menu.Flashtaskbutton1.onDownloadChk.Caption=On download
menu.Flashtaskbutton1.onconnectionChk.Caption=On connection
menu.Flashtaskbutton1.never1.Caption=Never
menu.Flashtaskbutton1.beepChk.Caption=Also beep
menu.Fingerprints1.Caption=Fingerprints
menu.Fingerprints1.fingerprintsChk.Caption=Enabled
menu.Fingerprints1.saveNewFingerprintsChk.Caption=Save new calculated fingerprints
menu.Fingerprints1.Createfingerprintonaddition1.Caption=Create fingerprint on file addition...
menu.trayicons1.Caption=Tray icons
menu.trayicons1.MinimizetotrayChk.Caption=Minimize to tray
menu.trayicons1.showmaintrayiconChk.Caption=Show main tray icon
menu.trayicons1.hetrayiconshows1.Caption=Main icon shows
menu.trayicons1.hetrayiconshows1.Numberofcurrentconnections1.Caption=Number of current connections
menu.trayicons1.hetrayiconshows1.Numberofloggeddownloads1.Caption=Number of logged downloads
menu.trayicons1.hetrayiconshows1.Numberofloggeduploads1.Caption=Number of logged uploads
menu.trayicons1.hetrayiconshows1.Numberofloggedhits1.Caption=Number of logged hits
menu.trayicons1.hetrayiconshows1.NumberofdifferentIPaddresses1.Caption=Number of different IP addresses now connected
menu.trayicons1.hetrayiconshows1.NumberofdifferentIPaddresseseverconnected1.Caption=Number of different IP addresses ever connected
menu.trayicons1.traymessage1.Caption=Tray message...
menu.trayicons1.trayfordownloadChk.Caption=Tray icon for each download
menu.IPaddress1.Caption=&IP address
menu.IPaddress1.hisIPaddressisusedforURLbuilding1.Caption=This IP address is used only for URL building
menu.IPaddress1.Custom1.Caption=Custom...
menu.IPaddress1.noPortInUrlChk.Caption=Don't include port in URL
menu.IPaddress1.Findexternaladdress1.Caption=Find external address
menu.IPaddress1.searchbetteripChk.Caption=Constantly search for better address
menu.Acceptconnectionson1.Caption=Accept connections on
menu.Acceptconnectionson1.Anyaddress1.Caption=Any address
menu.DynamicDNSupdater1.Caption=Dynamic DNS updater
menu.DynamicDNSupdater1.CJBtemplate1.Caption=CJB wizard...
menu.DynamicDNSupdater1.NoIPtemplate1.Caption=No-IP wizard...
menu.DynamicDNSupdater1.DynDNStemplate1.Caption=DynDNS wizard...
menu.DynamicDNSupdater1.Custom2.Caption=Custom...
menu.DynamicDNSupdater1.Seelastserverresponse1.Caption=See last server response...
menu.DynamicDNSupdater1.Disable1.Caption=Disable
menu.URLencoding1.Caption=URL encoding
menu.URLencoding1.encodeSpacesChk.Caption=Encode spaces
menu.URLencoding1.encodenonasciiChk.Caption=Encode non-ASCII characters
menu.URLencoding1.pwdInPagesChk.Caption=Include password in pages (for download managers)
menu.URLencoding1.httpsUrlsChk.Caption=URLs starting with https instead of http
menu.Debug1.Caption=De&bug
menu.Debug1.resetOptions1.Caption=Temporarily reset options
menu.Debug1.dumpTrafficChk.Caption=Dump traffic
menu.Debug1.Showcustomizedoptions1.Caption=Show customized options...
menu.Debug1.highSpeedChk.Caption=Experimental high speed handling
menu.Debug1.macrosLogChk.Caption=Enable macros.log
menu.Debug1.Runscript1.Caption=Run script...
menu.Debug1.showMemUsageChk.Caption=Show memory usage
menu.Debug1.noContentdispositionChk.Caption=No Content-disposition
menu.Updates1.Caption=Updates
menu.Updates1.Checkforupdates1.Caption=Check for news/updates
menu.Updates1.updateDailyChk.Caption=Auto check every day
menu.Updates1.keepBakUpdatingChk.Caption=Keep old version
menu.Updates1.testerUpdatesChk.Caption=Updates from official to beta versions
menu.Updates1.updateAutomaticallyChk.Caption=Update automatically
menu.Updates1.delayUpdateChk.Caption=Delay update to serve last requests
menu.Updates1.Reverttopreviousversion1.Caption=Revert to previous version
menu.Donate1.Caption=Donate!
menu.Addfiles2.Caption=Add files...
menu.Addfolder2.Caption=Add folder from disk...
menu.Loadfilesystem1.Caption=Load file system...
menu.Loadrecentfiles1.Caption=Load recent files
menu.Savefilesystem1.Caption=Save file system...
menu.Clearfilesystem1.Caption=Clear file system
menu.Saveoptions1.Caption=Save options
menu.Saveoptions1.tofile1.Caption=to file
menu.Saveoptions1.toregistrycurrentuser1.Caption=to registry (current user)
menu.Saveoptions1.toregistryallusers1.Caption=to registry (all users)
menu.Saveoptions1.Clearoptionsandquit1.Caption=Clear options and quit
menu.Saveoptions1.autoSaveOptionsChk.Caption=Auto-save options
menu.Help1.Caption=Help
menu.Help1.Introduction1.Caption=Introduction
menu.Help1.Guide1.Caption=Full Guide
menu.Help1.FAQ1.Caption=F.A.Q.
menu.Weblinks1.Caption=Web links
menu.Weblinks1.Officialwebsite1.Caption=Official website
menu.Weblinks1.Forum1.Caption=Forum
menu.Weblinks1.License1.Caption=License
menu.UninstallHFS1.Caption=Uninstall HFS
menu.About1.Caption=About...
menu.SwitchON1.Caption=Switch ON
menu.Restore1.Caption=Restore
menu.Exit1.Caption=Exit
connmenu.Kickconnection1.Caption=Kick connection
connmenu.KickIPaddress1.Caption=Kick IP address
connmenu.Kickallconnections1.Caption=Kick all connections
connmenu.Kickidleconnections1.Caption=Kick idle connections
connmenu.BanIPaddress1.Caption=Ban IP address
connmenu.Pause1.Caption=Pause (download-only)
connmenu.Viewhttprequest1.Caption=View http request
connmenu.trayiconforeachdownload1.Caption=Tray icon for each download
logmenu.Logwhat1.Caption=Log what
logmenu.Logwhat1.LogtimeChk.Caption=Time
logmenu.Logwhat1.LogdateChk.Caption=Date
logmenu.Logwhat1.logBrowsingChk.Caption=Browsing
logmenu.Logwhat1.LogiconsChk.Caption=Icons
logmenu.Logwhat1.logProgressChk.Caption=Progress
logmenu.Logwhat1.logBannedChk.Caption=Banned
logmenu.Logwhat1.logOnlyServedChk.Caption=Only served requests
logmenu.Logwhat1.logOtherEventsChk.Caption=Other events
logmenu.Logwhat1.logOtherEventsChk.Hint=Like dynamic dns updating...
logmenu.Logwhat1.logconnectionsChk.Caption=Connections
logmenu.Logwhat1.logDisconnectionsChk.Caption=Disconnections
logmenu.Logwhat1.logRequestsChk.Caption=Requests
logmenu.Logwhat1.DumprequestsChk.Caption=Requests dump
logmenu.Logwhat1.logRepliesChk.Caption=Replies
logmenu.Logwhat1.logFulldownloadsChk.Caption=Full downloads
logmenu.Logwhat1.logUploadsChk.Caption=Uploads
logmenu.Logwhat1.logDeletionsChk.Caption=Deletions
logmenu.Logwhat1.logBytesreceivedChk.Caption=Bytes received
logmenu.Logwhat1.logBytessentChk.Caption=Bytes sent
logmenu.Logwhat1.logServerstartChk.Caption=Server start
logmenu.Logwhat1.logServerstopChk.Caption=Server stop
logmenu.logOnVideoChk.Caption=Log to screen
logmenu.Logfile1.Caption=Log to file...
logmenu.Maxlinesonscreen1.Caption=Max lines on screen...
logmenu.Apachelogfileformat1.Caption=Apache log file format...
logmenu.Donotlogaddress1.Caption=Do not log address...
logmenu.Dontlogsomefiles1.Caption=Do not log some files...
logmenu.Address2name1.Caption=Assign name to address...
logmenu.Font1.Caption=Font...
logmenu.tabOnLogFileChk.Caption=Tabbed instead of multi-line for the log file
logmenu.Readonly1.Caption=Read-only
logmenu.Banthisaddress1.Caption=Ban this address
logmenu.Copy1.Caption=Copy
logmenu.Clear1.Caption=Clear
logmenu.Clearandresettotals1.Caption=Clear and reset totals
logmenu.Save1.Caption=Save
logmenu.Saveas1.Caption=Save as...
logmenu.Addresseseverconnected1.Caption=Addresses ever connected...
graphMenu.Reset1.Caption=Reset
graphMenu.Hide.Caption=Hide
[TnewuserpassFrm]
Caption=Insert the requested user/pass
userBox.EditLabel.Caption=Username
pwdBox.EditLabel.Caption=Password
pwd2Box.EditLabel.Caption=Re-type password
okBtn.Caption=&Ok
resetBtn.Caption=&Reset
[ToptionsFrm]
Caption=Options
pageCtrl.bansPage.Caption=Bans
pageCtrl.bansPage.Panel1.addBtn.Caption=Add row
pageCtrl.bansPage.Panel1.deleteBtn.Caption=Delete row
pageCtrl.bansPage.Panel1.sortBanBtn.Caption=Sort
pageCtrl.bansPage.bansBox.TitleCaptions.Strings=IP address mask\^Comment
pageCtrl.bansPage.Panel3.noreplybanChk.Caption=Disconnect with no reply
pageCtrl.bansPage.Panel3.Button1.Caption=How to invert the logic?
pageCtrl.accountsPage.Caption=Accounts
pageCtrl.accountsPage.Label1.Caption=Account list
pageCtrl.accountsPage.Label7.Hint=You also need to right click on the folder, then restrict access
pageCtrl.accountsPage.Label7.Caption=WARNING: creating an account is not enough to protect your files...
pageCtrl.accountsPage.accountpropGrp.Caption=Account properties
pageCtrl.accountsPage.accountpropGrp.Label3.Caption=Here you can see protected resources this user can access...
pageCtrl.accountsPage.accountpropGrp.Label8.Caption=Notes
pageCtrl.accountsPage.accountpropGrp.accountenabledChk.Caption=&Enabled
pageCtrl.accountsPage.accountpropGrp.ignoreLimitsChk.Caption=&Ignore limits
pageCtrl.accountsPage.accountpropGrp.pwdBox.EditLabel.Caption=&Password
pageCtrl.accountsPage.accountpropGrp.redirBox.EditLabel.Caption{1}=After login, redirect to
pageCtrl.accountsPage.accountpropGrp.accountLinkBox.EditLabel.Caption=Member of
pageCtrl.accountsPage.accountpropGrp.groupChk.Caption=&Group
pageCtrl.accountsPage.accountpropGrp.groupsBtn.Caption=Choose...
pageCtrl.accountsPage.accountpropGrp.notesWrapChk.Caption=Wrap
pageCtrl.accountsPage.deleteaccountBtn.Caption=de&lete
pageCtrl.accountsPage.renaccountBtn.Caption=&rename
pageCtrl.accountsPage.addaccountBtn.Caption=ad&d
pageCtrl.accountsPage.upBtn.Caption=&up
pageCtrl.accountsPage.downBtn.Caption=do&wn
pageCtrl.accountsPage.sortBtn.Caption=sort
pageCtrl.mimePage.Caption=MIME types
pageCtrl.mimePage.mimeBox.TitleCaptions.Strings=File Mask\^MIME Description
pageCtrl.mimePage.Panel5.addMimeBtn.Caption=Add row
pageCtrl.mimePage.Panel5.deleteMimeBtn.Caption=Delete row
pageCtrl.mimePage.Panel5.inBrowserIfMIMEchk.Caption=Open directly in browser when MIME type is defined
pageCtrl.trayPage.Caption=Tray Message
pageCtrl.trayPage.Label2.Caption=You can customize the message in the tray icon tip. \+The message length is determined by your Windows version\+(in XP the limit is 127 characters including spaces).\+Available symbols:\+\+ %uptime% - server uptime\+ %url% - server main URL\+ %ip% - IP address set as default\+ %port% - Port on which the server is listening\+ %hits% - number of requests made to the server\+ %downloads% - number of files downloaded\+ %version% - HFS version
pageCtrl.trayPage.Label10.Caption=Preview
pageCtrl.trayPage.traymsgBox.Lines.Strings=traymsgBox
pageCtrl.a2nPage.Caption=Address2name
pageCtrl.a2nPage.Panel4.Label4.Caption=You can associate a label to an address (or many addresses). It will be used in the log.
pageCtrl.a2nPage.Panel4.deleteA2Nbtn.Caption=&Delete row
pageCtrl.a2nPage.Panel4.addA2Nbtn.Caption=Add &row
pageCtrl.a2nPage.a2nBox.TitleCaptions.Strings=Name\^IP Mask
pageCtrl.iconsPage.Caption=Icon masks
pageCtrl.iconsPage.Label5.Caption=Each line is a file-mask associated with an icon
pageCtrl.iconsPage.Label6.Caption=Icon associated
Panel2.okBtn.Caption=&OK
Panel2.applyBtn.Caption=&Apply
Panel2.cancelBtn.Caption=&Cancel
[TpurgeFrm]
Caption=Purge options
Label1.Caption=Choose what to remove...
rmFilesChk.Caption=Non-existent files
rmRealFoldersChk.Caption=Non-existent real folders
rmEmptyFoldersChk.Caption=Empty folders
Button1.Caption=&Ok
Button2.Caption=&Cancel
[TrunScriptFrm]
Caption=Run script
resultBox.Lines.Strings=Write your script in the external editor, then click Run.\^In this box will see the result of the script you run.
Panel1.sizeLbl.Caption=Size: 0
Panel1.runBtn.Caption=&Run
Panel1.autorunChk.Caption=&Auto run at every saving
[TshellExtFrm]
Caption=Option...
Panel1.Label1.Caption=Do you want HFS in your shell context menu?
Panel1.Button1.Caption=&Yes
Panel1.Button2.Caption=&No
[ResourceStrings]
64656_main_MSG_NUM_ADDR=In this moment there are %d different addresses
64657_main_MSG_NUM_ADDR_DL=In this moment there are %d different addresses downloading
64658_main_MSG_MAX_LINES=Max lines on screen.
64659_main_MSG_APACHE_LOG_FMT=Apache log file format
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_ICONS_ADDED=%d new icons added
64662_main_MSG_DDNS_DISABLED=Dynamic DNS updater disabled
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=Auto fingerprint
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.
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.
64672_main_MSG_EVENTS_HLP=For help on how to use this file please refer http://www.rejetto.com/wiki/?title=HFS:_Event_scripts
64673_main_MSG_EDIT_RES=Edit resource
64674_main_MSG_TPL_USE_MACROS=The current template is using macros.\^Do you want to cancel this action?
64675_main_REMOVE_SHELL=Remove from shell context menu
64676_main_S_OFF=Switch OFF
64677_main_S_ON{1}=Switch ON
64678_main_LOG=Log
64679_main_MSG_RE_NOIP=You are invited to re-insert your No-IP configuration, otherwise the updater won't work as expected.
64680_main_MSG_TRAY_DEF=%ip%\^Uptime: %uptime%\^Downloads: %downloads%
64681_main_MSG_CLEAN_START=Clean start
64682_main_MSG_RESTORE_BAK=A file system backup has been created for a system shutdown.\^Do you want to restore this backup?
64683_main_MSG_EXT_ADDR_FAIL=Search for external address failed
64684_main_MSG_TO_EXPERT=Switch to expert mode.
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".
64686_main_MSG_DL_PERC=Downloading %d%%
64687_main_MSG_UNINSTALL_WARN=Delete HFS and all settings?
64688_main_MSG_SELF_3=You may be behind a router or firewall.
64689_main_MSG_SELF_6=You are behind a router.\^Ensure it is configured to forward port %s to your computer.
64690_main_MSG_SELF_7=You may be behind a firewall.\^Ensure nothing is blocking HFS.
64691_main_MSG_RET_EXT=Retrieving external address...
64692_main_MSG_SELF_CANT_ON=Unable to switch the server on
64693_main_MSG_SELF_CANT_LIST=Self test cannot be performed because HFS was configured to accept connections only on 127.0.0.1
64694_main_MSG_SELF_CANT_S=Self test doesn't support HTTPS.\^It's likely it won't work.
64695_main_MSG_SELF_ING=Self testing...
64696_main_MSG_TEST_CANC=Test cancelled
64697_main_MSG_TEST_INET=Testing internet connection...
64698_main_MSG_SELF_UNAV=Sorry, the test is unavailable at the moment
64699_main_MSG_SELF_NO_INET=Your internet connection does not work
64700_main_MSG_SELF_NO_ANSWER=The test failed: server does not answer.
64701_main_MSG_OPEN_BROW=Open directly in browser
64702_main_MSG_OPEN_BROW_LONG="Suggest" the browser to open directly the specified files.\^Other files should pop up a save dialog.
64703_main_MSG_HIDE_PORT=You should not use this option unless you really know its meaning.\^Continue?
64704_main_MSG_RESET_TOT=Do you want to reset total in/out?
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.
64706_main_MSG_ENT_URL=Enter URL
64707_main_MSG_ENT_URL_LONG=Enter URL for updating.\^%ip% will be translated to your external IP.
64708_main_MSG_ENT_USR=Enter user
64709_main_MSG_ENT_PWD=Enter password
64710_main_MSG_ENT_HOST=Enter host
64711_main_MSG_ENT_HOST_LONG=Enter domain (full form!)
64712_main_MSG_HOST_FORM=Please, enter it in the FULL form, with dots
64713_main_MSG_MIN_SPACE=Min disk space
64714_main_MSG_MIN_SPACE_LONG=The upload will fail if your disk has less than the specified amount of free MegaBytes.
64715_main_MSG_REN_PART=Rename partial uploads
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.
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.
64718_main_MSG_SELF_OK=The test is successful. The server should be working fine.
64719_main_MSG_SELF_OK_PORT=Port %s is not working, but another working port has been found and set: %s.
64720_main_MSG_LOG_FILE=Log file
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
64722_main_MSG_SET_URL=Set URL
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
64724_main_MSG_REALM=Login realm
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
64726_main_MSG_INACT_TIMEOUT=Connection inactivity timeout
64727_main_MSG_INACT_TIMEOUT_LONG=The connection is kicked after a timeout.\^Specify in seconds.\^Leave blank to get no timeout.
64728_main_MSG_CHANGES_LOST=All changes will be lost\^Continue?
64729_main_MSG_FLAG_NEW=Flag new files
64730_main_MSG_FLAG_NEW_LONG=Enter the number of MINUTES files stay flagged from their addition.\^Leave blank to disable.
64731_main_MSG_DONT_LOG_MASK=Do not log address
64732_main_MSG_DONT_LOG_MASK_LONG=Any event from the following IP address mask will be not logged.
64733_main_MSG_CUST_IP=Custom IP addresses
64734_main_MSG_CUST_IP_LONG=Specify your addresses, each per line
64735_main_MSG_NO_EXT_IP=Can't find external address\^( %s )
64736_main_MSG_TENTH_SEC=Tenths of second
64737_main_MSG_LOADING_VFS=Loading VFS
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.
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.
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".
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.
64742_main_MSG_CORRUPTED=This file does not contain valid data.
64743_main_MSG_MACROS_FOUND=!!!!!!!!! DANGER !!!!!!!!!\^This file contains macros.\^Don't accept macros from people you don't trust.\^\^Trust this file?
64744_main_MSG_UPD_INFO=Last stable version: %s\^\^Last untested version: %s\^
64745_main_MSG_NEWER=There's a new version available online: %s
64746_main_MSG_SRC_UPD=Searching for updates...
64747_main_ARE_EXPERT{1}=You are in Expert mode
64748_main_ARE_EASY=You are in Easy mode
64749_main_SW2EXPERT=Switch to Expert mode
64750_main_SW2EASY=Switch to Easy mode
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.
64752_main_MSG_NEWER_INCOMP=This file has been created with a newer and incompatible version.
64753_main_MSG_ZLIB=This file is corrupted (ZLIB).
64754_main_MSG_BAKAVAILABLE=This file is corrupted but a backup is available.\^Continue with backup?
64755_main_MSG_CANT_LOAD_SAVE=Cannot load or save while adding files
64756_main_MSG_OPEN_VFS=Open VFS file
64757_main_LIMIT{2}=Limit
64758_main_TOP_SPEED=Top speed
64759_main_MSG_MAX_BW=Max bandwidth (KB/s).
64760_main_MSG_LIM0=Zero is an effective limit.\^To disable instead, leave empty.
64761_main_MSG_MAX_BW_1=Max bandwidth for single address (KB/s).
64762_main_MSG_GRAPH_RATE_MENU=Graph refresh rate: %d (tenths of second)
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".
64764_main_MSG_WARN_CONN=In this moment there are %d active connections
64765_main_MSG_WARN_ACT_DL=In this moment there are %d active downloads
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".
64767_main_MSG_GRAPH_RATE{1}=Graph refresh rate
64768_main_MSG_VFS_DONT_CONS_DL_MASK=Don't consider as download (mask): %s
64769_main_MSG_VFS_INHERITED= [inherited]
64770_main_MSG_VFS_EXTERNAL= [external]
64771_main_MSG_CON_HINT=Connection time: %s\^Last request time: %s\^Agent: %s
64772_main_MSG_CON_STATE_IDLE=idle
64773_main_MSG_CON_STATE_REQ=requesting
64774_main_MSG_CON_STATE_RCV=receiving
64775_main_MSG_CON_STATE_THINK=thinking
64776_main_MSG_CON_STATE_REP=replying
64777_main_MSG_CON_STATE_SEND=sending
64778_main_MSG_CON_STATE_DISC=disconnected
64779_main_MSG_TPL_RESET=The template has been reset
64780_main_MSG_ALLO_REF=Allowed referer
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.
64782_main_MSG_BETTERSTOP=\^Going on may lead to problems.\^It is adviced to stop loading.\^Stop?
64783_main_MSG_BADCRC=This file is corrupted (CRC).
64784_main_MSG_VFS_HIDE_EMPTY=Hidden if empty
64785_main_MSG_VFS_NOT_BROW=Not browsable
64786_main_MSG_VFS_HIDE_EMPTY_FLD=Hide empty folders
64787_main_MSG_VFS_HIDE_EXT=Hide extention
64788_main_MSG_VFS_ARCABLE=Archivable
64789_main_MSG_VFS_DEF_MASK=Default file mask: %s
64790_main_MSG_VFS_ACCESS=Access for
64791_main_MSG_VFS_UPLOAD=Upload allowed for
64792_main_MSG_VFS_DELETE=Delete allowed for
64793_main_MSG_VFS_COMMENT=Comment: %s
64794_main_MSG_VFS_REALM=Realm: %s
64795_main_MSG_VFS_DIFF_TPL=Diff template: %s
64796_main_MSG_VFS_FILES_FLT=Files filter: %s
64797_main_MSG_VFS_FLD_FLT=Folders filter: %s
64798_main_MSG_VFS_UPL_FLT=Upload filter: %s
64799_main_MSG_VFS_DONT_CONS_DL=Don't consider as download
64800_main_IN_SPEED=In: %.1f KB/s
64801_main_BANS=Ban rules: %d
64802_main_MEMORY=Mem
64803_main_CUST_TPL=Customized template
64804_main_VFS_ITEMS=VFS: %d items
64805_main_MSG_ITEM_EXISTS=%s item(s) already exists:\^%s\^\^Continue?
64806_main_MSG_INSTALL_TPL=Install this template?
64807_main_MSG_FOLDER_UPLOAD=Do you want ANYONE to be able to upload to this folder?
64808_main_MSG_VFS_DRAG_INVIT=Drag your files here
64809_main_MSG_VFS_URL=URL: %s
64810_main_MSG_VFS_PATH=Path: %s
64811_main_MSG_VFS_SIZE=Size: %s
64812_main_MSG_VFS_DLS=Downloads: %s
64813_main_MSG_VFS_INVISIBLE=Invisible
64814_main_MSG_VFS_DL_FORB=Download forbidden
64815_main_MSG_VFS_DONT_LOG=Don't log
64816_main_MSG_UPD_DL=Downloading new version...
64817_main_MSG_UPDATE=You are invited to use the new version.\^\^Update now?
64818_main_MSG_REQUESTING=Requesting...
64819_main_MSG_CHK_UPD=Checking for updates
64820_main_MSG_CHK_UPD_FAIL=Check update: failed
64821_main_MSG_CHK_UPD_HEAD=Check update:
64822_main_MSG_CHK_UPD_VER=new version found: %s
64823_main_MSG_CHK_UPD_VER_EXT=Build #%s (current is #%s)
64824_main_MSG_CHK_UPD_NONE=no new version
64825_main_TO_CLIP=Copy to clipboard
64826_main_ALREADY_CLIP=Already in clipboard
64827_main_MSG_NO_SPACE=Out of space
64828_main_CONN=Connections: %d
64829_main_TOT_IN=Total In: %s
64830_main_TOT_OUT{1}=Total Out: %s
64831_main_OUT_SPEED=Out: %.1f KB/s
64832_main_MSG_FILE_ADD_ABORT=File addition was aborted.\^The list of files is incomplete.
64833_main_MSG_ADDING=Adding item #%d
64834_main_MSG_INV_FILENAME=Invalid filename
64835_main_MSG_DELETE=Delete?
64836_main_AUTOSAVE=Auto save every:
64837_main_SECONDS=%d seconds
64838_main_MSG_SPD_LIMIT_SING=Speed limit for single address
64839_main_MSG_SPD_LIMIT=Speed limit
64840_main_MSG_AUTO_SAVE=Auto-save %s
64841_main_MSG_AUTO_SAVE_LONG=Auto-save %s.\^Specify in seconds.\^Leave blank to disable.
64842_main_MSG_MIN=We don't accept less than %d
64843_main_MSG_BAN=Your ban configuration may have been screwed up.\^Please verify it.
64844_main_MSG_CANT_SAVE_OPT=Can't save options there.\^Should I try to save to user registry?
64845_main_MSG_UPD_SAVE_ERROR=Cannot save the update
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.
64847_main_MSG_UPD_WAIT=Waiting for last requests to be served, then we'll update
64848_main_MSG_LOG_HEAD=Served head
64849_main_MSG_LOG_NOT_MOD=Not modified, use cache
64850_main_MSG_LOG_REDIR=Redirected to %s
64851_main_MSG_LOG_NOT_SERVED=Not served: %d - %s
64852_main_MSG_LOG_UPL=Uploading %s
64853_main_MSG_LOG_UPLOADED=Fully uploaded %s - %s @ %sB/s
64854_main_MSG_LOG_UPL_FAIL=Upload failed %s
64855_main_MSG_LOG_DL=Fully downloaded - %s @ %sB/s - %s
64856_main_MSG_LOGIN_FAILED=Login failed
64857_main_MSG_MIN_DISK_REACHED=Minimum disk space reached.
64858_main_MSG_UPL_NAME_FORB=File name or extension forbidden.
64859_main_MSG_UPL_CANT_CREATE=Error creating file.
64860_main_FINGERPRINT=Create fingerprint on addition under %d KB
64861_main_NO_FINGERPRINT=Create fingerprint on addition: disabled
64862_main_MSG_SAVE_VFS=Your current file system is not saved.\^Save it?
64863_main_MSG_INP_COMMENT=Please insert a comment for "%s".\^You should use HTML: <br> for break line.
64864_main_MSG_BAN_CMT=Ban comment
64865_main_MSG_BAN_CMT_LONG=A comment for this ban...
64866_main_MSG_BREAK_DYN_DNS=This option is NOT compatible with "dynamic dns updater".\^Continue?
64867_main_MSG_CANT_OPEN_PORT=Cannot open port.
64868_main_MSG_PORT_USED_BY=It is already used by %s
64869_main_MSG_PORT_BLOCKED=Something is blocking, maybe your system firewall.
64870_main_MSG_KICK_ALL=There are %d connections open.\^Do you want to close them now?
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.
64872_main_MSG_LOG_SERVER_START=Server start
64873_main_MSG_LOG_SERVER_STOP=Server stop
64874_main_MSG_LOG_CONNECTED=Connected
64875_main_MSG_LOG_DISC_SRV=Disconnected by server
64876_main_MSG_LOG_DISC=Disconnected
64877_main_MSG_LOG_GOT=Got %d bytes
64878_main_MSG_LOG_BYTES_SENT=%s bytes sent
64879_main_MSG_LOG_SERVED=Served %s
64880_main_MSG_DDNS_FAIL=DNS update failed: %s\^User intervention is required.
64881_main_MSG_DDNS_REPLY_SIZE=%d bytes reply
64882_main_MSG_DDNS_badauth=invalid user/password
64883_main_MSG_DDNS_notfqdn=incomplete hostname, required form aaa.bbb.com
64884_main_MSG_DDNS_nohost=specified hostname does not exist
64885_main_MSG_DDNS_notyours=specified hostname belongs to another username
64886_main_MSG_DDNS_numhost=too many or too few hosts found
64887_main_MSG_DDNS_abuse=specified hostname is blocked for update abuse
64888_main_MSG_DDNS_dnserr=server error
64889_main_MSG_DDNS_911=server error
64890_main_MSG_DDNS_notdonator=an option specified requires payment
64891_main_MSG_DDNS_badagent=banned client
64892_main_MSG_BAN_MASK=Ban IP mask
64893_main_MSG_IP_MASK_LONG=You can edit the address.\^Masks and ranges are allowed.
64894_main_MSG_KICK_ADDR=There are %d open connections from this address.\^Do you want to kick them all now?
64895_main_MSG_BAN_ALREADY=This IP address is already banned
64896_main_MSG_ADDRESSES_EXCEED=The following addresses exceed the limit:\^%s
64897_main_MSG_NO_TEMP=Cannot save temporary file
64898_main_MSG_ERROR_REGISTRY=Can't write to registry.\^You may lack necessary rights.
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.
64900_main_MSG_ADD_TO_HFS="Add to HFS" has been added to your Window's Explorer right-click menu.
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)
64902_main_MSG_COMM_ERROR=Network error. Request failed.
64903_main_MSG_CON_PAUSED=paused
64904_main_MSG_CON_SENT=%s / %s sent
64905_main_MSG_CON_RECEIVED=%s / %s received
64906_main_MSG_DDNS_NO_REPLY=no reply
64907_main_MSG_DDNS_OK=successful
64908_main_MSG_DDNS_UNK=unknown reply: %s
64909_main_MSG_DDNS_ERR=error: %s
64910_main_MSG_DDNS_REQ=DNS update requested for %s: %s
64911_main_MSG_DDNS_DOING=Updating dynamic DNS...
64912_main_MSG_MAX_CON_SING=Max connections from single address
64913_main_MSG_MAX_SIM_ADDR{1}=Max simultaneous addresses
64914_main_MSG_MAX_SIM_ADDR_DL=Max simultaneous addresses downloading
64915_main_MSG_MAX_SIM_DL_SING{2}=Max simultaneous downloads from single address
64916_main_MSG_MAX_SIM_DL=Max simultaneous downloads
64917_main_MSG_SET_LIMIT=Set limit
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?
64919_main_MSG_SAME_NAME=An item with the same name is already present in this folder.\^Continue?
64920_main_MSG_CONTINUE=Continue?
64921_main_MSG_PROCESSING=Processing...
64922_main_MSG_SPEED_KBS=%.1f kB/s
64923_main_MSG_OPTIONS_SAVED=Options saved
64924_main_MSG_SOME_LOCKED=Some items were not affected because locked
64925_main_MSG_ITEM_LOCKED=The item is locked
64926_main_MSG_INVALID_VALUE=Invalid value
64927_main_MSG_EMPTY_NO_LIMIT=Leave blank to get no limits.
64935_classesLib_MSG_ANTIDOS_REPLY=Please wait, server busy
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.
64937_main_S_PORT_LABEL=Port: %s
64938_main_S_PORT_ANY=any
64939_main_DISABLED=disabled
64940_main_S_OK=Ok
64941_main_MSG_MENU_VAL= (%s)
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
65088_OverbyteIcsCharsetUtils_sHebrewISOVisual=Hebrew (ISO-Visual)
65089_OverbyteIcsCharsetUtils_sHebrewWindows=Hebrew (Windows)
65090_OverbyteIcsCharsetUtils_sJapaneseJIS=Japanese (JIS)
65091_OverbyteIcsCharsetUtils_sKorean=Korean
65092_OverbyteIcsCharsetUtils_sKoreanEUC=Korean (EUC)
65093_OverbyteIcsCharsetUtils_sLatin9=Latin 9 (ISO)
65094_OverbyteIcsCharsetUtils_sThaiWindows=Thai (Windows)
65095_OverbyteIcsCharsetUtils_sTurkishISO=Turkish (ISO)
65096_OverbyteIcsCharsetUtils_sTurkishWindows=Turkish (Windows)
65097_OverbyteIcsCharsetUtils_sUnicodeUTF7=Unicode (UTF-7)
65098_OverbyteIcsCharsetUtils_sUnicodeUTF8=Unicode (UTF-8)
65099_OverbyteIcsCharsetUtils_sVietnameseWindows=Vietnamese (Windows)
65100_OverbyteIcsCharsetUtils_sWesternEuropeanISO=Western European (ISO)
65101_OverbyteIcsCharsetUtils_sWesternEuropeanWindows=Western European (Windows)
65104_OverbyteIcsCharsetUtils_sBalticISO=Baltic (ISO)
65105_OverbyteIcsCharsetUtils_sBalticWindows=Baltic (Windows)
65106_OverbyteIcsCharsetUtils_sCentralEuropeanISO=Central European (ISO)
65107_OverbyteIcsCharsetUtils_sCentralEuropeanWindows=Central European (Windows)
65108_OverbyteIcsCharsetUtils_sChineseTraditionalBig5=Chinese Traditional (Big5)
65109_OverbyteIcsCharsetUtils_sChineseSimplifiedGB18030=Chinese Simplified (GB18030)
65110_OverbyteIcsCharsetUtils_sChineseSimplifiedGB2312=Chinese Simplified (GB2312)
65111_OverbyteIcsCharsetUtils_sChineseSimplifiedHZ=Chinese Simplified (HZ)
65112_OverbyteIcsCharsetUtils_sCyrillicISO=Cyrillic (ISO)
65113_OverbyteIcsCharsetUtils_sCyrillicKOI8R=Cyrillic (KOI8-R)
65114_OverbyteIcsCharsetUtils_sCyrillicKOI8U=Cyrillic (KOI8-U)
65115_OverbyteIcsCharsetUtils_sCyrillicWindows=Cyrillic (Windows)
65116_OverbyteIcsCharsetUtils_sEstonianISO=Estonian (ISO)
65117_OverbyteIcsCharsetUtils_sGreekISO=Greek (ISO)
65118_OverbyteIcsCharsetUtils_sGreekWindows=Greek (Windows)
65119_OverbyteIcsCharsetUtils_sHebrewISOLogical=Hebrew (ISO-Logical)
65134_OverbyteIcsCharsetUtils_sArabicISO=Arabic (ISO)
65135_OverbyteIcsCharsetUtils_sArabicWindows=Arabic (Windows)

View File

@ -1,5 +1,5 @@
{ {
Copyright (C) 2002-2020 Massimo Melina (www.rejetto.com) Copyright (C) 2002-2014 Massimo Melina (www.rejetto.com)
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
@ -19,7 +19,6 @@ Copyright (C) 2002-2020 Massimo Melina (www.rejetto.com)
HTTP Server Lib HTTP Server Lib
==== TO DO ==== TO DO
* https
* upload bandwidth control (can it be done without multi-threading?) * upload bandwidth control (can it be done without multi-threading?)
} }
@ -157,7 +156,6 @@ type
P_requestCount: integer; P_requestCount: integer;
P_destroying: boolean; // destroying is in progress P_destroying: boolean; // destroying is in progress
P_sndBuf: integer; P_sndBuf: integer;
P_v6: boolean;
persistent: boolean; persistent: boolean;
disconnecting: boolean; // disconnected() has been called disconnecting: boolean; // disconnected() has been called
lockCount: integer; // prevent freeing of the object lockCount: integer; // prevent freeing of the object
@ -221,7 +219,6 @@ type
function initInputStream():boolean; function initInputStream():boolean;
property address:string read P_address; // other peer ip address property address:string read P_address; // other peer ip address
property port:string read P_port; // other peer port property port:string read P_port; // other peer port
property v6:boolean read P_v6;
property requestCount:integer read P_requestCount; property requestCount:integer read P_requestCount;
property bytesToSend:int64 read getBytesToSend; property bytesToSend:int64 read getBytesToSend;
property bytesToPost:int64 read getBytesToPost; property bytesToPost:int64 read getBytesToPost;
@ -293,7 +290,7 @@ const
MINIMUM_CHUNK_SIZE = 2*1024; MINIMUM_CHUNK_SIZE = 2*1024;
MAXIMUM_CHUNK_SIZE = 1024*1024; MAXIMUM_CHUNK_SIZE = 1024*1024;
HRM2CODE: array [ThttpReplyMode] of integer = (200, 200, 403, 401, 404, 400, HRM2CODE: array [ThttpReplyMode] of integer = (200, 200, 403, 401, 404, 400,
500, 0, 0, 405, 302, 429, 413, 301, 304 ); 500, 0, 0, 405, 302, 503, 413, 301, 304 );
METHOD2STR: array [ThttpMethod] of ansistring = ('UNK','GET','POST','HEAD'); METHOD2STR: array [ThttpMethod] of ansistring = ('UNK','GET','POST','HEAD');
HRM2STR: array [ThttpReplyMode] of ansistring = ('Head+Body', 'Head only', 'Deny', HRM2STR: array [ThttpReplyMode] of ansistring = ('Head+Body', 'Head only', 'Deny',
'Unauthorized', 'Not found', 'Bad request', 'Internal error', 'Close', 'Unauthorized', 'Not found', 'Bad request', 'Internal error', 'Close',
@ -337,7 +334,6 @@ uses
Windows, ansistrings; Windows, ansistrings;
const const
CRLF = #13#10; CRLF = #13#10;
HEADER_LIMITER: ansistring = CRLF+CRLF;
MAX_REQUEST_LENGTH = 64*1024; MAX_REQUEST_LENGTH = 64*1024;
MAX_INPUT_BUFFER_LENGTH = 256*1024; MAX_INPUT_BUFFER_LENGTH = 256*1024;
// used as body content when the user did not specify any // used as body content when the user did not specify any
@ -353,7 +349,7 @@ const
'', '',
'405 - Method not allowed', '405 - Method not allowed',
'<html><head><meta http-equiv="refresh" content="url=%url%" /></head><body onload=''window.location="%url%"''>302 - <a href="%url%">Redirection to %url%</a></body></html>', '<html><head><meta http-equiv="refresh" content="url=%url%" /></head><body onload=''window.location="%url%"''>302 - <a href="%url%">Redirection to %url%</a></body></html>',
'429 - Server is overloaded, retry later', '503 - Server is overloaded, retry later',
'413 - The request has exceeded the max length allowed', '413 - The request has exceeded the max length allowed',
'301 - Moved permanently to <a href="%url%">%url%</a>', '301 - Moved permanently to <a href="%url%">%url%</a>',
'' // RFC2616: The 304 response MUST NOT contain a message-body '' // RFC2616: The 304 response MUST NOT contain a message-body
@ -579,8 +575,7 @@ 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
@ -677,7 +672,7 @@ end; // chopline
function chopLine(var s:ansistring):ansistring; overload; function chopLine(var s:ansistring):ansistring; overload;
begin begin
result:=chop(#10,s); result:=chop(pos(#10,s),1,s);
if (result>'') and (result[length(result)]=#13) then if (result>'') and (result[length(result)]=#13) then
setlength(result, length(result)-1); setlength(result, length(result)-1);
end; // chopline end; // chopline
@ -877,6 +872,7 @@ end; // timerEvent
procedure ThttpSrv.notify(ev:ThttpEvent; conn:ThttpConn); procedure ThttpSrv.notify(ev:ThttpEvent; conn:ThttpConn);
begin begin
if not assigned(onEvent) then exit; if not assigned(onEvent) then exit;
//if assigned(sock) then sock.pause();
if assigned(conn) then if assigned(conn) then
begin begin
inc(conn.lockCount); inc(conn.lockCount);
@ -981,7 +977,6 @@ limiters:=TObjectList.create;
limiters.ownsObjects:=FALSE; limiters.ownsObjects:=FALSE;
P_address:=sock.GetPeerAddr(); P_address:=sock.GetPeerAddr();
P_port:=sock.GetPeerPort(); P_port:=sock.GetPeerPort();
P_v6:=pos(':', address) > 0;
state:=HCS_IDLE; state:=HCS_IDLE;
srv:=server; srv:=server;
srv.conns.add(self); srv.conns.add(self);
@ -1214,8 +1209,8 @@ procedure ThttpConn.processInputBuffer();
var var
i: integer; i: integer;
s, l, k, v: ansistring; s, l, k, c: string;
ws: widestring;
begin begin
repeat repeat
{ When the buffer is stuffed with file bytes only, we can avoid calling pos() and chop(). { When the buffer is stuffed with file bytes only, we can avoid calling pos() and chop().
@ -1256,12 +1251,11 @@ procedure ThttpConn.processInputBuffer();
break; break;
end; end;
// we wait for the header to be complete // we wait for the header to be complete
if posEx(HEADER_LIMITER, buffer, i+length(post.boundary)) = 0 then if posEx(CRLF+CRLF, buffer, i+length(post.boundary)) = 0 then break;
break;
handleLeftData(i); handleLeftData(i);
post.filename:=''; post.filename:='';
post.data:=''; post.data:='';
post.header:=chop(HEADER_LIMITER, buffer); post.header:=chop(CRLF+CRLF, buffer);
chopLine(post.header); chopLine(post.header);
// parse the header part // parse the header part
s:=post.header; s:=post.header;
@ -1270,28 +1264,25 @@ procedure ThttpConn.processInputBuffer();
l:=chopLine(s); l:=chopLine(s);
if l = '' then continue; if l = '' then continue;
k:=chop(':', l); k:=chop(':', l);
if not sameText(k, 'Content-Disposition') then // we are only interested in content-disposition: form-data if not sameText(k, 'Content-Disposition') then continue; // we are not interested in other fields
continue;
k:=trim(chop(';', l)); k:=trim(chop(';', l));
if not sameText(k, 'form-data') then if not sameText(k, 'form-data') then continue;
continue;
while l > '' do while l > '' do
begin begin
v:=chop(nonQuotedPos(';', l), 1, l); c:=chop(nonQuotedPos(';', l), l);
k:=trim(chop('=', v)); k:=UTF8toString(rawByteString(trim(chop('=', c))));
ws:=UTF8toString(ansiDequotedStr(v,'"')); c:=UTF8toString(rawByteString(ansiDequotedStr(c,'"')));
if sameText(k, 'filename') then if sameText(k, 'filename') then
begin begin
delete(ws, 1, lastDelimiter('/\',ws)); delete(c, 1, lastDelimiter('/\',c));
post.filename:=ws; post.filename:=c;
end end;
else if sameText(k, 'name') then if sameText(k, 'name') then
post.varname:=ws; post.varname:=c;
end; end;
end; end;
lastPostItemPos:=bytesPosted-length(buffer); lastPostItemPos:=bytesPosted-length(buffer);
if post.filename = '' then if post.filename = '' then continue;
continue;
firstPostFile:=FALSE; firstPostFile:=FALSE;
tryNotify(HE_POST_FILE); tryNotify(HE_POST_FILE);
until false; until false;
@ -1599,7 +1590,7 @@ end; // initInputStream
function ThttpConn.sendNextChunk(max:integer=MAXINT):integer; function ThttpConn.sendNextChunk(max:integer=MAXINT):integer;
var var
n, toSend: int64; n: int64;
buf: ansistring; buf: ansistring;
begin begin
result:=0; result:=0;
@ -1611,8 +1602,7 @@ 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;
toSend:=bytesToSend; if n > bytesToSend then n:=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);

8
invertban.txt Normal file
View File

@ -0,0 +1,8 @@
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.

View File

@ -2963,6 +2963,10 @@ 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

1336
main.pas

File diff suppressed because it is too large Load Diff

62
notes.txt Normal file
View File

@ -0,0 +1,62 @@
=== 4GB+ FILES DOWNLOAD SUPPORT
Reget Deluxe 4.1
MetaProducts Download Express 1.7
Getright
Firefox 2.0
=== 2GB+ FILES UPLOAD SUPPORT
firefox 3.0: no
=== HOW TO CREATE BIG FILES
fsutil file createnew <filename> <filesize>
=== HOW TO DOWNLOAD WITH NO DISK ACTIVITY (SPEED TEST)
create a big file as above
then download this way: wget -q -O nul http://localhost/big
=== SUBMITTED TO
www.nonags.com
www.sharewareconnection.com
=== LISTED ON
www.sofotex.com
www.download3000.com
www.onekit.com
www.all4you.dk/FreewareWorld
www.snapfiles.com
sourceforge
www.freedownloadscenter.com
download.freenet.de
www.softonic.com
www.portablefreeware.com
www.download.com
www.freewarepub.org
www.handyarchive.com
www.softpedia.com
www.acidfiles.com
www.fileedge.com
www.freewarepark.com
=== REVIEWS
http://www.technospot.net/blogs/host-a-web-server-on-your-home-pc/
http://www.snapfiles.com/get/hfs.html
http://www.downloadsquad.com/2006/05/24/hft-quick-and-easy-http-file-server/
http://www.caseytech.com/how-to-host-a-web-site-from-your-computer/
http://www.chip.de/downloads/c1_downloads_29480524.html
http://blog.pcserenity.com/2009/01/easy-conten-sharing-with-windows.html
http://hfs.onehelp.ch
http://www.lanacion.com.ar/nota.asp?nota_id=1148507
http://blogmotion.fr/systeme/partage-windows-hfs-3947
ita
http://lafabbricadibyte.wordpress.com/2007/05/01/hfs-file-server-http-gratuito-per-windows/
http://server.html.it/articoli/leggi/2335/hfs-file-sharing-via-http/
=== OTHER SOFTWARE BASED ON HFS
http://www.wrinx.com/products/pfs/
commercial, licensed
http://www.powernetservers.com/pnwfs.php
commercial, probably unlicensed
=== INSTALLABLE PLUGINS
log links usage
http://www.rejetto.com/forum/index.php/topic,7765.msg1047258.html#msg1047258

View File

@ -834,16 +834,7 @@ procedure ToptionsFrm.okBtnClick(Sender: TObject);
begin if saveValues() then close() end; begin if saveValues() then close() end;
procedure ToptionsFrm.Button1Click(Sender: TObject); procedure ToptionsFrm.Button1Click(Sender: TObject);
resourcestring MSG_INVERT_BAN = begin msgDlg(getRes('invertBan')) end;
'Normal behavior of the Ban is to prevent access to the addresses you specify (also called black-list).'
+#13'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.'
+#13
+#13'Let say you want to allow all your 192.168 local network plus your office at 1.1.1.1.'
+#13'Just put this IP address mask: \192.168.*;1.1.1.1'
+#13'The opening \ character inverts the logic, so everything else is banned.'
+#13
+#13'If you want to know more about address masks, check the guide.';
begin msgDlg(MSG_INVERT_BAN) end;
procedure ToptionsFrm.groupsBtnClick(Sender: TObject); procedure ToptionsFrm.groupsBtnClick(Sender: TObject);
var var

View File

@ -1,5 +1,5 @@
{ {
Copyright (C) 2002-2020 Massimo Melina (www.rejetto.com) Copyright (C) 2002-2012 Massimo Melina (www.rejetto.com)
This file is part of HFS ~ HTTP File Server. This file is part of HFS ~ HTTP File Server.
@ -161,18 +161,16 @@ 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);
unsatisfied(not result); if not result then
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;
@ -264,9 +262,9 @@ var
result:=staticVars; result:=staticVars;
delete(varname,1,length(G_VAR_PREFIX)); delete(varname,1,length(G_VAR_PREFIX));
end end
else if assigned(md.cd) then else if satisfied(md.cd) then
result:=md.cd.vars result:=md.cd.vars
else if assigned(md.tempVars) then else if satisfied(md.tempVars) then
result:=md.tempVars result:=md.tempVars
else else
raise Exception.create('no namespace available'); raise Exception.create('no namespace available');
@ -295,7 +293,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(TRUE) // all is good the way it is if value = '' then exit // 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)
@ -662,40 +660,16 @@ var
procedure inc_(v:integer=+1); procedure inc_(v:integer=+1);
begin begin
try result:='';
setVar(p, intToStr(strToIntDef(getVar(p),0)+v*parI(1,1))); try setVar(p, intToStr(strToIntDef(getVar(p),0)+v*parI(1,1))) except end;
result:='';
except
end;
end; // inc_ end; // inc_
procedure convert(); procedure convert();
var
dst, s: string;
c: ansichar;
begin begin
dst:=par(1); if sameText(p, 'ansi') and sameText(par(1), 'utf-8') then
s:=par(2); result:=string(ansiToUTF8(ansistring(par(2))))
if sameText(p, 'ansi') and sameText(dst, 'utf-8') then else if sameText(p, 'utf-8') and sameText(par(1), 'ansi') then
result:=string(ansiToUTF8(ansistring(s))) result:=utf8ToAnsi(ansistring(par(2)))
else if sameText(p, 'utf-8') then
if sameText(dst, 'ansi') then
result:=utf8ToAnsi(ansistring(s))
else if dst='dec' then
begin
result:='';
for c in UTF8encode(s) do
result:=result+intToStr(ord(c))+',';
setLength(result, length(result)-1);
end
else if dst='hex' then
begin
result:='';
for c in UTF8encode(s) do
result:=result+intToHex(ord(c));
end;
if isFalse(par('macros')) then
result:=noMacrosAllowed(result);
end; // convert end; // convert
procedure encodeuri(); procedure encodeuri();
@ -957,9 +931,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
@ -1232,20 +1206,20 @@ var
'information=64' 'information=64'
); );
var var
code: integer; i, j, code: integer;
decode: TStringDynArray; decode: TStringDynArray;
s, d: string; s: string;
buttons, icon: boolean; buttons, icon: boolean;
begin begin
decode:=split(' ',par(1)); decode:=split(' ',par(1));
code:=0; code:=0;
for d in decode do for i:=0 to length(decode)-1 do
for s in STR2CODE do for j:=1 to length(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;
if not icon and buttons then if not icon and buttons then
@ -1374,20 +1348,19 @@ 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);
if i < 0 then h:=space.objects[i] as THashedStringList;
if h = NIL then
begin begin
h:=ThashedStringList.create(); h:=ThashedStringList.create();
space.AddPair(p, v, h); space.objects[i]:=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();
@ -1480,8 +1453,7 @@ var
exit; exit;
end; end;
a:=findEnabledLinkedAccount(a, split(';',s)); a:=findEnabledLinkedAccount(a, split(';',s));
if assigned(a) then if assigned(a) then result:=a.user;
result:=a.user;
end; // memberOf end; // memberOf
procedure canArchive(f:Tfile); procedure canArchive(f:Tfile);
@ -1941,15 +1913,9 @@ try
disconnect(); disconnect();
if name = 'stop server' then if name = 'stop server' then
begin
stopServer(); stopServer();
exit('');
end;
if name = 'start server' then if name = 'start server' then
begin
startServer(); startServer();
exit('');
end;
if name = 'focus' then if name = 'focus' then
@ -1966,7 +1932,10 @@ try
begin begin
try try
if isFalse(parEx('if')) then if isFalse(parEx('if')) then
exit(''); begin
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;
@ -2003,17 +1972,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
result:=strSHA1(p); result:=strSHA1(p);
if name = 'sha256' then
result:=strSHA256(p);
if name = 'vfs select' then if name = 'vfs select' then
if pars.count = 0 then if pars.count = 0 then
@ -2086,7 +2049,7 @@ try
encodeuri(); encodeuri();
if name = 'decodeuri' then if name = 'decodeuri' then
result:=noMacrosAllowed(decodeURL(ansistring(p))); result:=decodeURL(ansistring(p));
if name = 'set cfg' then if name = 'set cfg' then
trueIf(mainfrm.setcfg(p)); trueIf(mainfrm.setcfg(p));

View File

@ -1,11 +1,13 @@
- updateDynDNS() is not translatable
- update doesn't work without 'only 1 instance' (it's the -q) - update doesn't work without 'only 1 instance' (it's the -q)
+ replace shellExtDlg.gif with transparent png (english system) + replace shellExtDlg.gif with transparent png (english system)
+ self-test supporting https
+ expiring links + expiring links
* dismiss regexp lib http://docwiki.embarcadero.com/Libraries/Rio/en/System.RegularExpressions.TRegEx * dismiss regexp lib http://docwiki.embarcadero.com/Libraries/Rio/en/System.RegularExpressions.TRegEx
+ ipv6
+ load *.events + load *.events
+ url auth limited to resource + url auth limited to resource
+ global limit speed for downloads (browsing excluded) + global limit speed for downloads (browsing excluded)
+ [tpl id] [SECTION|for-tpl=MASK]
* consider letting comment "protected" files. Can it really cause harm? * consider letting comment "protected" files. Can it really cause harm?
* flag to enable lnk files in a folder (disabled by default) * flag to enable lnk files in a folder (disabled by default)
+ sign exe http://www.rejetto.com/forum/hfs-~-http-file-server/'unsafe'/msg1061437/#msg1061437 + sign exe http://www.rejetto.com/forum/hfs-~-http-file-server/'unsafe'/msg1061437/#msg1061437
@ -24,20 +26,14 @@
+ macros missing to cache a folder: {.reply|content=|var=|code=|filename=|mime=.} + macros missing to cache a folder: {.reply|content=|var=|code=|filename=|mime=.}
- unexpected scripting behavior http://www.rejetto.com/forum/index.php/topic,9728.msg1054517.html#msg1054517 - unexpected scripting behavior http://www.rejetto.com/forum/index.php/topic,9728.msg1054517.html#msg1054517
in handleItem() translate only symbols, and run all macros at the end in handleItem() translate only symbols, and run all macros at the end
document: [section|ver=MASK|build=MIN-MAX|template=MASK]
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: single line diff templates
document: {.calc| ][ } document: disconnection reason|if=XXX
document: single line diff templates (file path)
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: pipe, base64, base64decode, dir, disk free, filetime, file changed, load tpl, sha256, for line document: dir, disk free, filetime, file changed, load tpl
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:
@ -48,14 +44,18 @@ document: new event [login]
+ upload to non-browsable folder + upload to non-browsable folder
- android doesn't upload http://www.rejetto.com/forum/index.php/topic,9699.0/topicseen.html#msg1054287 - android doesn't upload http://www.rejetto.com/forum/index.php/topic,9699.0/topicseen.html#msg1054287
- android doesn't work with passwords http://www.rejetto.com/forum/index.php/topic,9575.msg1054029.html#msg1054029 - android doesn't work with passwords http://www.rejetto.com/forum/index.php/topic,9575.msg1054029.html#msg1054029
? default tpl: check with IE6
? default tpl: consider css data uri http://www.nczonline.net/blog/2010/07/06/data-uris-make-css-sprites-obsolete/ ? default tpl: consider css data uri http://www.nczonline.net/blog/2010/07/06/data-uris-make-css-sprites-obsolete/
+ next VFS file format version should be text (yaml or json) + default tpl: support for rawr thumbnails
+ next VFS file format version should be XML-based
+ remove the "progress" from "log what", and use [progress|no log] instead + remove the "progress" from "log what", and use [progress|no log] instead
? {.rename.} should update descript.ion
+ folder archive depth limit http://www.rejetto.com/forum/index.php/topic,8546.msg1050027.html#msg1050027 + folder archive depth limit http://www.rejetto.com/forum/index.php/topic,8546.msg1050027.html#msg1050027
? 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.}
+ user input through {.dialog.} or similar + replace /~imgXX with ?mode=icon&id=XX
+ 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
@ -69,6 +69,8 @@ document: new event [login]
+ log event to filter www.rejetto.com/forum/?topic=7332.0 + log event to filter www.rejetto.com/forum/?topic=7332.0
? integration with mediainfo.dll www.rejetto.com/forum/?topic=7329 ? integration with mediainfo.dll www.rejetto.com/forum/?topic=7329
+ folder archive log, just as for deletion http://www.rejetto.com/forum/index.php?topic=6904.msg1042974;topicseen#msg1042974 + folder archive log, just as for deletion http://www.rejetto.com/forum/index.php?topic=6904.msg1042974;topicseen#msg1042974
- upload doesn't work on chinese folders with uneven length www.rejetto.com/forum/?topic=5382
- chinese problems since #161 www.rejetto.com/forum/?topic=5344
- AV with RealVNC on hints by mouse hovering www.rejetto.com/forum/?topic=5261 - AV with RealVNC on hints by mouse hovering www.rejetto.com/forum/?topic=5261
- N-Stalker can locally crash HFS - N-Stalker can locally crash HFS
- AV in #179 http://www.rejetto.com/forum/index.php?topic=5653.msg1033457#msg1033457 www.rejetto.com/forum/?topic=5681 - AV in #179 http://www.rejetto.com/forum/index.php?topic=5653.msg1033457#msg1033457 www.rejetto.com/forum/?topic=5681
@ -95,6 +97,7 @@ document: new event [login]
+ make %list% available in every page + make %list% available in every page
+ support for ALT+F4 with option "Minimize to tray clicking the close button" www.rejetto.com/forum/?topic=6351 + support for ALT+F4 with option "Minimize to tray clicking the close button" www.rejetto.com/forum/?topic=6351
+ replace and delete icons http://www.rejetto.com/forum/index.php?topic=6317.msg1038157#msg1038157 + replace and delete icons http://www.rejetto.com/forum/index.php?topic=6317.msg1038157#msg1038157
+ self-test supporting https
? currently the delete permission is only inside a folder. you can't mark a file or delete the marked folder. is this ok? ? currently the delete permission is only inside a folder. you can't mark a file or delete the marked folder. is this ok?
+ when a link is protected (no access for this user) it may be displayed as a link to the %item-name%, then 401, and if login is successful provide a redirection + when a link is protected (no access for this user) it may be displayed as a link to the %item-name%, then 401, and if login is successful provide a redirection
+ change folder/link/generic-file icons (via GUI, without editing the template) + change folder/link/generic-file icons (via GUI, without editing the template)

10
upload_how.txt Normal file
View File

@ -0,0 +1,10 @@
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.

View File

@ -1,5 +1,5 @@
{ {
Copyright (C) 2002-2020 Massimo Melina (www.rejetto.com) Copyright (C) 2002-2012 Massimo Melina (www.rejetto.com)
This file is part of HFS ~ HTTP File Server. This file is part of HFS ~ HTTP File Server.
@ -166,7 +166,7 @@ function replaceString(var ss:TStringDynArray; old, new:string):integer;
function popString(var ss:TstringDynArray):string; function popString(var ss:TstringDynArray):string;
procedure insertString(s:string; idx:integer; var ss:TStringDynArray); procedure insertString(s:string; idx:integer; var ss:TStringDynArray);
function removeString(var a:TStringDynArray; idx:integer; l:integer=1):boolean; overload; function removeString(var a:TStringDynArray; idx:integer; l:integer=1):boolean; overload;
function removeString(s:string; var a:TStringDynArray; onlyOnce:boolean=TRUE; ci:boolean=TRUE; keepOrder:boolean=TRUE):boolean; overload; function removeString(find:string; var a:TStringDynArray):boolean; overload;
procedure removeStrings(find:string; var a:TStringDynArray); procedure removeStrings(find:string; var a:TStringDynArray);
procedure toggleString(s:string; var ss:TStringDynArray); procedure toggleString(s:string; var ss:TStringDynArray);
function onlyString(s:string; ss:TStringDynArray):boolean; function onlyString(s:string; ss:TStringDynArray):boolean;
@ -669,6 +669,10 @@ begin
until false; until false;
end; // removeStrings end; // removeStrings
// remove first instance of the specified string
function removeString(find:string; var a:TStringDynArray):boolean;
begin result:=removeString(a, idxOf(find,a)) end;
function removeArray(var src:TstringDynArray; toRemove:array of string):integer; function removeArray(var src:TstringDynArray; toRemove:array of string):integer;
var var
i, l, ofs: integer; i, l, ofs: integer;
@ -742,35 +746,6 @@ while idx+l < length(a) do
setLength(a, idx); setLength(a, idx);
end; // removestring end; // removestring
function removeString(s:string; var a:TStringDynArray; onlyOnce:boolean=TRUE; ci:boolean=TRUE; keepOrder:boolean=TRUE):boolean; overload;
var i, lessen:integer;
begin
result:=FALSE;
if a = NIL then
exit;
lessen:=0;
try
for i:=length(a)-1 to 0 do
if ci and sameText(a[i], s)
or not ci and (a[i]=s) then
begin
result:=TRUE;
if keepOrder then
removeString(a, i)
else
begin
inc(lessen);
a[i]:=a[length(a)-lessen];
end;
if onlyOnce then
exit;
end;
finally
if lessen > 0 then
setLength(a, length(a)-lessen);
end;
end;
function dotted(i:int64):string; function dotted(i:int64):string;
begin begin
result:=intToStr(i); result:=intToStr(i);
@ -2220,7 +2195,7 @@ const
var var
sa : TSecurityAttributes; sa : TSecurityAttributes;
ReadPipe,WritePipe : THandle; ReadPipe,WritePipe : THandle;
start : TStartUpInfoW; start : TStartUpInfoA;
ProcessInfo : TProcessInformation; ProcessInfo : TProcessInformation;
Buffer : Pansichar; Buffer : Pansichar;
TotalBytesRead, TotalBytesRead,
@ -2251,7 +2226,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 CreateProcess(nil, PChar(dosApp), @sa, @sa, true, CREATE_NO_WINDOW or NORMAL_PRIORITY_CLASS, nil, nil, start, ProcessInfo) then if CreateProcessA(nil, PansiChar(ansistring(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,22 +2236,16 @@ 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, @BytesRead, @TotalBytesAvail, @BytesLeftThisMessage ) if not PeekNamedPipe(ReadPipe, @Buffer[TotalBytesRead], ReadBuffer,
or (BytesRead > 0) and not ReadFile(ReadPipe, Buffer[TotalBytesRead], BytesRead, BytesRead, nil ) then @BytesRead, @TotalBytesAvail, @BytesLeftThisMessage ) 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 Buffer[TotalBytesRead]:= #0;
begin OemToCharA(PansiChar(Buffer),Buffer);
Pchar(@Buffer[TotalBytesRead])^:= #0; output:=string(ansistrings.strPas(Buffer));
output:=pchar(Buffer)
end
else
begin
Buffer[TotalBytesRead]:= #0;
OemToCharA(Buffer,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);
@ -2582,8 +2551,7 @@ var
i:=mImp+dir; i:=mImp+dir;
repeat repeat
j:=i+dir; j:=i+dir;
if (j > 0) and (j <= length(s)) if (j > 0) and (j <= length(s)) and charInSet(s[j], ['0'..'9','.']) then
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;
@ -2613,7 +2581,6 @@ 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

View File

@ -12,24 +12,20 @@ propaganda
Mobile-friendly template Mobile-friendly template
Unicode support Unicode support
Encrypted login, and logout Encrypted login, and logout
DoS protection
IPv6 IPv6
/propaganda /propaganda
+ new default template + new default template
+ new login system, session based, with logout + new login system, session based, with logout
+ IPv6 support + IPv6 support
+ DoS protection https://rejetto.com/forum/index.php?topic=13060.msg1065962#msg1065962
+ {.set item|name.} + {.set item|name.}
+ {.get item|icon.} + {.get item|icon.}
+ {.set cfg.} + {.set cfg.}
+ {.for line.} + {.for line.}
+ {.if|var} + {.if|var}
+ cache for jquery and template sections + cache for jquery and template sections
+ new template commands: base64, base64decode, md5, sha1, sha256 + new template commands: base64, base64decode, md5, sha1
+ *.diff.tpl in exe's folder + *.diff.tpl in exe's folder
+ default mime-type for mkv + default mime-type for mkv
+ 'no list' section flag
+ https client support (not server)
- fixed template handling of section names with both '+' and '=' present - fixed template handling of section names with both '+' and '=' present
- fixed LNK files to deleted items - fixed LNK files to deleted items
- fixed comments files were not updated upon deletion of files - fixed comments files were not updated upon deletion of files
@ -37,7 +33,6 @@ propaganda
- fixed double "Content-Length" header on compressed pages - fixed double "Content-Length" header on compressed pages
- fixed log text base color not matching system settings http://rejetto.com/forum/index.php?topic=13233.0 - fixed log text base color not matching system settings http://rejetto.com/forum/index.php?topic=13233.0
- fixed while renaming a file in the GUI, CTRL+C/V didn't work on the text - fixed while renaming a file in the GUI, CTRL+C/V didn't work on the text
- fixed diff tpl logic: an empty section will now override the inherited one
VER 2.3m VER 2.3m
propaganda propaganda