diff --git a/data.rc b/data.rc index 2a6c421..1fa9f60 100644 --- a/data.rc +++ b/data.rc @@ -1,9 +1,7 @@ 1 24 "WindowsXP.manifest" defaultTpl TEXT default.tpl dmBrowserTpl TEXT dmBrowser.tpl -invertban TEXT invertban.txt filelistTpl TEXT filelist.tpl -uploadHowTo TEXT upload_how.txt alias TEXT alias.txt IPservices TEXT ipservices.txt jquery TEXT jquery.min.js diff --git a/hfs.drc b/hfs.drc index 983b646..9a4621c 100644 --- a/hfs.drc +++ b/hfs.drc @@ -8,174 +8,273 @@ resources were bound to the produced executable. */ -#define main_MSG_NUM_ADDR 64752 -#define main_MSG_NUM_ADDR_DL 64753 -#define main_MSG_MAX_LINES 64754 -#define main_MSG_APACHE_LOG_FMT 64755 -#define main_MSG_APACHE_LOG_FMT_LONG 64756 -#define main_MSG_MD5_WARN 64757 -#define main_MSG_AUTO_MD5 64758 -#define main_MSG_AUTO_MD5_LONG 64759 -#define main_MSG_TEST_CANC 64768 -#define main_MSG_TEST_INET 64769 -#define main_MSG_SELF_UNAV 64770 -#define main_MSG_SELF_NO_INET 64771 -#define main_MSG_SELF_NO_ANSWER 64772 -#define main_MSG_OPEN_BROW 64773 -#define main_MSG_OPEN_BROW_LONG 64774 -#define main_MSG_HIDE_PORT 64775 -#define main_MSG_EVENTS_HLP 64776 -#define main_MSG_EDIT_RES 64777 -#define main_MSG_TPL_USE_MACROS 64778 -#define main_REMOVE_SHELL 64779 -#define main_S_OFF 64780 -#define main_S_ON 64781 -#define main_LOG 64782 -#define main_MSG_RE_NOIP 64783 -#define main_MSG_HOST_FORM 64784 -#define main_MSG_MIN_SPACE 64785 -#define main_MSG_MIN_SPACE_LONG 64786 -#define main_MSG_REN_PART 64787 -#define main_MSG_REN_PART_LONG 64788 -#define main_MSG_SELF_BEFORE 64789 -#define main_MSG_SELF_OK 64790 -#define main_MSG_SELF_OK_PORT 64791 -#define main_MSG_SELF_3 64792 -#define main_MSG_SELF_6 64793 -#define main_MSG_SELF_7 64794 -#define main_MSG_RET_EXT 64795 -#define main_MSG_SELF_CANT_ON 64796 -#define main_MSG_SELF_CANT_LIST 64797 -#define main_MSG_SELF_CANT_S 64798 -#define main_MSG_SELF_ING 64799 -#define main_MSG_CHANGES_LOST 64800 -#define main_MSG_FLAG_NEW 64801 -#define main_MSG_FLAG_NEW_LONG 64802 -#define main_MSG_DONT_LOG_MASK 64803 -#define main_MSG_DONT_LOG_MASK_LONG 64804 -#define main_MSG_CUST_IP 64805 -#define main_MSG_CUST_IP_LONG 64806 -#define main_MSG_NO_EXT_IP 64807 -#define main_MSG_RESET_TOT 64808 -#define main_MSG_DISAB_FIND_EXT 64809 -#define main_MSG_ENT_URL 64810 -#define main_MSG_ENT_URL_LONG 64811 -#define main_MSG_ENT_USR 64812 -#define main_MSG_ENT_PWD 64813 -#define main_MSG_ENT_HOST 64814 -#define main_MSG_ENT_HOST_LONG 64815 -#define main_MSG_UPD_INFO 64816 -#define main_MSG_NEWER 64817 -#define main_MSG_SRC_UPD 64818 -#define main_ARE_EXPERT 64819 -#define main_ARE_EASY 64820 -#define main_SW2EXPERT 64821 -#define main_SW2EASY 64822 -#define main_MSG_DL_TIMEOUT_LONG 64823 -#define main_MSG_LOG_FILE 64824 -#define main_MSG_LOG_FILE_LONG 64825 -#define main_MSG_SET_URL 64826 -#define main_MSG_SET_URL_LONG 64827 -#define main_MSG_REALM 64828 -#define main_MSG_REALM_LONG 64829 -#define main_MSG_INACT_TIMEOUT 64830 -#define main_MSG_INACT_TIMEOUT_LONG 64831 -#define main_MSG_MAX_BW_1 64832 -#define main_MSG_GRAPH_RATE_MENU 64833 -#define main_MSG_MAX_SIM 64834 -#define main_MSG_WARN_CONN 64835 -#define main_MSG_WARN_ACT_DL 64836 -#define main_MSG_MAX_SIM_SING 64837 -#define main_MSG_MAX_SIM_DL_SING 64838 -#define main_MSG_GRAPH_RATE 64839 -#define main_MSG_TENTH_SEC 64840 -#define main_MSG_LOADING_VFS 64841 -#define main_MSG_VFS_OLD 64842 -#define main_MSG_UNK_FK 64843 -#define main_MSG_VIS_ONLY_ANON 64844 -#define main_MSG_AUTO_DISABLED 64845 -#define main_MSG_CORRUPTED 64846 -#define main_MSG_MACROS_FOUND 64847 -#define main_BANS 64848 -#define main_MEMORY 64849 -#define main_CUST_TPL 64850 -#define main_VFS_ITEMS 64851 -#define main_MSG_ITEM_EXISTS 64852 -#define main_MSG_ALLO_REF 64853 -#define main_MSG_ALLO_REF_LONG 64854 -#define main_MSG_BETTERSTOP 64855 -#define main_MSG_BADCRC 64856 -#define main_MSG_NEWER 64857 -#define main_MSG_ZLIB 64858 -#define main_MSG_BAKAVAILABLE 64859 -#define main_LIMIT 64860 -#define main_TOP_SPEED 64861 -#define main_MSG_MAX_BW 64862 -#define main_MSG_LIM0 64863 -#define main_MSG_BAN 64864 -#define main_MSG_CANT_SAVE_OPT 64865 -#define main_MSG_UPD_SAVE_ERROR 64866 -#define main_MSG_UPD_REQ_ONLY1 64867 -#define main_MSG_UPDATE 64868 -#define main_MSG_REQUESTING 64869 -#define main_MSG_CHK_UPD 64870 -#define main_MSG_CHK_UPD_FAIL 64871 -#define main_TO_CLIP 64872 -#define main_ALREADY_CLIP 64873 -#define main_MSG_NO_SPACE 64874 -#define main_CONN 64875 -#define main_TOT_IN 64876 -#define main_TOT_OUT 64877 -#define main_OUT_SPEED 64878 -#define main_IN_SPEED 64879 -#define main_MSG_CANT_OPEN_PORT 64880 -#define main_MSG_PORT_USED_BY 64881 -#define main_MSG_PORT_BLOCKED 64882 -#define main_MSG_KICK_ALL 64883 -#define main_MSG_TPL_INCOMPATIBLE 64884 -#define main_MSG_LOGIN_FAILED 64885 -#define main_FINGERPRINT 64886 -#define main_NO_FINGERPRINT 64887 -#define main_MSG_INP_COMMENT 64888 -#define main_AUTOSAVE 64889 -#define main_SECONDS 64890 -#define main_MSG_SPD_LIMIT_SING 64891 -#define main_MSG_SPD_LIMIT 64892 -#define main_MSG_AUTO_SAVE 64893 -#define main_MSG_AUTO_SAVE_LONG 64894 -#define main_MSG_MIN 64895 -#define main_MSG_SINGLE_INSTANCE 64896 -#define main_MSG_COMM_ERROR 64897 -#define main_MSG_DDNS_badauth 64898 -#define main_MSG_DDNS_notfqdn 64899 -#define main_MSG_DDNS_nohost 64900 -#define main_MSG_DDNS_notyours 64901 -#define main_MSG_DDNS_numhost 64902 -#define main_MSG_DDNS_abuse 64903 -#define main_MSG_DDNS_dnserr 64904 -#define main_MSG_DDNS_911 64905 -#define main_MSG_DDNS_notdonator 64906 -#define main_MSG_DDNS_badagent 64907 -#define main_MSG_IP_MASK 64908 -#define main_MSG_IP_MASK_LONG 64909 -#define main_MSG_KICK_ADDR 64910 -#define main_MSG_BREAK_DYN_DNS 64911 -#define main_MSG_MAX_SIM_ADDR_DL 64912 -#define main_MSG_MAX_SIM_DL_SING 64913 -#define main_MSG_MAX_SIM_DL 64914 -#define main_MSG_SET_LIMIT 64915 -#define main_MSG_UNPROTECTED_LINKS 64916 -#define main_MSG_SAME_NAME 64917 -#define main_MSG_OPTIONS_SAVED 64918 -#define main_MSG_SOME_LOCKED 64919 -#define main_MSG_ITEM_LOCKED 64920 -#define main_MSG_INVALID_VALUE 64921 -#define main_MSG_EMPTY_NO_LIMIT 64922 -#define main_MSG_ADDRESSES_EXCEED 64923 -#define main_MSG_NO_TEMP 64924 -#define main_MSG_ERROR_REGISTRY 64925 -#define main_MSG_MANY_ITEMS 64926 -#define main_MSG_ADD_TO_HFS 64927 +#define main_MSG_NUM_ADDR 64656 +#define main_MSG_NUM_ADDR_DL 64657 +#define main_MSG_MAX_LINES 64658 +#define main_MSG_APACHE_LOG_FMT 64659 +#define main_MSG_APACHE_LOG_FMT_LONG 64660 +#define main_MSG_ICONS_ADDED 64661 +#define main_MSG_DDNS_DISABLED 64662 +#define main_MSG_MD5_WARN 64663 +#define main_MSG_AUTO_MD5 64664 +#define main_MSG_AUTO_MD5_LONG 64665 +#define main_MSG_UPL_HOWTO 64666 +#define main_MSG_EVENTS_HLP 64672 +#define main_MSG_EDIT_RES 64673 +#define main_MSG_TPL_USE_MACROS 64674 +#define main_REMOVE_SHELL 64675 +#define main_S_OFF 64676 +#define main_S_ON 64677 +#define main_LOG 64678 +#define main_MSG_RE_NOIP 64679 +#define main_MSG_TRAY_DEF 64680 +#define main_MSG_CLEAN_START 64681 +#define main_MSG_RESTORE_BAK 64682 +#define main_MSG_EXT_ADDR_FAIL 64683 +#define main_MSG_TO_EXPERT 64684 +#define main_MSG_DONT_LOG_HINT 64685 +#define main_MSG_DL_PERC 64686 +#define main_MSG_UNINSTALL_WARN 64687 +#define main_MSG_SELF_3 64688 +#define main_MSG_SELF_6 64689 +#define main_MSG_SELF_7 64690 +#define main_MSG_RET_EXT 64691 +#define main_MSG_SELF_CANT_ON 64692 +#define main_MSG_SELF_CANT_LIST 64693 +#define main_MSG_SELF_CANT_S 64694 +#define main_MSG_SELF_ING 64695 +#define main_MSG_TEST_CANC 64696 +#define main_MSG_TEST_INET 64697 +#define main_MSG_SELF_UNAV 64698 +#define main_MSG_SELF_NO_INET 64699 +#define main_MSG_SELF_NO_ANSWER 64700 +#define main_MSG_OPEN_BROW 64701 +#define main_MSG_OPEN_BROW_LONG 64702 +#define main_MSG_HIDE_PORT 64703 +#define main_MSG_RESET_TOT 64704 +#define main_MSG_DISAB_FIND_EXT 64705 +#define main_MSG_ENT_URL 64706 +#define main_MSG_ENT_URL_LONG 64707 +#define main_MSG_ENT_USR 64708 +#define main_MSG_ENT_PWD 64709 +#define main_MSG_ENT_HOST 64710 +#define main_MSG_ENT_HOST_LONG 64711 +#define main_MSG_HOST_FORM 64712 +#define main_MSG_MIN_SPACE 64713 +#define main_MSG_MIN_SPACE_LONG 64714 +#define main_MSG_REN_PART 64715 +#define main_MSG_REN_PART_LONG 64716 +#define main_MSG_SELF_BEFORE 64717 +#define main_MSG_SELF_OK 64718 +#define main_MSG_SELF_OK_PORT 64719 +#define main_MSG_LOG_FILE 64720 +#define main_MSG_LOG_FILE_LONG 64721 +#define main_MSG_SET_URL 64722 +#define main_MSG_SET_URL_LONG 64723 +#define main_MSG_REALM 64724 +#define main_MSG_REALM_LONG 64725 +#define main_MSG_INACT_TIMEOUT 64726 +#define main_MSG_INACT_TIMEOUT_LONG 64727 +#define main_MSG_CHANGES_LOST 64728 +#define main_MSG_FLAG_NEW 64729 +#define main_MSG_FLAG_NEW_LONG 64730 +#define main_MSG_DONT_LOG_MASK 64731 +#define main_MSG_DONT_LOG_MASK_LONG 64732 +#define main_MSG_CUST_IP 64733 +#define main_MSG_CUST_IP_LONG 64734 +#define main_MSG_NO_EXT_IP 64735 +#define main_MSG_TENTH_SEC 64736 +#define main_MSG_LOADING_VFS 64737 +#define main_MSG_VFS_OLD 64738 +#define main_MSG_UNK_FK 64739 +#define main_MSG_VIS_ONLY_ANON 64740 +#define main_MSG_AUTO_DISABLED 64741 +#define main_MSG_CORRUPTED 64742 +#define main_MSG_MACROS_FOUND 64743 +#define main_MSG_UPD_INFO 64744 +#define main_MSG_NEWER 64745 +#define main_MSG_SRC_UPD 64746 +#define main_ARE_EXPERT 64747 +#define main_ARE_EASY 64748 +#define main_SW2EXPERT 64749 +#define main_SW2EASY 64750 +#define main_MSG_DL_TIMEOUT_LONG 64751 +#define main_MSG_ZLIB 64752 +#define main_MSG_BAKAVAILABLE 64753 +#define main_MSG_CANT_LOAD_SAVE 64754 +#define main_MSG_OPEN_VFS 64755 +#define main_LIMIT 64756 +#define main_TOP_SPEED 64757 +#define main_MSG_MAX_BW 64758 +#define main_MSG_LIM0 64759 +#define main_MSG_MAX_BW_1 64760 +#define main_MSG_GRAPH_RATE_MENU 64761 +#define main_MSG_MAX_SIM 64762 +#define main_MSG_WARN_CONN 64763 +#define main_MSG_WARN_ACT_DL 64764 +#define main_MSG_MAX_SIM_SING 64765 +#define main_MSG_MAX_SIM_DL_SING 64766 +#define main_MSG_GRAPH_RATE 64767 +#define main_MSG_CON_STATE_IDLE 64768 +#define main_MSG_CON_STATE_REQ 64769 +#define main_MSG_CON_STATE_RCV 64770 +#define main_MSG_CON_STATE_THINK 64771 +#define main_MSG_CON_STATE_REP 64772 +#define main_MSG_CON_STATE_SEND 64773 +#define main_MSG_CON_STATE_DISC 64774 +#define main_MSG_CON_PAUSED 64775 +#define main_MSG_CON_SENT 64776 +#define main_MSG_CON_RECEIVED 64777 +#define main_MSG_TPL_RESET 64778 +#define main_MSG_ALLO_REF 64779 +#define main_MSG_ALLO_REF_LONG 64780 +#define main_MSG_BETTERSTOP 64781 +#define main_MSG_BADCRC 64782 +#define main_MSG_NEWER 64783 +#define main_MSG_VFS_ARCABLE 64784 +#define main_MSG_VFS_DEF_MASK 64785 +#define main_MSG_VFS_ACCESS 64786 +#define main_MSG_VFS_UPLOAD 64787 +#define main_MSG_VFS_DELETE 64788 +#define main_MSG_VFS_COMMENT 64789 +#define main_MSG_VFS_REALM 64790 +#define main_MSG_VFS_DIFF_TPL 64791 +#define main_MSG_VFS_FILES_FLT 64792 +#define main_MSG_VFS_FLD_FLT 64793 +#define main_MSG_VFS_UPL_FLT 64794 +#define main_MSG_VFS_DONT_CONS_DL 64795 +#define main_MSG_VFS_DONT_CONS_DL_MASK 64796 +#define main_MSG_VFS_INHERITED 64797 +#define main_MSG_VFS_EXTERNAL 64798 +#define main_MSG_CON_HINT 64799 +#define main_VFS_ITEMS 64800 +#define main_MSG_ITEM_EXISTS 64801 +#define main_MSG_INSTALL_TPL 64802 +#define main_MSG_FOLDER_UPLOAD 64803 +#define main_MSG_VFS_DRAG_INVIT 64804 +#define main_MSG_VFS_URL 64805 +#define main_MSG_VFS_PATH 64806 +#define main_MSG_VFS_SIZE 64807 +#define main_MSG_VFS_DLS 64808 +#define main_MSG_VFS_INVISIBLE 64809 +#define main_MSG_VFS_DL_FORB 64810 +#define main_MSG_VFS_DONT_LOG 64811 +#define main_MSG_VFS_HIDE_EMPTY 64812 +#define main_MSG_VFS_NOT_BROW 64813 +#define main_MSG_VFS_HIDE_EMPTY_FLD 64814 +#define main_MSG_VFS_HIDE_EXT 64815 +#define main_MSG_CHK_UPD_FAIL 64816 +#define main_MSG_CHK_UPD_HEAD 64817 +#define main_MSG_CHK_UPD_VER 64818 +#define main_MSG_CHK_UPD_VER_EXT 64819 +#define main_MSG_CHK_UPD_NONE 64820 +#define main_TO_CLIP 64821 +#define main_ALREADY_CLIP 64822 +#define main_MSG_NO_SPACE 64823 +#define main_CONN 64824 +#define main_TOT_IN 64825 +#define main_TOT_OUT 64826 +#define main_OUT_SPEED 64827 +#define main_IN_SPEED 64828 +#define main_BANS 64829 +#define main_MEMORY 64830 +#define main_CUST_TPL 64831 +#define main_AUTOSAVE 64832 +#define main_SECONDS 64833 +#define main_MSG_SPD_LIMIT_SING 64834 +#define main_MSG_SPD_LIMIT 64835 +#define main_MSG_AUTO_SAVE 64836 +#define main_MSG_AUTO_SAVE_LONG 64837 +#define main_MSG_MIN 64838 +#define main_MSG_BAN 64839 +#define main_MSG_CANT_SAVE_OPT 64840 +#define main_MSG_UPD_SAVE_ERROR 64841 +#define main_MSG_UPD_REQ_ONLY1 64842 +#define main_MSG_UPD_WAIT 64843 +#define main_MSG_UPD_DL 64844 +#define main_MSG_UPDATE 64845 +#define main_MSG_REQUESTING 64846 +#define main_MSG_CHK_UPD 64847 +#define main_MSG_LOG_UPL 64848 +#define main_MSG_LOG_UPLOADED 64849 +#define main_MSG_LOG_UPL_FAIL 64850 +#define main_MSG_LOG_DL 64851 +#define main_MSG_LOGIN_FAILED 64852 +#define main_MSG_MIN_DISK_REACHED 64853 +#define main_MSG_UPL_NAME_FORB 64854 +#define main_MSG_UPL_CANT_CREATE 64855 +#define main_FINGERPRINT 64856 +#define main_NO_FINGERPRINT 64857 +#define main_MSG_SAVE_VFS 64858 +#define main_MSG_INP_COMMENT 64859 +#define main_MSG_FILE_ADD_ABORT 64860 +#define main_MSG_ADDING 64861 +#define main_MSG_INV_FILENAME 64862 +#define main_MSG_DELETE 64863 +#define main_MSG_PORT_USED_BY 64864 +#define main_MSG_PORT_BLOCKED 64865 +#define main_MSG_KICK_ALL 64866 +#define main_MSG_TPL_INCOMPATIBLE 64867 +#define main_MSG_LOG_SERVER_START 64868 +#define main_MSG_LOG_SERVER_STOP 64869 +#define main_MSG_LOG_CONNECTED 64870 +#define main_MSG_LOG_DISC_SRV 64871 +#define main_MSG_LOG_DISC 64872 +#define main_MSG_LOG_GOT 64873 +#define main_MSG_LOG_BYTES_SENT 64874 +#define main_MSG_LOG_SERVED 64875 +#define main_MSG_LOG_HEAD 64876 +#define main_MSG_LOG_NOT_MOD 64877 +#define main_MSG_LOG_REDIR 64878 +#define main_MSG_LOG_NOT_SERVED 64879 +#define main_MSG_DDNS_nohost 64880 +#define main_MSG_DDNS_notyours 64881 +#define main_MSG_DDNS_numhost 64882 +#define main_MSG_DDNS_abuse 64883 +#define main_MSG_DDNS_dnserr 64884 +#define main_MSG_DDNS_911 64885 +#define main_MSG_DDNS_notdonator 64886 +#define main_MSG_DDNS_badagent 64887 +#define main_MSG_BAN_MASK 64888 +#define main_MSG_IP_MASK_LONG 64889 +#define main_MSG_KICK_ADDR 64890 +#define main_MSG_BAN_ALREADY 64891 +#define main_MSG_BAN_CMT 64892 +#define main_MSG_BAN_CMT_LONG 64893 +#define main_MSG_BREAK_DYN_DNS 64894 +#define main_MSG_CANT_OPEN_PORT 64895 +#define main_MSG_NO_TEMP 64896 +#define main_MSG_ERROR_REGISTRY 64897 +#define main_MSG_MANY_ITEMS 64898 +#define main_MSG_ADD_TO_HFS 64899 +#define main_MSG_SINGLE_INSTANCE 64900 +#define main_MSG_COMM_ERROR 64901 +#define main_MSG_DDNS_NO_REPLY 64902 +#define main_MSG_DDNS_OK 64903 +#define main_MSG_DDNS_UNK 64904 +#define main_MSG_DDNS_ERR 64905 +#define main_MSG_DDNS_REQ 64906 +#define main_MSG_DDNS_DOING 64907 +#define main_MSG_DDNS_FAIL 64908 +#define main_MSG_DDNS_REPLY_SIZE 64909 +#define main_MSG_DDNS_badauth 64910 +#define main_MSG_DDNS_notfqdn 64911 +#define main_MSG_MAX_SIM_ADDR 64912 +#define main_MSG_MAX_SIM_ADDR_DL 64913 +#define main_MSG_MAX_SIM_DL_SING 64914 +#define main_MSG_MAX_SIM_DL 64915 +#define main_MSG_SET_LIMIT 64916 +#define main_MSG_UNPROTECTED_LINKS 64917 +#define main_MSG_SAME_NAME 64918 +#define main_MSG_CONTINUE 64919 +#define main_MSG_PROCESSING 64920 +#define main_MSG_SPEED_KBS 64921 +#define main_MSG_OPTIONS_SAVED 64922 +#define main_MSG_SOME_LOCKED 64923 +#define main_MSG_ITEM_LOCKED 64924 +#define main_MSG_INVALID_VALUE 64925 +#define main_MSG_EMPTY_NO_LIMIT 64926 +#define main_MSG_ADDRESSES_EXCEED 64927 #define JclResources_RsIntelCacheDescrF0 64928 #define JclResources_RsIntelCacheDescrF1 64929 #define JclResources_RsIntelCacheDescrFF 64930 @@ -183,15 +282,15 @@ #define JclResources_RsOSVersionWinServer2012 64932 #define JclResources_RsOSVersionWin81 64933 #define JclResources_RsOSVersionWinServer2012R2 64934 -#define main_S_PORT_LABEL 64935 -#define main_S_PORT_ANY 64936 -#define main_DISABLED 64937 -#define main_S_OK 64938 -#define main_MSG_MENU_VAL 64939 -#define main_MSG_DL_TIMEOUT 64940 -#define main_MSG_MAX_CON 64941 -#define main_MSG_MAX_CON_SING 64942 -#define main_MSG_MAX_SIM_ADDR 64943 +#define optionsDlg_MSG_INVERT_BAN 64935 +#define main_S_PORT_LABEL 64936 +#define main_S_PORT_ANY 64937 +#define main_DISABLED 64938 +#define main_S_OK 64939 +#define main_MSG_MENU_VAL 64940 +#define main_MSG_DL_TIMEOUT 64941 +#define main_MSG_MAX_CON 64942 +#define main_MSG_MAX_CON_SING 64943 #define JclResources_RsIntelCacheDescrCA 64944 #define JclResources_RsIntelCacheDescrD0 64945 #define JclResources_RsIntelCacheDescrD1 64946 @@ -791,17 +890,12 @@ BEGIN 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_TEST_CANC, L"Test cancelled" - main_MSG_TEST_INET, L"Testing internet connection..." - main_MSG_SELF_UNAV, L"Sorry, the test is unavailable at the moment" - main_MSG_SELF_NO_INET, L"Your internet connection does not work" - main_MSG_SELF_NO_ANSWER, L"The test failed: server does not answer." - main_MSG_OPEN_BROW, L"Open directly in browser" - main_MSG_OPEN_BROW_LONG, L"\"Suggest\" the browser to open directly the specified files.\rOther files should pop up a save dialog." - main_MSG_HIDE_PORT, L"You should not use this option unless you really know its meaning.\rContinue?" + 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?" @@ -810,14 +904,14 @@ BEGIN main_S_ON, L"Switch ON" 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_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_TRAY_DEF, L"%ip%\rUptime: %uptime%\rDownloads: %downloads%" + main_MSG_CLEAN_START, L"Clean start" + 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_EXT_ADDR_FAIL, L"Search for external address failed" + main_MSG_TO_EXPERT, L"Switch to expert mode." + main_MSG_DONT_LOG_HINT, L"Select the files/folder you don't want to be logged,\rthen right click and select \"Don't log\"." + main_MSG_DL_PERC, L"Downloading %d%%" + main_MSG_UNINSTALL_WARN, L"Delete HFS and all settings?" main_MSG_SELF_3, L"You may be behind a router or firewall." main_MSG_SELF_6, L"You are behind a router.\rEnsure it is configured to forward port %s to your computer." main_MSG_SELF_7, L"You may be behind a firewall.\rEnsure nothing is blocking HFS." @@ -826,14 +920,14 @@ BEGIN 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_SELF_CANT_S, L"Self test doesn't support HTTPS.\rIt's likely it won't work." main_MSG_SELF_ING, L"Self testing..." - 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_TEST_CANC, L"Test cancelled" + main_MSG_TEST_INET, L"Testing internet connection..." + main_MSG_SELF_UNAV, L"Sorry, the test is unavailable at the moment" + main_MSG_SELF_NO_INET, L"Your internet connection does not work" + main_MSG_SELF_NO_ANSWER, L"The test failed: server does not answer." + main_MSG_OPEN_BROW, L"Open directly in browser" + main_MSG_OPEN_BROW_LONG, L"\"Suggest\" the browser to open directly the specified files.\rOther files should pop up a save dialog." + main_MSG_HIDE_PORT, L"You should not use this option unless you really know its meaning.\rContinue?" 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" @@ -842,14 +936,14 @@ BEGIN 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_UPD_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_SRC_UPD, L"Searching for updates..." - main_ARE_EXPERT, L"You are in Expert mode" - main_ARE_EASY, L"You are in Easy mode" - main_SW2EXPERT, L"Switch to Expert 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_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" @@ -858,14 +952,14 @@ BEGIN 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_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_MSG_MAX_SIM, 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_WARN_CONN, L"In this moment there are %d active connections" - main_MSG_WARN_ACT_DL, L"In this moment there are %d active downloads" - main_MSG_MAX_SIM_SING, L"Max simultaneous connections to accept from a single IP address.\rMost people don't know this function well, and have problems. If you are unsure, please use the \"Max simultaneous downloads from a single IP address\"." - main_MSG_MAX_SIM_DL_SING, L"Max simultaneous downloads from a single IP address." - main_MSG_GRAPH_RATE, L"Graph refresh rate" + 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." @@ -874,30 +968,83 @@ BEGIN 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_MACROS_FOUND, L"!!!!!!!!! DANGER !!!!!!!!!\rThis file contains macros.\rDon't accept macros from people you don't trust.\r\rTrust this file?" - main_BANS, L"Ban rules: %d" - main_MEMORY, L"Mem" - main_CUST_TPL, L"Customized template" - main_VFS_ITEMS, L"VFS: %d items" - main_MSG_ITEM_EXISTS, L"%s item(s) already exists:\r%s\r\rContinue?" - 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_NEWER, L"This file has been created with a newer and incompatible version." + main_MSG_UPD_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_SRC_UPD, L"Searching for updates..." + main_ARE_EXPERT, L"You are in Expert mode" + main_ARE_EASY, L"You are in Easy mode" + main_SW2EXPERT, L"Switch to Expert 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_ZLIB, L"This file is corrupted (ZLIB)." main_MSG_BAKAVAILABLE, L"This file is corrupted but a backup is available.\rContinue with backup?" + main_MSG_CANT_LOAD_SAVE, L"Cannot load or save while adding files" + main_MSG_OPEN_VFS, L"Open VFS file" main_LIMIT, L"Limit" main_TOP_SPEED, L"Top speed" main_MSG_MAX_BW, L"Max bandwidth (KB/s)." main_MSG_LIM0, L"Zero is an effective limit.\rTo disable instead, leave empty." - main_MSG_BAN, L"Your ban configuration may have been screwed up.\rPlease verify it." - main_MSG_CANT_SAVE_OPT, L"Can't save options there.\rShould I try to save to user registry?" - 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_UPDATE, L"You are invited to use the new version.\r\rUpdate now?" - main_MSG_REQUESTING, L"Requesting..." - main_MSG_CHK_UPD, L"Checking for updates" + 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_MSG_MAX_SIM, 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_WARN_CONN, L"In this moment there are %d active connections" + main_MSG_WARN_ACT_DL, L"In this moment there are %d active downloads" + main_MSG_MAX_SIM_SING, L"Max simultaneous connections to accept from a single IP address.\rMost people don't know this function well, and have problems. If you are unsure, please use the \"Max simultaneous downloads from a single IP address\"." + main_MSG_MAX_SIM_DL_SING, L"Max simultaneous downloads from a single IP address." + main_MSG_GRAPH_RATE, L"Graph refresh rate" + main_MSG_CON_STATE_IDLE, L"idle" + main_MSG_CON_STATE_REQ, L"requesting" + main_MSG_CON_STATE_RCV, L"receiving" + main_MSG_CON_STATE_THINK, L"thinking" + main_MSG_CON_STATE_REP, L"replying" + main_MSG_CON_STATE_SEND, L"sending" + main_MSG_CON_STATE_DISC, L"disconnected" + main_MSG_CON_PAUSED, L"paused" + main_MSG_CON_SENT, L"%s / %s sent" + main_MSG_CON_RECEIVED, L"%s / %s received" + main_MSG_TPL_RESET, L"The template has been reset" + main_MSG_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_NEWER, L"This file has been created with a newer and incompatible version." + 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_MSG_VFS_DONT_CONS_DL_MASK, L"Don't consider as download (mask): %s" + main_MSG_VFS_INHERITED, L" [inherited]" + main_MSG_VFS_EXTERNAL, L" [external]" + main_MSG_CON_HINT, L"Connection time: %s\rLast request time: %s\rAgent: %s" + main_VFS_ITEMS, L"VFS: %d items" + main_MSG_ITEM_EXISTS, L"%s item(s) already exists:\r%s\r\rContinue?" + main_MSG_INSTALL_TPL, L"Install this template?" + main_MSG_FOLDER_UPLOAD, L"Do you want ANYONE to be able to upload to this folder?" + main_MSG_VFS_DRAG_INVIT, L"Drag your files here" + main_MSG_VFS_URL, L"URL: %s" + main_MSG_VFS_PATH, L"Path: %s" + main_MSG_VFS_SIZE, L"Size: %s" + main_MSG_VFS_DLS, L"Downloads: %s" + main_MSG_VFS_INVISIBLE, L"Invisible" + main_MSG_VFS_DL_FORB, L"Download forbidden" + main_MSG_VFS_DONT_LOG, L"Don't log" + 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_CHK_UPD_FAIL, L"Check update: failed" + main_MSG_CHK_UPD_HEAD, L"Check update: " + 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" @@ -906,15 +1053,9 @@ BEGIN main_TOT_OUT, L"Total Out: %s" main_OUT_SPEED, L"Out: %.1f KB/s" main_IN_SPEED, L"In: %.1f KB/s" - main_MSG_CANT_OPEN_PORT, L"Cannot open port." - main_MSG_PORT_USED_BY, L"It is already used by %s" - main_MSG_PORT_BLOCKED, L"Something is blocking, maybe your system firewall." - main_MSG_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_LOGIN_FAILED, L"Login failed" - main_FINGERPRINT, L"Create fingerprint on addition under %d KB" - main_NO_FINGERPRINT, L"Create fingerprint on addition: disabled" - main_MSG_INP_COMMENT, L"Please insert a comment for \"%s\".\rYou should use HTML:
for break line." + main_BANS, L"Ban rules: %d" + main_MEMORY, L"Mem" + main_CUST_TPL, L"Customized template" main_AUTOSAVE, L"Auto save every: " main_SECONDS, L"%d seconds" main_MSG_SPD_LIMIT_SING, L"Speed limit for single address" @@ -922,10 +1063,47 @@ BEGIN main_MSG_AUTO_SAVE, L"Auto-save %s" main_MSG_AUTO_SAVE_LONG, L"Auto-save %s.\rSpecify in seconds.\rLeave blank to disable." main_MSG_MIN, L"We don't accept less than %d" - 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_DDNS_badauth, L"invalid user/password" - main_MSG_DDNS_notfqdn, L"incomplete hostname, required form aaa.bbb.com" + main_MSG_BAN, L"Your ban configuration may have been screwed up.\rPlease verify it." + main_MSG_CANT_SAVE_OPT, L"Can't save options there.\rShould I try to save to user registry?" + 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_UPD_DL, L"Downloading new version..." + main_MSG_UPDATE, L"You are invited to use the new version.\r\rUpdate now?" + main_MSG_REQUESTING, L"Requesting..." + main_MSG_CHK_UPD, L"Checking for updates" + 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_NO_FINGERPRINT, L"Create fingerprint on addition: disabled" + main_MSG_SAVE_VFS, L"Your current file system is not saved.\rSave it?" + main_MSG_INP_COMMENT, L"Please insert a comment for \"%s\".\rYou should use HTML:
for break line." + main_MSG_FILE_ADD_ABORT, L"File addition was aborted.\rThe list of files is incomplete." + main_MSG_ADDING, L"Adding item #%d" + main_MSG_INV_FILENAME, L"Invalid filename" + main_MSG_DELETE, L"Delete?" + main_MSG_PORT_USED_BY, L"It is already used by %s" + main_MSG_PORT_BLOCKED, L"Something is blocking, maybe your system firewall." + main_MSG_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_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_DDNS_nohost, L"specified hostname does not exist" main_MSG_DDNS_notyours, L"specified hostname belongs to another username" main_MSG_DDNS_numhost, L"too many or too few hosts found" @@ -934,26 +1112,46 @@ BEGIN 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_IP_MASK, L"IP mask" + 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_BAN_CMT, L"Ban comment" + main_MSG_BAN_CMT_LONG, L"A comment for this ban..." main_MSG_BREAK_DYN_DNS, L"This option is NOT compatible with \"dynamic dns updater\".\rContinue?" + main_MSG_CANT_OPEN_PORT, L"Cannot open port." + main_MSG_NO_TEMP, L"Cannot save temporary file" + main_MSG_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_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_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_notfqdn, L"incomplete hostname, required form aaa.bbb.com" + 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." 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." JclResources_RsIntelCacheDescrF0, L"64-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" @@ -961,6 +1159,7 @@ BEGIN JclResources_RsOSVersionWinServer2012, L"Windows Server 2012" JclResources_RsOSVersionWin81, L"Windows 8.1" JclResources_RsOSVersionWinServer2012R2, L"Windows Server 2012 R2" + 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_ANY, L"any" main_DISABLED, L"disabled" @@ -969,7 +1168,6 @@ BEGIN main_MSG_DL_TIMEOUT, L"No downloads timeout" main_MSG_MAX_CON, L"Max connections" main_MSG_MAX_CON_SING, L"Max connections from single address" - main_MSG_MAX_SIM_ADDR, L"Max simultaneous addresses" 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_RsIntelCacheDescrD1, L"3rd-level cache: 1 MByte, 4-way set associative, 64 byte line size" diff --git a/hfs.lng b/hfs.lng index 9a35cd1..7511279 100644 --- a/hfs.lng +++ b/hfs.lng @@ -1,5 +1,5 @@ ; Kryvich's Delphi Localizer Language File. -; Generated by K.D.L. Scanner, 31/05/2020 23:26:47 +; Generated by K.D.L. Scanner, 02/06/2020 14:12:28 Humanize=1 HumanizedCR=\^ @@ -452,183 +452,282 @@ Panel1.Button1.Caption=&Yes Panel1.Button2.Caption=&No [ResourceStrings] -64752_main_MSG_NUM_ADDR=In this moment there are %d different addresses -64753_main_MSG_NUM_ADDR_DL=In this moment there are %d different addresses downloading -64754_main_MSG_MAX_LINES=Max lines on screen. -64755_main_MSG_APACHE_LOG_FMT=Apache log file format -64756_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 -64757_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. -64758_main_MSG_AUTO_MD5=Auto fingerprint -64759_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. -64768_main_MSG_TEST_CANC=Test cancelled -64769_main_MSG_TEST_INET=Testing internet connection... -64770_main_MSG_SELF_UNAV=Sorry, the test is unavailable at the moment -64771_main_MSG_SELF_NO_INET=Your internet connection does not work -64772_main_MSG_SELF_NO_ANSWER=The test failed: server does not answer. -64773_main_MSG_OPEN_BROW=Open directly in browser -64774_main_MSG_OPEN_BROW_LONG="Suggest" the browser to open directly the specified files.\^Other files should pop up a save dialog. -64775_main_MSG_HIDE_PORT=You should not use this option unless you really know its meaning.\^Continue? -64776_main_MSG_EVENTS_HLP=For help on how to use this file please refer http://www.rejetto.com/wiki/?title=HFS:_Event_scripts -64777_main_MSG_EDIT_RES=Edit resource -64778_main_MSG_TPL_USE_MACROS=The current template is using macros.\^Do you want to cancel this action? -64779_main_REMOVE_SHELL=Remove from shell context menu -64780_main_S_OFF=Switch OFF -64781_main_S_ON{1}=Switch ON -64782_main_LOG=Log -64783_main_MSG_RE_NOIP=You are invited to re-insert your No-IP configuration, otherwise the updater won't work as expected. -64784_main_MSG_HOST_FORM=Please, enter it in the FULL form, with dots -64785_main_MSG_MIN_SPACE=Min disk space -64786_main_MSG_MIN_SPACE_LONG=The upload will fail if your disk has less than the specified amount of free MegaBytes. -64787_main_MSG_REN_PART=Rename partial uploads -64788_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. -64789_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. -64790_main_MSG_SELF_OK=The test is successful. The server should be working fine. -64791_main_MSG_SELF_OK_PORT=Port %s is not working, but another working port has been found and set: %s. -64792_main_MSG_SELF_3=You may be behind a router or firewall. -64793_main_MSG_SELF_6=You are behind a router.\^Ensure it is configured to forward port %s to your computer. -64794_main_MSG_SELF_7=You may be behind a firewall.\^Ensure nothing is blocking HFS. -64795_main_MSG_RET_EXT=Retrieving external address... -64796_main_MSG_SELF_CANT_ON=Unable to switch the server on -64797_main_MSG_SELF_CANT_LIST=Self test cannot be performed because HFS was configured to accept connections only on 127.0.0.1 -64798_main_MSG_SELF_CANT_S=Self test doesn't support HTTPS.\^It's likely it won't work. -64799_main_MSG_SELF_ING=Self testing... -64800_main_MSG_CHANGES_LOST=All changes will be lost\^Continue? -64801_main_MSG_FLAG_NEW=Flag new files -64802_main_MSG_FLAG_NEW_LONG=Enter the number of MINUTES files stay flagged from their addition.\^Leave blank to disable. -64803_main_MSG_DONT_LOG_MASK=Do not log address -64804_main_MSG_DONT_LOG_MASK_LONG=Any event from the following IP address mask will be not logged. -64805_main_MSG_CUST_IP=Custom IP addresses -64806_main_MSG_CUST_IP_LONG=Specify your addresses, each per line -64807_main_MSG_NO_EXT_IP=Can't find external address\^( %s ) -64808_main_MSG_RESET_TOT=Do you want to reset total in/out? -64809_main_MSG_DISAB_FIND_EXT=This option makes pointless the option "Find external address at startup", which has now been disabled for your convenience. -64810_main_MSG_ENT_URL=Enter URL -64811_main_MSG_ENT_URL_LONG=Enter URL for updating.\^%ip% will be translated to your external IP. -64812_main_MSG_ENT_USR=Enter user -64813_main_MSG_ENT_PWD=Enter password -64814_main_MSG_ENT_HOST=Enter host -64815_main_MSG_ENT_HOST_LONG=Enter domain (full form!) -64816_main_MSG_UPD_INFO=Last stable version: %s\^\^Last untested version: %s\^ -64817_main_MSG_NEWER=There's a new version available online: %s -64818_main_MSG_SRC_UPD=Searching for updates... -64819_main_ARE_EXPERT{1}=You are in Expert mode -64820_main_ARE_EASY=You are in Easy mode -64821_main_SW2EXPERT=Switch to Expert mode -64822_main_SW2EASY=Switch to Easy mode -64823_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. -64824_main_MSG_LOG_FILE=Log file -64825_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 -64826_main_MSG_SET_URL=Set URL -64827_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 -64828_main_MSG_REALM=Login realm -64829_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 -64830_main_MSG_INACT_TIMEOUT=Connection inactivity timeout -64831_main_MSG_INACT_TIMEOUT_LONG=The connection is kicked after a timeout.\^Specify in seconds.\^Leave blank to get no timeout. -64832_main_MSG_MAX_BW_1=Max bandwidth for single address (KB/s). -64833_main_MSG_GRAPH_RATE_MENU=Graph refresh rate: %d (tenths of second) -64834_main_MSG_MAX_SIM=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". -64835_main_MSG_WARN_CONN=In this moment there are %d active connections -64836_main_MSG_WARN_ACT_DL=In this moment there are %d active downloads -64837_main_MSG_MAX_SIM_SING=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". -64913_main_MSG_MAX_SIM_DL_SING{1}=Max simultaneous downloads from a single IP address. -64839_main_MSG_GRAPH_RATE{1}=Graph refresh rate -64840_main_MSG_TENTH_SEC=Tenths of second -64841_main_MSG_LOADING_VFS=Loading VFS -64842_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. -64843_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. -64844_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". -64845_main_MSG_AUTO_DISABLED=Because of the problems encountered in loading,\^automatic saving has been disabled\^until you save manually or load another one. -64846_main_MSG_CORRUPTED=This file does not contain valid data. -64847_main_MSG_MACROS_FOUND=!!!!!!!!! DANGER !!!!!!!!!\^This file contains macros.\^Don't accept macros from people you don't trust.\^\^Trust this file? -64848_main_BANS=Ban rules: %d -64849_main_MEMORY=Mem -64850_main_CUST_TPL=Customized template -64851_main_VFS_ITEMS=VFS: %d items -64852_main_MSG_ITEM_EXISTS=%s item(s) already exists:\^%s\^\^Continue? -64853_main_MSG_ALLO_REF=Allowed referer -64854_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. -64855_main_MSG_BETTERSTOP=\^Going on may lead to problems.\^It is adviced to stop loading.\^Stop? -64856_main_MSG_BADCRC=This file is corrupted (CRC). -64817_main_MSG_NEWER{1}=This file has been created with a newer and incompatible version. -64858_main_MSG_ZLIB=This file is corrupted (ZLIB). -64859_main_MSG_BAKAVAILABLE=This file is corrupted but a backup is available.\^Continue with backup? -64860_main_LIMIT{2}=Limit -64861_main_TOP_SPEED=Top speed -64862_main_MSG_MAX_BW=Max bandwidth (KB/s). -64863_main_MSG_LIM0=Zero is an effective limit.\^To disable instead, leave empty. -64864_main_MSG_BAN=Your ban configuration may have been screwed up.\^Please verify it. -64865_main_MSG_CANT_SAVE_OPT=Can't save options there.\^Should I try to save to user registry? -64866_main_MSG_UPD_SAVE_ERROR=Cannot save the update -64867_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. -64868_main_MSG_UPDATE=You are invited to use the new version.\^\^Update now? -64869_main_MSG_REQUESTING=Requesting... -64870_main_MSG_CHK_UPD=Checking for updates -64871_main_MSG_CHK_UPD_FAIL=Check update: failed -64872_main_TO_CLIP=Copy to clipboard -64873_main_ALREADY_CLIP=Already in clipboard -64874_main_MSG_NO_SPACE=Out of space -64875_main_CONN=Connections: %d -64876_main_TOT_IN=Total In: %s -64877_main_TOT_OUT{1}=Total Out: %s -64878_main_OUT_SPEED=Out: %.1f KB/s -64879_main_IN_SPEED=In: %.1f KB/s -64880_main_MSG_CANT_OPEN_PORT=Cannot open port. -64881_main_MSG_PORT_USED_BY=It is already used by %s -64882_main_MSG_PORT_BLOCKED=Something is blocking, maybe your system firewall. -64883_main_MSG_KICK_ALL=There are %d connections open.\^Do you want to close them now? -64884_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. -64885_main_MSG_LOGIN_FAILED=Login failed -64886_main_FINGERPRINT=Create fingerprint on addition under %d KB -64887_main_NO_FINGERPRINT=Create fingerprint on addition: disabled -64888_main_MSG_INP_COMMENT=Please insert a comment for "%s".\^You should use HTML:
for break line. -64889_main_AUTOSAVE=Auto save every: -64890_main_SECONDS=%d seconds -64891_main_MSG_SPD_LIMIT_SING=Speed limit for single address -64892_main_MSG_SPD_LIMIT=Speed limit -64893_main_MSG_AUTO_SAVE=Auto-save %s -64894_main_MSG_AUTO_SAVE_LONG=Auto-save %s.\^Specify in seconds.\^Leave blank to disable. -64895_main_MSG_MIN=We don't accept less than %d -64896_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) -64897_main_MSG_COMM_ERROR=Network error. Request failed. -64898_main_MSG_DDNS_badauth=invalid user/password -64899_main_MSG_DDNS_notfqdn=incomplete hostname, required form aaa.bbb.com -64900_main_MSG_DDNS_nohost=specified hostname does not exist -64901_main_MSG_DDNS_notyours=specified hostname belongs to another username -64902_main_MSG_DDNS_numhost=too many or too few hosts found -64903_main_MSG_DDNS_abuse=specified hostname is blocked for update abuse -64904_main_MSG_DDNS_dnserr=server error -64905_main_MSG_DDNS_911=server error -64906_main_MSG_DDNS_notdonator=an option specified requires payment -64907_main_MSG_DDNS_badagent=banned client -64908_main_MSG_IP_MASK=IP mask -64909_main_MSG_IP_MASK_LONG=You can edit the address.\^Masks and ranges are allowed. -64910_main_MSG_KICK_ADDR=There are %d open connections from this address.\^Do you want to kick them all now? -64911_main_MSG_BREAK_DYN_DNS=This option is NOT compatible with "dynamic dns updater".\^Continue? -64912_main_MSG_MAX_SIM_ADDR_DL=Max simultaneous addresses downloading -64913_main_MSG_MAX_SIM_DL_SING{2}=Max simultaneous downloads from single address -64914_main_MSG_MAX_SIM_DL=Max simultaneous downloads -64915_main_MSG_SET_LIMIT=Set limit -64916_main_MSG_UNPROTECTED_LINKS=Links are NOT actually protected.\^The feature is there to be used with the "list protected items only..." option.\^Continue? -64917_main_MSG_SAME_NAME=An item with the same name is already present in this folder.\^Continue? -64918_main_MSG_OPTIONS_SAVED=Options saved -64919_main_MSG_SOME_LOCKED=Some items were not affected because locked -64920_main_MSG_ITEM_LOCKED=The item is locked -64921_main_MSG_INVALID_VALUE=Invalid value -64922_main_MSG_EMPTY_NO_LIMIT=Leave blank to get no limits. -64923_main_MSG_ADDRESSES_EXCEED=The following addresses exceed the limit:\^%s -64924_main_MSG_NO_TEMP=Cannot save temporary file -64925_main_MSG_ERROR_REGISTRY=Can't write to registry.\^You may lack necessary rights. -64926_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. -64927_main_MSG_ADD_TO_HFS="Add to HFS" has been added to your Window's Explorer right-click menu. -64935_main_S_PORT_LABEL=Port: %s -64936_main_S_PORT_ANY=any -64937_main_DISABLED=disabled -64938_main_S_OK=Ok -64939_main_MSG_MENU_VAL= (%s) -64940_main_MSG_DL_TIMEOUT{1}=No downloads timeout -64941_main_MSG_MAX_CON=Max connections -64942_main_MSG_MAX_CON_SING=Max connections from single address -64943_main_MSG_MAX_SIM_ADDR{1}=Max simultaneous addresses +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\^ +64783_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_ZLIB=This file is corrupted (ZLIB). +64753_main_MSG_BAKAVAILABLE=This file is corrupted but a backup is available.\^Continue with backup? +64754_main_MSG_CANT_LOAD_SAVE=Cannot load or save while adding files +64755_main_MSG_OPEN_VFS=Open VFS file +64756_main_LIMIT{2}=Limit +64757_main_TOP_SPEED=Top speed +64758_main_MSG_MAX_BW=Max bandwidth (KB/s). +64759_main_MSG_LIM0=Zero is an effective limit.\^To disable instead, leave empty. +64760_main_MSG_MAX_BW_1=Max bandwidth for single address (KB/s). +64761_main_MSG_GRAPH_RATE_MENU=Graph refresh rate: %d (tenths of second) +64762_main_MSG_MAX_SIM=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". +64763_main_MSG_WARN_CONN=In this moment there are %d active connections +64764_main_MSG_WARN_ACT_DL=In this moment there are %d active downloads +64765_main_MSG_MAX_SIM_SING=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". +64766_main_MSG_MAX_SIM_DL_SING{1}=Max simultaneous downloads from a single IP address. +64767_main_MSG_GRAPH_RATE{1}=Graph refresh rate +64768_main_MSG_CON_STATE_IDLE=idle +64769_main_MSG_CON_STATE_REQ=requesting +64770_main_MSG_CON_STATE_RCV=receiving +64771_main_MSG_CON_STATE_THINK=thinking +64772_main_MSG_CON_STATE_REP=replying +64773_main_MSG_CON_STATE_SEND=sending +64774_main_MSG_CON_STATE_DISC=disconnected +64775_main_MSG_CON_PAUSED=paused +64776_main_MSG_CON_SENT=%s / %s sent +64777_main_MSG_CON_RECEIVED=%s / %s received +64778_main_MSG_TPL_RESET=The template has been reset +64779_main_MSG_ALLO_REF=Allowed referer +64780_main_MSG_ALLO_REF_LONG=Leave empty to disable this feature.\^Here you can specify a mask.\^When a file is requested, if the mask doesn't match the "Referer" HTTP field, the request is rejected. +64781_main_MSG_BETTERSTOP=\^Going on may lead to problems.\^It is adviced to stop loading.\^Stop? +64782_main_MSG_BADCRC=This file is corrupted (CRC). +64783_main_MSG_NEWER{1}=This file has been created with a newer and incompatible version. +64784_main_MSG_VFS_ARCABLE=Archivable +64785_main_MSG_VFS_DEF_MASK=Default file mask: %s +64786_main_MSG_VFS_ACCESS=Access for +64787_main_MSG_VFS_UPLOAD=Upload allowed for +64788_main_MSG_VFS_DELETE=Delete allowed for +64789_main_MSG_VFS_COMMENT=Comment: %s +64790_main_MSG_VFS_REALM=Realm: %s +64791_main_MSG_VFS_DIFF_TPL=Diff template: %s +64792_main_MSG_VFS_FILES_FLT=Files filter: %s +64793_main_MSG_VFS_FLD_FLT=Folders filter: %s +64794_main_MSG_VFS_UPL_FLT=Upload filter: %s +64795_main_MSG_VFS_DONT_CONS_DL=Don't consider as download +64796_main_MSG_VFS_DONT_CONS_DL_MASK=Don't consider as download (mask): %s +64797_main_MSG_VFS_INHERITED= [inherited] +64798_main_MSG_VFS_EXTERNAL= [external] +64799_main_MSG_CON_HINT=Connection time: %s\^Last request time: %s\^Agent: %s +64800_main_VFS_ITEMS=VFS: %d items +64801_main_MSG_ITEM_EXISTS=%s item(s) already exists:\^%s\^\^Continue? +64802_main_MSG_INSTALL_TPL=Install this template? +64803_main_MSG_FOLDER_UPLOAD=Do you want ANYONE to be able to upload to this folder? +64804_main_MSG_VFS_DRAG_INVIT=Drag your files here +64805_main_MSG_VFS_URL=URL: %s +64806_main_MSG_VFS_PATH=Path: %s +64807_main_MSG_VFS_SIZE=Size: %s +64808_main_MSG_VFS_DLS=Downloads: %s +64809_main_MSG_VFS_INVISIBLE=Invisible +64810_main_MSG_VFS_DL_FORB=Download forbidden +64811_main_MSG_VFS_DONT_LOG=Don't log +64812_main_MSG_VFS_HIDE_EMPTY=Hidden if empty +64813_main_MSG_VFS_NOT_BROW=Not browsable +64814_main_MSG_VFS_HIDE_EMPTY_FLD=Hide empty folders +64815_main_MSG_VFS_HIDE_EXT=Hide extention +64816_main_MSG_CHK_UPD_FAIL=Check update: failed +64817_main_MSG_CHK_UPD_HEAD=Check update: +64818_main_MSG_CHK_UPD_VER=new version found: %s +64819_main_MSG_CHK_UPD_VER_EXT=Build #%s (current is #%s) +64820_main_MSG_CHK_UPD_NONE=no new version +64821_main_TO_CLIP=Copy to clipboard +64822_main_ALREADY_CLIP=Already in clipboard +64823_main_MSG_NO_SPACE=Out of space +64824_main_CONN=Connections: %d +64825_main_TOT_IN=Total In: %s +64826_main_TOT_OUT{1}=Total Out: %s +64827_main_OUT_SPEED=Out: %.1f KB/s +64828_main_IN_SPEED=In: %.1f KB/s +64829_main_BANS=Ban rules: %d +64830_main_MEMORY=Mem +64831_main_CUST_TPL=Customized template +64832_main_AUTOSAVE=Auto save every: +64833_main_SECONDS=%d seconds +64834_main_MSG_SPD_LIMIT_SING=Speed limit for single address +64835_main_MSG_SPD_LIMIT=Speed limit +64836_main_MSG_AUTO_SAVE=Auto-save %s +64837_main_MSG_AUTO_SAVE_LONG=Auto-save %s.\^Specify in seconds.\^Leave blank to disable. +64838_main_MSG_MIN=We don't accept less than %d +64839_main_MSG_BAN=Your ban configuration may have been screwed up.\^Please verify it. +64840_main_MSG_CANT_SAVE_OPT=Can't save options there.\^Should I try to save to user registry? +64841_main_MSG_UPD_SAVE_ERROR=Cannot save the update +64842_main_MSG_UPD_REQ_ONLY1=The auto-update feature cannot work because it requires the "Only 1 instance" option enabled.\^\^Your browser will now be pointed to the update, so you can install it manually. +64843_main_MSG_UPD_WAIT=Waiting for last requests to be served, then we'll update +64844_main_MSG_UPD_DL=Downloading new version... +64845_main_MSG_UPDATE=You are invited to use the new version.\^\^Update now? +64846_main_MSG_REQUESTING=Requesting... +64847_main_MSG_CHK_UPD=Checking for updates +64848_main_MSG_LOG_UPL=Uploading %s +64849_main_MSG_LOG_UPLOADED=Fully uploaded %s - %s @ %sB/s +64850_main_MSG_LOG_UPL_FAIL=Upload failed %s +64851_main_MSG_LOG_DL=Fully downloaded - %s @ %sB/s - %s +64852_main_MSG_LOGIN_FAILED=Login failed +64853_main_MSG_MIN_DISK_REACHED=Minimum disk space reached. +64854_main_MSG_UPL_NAME_FORB=File name or extension forbidden. +64855_main_MSG_UPL_CANT_CREATE=Error creating file. +64856_main_FINGERPRINT=Create fingerprint on addition under %d KB +64857_main_NO_FINGERPRINT=Create fingerprint on addition: disabled +64858_main_MSG_SAVE_VFS=Your current file system is not saved.\^Save it? +64859_main_MSG_INP_COMMENT=Please insert a comment for "%s".\^You should use HTML:
for break line. +64860_main_MSG_FILE_ADD_ABORT=File addition was aborted.\^The list of files is incomplete. +64861_main_MSG_ADDING=Adding item #%d +64862_main_MSG_INV_FILENAME=Invalid filename +64863_main_MSG_DELETE=Delete? +64864_main_MSG_PORT_USED_BY=It is already used by %s +64865_main_MSG_PORT_BLOCKED=Something is blocking, maybe your system firewall. +64866_main_MSG_KICK_ALL=There are %d connections open.\^Do you want to close them now? +64867_main_MSG_TPL_INCOMPATIBLE=The template you are trying to load is not compatible with current HFS version.\^HFS will now use default template.\^Ask on the forum if you need further help. +64868_main_MSG_LOG_SERVER_START=Server start +64869_main_MSG_LOG_SERVER_STOP=Server stop +64870_main_MSG_LOG_CONNECTED=Connected +64871_main_MSG_LOG_DISC_SRV=Disconnected by server +64872_main_MSG_LOG_DISC=Disconnected +64873_main_MSG_LOG_GOT=Got %d bytes +64874_main_MSG_LOG_BYTES_SENT=%s bytes sent +64875_main_MSG_LOG_SERVED=Served %s +64876_main_MSG_LOG_HEAD=Served head +64877_main_MSG_LOG_NOT_MOD=Not modified, use cache +64878_main_MSG_LOG_REDIR=Redirected to %s +64879_main_MSG_LOG_NOT_SERVED=Not served: %d - %s +64880_main_MSG_DDNS_nohost=specified hostname does not exist +64881_main_MSG_DDNS_notyours=specified hostname belongs to another username +64882_main_MSG_DDNS_numhost=too many or too few hosts found +64883_main_MSG_DDNS_abuse=specified hostname is blocked for update abuse +64884_main_MSG_DDNS_dnserr=server error +64885_main_MSG_DDNS_911=server error +64886_main_MSG_DDNS_notdonator=an option specified requires payment +64887_main_MSG_DDNS_badagent=banned client +64888_main_MSG_BAN_MASK=Ban IP mask +64889_main_MSG_IP_MASK_LONG=You can edit the address.\^Masks and ranges are allowed. +64890_main_MSG_KICK_ADDR=There are %d open connections from this address.\^Do you want to kick them all now? +64891_main_MSG_BAN_ALREADY=This IP address is already banned +64892_main_MSG_BAN_CMT=Ban comment +64893_main_MSG_BAN_CMT_LONG=A comment for this ban... +64894_main_MSG_BREAK_DYN_DNS=This option is NOT compatible with "dynamic dns updater".\^Continue? +64895_main_MSG_CANT_OPEN_PORT=Cannot open port. +64896_main_MSG_NO_TEMP=Cannot save temporary file +64897_main_MSG_ERROR_REGISTRY=Can't write to registry.\^You may lack necessary rights. +64898_main_MSG_MANY_ITEMS=You are putting many files.\^Try using real folders instead of virtual folders.\^Read documentation or ask on the forum for help. +64899_main_MSG_ADD_TO_HFS="Add to HFS" has been added to your Window's Explorer right-click menu. +64900_main_MSG_SINGLE_INSTANCE=Sorry, this feature only works with the "Only 1 instance" option enabled.\^\^You can find this option under Menu -> Start/Exit\^(only in expert mode) +64901_main_MSG_COMM_ERROR=Network error. Request failed. +64902_main_MSG_DDNS_NO_REPLY=no reply +64903_main_MSG_DDNS_OK=successful +64904_main_MSG_DDNS_UNK=unknown reply: %s +64905_main_MSG_DDNS_ERR=error: %s +64906_main_MSG_DDNS_REQ=DNS update requested for %s: %s +64907_main_MSG_DDNS_DOING=Updating dynamic DNS... +64908_main_MSG_DDNS_FAIL=DNS update failed: %s\^User intervention is required. +64909_main_MSG_DDNS_REPLY_SIZE=%d bytes reply +64910_main_MSG_DDNS_badauth=invalid user/password +64911_main_MSG_DDNS_notfqdn=incomplete hostname, required form aaa.bbb.com +64912_main_MSG_MAX_SIM_ADDR{1}=Max simultaneous addresses +64913_main_MSG_MAX_SIM_ADDR_DL=Max simultaneous addresses downloading +64766_main_MSG_MAX_SIM_DL_SING{2}=Max simultaneous downloads from single address +64915_main_MSG_MAX_SIM_DL=Max simultaneous downloads +64916_main_MSG_SET_LIMIT=Set limit +64917_main_MSG_UNPROTECTED_LINKS=Links are NOT actually protected.\^The feature is there to be used with the "list protected items only..." option.\^Continue? +64918_main_MSG_SAME_NAME=An item with the same name is already present in this folder.\^Continue? +64919_main_MSG_CONTINUE=Continue? +64920_main_MSG_PROCESSING=Processing... +64921_main_MSG_SPEED_KBS=%.1f kB/s +64922_main_MSG_OPTIONS_SAVED=Options saved +64923_main_MSG_SOME_LOCKED=Some items were not affected because locked +64924_main_MSG_ITEM_LOCKED=The item is locked +64925_main_MSG_INVALID_VALUE=Invalid value +64926_main_MSG_EMPTY_NO_LIMIT=Leave blank to get no limits. +64927_main_MSG_ADDRESSES_EXCEED=The following addresses exceed the limit:\^%s +64935_optionsDlg_MSG_INVERT_BAN=Normal behavior of the Ban is to prevent access to the addresses you specify (also called black-list).\^If you want the opposite, to allow the addresses that you specify (white-list), enter all addresses in a single row preceded by a \ character.\^\^Let say you want to allow all your 192.168 local network plus your office at 1.1.1.1.\^Just put this IP address mask: \192.168.*;1.1.1.1\^The opening \ character inverts the logic, so everything else is banned.\^\^If you want to know more about address masks, check the guide. +64936_main_S_PORT_LABEL=Port: %s +64937_main_S_PORT_ANY=any +64938_main_DISABLED=disabled +64939_main_S_OK=Ok +64940_main_MSG_MENU_VAL= (%s) +64941_main_MSG_DL_TIMEOUT{1}=No downloads timeout +64942_main_MSG_MAX_CON=Max connections +64943_main_MSG_MAX_CON_SING=Max connections from single address 65046_OverbyteIcsHttpContCod_ERR_GETCODING_OVERRIDE=GetCoding must be overridden in %s 65088_OverbyteIcsCharsetUtils_sHebrewISOVisual=Hebrew (ISO-Visual) 65089_OverbyteIcsCharsetUtils_sHebrewWindows=Hebrew (Windows) diff --git a/invertban.txt b/invertban.txt deleted file mode 100644 index 9aca35d..0000000 --- a/invertban.txt +++ /dev/null @@ -1,8 +0,0 @@ -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. diff --git a/main.pas b/main.pas index 81b3551..7c5d65c 100644 --- a/main.pas +++ b/main.pas @@ -138,6 +138,9 @@ interface +#13'Continue?'; MSG_SAME_NAME ='An item with the same name is already present in this folder.' +#13'Continue?'; + MSG_CONTINUE = 'Continue?'; + MSG_PROCESSING = 'Processing...'; + MSG_SPEED_KBS = '%.1f kB/s'; MSG_OPTIONS_SAVED = 'Options saved'; MSG_SOME_LOCKED = 'Some items were not affected because locked'; MSG_ITEM_LOCKED = 'The item is locked'; @@ -157,16 +160,6 @@ interface MSG_ENABLED = 'Option enabled'; MSG_DISABLED = 'Option disabled'; MSG_COMM_ERROR = 'Network error. Request failed.'; - MSG_DDNS_badauth='invalid user/password'; - MSG_DDNS_notfqdn='incomplete hostname, required form aaa.bbb.com'; - MSG_DDNS_nohost='specified hostname does not exist'; - MSG_DDNS_notyours='specified hostname belongs to another username'; - MSG_DDNS_numhost='too many or too few hosts found'; - MSG_DDNS_abuse='specified hostname is blocked for update abuse'; - MSG_DDNS_dnserr='server error'; - MSG_DDNS_911='server error'; - MSG_DDNS_notdonator='an option specified requires payment'; - MSG_DDNS_badagent='banned client'; type Pboolean = ^boolean; @@ -2149,7 +2142,8 @@ function existsNodeWithName(name:string; parent:Ttreenode):boolean; while assigned(n) do begin result:=sameText(n.text, name); - if result then exit; + if result then + exit; n:=n.getNextSibling(); end; end; // existsNodeWithName @@ -2168,6 +2162,25 @@ function getUniqueNodeName(start:string; parent:Ttreenode):string; end; // getUniqueNodeName procedure updateDynDNS(); +resourcestring + MSG_DDNS_NO_REPLY = 'no reply'; + MSG_DDNS_OK = 'successful'; + MSG_DDNS_UNK = 'unknown reply: %s'; + MSG_DDNS_ERR = 'error: %s'; + MSG_DDNS_REQ = 'DNS update requested for %s: %s'; + MSG_DDNS_DOING = 'Updating dynamic DNS...'; + MSG_DDNS_FAIL = 'DNS update failed: %s'#13'User intervention is required.'; + MSG_DDNS_REPLY_SIZE = '%d bytes reply'; + MSG_DDNS_badauth='invalid user/password'; + MSG_DDNS_notfqdn='incomplete hostname, required form aaa.bbb.com'; + MSG_DDNS_nohost='specified hostname does not exist'; + MSG_DDNS_notyours='specified hostname belongs to another username'; + MSG_DDNS_numhost='too many or too few hosts found'; + MSG_DDNS_abuse='specified hostname is blocked for update abuse'; + MSG_DDNS_dnserr='server error'; + MSG_DDNS_911='server error'; + MSG_DDNS_notdonator='an option specified requires payment'; + MSG_DDNS_badagent='banned client'; function interpretResponse(s:string):string; const @@ -2189,37 +2202,43 @@ procedure updateDynDNS(); begin s:=trim(s); if s = '' then - exit('no reply'); + exit(MSG_DDNS_NO_REPLY); code:=''; - result:='successful'; + result:=MSG_DDNS_OK; code:=trim(lowercase(getTill(' ',s))); if stringExists(code, ['good','nochg']) then exit; for i:=1 to length(ERRORS) do if code = ERRORS[i].code then begin dyndns.active:=FALSE; - exit('error: '+ERRORS[i].msg); + exit(format(MSG_DDNS_ERR,[ERRORS[i].msg])); end; - result:='unknown reply: '+s; + result:=format(MSG_DDNS_UNK,[s]); end; // interpretResponse var s: string; begin if externalIP = '' then exit; -mainfrm.setStatusBarText('Updating dynamic DNS...'); +mainfrm.setStatusBarText(MSG_DDNS_DOING); dyndns.lastTime:=now(); -try s:=httpGet(replaceText(dyndns.url, '%ip%', externalIP)); -except s:='' end; -if s > '' then dyndns.lastResult:=s; -if not mainfrm.logOtherEventsChk.checked then exit; -if length(s) > 30 then s:=intToStr(length(s))+' bytes reply' -else s:=interpretResponse(s); -mainfrm.add2log('DNS update requested for '+dyndns.lastIP+': '+s); +try + s:=httpGet(replaceText(dyndns.url, '%ip%', externalIP)); + if s > '' then + dyndns.lastResult:=s; +except s:='' + end; +if not mainfrm.logOtherEventsChk.checked then + exit; +if length(s) > 30 then + s:=format(MSG_DDNS_REPLY_SIZE, [length(s)]) +else + s:=interpretResponse(s); +mainfrm.add2log(format(MSG_DDNS_REQ, [dyndns.lastIP,s])); if dyndns.active then dyndns.lastIP:=externalIP else - msgDlg('DNS update failed.'#13+s+'.'#13'User intervention is required.', MB_ICONERROR); + msgDlg(format(MSG_DDNS_FAIL, [s]), MB_ICONERROR); mainfrm.setStatusBarText(''); end; // updateDynDNS @@ -3356,27 +3375,29 @@ function getAccountList(users:boolean=TRUE; groups:boolean=TRUE):TstringDynArray function banAddress(ip:string):boolean; resourcestring - MSG_IP_MASK = 'IP mask'; + MSG_BAN_MASK = 'Ban IP mask'; MSG_IP_MASK_LONG = 'You can edit the address.'#13'Masks and ranges are allowed.'; - MSG_KICK_ADDR = 'There are %d open connections from this address.' - +#13'Do you want to kick them all now?'; + MSG_KICK_ADDR = 'There are %d open connections from this address.'#13'Do you want to kick them all now?'; + MSG_BAN_ALREADY = 'This IP address is already banned'; + MSG_BAN_CMT = 'Ban comment'; + MSG_BAN_CMT_LONG = 'A comment for this ban...'; var i: integer; comm: string; begin result:=FALSE; mainfrm.setFocus(); -if not InputQuery(MSG_IP_MASK,MSG_IP_MASK_LONG,ip) then exit; +if not InputQuery(MSG_BAN_MASK,MSG_IP_MASK_LONG,ip) then exit; for i:=0 to length(banlist)-1 do if banlist[i].ip = ip then begin - msgDlg('This IP address is already banned', MB_ICONWARNING); + msgDlg(MSG_BAN_ALREADY, MB_ICONWARNING); exit; end; comm:=''; -if not InputQuery('Ban comment','A comment for this ban...',comm) then exit; +if not InputQuery(MSG_BAN_CMT,MSG_BAN_CMT_LONG,comm) then exit; i:=length(banlist); setlength(banlist, i+1); @@ -4073,7 +4094,7 @@ procedure setupDownloadIcon(data:TconnData); data.tray.setIcon(data.tray_ico); data.tray.setTip( if_( data.conn.reply.bodyMode=RBM_STRING, decodeURL(data.conn.request.url), data.lastFN ) - +trayNL+format('%.1f KB/s', [data.averageSpeed/1000]) + +trayNL+format(MSG_SPEED_KBS, [data.averageSpeed/1000]) +trayNL+dotted(data.conn.bytesSentLastItem)+' bytes sent' +trayNL+data.address ); @@ -4531,6 +4552,23 @@ procedure setNewTplFile(fn:string); end; // setNewTplFile procedure Tmainfrm.httpEvent(event:ThttpEvent; conn:ThttpConn); +resourcestring + MSG_LOG_SERVER_START = 'Server start'; + MSG_LOG_SERVER_STOP = 'Server stop'; + MSG_LOG_CONNECTED = 'Connected'; + MSG_LOG_DISC_SRV = 'Disconnected by server'; + MSG_LOG_DISC = 'Disconnected'; + MSG_LOG_GOT = 'Got %d bytes'; + MSG_LOG_BYTES_SENT = '%s bytes sent'; + MSG_LOG_SERVED = 'Served %s'; + MSG_LOG_HEAD = 'Served head'; + MSG_LOG_NOT_MOD = 'Not modified, use cache'; + MSG_LOG_REDIR = 'Redirected to %s'; + MSG_LOG_NOT_SERVED = 'Not served: %d - %s'; + MSG_LOG_UPL = 'Uploading %s'; + MSG_LOG_UPLOADED = 'Fully uploaded %s - %s @ %sB/s'; + MSG_LOG_UPL_FAIL = 'Upload failed %s'; + MSG_LOG_DL = 'Fully downloaded - %s @ %sB/s - %s'; var data: TconnData; f: Tfile; @@ -4620,15 +4658,14 @@ procedure Tmainfrm.httpEvent(event:ThttpEvent; conn:ThttpConn); if not (event in [HE_OPEN, HE_CLOSE]) and addressMatch(dontLogAddressMask, data.address) then exit; - case event of - HE_OPEN: if logServerstartChk.Checked then add2log('Server start'); - HE_CLOSE: if logServerstopChk.checked then add2log('Server stop'); - HE_CONNECTED: if logconnectionsChk.Checked then add2log('Connected', data); + HE_OPEN: if logServerstartChk.Checked then add2log(MSG_LOG_SERVER_START); + HE_CLOSE: if logServerstopChk.checked then add2log(MSG_LOG_SERVER_STOP); + HE_CONNECTED: if logconnectionsChk.Checked then add2log(MSG_LOG_CONNECTED, data); HE_DISCONNECTED: if logDisconnectionsChk.checked then - add2log('Disconnected'+if_(conn.disconnectedByServer, ' by server') + add2log(if_(conn.disconnectedByServer, MSG_LOG_DISC_SRV,MSG_LOG_DISC) +nonEmptyConcat(': ', data.disconnectReason) - +if_(conn.bytesSent>0, ' - '+intToStr(conn.bytesSent)+' bytes sent'), + +if_(conn.bytesSent>0, ' - '+format(MSG_LOG_BYTES_SENT, [dotted(conn.bytesSent)])), data); HE_GOT: begin @@ -4639,7 +4676,7 @@ procedure Tmainfrm.httpEvent(event:ThttpEvent; conn:ThttpConn); inc(data.bytesGotGrouping.bytes, i) else begin - add2log(format('Got %d bytes',[i+data.bytesGotGrouping.bytes]), data); + add2log(format(MSG_LOG_GOT,[i+data.bytesGotGrouping.bytes]), data); data.bytesGotGrouping.since:=now(); data.bytesGotGrouping.bytes:=0; end; @@ -4654,7 +4691,7 @@ procedure Tmainfrm.httpEvent(event:ThttpEvent; conn:ThttpConn); inc(data.bytesSentGrouping.bytes, i) else begin - add2log(format('Sent %d bytes',[i+data.bytesSentGrouping.bytes]), data); + add2log(format(MSG_LOG_BYTES_SENT,[dotted(i+data.bytesSentGrouping.bytes)]), data); data.bytesSentGrouping.since:=now(); data.bytesSentGrouping.bytes:=0; end; @@ -4677,34 +4714,34 @@ procedure Tmainfrm.httpEvent(event:ThttpEvent; conn:ThttpConn); end; HE_REPLIED: if logRepliesChk.checked then - case conn.reply.mode of - HRM_REPLY: if not data.fullDLlogged then add2log(format('Served %s', [smartSize(conn.bytesSentLastItem)]), data); - HRM_REPLY_HEADER: add2log('Served head', data); - HRM_NOT_MODIFIED: add2log('Not modified, use cache', data); - HRM_REDIRECT: add2log(format('Redirected to %s', [conn.reply.url]), data); + case conn.reply.mode of + HRM_REPLY: if not data.fullDLlogged then add2log(format(MSG_LOG_SERVED, [smartSize(conn.bytesSentLastItem)]), data); + HRM_REPLY_HEADER: add2log(MSG_LOG_HEAD, data); + HRM_NOT_MODIFIED: add2log(MSG_LOG_NOT_MOD, data); + HRM_REDIRECT: add2log(format(MSG_LOG_REDIR, [conn.reply.url]), data); else if not logOnlyServedChk.checked then - add2log(format('Not served: %d - %s', [HRM2CODE[conn.reply.mode], HRM2STR[conn.reply.mode] ]) + add2log(format(MSG_LOG_NOT_SERVED, [HRM2CODE[conn.reply.mode], HRM2STR[conn.reply.mode] ]) +nonEmptyConcat(': ', data.error), data); end; HE_POST_FILE: if logUploadsChk.checked and (data.uploadFailed = '') then - add2log(format('Uploading %s', [data.uploadSrc]), data); + add2log(format(MSG_LOG_UPL, [data.uploadSrc]), data); HE_POST_END_FILE: if logUploadsChk.checked then if data.uploadFailed = '' then - add2log(format('Fully uploaded %s - %s @ %sB/s', [ + add2log(format(MSG_LOG_UPLOADED, [ data.uploadSrc, smartSize(conn.bytesPostedLastItem), smartSize(calcAverageSpeed(conn.bytesPostedLastItem)) ]), data) else - add2log(format('Upload failed %s', [data.uploadSrc]), data); + add2log(format(MSG_LOG_UPL_FAIL, [data.uploadSrc]), data); HE_LAST_BYTE_DONE: if logFulldownloadsChk.checked and data.countAsDownload and (data.downloadingWhat in [DW_FILE, DW_ARCHIVE]) then begin data.fullDLlogged:=TRUE; - add2log(format('Fully downloaded - %s @ %sB/s - %s', [ + add2log(format(MSG_LOG_DL, [ smartSize(conn.bytesSentLastItem), smartSize(calcAverageSpeed(conn.bytesSentLastItem)), decodedUrl()]), data); @@ -4817,7 +4854,7 @@ procedure Tmainfrm.httpEvent(event:ThttpEvent; conn:ThttpConn); procedure logUploadFailed(); begin if not logUploadsChk.checked then exit; - add2log(format('Upload failed for %s: %s', [data.uploadSrc, data.uploadFailed]), data); + add2log(format(MSG_LOG_UPL_FAIL, [data.uploadSrc])+' : '+data.uploadFailed, data); end; // logUploadFile function eventToFilename(event:string; table:array of string):string; @@ -4888,7 +4925,7 @@ procedure Tmainfrm.httpEvent(event:ThttpEvent; conn:ThttpConn); function sessionSetup():boolean; var - sid, s: string; + sid: string; begin result:=TRUE; if data = NIL then @@ -5153,7 +5190,6 @@ procedure Tmainfrm.httpEvent(event:ThttpEvent; conn:ThttpConn); procedure deletion(); var - i: integer; asUrl, s: string; doneRes, done, errors: TStringDynArray; begin @@ -5659,13 +5695,15 @@ procedure Tmainfrm.httpEvent(event:ThttpEvent; conn:ThttpConn); end; // lastByte function canWriteFile():boolean; + resourcestring + MSG_MIN_DISK_REACHED = 'Minimum disk space reached.'; begin result:=FALSE; if data.f = NIL then exit; result:= minDiskSpace <= diskSpaceAt(data.uploadDest) div MEGA; if result then exit; closeUploadingFile_partial(); - data.uploadFailed:='Minimum disk space reached.'; + data.uploadFailed:=MSG_MIN_DISK_REACHED; end; // canWriteFile function complyUploadFilter():boolean; @@ -5678,22 +5716,26 @@ procedure Tmainfrm.httpEvent(event:ThttpEvent; conn:ThttpConn); result:='\'+PROTECTED_FILES_MASK; // the user can disable this default filter by inputing * as mask end; + resourcestring + MSG_UPL_NAME_FORB = 'File name or extension forbidden.'; begin result:=validFilename(data.uploadSrc) and not sameText(data.uploadSrc, DIFF_TPL_FILE) // never allow this and not isExtension(data.uploadSrc, '.lnk') // security matters (by mars) and fileMatch(getMask(), data.uploadSrc); if not result then - data.uploadFailed:='File name or extension forbidden.'; + data.uploadFailed:=MSG_UPL_NAME_FORB; end; // complyUploadFilter function canCreateFile():boolean; + resourcestring + MSG_UPL_CANT_CREATE = 'Error creating file.'; begin IOresult; rewrite(data.f^, 1); result:=IOresult=0; if result then exit; - data.uploadFailed:='Error creating file.'; + data.uploadFailed:=MSG_UPL_CANT_CREATE; end; // canCreateFile var @@ -5828,7 +5870,7 @@ procedure Tmainfrm.httpEvent(event:ThttpEvent; conn:ThttpConn); data.downloadingWhat:=DW_UNK; data.agent:=getAgentID(conn); data.fileXferStart:=now(); - f:=findFileByURL(decodeURL(getTill('?',conn.request.url))); + f:=findFileByURL(decodeURL(AnsiString(getTill('?',conn.request.url)))); data.lastFile:=f; // auto-freeing data.uploadSrc:=conn.post.filename; data.uploadFailed:=''; @@ -5990,6 +6032,8 @@ procedure checkIfOnlyCountersChanged(); end; function checkVfsOnQuit():boolean; +resourcestring + MSG_SAVE_VFS = 'Your current file system is not saved.'#13'Save it?'; var s: string; begin @@ -6006,7 +6050,7 @@ function checkVfsOnQuit():boolean; lastFileOpen:=s; end else - case msgDlg('Your current file system is not saved.'#13'Save it?', MB_ICONQUESTION+if_(quitASAP, MB_YESNO, MB_YESNOCANCEL)) of + case msgDlg(MSG_SAVE_VFS, MB_ICONQUESTION+if_(quitASAP, MB_YESNO, MB_YESNOCANCEL)) of IDYES: mainfrm.saveVFS(lastFileOpen); IDNO: ; // just go on IDCANCEL: result:=FALSE; @@ -6022,6 +6066,8 @@ procedure inputComment(f:Tfile); end; // inputComment function Tmainfrm.addFile(f:Tfile; parent:Ttreenode=NIL; skipComment:boolean=FALSE):Tfile; +resourcestring + MSG_FILE_ADD_ABORT = 'File addition was aborted.'#13'The list of files is incomplete.'; begin abortBtn.show(); stopAddingItems:=FALSE; @@ -6029,7 +6075,7 @@ function Tmainfrm.addFile(f:Tfile; parent:Ttreenode=NIL; skipComment:boolean=FAL finally abortBtn.hide() end; if result = NIL then exit; if stopAddingItems then - msgDlg('File addition was aborted.'#13'The list of files is incomplete.', MB_ICONWARNING); + msgDlg(MSG_FILE_ADD_ABORT, MB_ICONWARNING); if assigned(parent) then parent.expanded:=TRUE; filesbox.Selected:=result.node; @@ -6040,6 +6086,8 @@ function Tmainfrm.addFile(f:Tfile; parent:Ttreenode=NIL; skipComment:boolean=FAL end; // addFile function Tmainfrm.addFileRecur(f:Tfile; parent:Ttreenode=NIL):Tfile; +resourcestring + MSG_ADDING = 'Adding item #%d'; var n: Ttreenode; sr: TsearchRec; @@ -6057,7 +6105,7 @@ function Tmainfrm.addFileRecur(f:Tfile; parent:Ttreenode=NIL):Tfile; if addingItemsCounter and 15 = 0 then // step 16 begin application.ProcessMessages(); - setStatusBarText(format('Adding item #%d', [addingItemsCounter])); + setStatusBarText(format(MSG_ADDING, [addingItemsCounter])); end; end; @@ -6152,6 +6200,8 @@ procedure TmainFrm.filesBoxEditing(Sender: TObject; Node: TTreeNode; end; procedure TmainFrm.filesBoxEdited(Sender:TObject; Node:TTreeNode; var S:String); +resourcestring + MSG_INV_FILENAME = 'Invalid filename'; var f: Tfile; begin @@ -6165,7 +6215,7 @@ procedure TmainFrm.filesBoxEdited(Sender:TObject; Node:TTreeNode; var S:String); then begin s:=node.text; - msgDlg('Invalid filename', MB_ICONERROR); + msgDlg(MSG_INV_FILENAME, MB_ICONERROR); exit; end; @@ -6195,6 +6245,8 @@ function setNilChildrenFrom(nodes:TtreeNodeDynArray; father:integer):integer; end; // setNilChildrenFrom procedure Tmainfrm.remove(node:Ttreenode=NIL); +resourcestring + MSG_DELETE = 'Delete?'; var i: integer; list: TtreenodeDynArray; @@ -6215,7 +6267,7 @@ procedure Tmainfrm.remove(node:Ttreenode=NIL); i:=filesbox.SelectionCount; if (i = 0) or (i = 1) and selectedFile.isRoot() then exit; if not deleteDontAskChk.checked -and (msgDlg('Delete?', MB_ICONQUESTION+MB_YESNO) = IDNO) then +and (msgDlg(MSG_DELETE, MB_ICONQUESTION+MB_YESNO) = IDNO) then exit; list:=copySelection(); // now proceed @@ -6334,7 +6386,7 @@ procedure setAutosave(var rec:Tautosave; v:integer); procedure updateMenuSpeed(menu:TMenuItem; lab:string; v:Float32); begin -menu.caption:=lab + format(MSG_MENU_VAL, [if_(v<0, DISABLED, floatToStr(v)+' KB/s' )]); +menu.caption:=lab + format(MSG_MENU_VAL, [if_(v<0, DISABLED, format(MSG_SPEED_KBS, [v]))]); end; procedure setSpeedLimitIP(v:real); @@ -7554,6 +7606,8 @@ function doTheUpdate(url:string):boolean; MSG_UPD_SAVE_ERROR = 'Cannot save the update'; MSG_UPD_REQ_ONLY1 = 'The auto-update feature cannot work because it requires the "Only 1 instance" option enabled.' +#13#13'Your browser will now be pointed to the update, so you can install it manually.'; + MSG_UPD_WAIT = 'Waiting for last requests to be served, then we''ll update'; + MSG_UPD_DL = 'Downloading new version...'; const UPDATE_BATCH_FILE = 'hfs.update.bat'; UPDATE_BATCH = 'START %0:s /WAIT "%1:s" -q'+CRLF @@ -7581,14 +7635,14 @@ function doTheUpdate(url:string):boolean; updateASAP:=url; stopServer(); mainfrm.kickidleconnections1Click(NIL); - mainfrm.setStatusBarText('Waiting for last requests to be served, then we''ll update', 20); + mainfrm.setStatusBarText(MSG_UPD_WAIT, 20); exit; end; // must ask BEFORE: when the batch will be running, nothing should stop it, or it will fail if not checkVfsOnQuit() then exit; VFSmodified:=FALSE; -progFrm.show('Downloading new version...', TRUE); +progFrm.show(MSG_UPD_DL, TRUE); try fn:=paramStr(0)+'.new'; size:=sizeOfFile(fn); @@ -7614,7 +7668,7 @@ function doTheUpdate(url:string):boolean; end; try - progFrm.show('Processing...'); + progFrm.show(MSG_PROCESSING); saveTextFile(UPDATE_BATCH_FILE, format(UPDATE_BATCH, [ if_(isNT(), '""'), paramStr(0), @@ -7678,6 +7732,10 @@ procedure Tmainfrm.autoCheckUpdates(); resourcestring MSG_CHK_UPD = 'Checking for updates'; MSG_CHK_UPD_FAIL = 'Check update: failed'; + MSG_CHK_UPD_HEAD = 'Check update: '; + MSG_CHK_UPD_VER = 'new version found: %s'; + MSG_CHK_UPD_VER_EXT = 'Build #%s (current is #%s)'; + MSG_CHK_UPD_NONE = 'no new version'; var info: Ttpl; updateURL, ver, build: string; @@ -7712,9 +7770,9 @@ procedure Tmainfrm.autoCheckUpdates(); thereSnew('untested'); // same version? we show build number if ver = VERSION then - ver:=format('Build #%s (current is #%s)', [build, VERSION_BUILD]); + ver:=format(MSG_CHK_UPD_VER_EXT, [build, VERSION_BUILD]); if logOtherEventsChk.checked then - add2log('Check update: '+ifThen(updateURL = '', 'no new version', 'new version found: '+ver)); + add2log(MSG_CHK_UPD_HEAD+ifThen(updateURL = '', MSG_CHK_UPD_NONE, format(MSG_CHK_UPD_VER,[ver]))); parseVersionNotice(info['version notice']); setStatusBarText(''); if updateURL = '' then exit; @@ -8400,6 +8458,8 @@ function Tmainfrm.addFilesFromString(files:string; under:Ttreenode=NIL):Tfile; resourcestring MSG_ITEM_EXISTS = '%s item(s) already exists:'#13'%s'#13#13'Continue?'; + MSG_INSTALL_TPL = 'Install this template?'; + MSG_FOLDER_UPLOAD = 'Do you want ANYONE to be able to upload to this folder?'; const MAX_DUPE = 50; var @@ -8418,14 +8478,14 @@ function Tmainfrm.addFilesFromString(files:string; under:Ttreenode=NIL):Tfile; // suggest template installation if (lowerCase(extractFileExt(files)) = '.tpl') - and (msgDlg('Install this template?', MB_YESNO) = MRYES) then + and (msgDlg(MSG_INSTALL_TPL, MB_YESNO) = MRYES) then begin setNewTplFile(files); exit; end; upload:=(ipos('upload', extractFilename(files)) > 0) - and (msgDlg('Do you want ANYONE to be able to upload to this folder?', MB_YESNO) = MRYES); + and (msgDlg(MSG_FOLDER_UPLOAD, MB_YESNO) = MRYES); end; // warn upon double filenames doubles:=NIL; @@ -8580,9 +8640,34 @@ procedure TmainFrm.appEventsShowHint(var HintStr: String; var CanShow: Boolean; end; // reduce function fileHint():string; - const - INHERITED_LABEL = ' [inherited]'; - EXTERNAL_LABEL = ' [external]'; + resourcestring + MSG_VFS_DRAG_INVIT = 'Drag your files here'; + MSG_VFS_URL = 'URL: %s'; + MSG_VFS_PATH = 'Path: %s'; + MSG_VFS_SIZE = 'Size: %s'; + MSG_VFS_DLS = 'Downloads: %s'; + MSG_VFS_INVISIBLE = 'Invisible'; + MSG_VFS_DL_FORB = 'Download forbidden'; + MSG_VFS_DONT_LOG = 'Don''t log'; + MSG_VFS_HIDE_EMPTY = 'Hidden if empty'; + MSG_VFS_NOT_BROW = 'Not browsable'; + MSG_VFS_HIDE_EMPTY_FLD = 'Hide empty folders'; + MSG_VFS_HIDE_EXT = 'Hide extention'; + MSG_VFS_ARCABLE = 'Archivable'; + MSG_VFS_DEF_MASK = 'Default file mask: %s'; + MSG_VFS_ACCESS = 'Access for'; + MSG_VFS_UPLOAD = 'Upload allowed for'; + MSG_VFS_DELETE = 'Delete allowed for'; + MSG_VFS_COMMENT = 'Comment: %s'; + MSG_VFS_REALM = 'Realm: %s'; + MSG_VFS_DIFF_TPL = 'Diff template: %s'; + MSG_VFS_FILES_FLT = 'Files filter: %s'; + MSG_VFS_FLD_FLT = 'Folders filter: %s'; + MSG_VFS_UPL_FLT = 'Upload filter: %s'; + MSG_VFS_DONT_CONS_DL = 'Don''t consider as download'; + MSG_VFS_DONT_CONS_DL_MASK = 'Don''t consider as download (mask): %s'; + MSG_VFS_INHERITED = ' [inherited]'; + MSG_VFS_EXTERNAL = ' [external]'; var f, parent: Tfile; s, s2: string; @@ -8596,7 +8681,7 @@ procedure TmainFrm.appEventsShowHint(var HintStr: String; var CanShow: Boolean; inh: boolean; begin result:=if_(f.hasRecursive(att, @inh), #13+lbl); - result:=result+if_(inh, INHERITED_LABEL); + result:=result+if_(inh, MSG_VFS_INHERITED); end; // flagR procedure perm(action:TfileAction; msg:string); @@ -8604,86 +8689,87 @@ procedure TmainFrm.appEventsShowHint(var HintStr: String; var CanShow: Boolean; s: string; begin s:=join(', ', f.getAccountsFor(action, TRUE, @inheritd)); - if (s > '') and inheritd then s:=s+INHERITED_LABEL; + if (s > '') and inheritd then s:=s+MSG_VFS_INHERITED; if s > '' then result:=result+#13+msg+': '+s; end; begin - result:=if_(HintsfornewcomersChk.checked,'Drag your files here'); + result:=if_(HintsfornewcomersChk.checked,MSG_VFS_DRAG_INVIT); f:=pointedFile(); if f = NIL then exit; parent:=f.parent; - result:='URL: '+f.url() - +if_(f.isRealFolder() or f.isFile(), #13'Path: '+f.resource); + result:=format(MSG_VFS_URL,[f.url()]) + +if_(f.isRealFolder() or f.isFile(), #13+format(MSG_VFS_PATH,[f.resource])); if f.isFile() then - result:=result+format(#13'Size: %s'#13'Downloads: %d', + result:=result+format(#13+MSG_VFS_SIZE+#13+MSG_VFS_DLS, [ smartsize(sizeofFile(f.resource)), f.DLcount ]); - s:=flagR('Invisible', FA_HIDDENTREE, TRUE); - if s = '' then s:=flag('Invisible', FA_HIDDEN); + s:=flagR(MSG_VFS_INVISIBLE, FA_HIDDENTREE, TRUE); + if s = '' then s:=flag(MSG_VFS_INVISIBLE, FA_HIDDEN); result:=result+s - +flag('Download forbidden', FA_DL_FORBIDDEN) - +flagR('Don''t log', FA_DONT_LOG); + +flag(MSG_VFS_DL_FORB, FA_DL_FORBIDDEN) + +flagR(MSG_VFS_DONT_LOG, FA_DONT_LOG); if f.isFolder() then begin if assigned(parent) and parent.hasRecursive(FA_HIDE_EMPTY_FOLDERS) then - result:=result+#13'Hidden if empty'+INHERITED_LABEL; + result:=result+#13+MSG_VFS_HIDE_EMPTY+MSG_VFS_INHERITED; result:=result - +flag('Not browsable', FA_BROWSABLE, FALSE) - +flag('Hide empty folders', FA_HIDE_EMPTY_FOLDERS) - +flagR('Hide extention', FA_HIDE_EXT) - +flagR('Archivable', FA_ARCHIVABLE) + +flag(MSG_VFS_NOT_BROW, FA_BROWSABLE, FALSE) + +flag(MSG_VFS_HIDE_EMPTY_FLD, FA_HIDE_EMPTY_FOLDERS) + +flagR(MSG_VFS_HIDE_EXT, FA_HIDE_EXT) + +flagR(MSG_VFS_ARCABLE, FA_ARCHIVABLE) end; s:=f.getRecursiveFileMask(); - if (s > '') and (f.defaultFileMask = '') then s:=s+INHERITED_LABEL; - if s > '' then result:=result+#13'Default file mask: '+s; + if (s > '') and (f.defaultFileMask = '') then s:=s+MSG_VFS_INHERITED; + if s > '' then result:=result+#13+format(MSG_VFS_DEF_MASK,[s]); - perm(FA_ACCESS, 'Access for'); - if f.isRealFolder() then perm(FA_UPLOAD, 'Upload allowed for'); - perm(FA_DELETE, 'Delete allowed for'); + perm(FA_ACCESS, MSG_VFS_ACCESS); + if f.isRealFolder() then perm(FA_UPLOAD, MSG_VFS_UPLOAD); + perm(FA_DELETE, MSG_VFS_DELETE); s:=reduce(f.getDynamicComment()); - if (s > '') and (f.comment = '') then s:=s+EXTERNAL_LABEL; - if s > '' then result:=result+#13'Comment: '+s; + if (s > '') and (f.comment = '') then s:=s+MSG_VFS_EXTERNAL; + if s > '' then result:=result+#13+format(MSG_VFS_COMMENT,[s]); s:=reduce(f.getShownRealm()); - if (s > '') and (f.realm = '') then s:=s+INHERITED_LABEL; - if s > '' then result:=result+#13'Realm: '+s; + if (s > '') and (f.realm = '') then s:=s+MSG_VFS_INHERITED; + if s > '' then result:=result+#13+format(MSG_VFS_REALM,[s]); s:=reduce(f.getRecursiveDiffTplAsStr(@inheritd, @externl)); if s > '' then begin - if inheritd then s:=s+INHERITED_LABEL; - if externl then s:=s+EXTERNAL_LABEL; - result:=result+#13'Diff template: '+s; + if inheritd then s:=s+MSG_VFS_INHERITED; + if externl then s:=s+MSG_VFS_EXTERNAL; + result:=result+#13+format(MSG_VFS_DIFF_TPL,[s]); end; f.getFiltersRecursively(s, s2); result:=result - +if_(s>'', #13'Files filter: '+s - +if_(f.filesFilter = '', INHERITED_LABEL)) - +if_(s2>'', #13'Folders filter: '+s2 - +if_(f.foldersFilter = '', INHERITED_LABEL)) - +if_(f.uploadFilterMask>'', #13'Upload filter: '+f.uploadFilterMask) - +flag('Don''t consider as download', FA_DONT_COUNT_AS_DL) + +if_(s>'', #13+format(MSG_VFS_FILES_FLT,[s]) + +if_(f.filesFilter = '', MSG_VFS_INHERITED)) + +if_(s2>'', #13+format(MSG_VFS_FLD_FLT, [s2]) + +if_(f.foldersFilter = '', MSG_VFS_INHERITED)) + +if_(f.uploadFilterMask>'', #13+format(MSG_VFS_UPL_FLT,[f.uploadFilterMask])) + +flag(MSG_VFS_DONT_CONS_DL, FA_DONT_COUNT_AS_DL) +if_(f.dontCountAsDownloadMask>'', - #13'Don''t consider as download (mask): '+f.dontCountAsDownloadMask) + #13+format(MSG_VFS_DONT_CONS_DL_MASK, [f.dontCountAsDownloadMask])) end; // filehint function connHint():string; + resourcestring + MSG_CON_HINT = 'Connection time: %s'#13'Last request time: %s'#13'Agent: %s'; var cd: TconnData; begin cd:=pointedConnection(); - result:=if_(HintsForNewcomersChk.checked, 'This box shows info about current connections'); - if cd = NIL then exit; - result:='Connection time: '+dateTimeToStr(cd.time) - +#13'Last request time: '+dateTimeToStr(cd.requestTime) - +#13'Agent: '+first(cd.agent,''); + if assigned(cd) then + result:=format(MSG_CON_HINT, [dateTimeToStr(cd.time), dateTimeToStr(cd.requestTime), first(cd.agent,'')]) + else + result:=if_(HintsForNewcomersChk.checked, 'This box shows info about current connections'); end; begin @@ -8940,8 +9026,17 @@ procedure TmainFrm.connBoxAdvancedCustomDrawSubItem(Sender: TCustomListView; end; procedure TmainFrm.connBoxData(Sender: TObject; Item: TListItem); +resourcestring + MSG_CON_STATE_IDLE = 'idle'; + MSG_CON_STATE_REQ = 'requesting'; + MSG_CON_STATE_RCV = 'receiving'; + MSG_CON_STATE_THINK = 'thinking'; + MSG_CON_STATE_REP = 'replying'; + MSG_CON_STATE_SEND = 'sending'; + MSG_CON_STATE_DISC = 'disconnected'; const - HCS2STR :array [ThttpConnState] of string = ('idle', 'requesting', 'receiving', 'thinking', 'replying', 'sending', 'disconnected'); + HCS2STR :array [ThttpConnState] of string = (MSG_CON_STATE_IDLE, MSG_CON_STATE_REQ, MSG_CON_STATE_RCV, + MSG_CON_STATE_THINK, MSG_CON_STATE_REP, MSG_CON_STATE_SEND, MSG_CON_STATE_DISC); var data: TconnData; @@ -8953,13 +9048,17 @@ procedure TmainFrm.connBoxData(Sender: TObject; Item: TListItem); end; function getStatus():string; + resourcestring + MSG_CON_PAUSED = 'paused'; + MSG_CON_SENT = '%s / %s sent'; + MSG_CON_RECEIVED = '%s / %s received'; begin if isSendingFile(data) then begin if data.conn.paused then - result:='paused' + result:=MSG_CON_PAUSED else - result:=format('%s / %s sent', [ + result:=format(MSG_CON_SENT, [ dotted(data.conn.bytesSentLastItem), dotted(data.conn.bytesPartial) ]); @@ -8967,7 +9066,7 @@ procedure TmainFrm.connBoxData(Sender: TObject; Item: TListItem); end; if isReceivingFile(data) then begin - result:=format('%s / %s received', [ + result:=format(MSG_CON_received, [ dotted(data.conn.bytesPosted), dotted(data.conn.post.length) ]); @@ -8987,7 +9086,7 @@ procedure TmainFrm.connBoxData(Sender: TObject; Item: TListItem); else d:=data.averageSpeed; end; if d < 1 then result:='-' - else result:=format('%.1f KB/s',[d/1000]) + else result:=format(MSG_SPEED_KBS,[d/1000]) end; // getSpeed var @@ -9131,12 +9230,14 @@ procedure TmainFrm.restoreCfgBtnClick(Sender: TObject); end; procedure TmainFrm.Restoredefault1Click(Sender: TObject); +resourcestring + MSG_TPL_RESET = 'The template has been reset'; begin -if msgDlg('Continue?', MB_ICONQUESTION+MB_YESNO) = MRNO then exit; +if msgDlg(MSG_CONTINUE, MB_ICONQUESTION+MB_YESNO) = MRNO then exit; tplFilename:=''; tplLast:=-1; tplImport:=TRUE; -setStatusBarText('The template has been reset'); +setStatusBarText(MSG_TPL_RESET); end; procedure TmainFrm.Reverttopreviousversion1Click(Sender: TObject); @@ -9150,7 +9251,7 @@ procedure TmainFrm.Reverttopreviousversion1Click(Sender: TObject); +'DEL %%0'+CRLF; begin try - progFrm.show('Processing...'); + progFrm.show(MSG_PROCESSING); saveTextFile(FN, format(REVERT_BATCH, [ if_(isNT(), '""'), paramStr(0), @@ -9167,8 +9268,7 @@ procedure TmainFrm.Numberofcurrentconnections1Click(Sender: TObject); procedure TmainFrm.NumberofdifferentIPaddresses1Click(Sender: TObject); begin setTrayShows('ips') end; -procedure TmainFrm.NumberofdifferentIPaddresseseverconnected1Click( - Sender: TObject); +procedure TmainFrm.NumberofdifferentIPaddresseseverconnected1Click(Sender: TObject); begin setTrayShows('ips-ever') end; procedure TmainFrm.Numberofloggeddownloads1Click(Sender: TObject); @@ -9605,20 +9705,22 @@ procedure TmainFrm.filesBoxDeletion(Sender: TObject; Node: TTreeNode); end; function blockLoadSave():boolean; +resourcestring MSG_CANT_LOAD_SAVE = 'Cannot load or save while adding files'; begin result:=addingItemsCounter > 0; if not result then exit; -msgDlg('Cannot load or save while adding files', MB_ICONERROR); +msgDlg(MSG_CANT_LOAD_SAVE, MB_ICONERROR); end; // blockLoadSave procedure TmainFrm.Loadfilesystem1Click(Sender: TObject); +resourcestring MSG_OPEN_VFS = 'Open VFS file'; var fn: string; begin if blockLoadSave() then exit; if not checkVfsOnQuit() then exit; fn:=''; -if promptForFileName(fn, 'VirtualFileSystem|*.vfs', 'vfs', 'Open VFS file') then +if promptForFileName(fn, 'VirtualFileSystem|*.vfs', 'vfs', MSG_OPEN_VFS) then loadVFS(fn); end; @@ -9679,10 +9781,10 @@ procedure drawGraphOn(cnv:Tcanvas; colors:TIntegerDynArray=NIL); cnv.font.size:=7; SetBkMode(cnv.handle, TRANSPARENT); top:=(graph.maxV/1000)*safeDiv(10.0, graph.rate); -s:=format(TOP_SPEED+': %.1f KB/s --- %d kbps', [top, round(top*8)]); +s:=format(TOP_SPEED+':'+MSG_SPEED_KBS+' --- %d kbps', [top, round(top*8)]); cnv.TextOut(r.right-cnv.TextWidth(s)-20, 3, s); if assigned(globalLimiter) and (globalLimiter.maxSpeed < MAXINT) then - cnv.TextOut(r.right-180+25, 15, format(LIMIT+': %.1f KB/s', [globalLimiter.maxSpeed/1000])); + cnv.TextOut(r.right-180+25, 15, format(LIMIT+': '+MSG_SPEED_KBS, [globalLimiter.maxSpeed/1000])); end; // drawGraphOn procedure TmainFrm.graphBoxPaint(Sender: TObject); @@ -11874,6 +11976,11 @@ function Tmainfrm.finalInit():boolean; end; end; // strToConnColumns +resourcestring + MSG_TRAY_DEF = '%ip%'#13'Uptime: %uptime%'#13'Downloads: %downloads%'; + MSG_CLEAN_START = 'Clean start'; + MSG_RESTORE_BAK = 'A file system backup has been created for a system shutdown.'#13'Do you want to restore this backup?'; + MSG_EXT_ADDR_FAIL = 'Search for external address failed'; var params: TStringDynArray; begin @@ -11890,9 +11997,7 @@ function Tmainfrm.finalInit():boolean; // some windows versions do not support multiline tray tips if winVersion < WV_2000 then trayNL:=' '; -trayMsg:='%ip%' - +trayNL+'Uptime: %uptime%' - +trayNL+'Downloads: %downloads%'; +trayMsg:=MSG_TRAY_DEF; startingImagesCount:=mainfrm.images.count; srv:=ThttpSrv.create(); @@ -11902,9 +12007,8 @@ function Tmainfrm.finalInit():boolean; tray_ico:=Ticon.create(); tray:=TmyTrayicon.create(self); DragAcceptFiles(handle, true); -caption:=format('HFS ~ HTTP File Server %s%sBuild %s', - [VERSION, stringOfChar(' ',80), VERSION_BUILD]); -application.Title:=format('HFS %s (%s)', [VERSION, VERSION_BUILD]); +caption:=format('HFS ~ HTTP File Server %s', [VERSION]); +application.Title:=format('HFS %s', [VERSION]); setSpeedLimit(-1); setSpeedLimitIP(-1); setGraphRate(10); @@ -11936,7 +12040,7 @@ function Tmainfrm.finalInit():boolean; if not holdingKey(VK_SHIFT) then cfgLoaded:=loadAndApplyCFG() else - setStatusBarText('Clean start'); + setStatusBarText(MSG_CLEAN_START); // CTRL avoids the only1instance setting if not holdingKey(VK_CONTROL) @@ -12002,7 +12106,7 @@ function Tmainfrm.finalInit():boolean; lastFileOpen:=''; if getMtime(VFS_TEMP_FILE) > getMtime(lastFileOpen) then - if msgDlg('A file system backup has been created for a system shutdown.'#13'Do you want to restore this backup?', MB_YESNO+MB_ICONWARNING) = MRYES then + if msgDlg(MSG_RESTORE_BAK, MB_YESNO+MB_ICONWARNING) = MRYES then begin deleteFile(lastFileOpen+BAK_EXT); if renameFile(lastFileOpen, lastFileOpen+BAK_EXT) then @@ -12036,7 +12140,7 @@ function Tmainfrm.finalInit():boolean; strToConnColumns(serializedConnColumns); if startminimizedChk.checked then application.Minimize(); if findExtOnStartupChk.checked and (externalIP = '') then - setStatusBarText('Search for external address failed', 30); + setStatusBarText(MSG_EXT_ADDR_FAIL, 30); updatePortBtn(); fixAddToHFS(); filesBox.setFocus(); @@ -12054,13 +12158,14 @@ function Tmainfrm.finalInit():boolean; end; // finalInit function expertModeNeededMsg():string; -begin result:=if_(easyMode, 'Switch to expert mode.') end; +resourcestring MSG_TO_EXPERT = 'Switch to expert mode.'; +begin result:=if_(easyMode, MSG_TO_EXPERT) end; procedure TmainFrm.Dontlogsomefiles1Click(Sender: TObject); +resourcestring MSG_DONT_LOG_HINT = 'Select the files/folder you don''t want to be logged,' + +#13'then right click and select "Don''t log".'; begin -msgDlg(expertModeNeededMsg() - +#13'Select the files/folder you don''t want to be logged,' - +#13'then right click and select "Don''t log".'); +msgDlg(expertModeNeededMsg() +#13+MSG_DONT_LOG_HINT ); end; procedure TmainFrm.progFrmHttpGetUpdate(sender:Tobject; buffer:pointer; len:integer); @@ -12073,9 +12178,10 @@ procedure TmainFrm.progFrmHttpGetUpdate(sender:Tobject; buffer:pointer; len:inte end; // progFrmHttpGetUpdate procedure TmainFrm.statusBarHttpGetUpdate(sender:Tobject; buffer:pointer; len:integer); +resourcestring MSG_DL_PERC = 'Downloading %d%%'; begin with sender as ThttpCli do - setStatusBarText( 'Downloading '+intToStr(safeDiv(RcvdCount*100, contentLength))+'%' ); + setStatusBarText( format(MSG_DL_PERC, [safeDiv(RcvdCount*100, contentLength)]) ); end; // statusBarHttpGetUpdate function purgeFilesCB(f:Tfile; childrenDone:boolean; par, par2:integer):TfileCallbackReturn; @@ -12114,9 +12220,10 @@ procedure TmainFrm.Purge1Click(Sender: TObject); end; procedure TmainFrm.UninstallHFS1Click(Sender: TObject); +resourcestring MSG_UNINSTALL_WARN = 'Delete HFS and all settings?'; begin if checkMultiInstance() then exit; -if msgDlg('Delete HFS and all settings?', MB_ICONQUESTION+MB_YESNO) <> IDYES then +if msgDlg(MSG_UNINSTALL_WARN, MB_ICONQUESTION+MB_YESNO) <> IDYES then exit; uninstall(); end; @@ -12346,6 +12453,7 @@ procedure TmainFrm.defaultToRealChkClick(Sender: TObject); begin addFolderDefault:='real' end; procedure TmainFrm.Addicons1Click(Sender: TObject); +resourcestring MSG_ICONS_ADDED = '%d new icons added'; var files: TStringDynArray; i, n: integer; @@ -12355,7 +12463,7 @@ procedure TmainFrm.Addicons1Click(Sender: TObject); for i:=0 to length(files)-1 do getImageIndexForFile(files[i]); n:=images.Count-n; -msgDlg(format('%d new icons added',[n])); +msgDlg(format(MSG_ICONS_ADDED,[n])); end; procedure TmainFrm.Iconmasks1Click(Sender: TObject); @@ -12387,9 +12495,10 @@ procedure TmainFrm.filesBoxExit(Sender: TObject); begin setFilesBoxExtras(filesBox.MouseInClient) end; procedure TmainFrm.Disable1Click(Sender: TObject); +resourcestring MSG_DDNS_DISABLED = 'Dynamic DNS updater disabled'; begin dyndns.url:=''; -msgDlg('Dynamic DNS updater disabled'); +msgDlg(MSG_DDNS_DISABLED); end; procedure TmainFrm.saveNewFingerprintsChkClick(Sender: TObject); @@ -12418,7 +12527,17 @@ procedure TmainFrm.Createfingerprintonaddition1Click(Sender: TObject); end; procedure TmainFrm.Howto1Click(Sender: TObject); -begin msgDLg(getRes('uploadHowTo')) end; +resourcestring MSG_UPL_HOWTO = '1. Add a folder (choose "real folder")' + +#13 + +#13'You should now see a RED folder in your virtual file sytem, inside HFS' + +#13 + +#13'2. Right click on this folder' + +#13'3. Properties -> Permissions -> Upload' + +#13'4. Check on "Anyone"' + +#13'5. Ok' + +#13 + +#13'Now anyone who has access to your HFS server can upload files to you.'; +begin msgDLg(MSG_UPL_HOWTO) end; procedure TmainFrm.Name1Click(Sender: TObject); begin defSorting:='name' end; diff --git a/optionsDlg.pas b/optionsDlg.pas index f99ded7..4a5b867 100644 --- a/optionsDlg.pas +++ b/optionsDlg.pas @@ -834,7 +834,16 @@ procedure ToptionsFrm.okBtnClick(Sender: TObject); begin if saveValues() then close() end; procedure ToptionsFrm.Button1Click(Sender: TObject); -begin msgDlg(getRes('invertBan')) end; +resourcestring MSG_INVERT_BAN = + '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); var diff --git a/todo.txt b/todo.txt index c9b99ce..0300c45 100644 --- a/todo.txt +++ b/todo.txt @@ -1,9 +1,7 @@ -- updateDynDNS() is not translatable - update doesn't work without 'only 1 instance' (it's the -q) + replace shellExtDlg.gif with transparent png (english system) + expiring links * dismiss regexp lib http://docwiki.embarcadero.com/Libraries/Rio/en/System.RegularExpressions.TRegEx -+ ipv6 + load *.events + url auth limited to resource + global limit speed for downloads (browsing excluded) diff --git a/upload_how.txt b/upload_how.txt deleted file mode 100644 index 2daf33b..0000000 --- a/upload_how.txt +++ /dev/null @@ -1,10 +0,0 @@ -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.