| At line 1 changed 4 lines | 
| These are useful for email events, and possibly some custom messages. | 
|  | 
| Every item in the user's user.xml file can be referenced with a "%user_<tag-name>%".  This is the first area it attempts to match with variables that start with "%user_". | 
|  | 
| Date information can also be referenced when using in a CrushTask / Job.  See the [CrushTaskVariables] for more date information.\\ | 
| At line 6 changed one line | 
| Specific to an event inside of the <LINE></LINE> tags. | 
| These are useful for email events, and possibly some custom messages.\\ | 
| \\ | 
| Every item in the user's user.xml file can be referenced with a "{user_<tag-name>}".  This is the first area it attempts to match with variables that start with "{user_".\\ | 
| ---- | 
| Specific to an event inside of the {line_start}{line_end} tags. | 
| At line 8 changed 16 lines | 
| %all%  (a raw dump of the item's info.) | 
| {the_file_path} | 
| {the_file_name} | 
| {the_file_size} | 
| {the_file_size_formatted} | 
| {the_file_error} | 
| {the_file_start} | 
| {the_file_end} | 
| {url} | 
| {display} | 
| {user_time} | 
| {the_file_path1%  (piece #1 of the file's path) | 
| {the_file_path2%  (piece #2) | 
| {the_file_path3%  (piece #3, etc.) | 
| {the_file_path4} | 
| {the_file_path5} | 
| {all}  (a raw dump of the item's info.) | 
| {name} - item's name | 
| {path} - item's path | 
| {url} - reference to the item in the VFS or where ever it is.  file://some/path/etc/ | 
| {size} and {size_formatted} - raw bytes, or a pretty version | 
| {error} - if there was an error during the upload or download...the event is still triggered, but this variable will be non empty. | 
| {start} - from an event, the start of the transfer time. | 
| {end} - from an event, the end of the transfer time. | 
| {user_time} - time the user logged in | 
| {path1}  (piece #1 of the item's path starting from the right side) | 
| {path2}  (piece #2,3,4,5,6,7....... starting from the right side) | 
| {1path}  (piece #1 of the item's path starting from the left side) | 
| {2path}  (piece #2,3,4,5,6,7....... starting from the left side) | 
| {url1}  (piece #1 of the item's url starting from the right side) | 
| {url2}  (piece #2,3,4,5,6,7....... starting from the right side) | 
| {1url}  (piece #1 of the item's url starting from the left side) | 
| {2url}  (piece #2,3,4,5,6,7....... starting from the left side) | 
| At line 27 added 25 lines | 
| Next it searches the user properties in memory about the current session:\\ | 
| \\ | 
| User session properties in memory:\\ | 
| {{{ | 
| {user_id} | 
| {user_number} | 
| {user_listen_ip_port} | 
| {user_listen_ip} | 
| {user_port} | 
| {user_ip} | 
| {user_protocol} | 
| {user_name} | 
| {user_email} | 
| {user_current_password} | 
| {user_the_command} | 
| {user_the_command_data} | 
| {user_current_dir}  <--has the root VFS item on the dir path. | 
| {user_dir}  <--does not have the root VFS item on the dir path. | 
| {user_dir} | 
| {user_logged_in} | 
| {user_log} | 
| {user_failed_commands} | 
| {user_session_commands} | 
| {user_refresh_user} | 
| {user_stat} | 
| At line 26 changed one line | 
| Next it searches the user properties in memory about the current session: | 
| {user_dieing} | 
| {user_pasv_connect} | 
| {user_last_logged_command} | 
| {user_session_uploads} | 
| {user_session_downloads} | 
| At line 28 changed 96 lines | 
| User session properties in memory: | 
| {{{ | 
| {user_id} | 
| {user_number} | 
| {user_listen_ip_port} | 
| {user_listen_ip} | 
| {user_port} | 
| {user_ip} | 
| {user_protocol} | 
| {user_name} | 
| {user_email} | 
| {user_current_password} | 
| {user_the_command} | 
| {user_the_command_data} | 
| {user_current_dir%  <--has the root VFS item on the dir path. | 
| {user_dir%  <--does not have the root VFS item on the dir path. | 
| {user_dir} | 
| {user_logged_in} | 
| {user_log} | 
| {user_failed_commands} | 
| {user_session_commands} | 
| {user_refresh_user} | 
| {user_stat} | 
|  | 
| {user_dieing} | 
| {user_pasv_connect} | 
| {user_last_logged_command} | 
| {user_session_uploads} | 
| {user_session_downloads} | 
|  | 
| {user_session_download_count} | 
| {user_session_upload_count} | 
| {user_macbinary_enabled} | 
| {user_list_zip_dir} | 
| {user_list_zip_file} | 
| {user_list_zip_only} | 
| {user_list_zip_app} | 
| {user_list_dot} | 
| {user_zlibLevel} | 
|  | 
| {user_last_file_real_path} | 
| {user_last_file_name} | 
| {user_login_date_stamp} | 
| {user_login_date} | 
| {user_login_date_formatted} | 
| {user_termination_message} | 
| {user_file_transfer_mode} | 
| {user_modez} | 
| {user_dataSecure} | 
| {user_secureType} | 
| {user_friendly_quit} | 
|  | 
| {user_last_port_string} | 
| {user_last_time_remaining} | 
| {user_last_action} | 
| {user_sfv} | 
| {user_pause_now} | 
|  | 
| {user_new_pass1} | 
| {user_new_pass2} | 
|  | 
| {user_PASV_port} | 
| {user_sending_file} | 
| {user_receiving_file} | 
| {user_listing_files} | 
| {user_pasv_guessing} | 
| {user_do_normal_list} | 
| {user_dont_write} | 
| {user_dont_read} | 
| {user_dont_log} | 
| {user_didDisconnect} | 
| {user_adminAllowed} | 
| {user_sscn_mode} | 
|  | 
| {user_file_length} | 
| {user_current_loc} | 
| {user_start_transfer_time} | 
| {user_end_part_transfer_time} | 
| {user_overall_transfer_speed} | 
| {user_current_transfer_speed} | 
| {user_seconds_remaining} | 
| {user_start_transfer_byte_amount} | 
| {user_bytes_sent} | 
| {user_bytes_received} | 
| {user_ratio_bytes_sent} | 
| {user_ratio_bytes_received} | 
| {user_start_resume_loc} | 
|  | 
|  | 
| {user_secure} | 
| {user_explicit_ssl} | 
| {user_explicit_tls} | 
| {user_require_encryption} | 
| {user_login_date_stamp} | 
| {user_login_date} | 
| {user_login_date_formatted} | 
| {user_session_download_count} | 
| {user_session_upload_count} | 
| {user_macbinary_enabled} | 
| {user_list_zip_dir} | 
| {user_list_zip_file} | 
| {user_list_zip_only} | 
| {user_list_zip_app} | 
| {user_list_dot} | 
| {user_zlibLevel} | 
| At line 125 changed 10 lines | 
| {user_password} | 
| {user_current_dir} | 
| {user_sessionid} | 
| {user_site_commands_text} | 
| {user_time_remaining} | 
| {user_paused} | 
| {user_bytes_remaining} | 
| {user_pasv_port} | 
| {user_ratio} | 
| {user_perm_ratio} | 
| {user_last_file_real_path} | 
| {user_last_file_name} | 
| {user_login_date_stamp} | 
| {user_login_date} | 
| {user_login_date_formatted} | 
| {user_termination_message} | 
| {user_file_transfer_mode} | 
| {user_modez} | 
| {user_dataSecure} | 
| {user_secureType} | 
| {user_friendly_quit} | 
|  | 
| {user_last_port_string} | 
| {user_last_time_remaining} | 
| {user_last_action} | 
| {user_sfv} | 
| {user_pause_now} | 
|  | 
| {user_new_pass1} | 
| {user_new_pass2} | 
|  | 
| {user_PASV_port} | 
| {user_sending_file} | 
| {user_receiving_file} | 
| {user_listing_files} | 
| {user_pasv_guessing} | 
| {user_do_normal_list} | 
| {user_dont_write} | 
| {user_dont_read} | 
| {user_dont_log} | 
| {user_didDisconnect} | 
| {user_adminAllowed} | 
| {user_sscn_mode} | 
|  | 
| {user_file_length} | 
| {user_current_loc} | 
| {user_start_transfer_time} | 
| {user_end_part_transfer_time} | 
| {user_overall_transfer_speed} | 
| {user_current_transfer_speed} | 
| {user_seconds_remaining} | 
| {user_start_transfer_byte_amount} | 
| {user_bytes_sent} | 
| {user_bytes_received} | 
| {user_ratio_bytes_sent} | 
| {user_ratio_bytes_received} | 
| {user_start_resume_loc} | 
|  | 
|  | 
| {user_secure} | 
| {user_explicit_ssl} | 
| {user_explicit_tls} | 
| {user_require_encryption} | 
| {user_login_date_stamp} | 
| {user_login_date} | 
| {user_login_date_formatted} | 
|  | 
| {user_password} | 
| {user_current_dir} | 
| {user_sessionid} | 
| {user_site_commands_text} | 
| {user_time_remaining} | 
| {user_paused} | 
| {user_bytes_remaining} | 
| {user_pasv_port} | 
| {user_ratio} | 
| {user_perm_ratio} | 
|  | 
| when using LDAP integration | 
| {user_ldap_<ldap_key_name>} like {user_ldap_mail}, {user_ldap_sAMAccountName} , etc. | 
| At line 139 changed 34 lines | 
| {beep} | 
| {server_time_date} | 
| {login_number} | 
| {users_connected} | 
| {last_login_date_time} | 
| {last_login_ip} | 
| {last_login_user} | 
| {failed_logins} | 
| {successful_logins} | 
| {total_logins} | 
| {downloaded_files} | 
| {uploaded_files} | 
| {bytes_received_f} | 
| {bytes_sent_f} | 
| {total_bytes_f} | 
| {max_server_download_speed} | 
| {max_server_upload_speed} | 
| {bytes_received} | 
| {bytes_sent} | 
| {total_bytes} | 
| {current_server_downloading_count} | 
| {current_server_uploading_count} | 
| {current_download_speed} | 
| {current_upload_speed} | 
| {max_users} | 
| {ip} | 
| {beep_connect} | 
| {deny_reserved_ports} | 
| {deny_fxp} | 
| {about_info_str} | 
| {version_info} | 
| {start_time} | 
| {thread_count} | 
| {free_memory% | 
| {beep} | 
| {server_time_date} | 
| {login_number} | 
| {users_connected} | 
| {last_login_date_time} | 
| {last_login_ip} | 
| {last_login_user} | 
| {failed_logins} | 
| {successful_logins} | 
| {total_logins} | 
| {downloaded_files} | 
| {uploaded_files} | 
| {bytes_received_f} | 
| {bytes_sent_f} | 
| {total_bytes_f} | 
| {max_server_download_speed} | 
| {max_server_upload_speed} | 
| {bytes_received} | 
| {bytes_sent} | 
| {total_bytes} | 
| {current_server_downloading_count} | 
| {current_server_uploading_count} | 
| {current_download_speed} | 
| {current_upload_speed} | 
| {max_users} | 
| {ip} | 
| {hostname} | 
| {beep_connect} | 
| {deny_reserved_ports} | 
| {deny_fxp} | 
| {about_info_str} | 
| {version_info} | 
| {start_time} | 
| {thread_count} | 
| {thread_dump} | 
| {free_memory} | 
| {working_dir} - the CrushFTP installation folder | 
| At line 181 added 18 lines | 
|  | 
| ---- | 
| Variables to manually encode special characters if an URL-unsafe characters combination needs to be used.  If you use the browse... button, we automatically do this for you. | 
|  | 
| {{{ | 
| @ -> {at} | 
| " -> {quote} | 
| ' -> {apos} | 
| + -> {plus} | 
| : -> {colon} | 
| % -> {percent} | 
| & -> {amp} | 
| ? -> {question} | 
| / -> {slash} | 
| \ -> {backslash} | 
| # -> {hash} | 
| | -> {pipe} | 
| }}} |