---------------------------------------------------------------------------------------------- File Exchanger Tool 0.0.11.11 --------------------------- File Exchanger (file_exchanger) Tool is a peer-to-peer files exchanger for Windows/Linux platform. File Exchanger (file_exchanger) Tool ® Copyright © 2018-2019 by SManSoft Overview -------- The main features of File Exchanger (file_exchanger) Tool: - transfer of files from client to server, using open socket connections; - transfer of files from client to server, using SSL connections; - control of entirety of received files, comparing of checksum values sent and received files, using CRC-32 algorithm; - using transfer of files from client to server, using SSL connections; - using follow SSL mode/algorithms (TLSv1.2), if SSL connection is used: ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 - version TLS - the protocol used ECDHE - the key exchange mechanism ECDSA - the algorithm of the authentication key AES - the symmetric encryption algorithm 256 - the key size of AES GCM - the mode of AES SHA384 - the MAC used by the algorithm prime256v1 (NIST P-256, secp256r1) - Elliptic Curve, that is used by ECDHE and ECDSA; - using unique CA of client and server certificates; - user can update CA, client/server keys/certificates, using suite of scripts ssl.ecdsa.tar.gz (ReadMe.txt in ssl.ecdsa.tar.gz); - using of xml configuration files, which can be updated by user and will be applied without restart of processes (sm_file_send_clns, sm_file_send_srvs); - scanning of configured directories, where sent files can be copy; - copying of sub-directories with files, saving of sub-directories tree at the server side; - support of unicode symbols in file/directory names; - backup of sent/received files; - server and client modules can be launched as Services (Windows)/Daemons (Linux); - console command line control application (only Windows) of client/server Services (requires Administrator permissions); - Windows gui application, that allows to monitor states of client/server Services, control of client/server Services and change parameters of client/server Services; - Linux gui application (Qt-based), that allows to monitor states of client/server Daemons, control of client/server Daemons (when it's possible, according to users permissions) and change parameters of client/server Daemons; - using ECDSA (NIST P-256, secp256r1) for signing/verification parameters, which are sent between client/server and gui applications (Windows/Linux); - tool applications don't use any intermediate servers and transfer files directly between client and server; Install ----- Installed packages: Linux (x86_64 only): file_exchanger-x.x.x.x-Linux-x64.run base installer, that unpacks installation files to current directory; also this installer launches (requires root permissions, via sudo) script share/smansoft/scripts/install.sh that creates /var/lib/smansoft and /var/log/smansoft directories, some sub-directories tree and several configuration files; file_exchanger-x.x.x.x-Linux-x64.tar.gz binary version, equals to unpacked above binary code; user should launch (requires root permissions) script share/smansoft/scripts/install.sh for creating of necessary directories (/var/lib/smansoft, /var/log/smansoft) and configuration files; file_exchanger_portable-x.x.x.x-Linux-x64.tar.gz binary portable version, that uses only unpacked directories, during work; user can change default directories (in configuration), where files are processed (read and saved); Windows (x86 and x86_64): file_exchanger-x.x.x.x-Windows-xxx.exe base standard installer; installer launch several .bat scripts, which creates directories %ALLUSERSPROFILE%\smansoft or %LOCALAPPDATA%\smansoft or %APPDATA%\smansoft , some sub-directories tree, several configuration files, creates and launches services; file_exchanger-x.x.x.x-Windows-xxx.zip binary version, equals to unpacked above binary code; user should launch (requires Administrator permissions) script share/smansoft/scripts/install_config.bat share/smansoft/scripts/install_services.bat for creating of necessary directories and configuration files; file_exchanger_portable-x.x.x.x-Windows-xxx.zip binary portable version, that uses only unpacked directories, during work; user can change default directories (in configuration), where files are processed (read and saved); Unpacked directories: bin share smansoft common doc sm_file_send_cln keys sm_file_send_clns keys sm_file_send_ctrl (only Windows) keys sm_file_send_srv keys sm_file_send_srvs keys sm_file_send_w (only Windows) keys sm_file_send_q (only Linux) keys sm_file_send_work cln_backups cln_out srv_backups srv_in bin - main binary directory; share/smansoft/common - directory, where is saved all common configuration files; user can cnahge files: sm_file_send_clns.xml, sm_file_send_srvs.xml; share/smansoft/scripts - directory, that contain scripts (bash and Windows batch), which are used during install/uninstall and scripts for launch/kill of Linux daemons; share/smansoft/doc - doc directory; share/smansoft/sm_file_send_cln (sm_file_send_clns, sm_file_send_srv, sm_file_send_srvs, sm_file_send_ctrl, sm_file_send_w, sm_file_send_q) - home data of applications; keys - directories, which contain keys and certificates of applications, which are used in SSL connections; share/smansoft/sm_file_send_work/cln_backups - directory, where sm_file_send_clns backups all sent files (by default) (can be changed); share/smansoft/sm_file_send_work/cln_out - directory, which is scanned by sm_file_send_clns (by default) (can be changed); share/smansoft/sm_file_send_work/srv_backups - directory, where sm_file_send_srvs backups all received files (by default) (can be changed); share/smansoft/sm_file_send_work/srv_in - directory, where sm_file_send_srvs saves all received files (by default) (can be changed); Install scripts (Linux platform) also provides integration of gui tool (sm_file_send_q) into system menu (during installing, using script install_desktop.sh in dir: share/smansoft/scripts), when the Current Workspace Environment is KDE only (in current version); For verification install files and archives, please use: import public key (file: http://smansoft.com/gpg/smansoft.pub.asc): gpg --import ./smansoft.pub.asc or import public key: gpg --keyserver hkp://pgp.mit.edu --recv-keys A408B0FCFD774649 then, verify: gpg --verify ./[some_install_file].asc ./[some_install_file]; Usage ----- sm_file_send_cln command line tool, reads files from directory, defined by -d, --out_dir= and backups sent files in -b, --back_dir= Logs are saved in directory: standard version: Linux: /home//.local/share/smansoft/sm_file_send_cln/log Windows: %LOCALAPPDATA%\smansoft\sm_file_send_cln\log portable version: Linux/Windows: [application dir]/var/log/smansoft/sm_file_send_cln/log Tool can read all sub-directories in -d, if used defined -s, --sub_dirs usage: sm_file_send_cln [OPTION] -h, --help display this help... -n, --send_files send files... -d, --out_dir= output directory... -b, --back_dir= backup directory... -f, --file= send only one file... -a, --server_address= ip address of the server... -p, --server_port= tcp port of the server... -l, --use_ssl use ssl for tcp connection... -s, --sub_dirs scan sub-directories... sm_file_send_srv command line tool, writes files to directory, defined by -d, --in_dir= and backups files in -b, --back_dir= i.e. if contains same file and client send file with same name, source file will be saved in and new file will be received and saved in ; server opens two server socket connections for open and secured (SSL) connections, defined by -p, --port= and -l, --ssl_port=; Logs are saved in directory: standard version: Linux: /home//.local/share/smansoft/sm_file_send_srv/log Windows: %LOCALAPPDATA%\smansoft\sm_file_send_srv\log portable version: Linux/Windows: [application dir]/var/log/smansoft/sm_file_send_srv/log usage: sm_file_send_srv [OPTION] -h, --help display this help... -s, --start_server start server... -d, --in_dir= input directory... -b, --back_dir= backup directory... -p, --port= tcp port... -l, --ssl_port= ssl tcp port... sm_file_send_clns command line tool/service/daemon, reads files from directory, defined by (sm_file_send_clns.xml) and backups files in (sm_file_send_clns.xml); If version of sm_file_send_srvs is portable, and are empty (by default) and sm_file_send_srvs uses [application dir]/share/smansoft/sm_file_send_work/cln_out [application dir]/share/smansoft/sm_file_send_work/cln_backups ; application, that can be launched as standard application, as service (Windows) or daemon (Linux); application, reads configuration file sm_file_send_clns.xml from standard version: Windows: %ALLUSERSPROFILE%\smansoft\common Linux: /var/lib/smansoft/common portable version (Windows/Linux): [application dir]/share/smansoft/common directory; user can use scripts (share/smansoft/scripts) run_clns_cu.sh (current user) run_clns_root.sh (root) kill_clns_cu.sh (current user) kill_clns_root.sh (root) for launch/kill Linux daemons; if user uses these scripts, daemon creates sm_file_send_clns.pid file in /var/lib/smansoft/run or in [application dir]/share/smansoft/run ; user can change sm_file_send_clns.xml and changed parameters will be applied without restart of the sm_file_send_clns process/service/daemon; command line tool, reads files from directory, defined by -d, --out_dir= and backups sent files in -b, --back_dir= Logs are saved in directory: standard version: Linux: /home//.local/share/smansoft/sm_file_send_clns/log Windows: %LOCALAPPDATA%\smansoft\sm_file_send_clns\log portable version: Linux/Windows: [application dir]/var/log/smansoft/sm_file_send_clns/log sm_file_send_clns creates control socket server; control server allows input client connections from 127.0.0.1 address only (otherwise connection will be closed); control socket server sends/receives parameters to/from gui application; parameters are signed/verified, using ECDSA (NIST P-256, secp256r1); port of control socket server can be tuned (without re-launching of application) only via in sm_file_send_clns.xml (for example, 33111); usage (Windows): sm_file_send_clns [OPTION] --registerService Register the application as a service. --unregisterService Unregister the application as a service. --displayName=name Specify a display name for the service (only with /registerService). --description=text Specify a description for the service (only with /registerService). --startup=automatic|manual Specify the startup mode for the service (only with /registerService). -h, --help display this help... usage (Linux): sm_file_send_clns [OPTION] --daemon Run application as a daemon. --umask=mask Set the daemon's umask (octal, e.g. 027). --pidfile=path Write the process ID of the application to given file. -h, --help display this help... sm_file_send_srvs command line tool/service/daemon, writes files to directory, defined by (sm_file_send_srvs.xml) and backups files in (sm_file_send_srvs.xml); If version of sm_file_send_srvs is portable, and are empty (by default) and sm_file_send_srvs uses [application dir]/share/smansoft/sm_file_send_work/srv_in [application dir]/share/smansoft/sm_file_send_work/srv_backups ; application, that can be launched as standard application, as service (Windows) or daemon (Linux); application, reads configuration file sm_file_send_srvs.xml from standard version: Windows: %ALLUSERSPROFILE%\smansoft\common Linux: /var/lib/smansoft/common portable version (Windows/Linux): [application dir]/share/smansoft/common directory; user can use scripts (share/smansoft/scripts) run_clns_cu.sh (current user) run_clns_root.sh (root) kill_clns_cu.sh (current user) kill_clns_root.sh (root) for launch/kill Linux daemons; if user uses these scripts, daemon creates sm_file_send_clns.pid file in /var/lib/smansoft/run or in [application dir]/share/smansoft/run ; Logs are saved in directory: standard version: Linux: /home//.local/share/smansoft/sm_file_send_srvs/log Windows: %LOCALAPPDATA%\smansoft\sm_file_send_srvs\log portable version: Linux/Windows: [application dir]/var/log/smansoft/sm_file_send_srvs/log sm_file_send_srvs creates control socket server; control server allows input client connections from 127.0.0.1 address only (otherwise connection will be closed); control socket server sends/receives parameters to/from gui application; parameters are signed/verified, using ECDSA (NIST P-256, secp256r1); port of control socket server can be tuned (without re-launching of application) only via in sm_file_send_srvs.xml (for example, 332222); sm_file_send_ctrl (only Windows platform) command line tool (requires Administrator permissions), that returns info about state of any service, installed on the System, and provides control (start/stop) of services. usage (only Windows): sm_file_send_ctrl [OPTION] -s, --start_service= start service... -t, --stop_service= stop service... -u, --status_service= status of service... sm_file_send_w (only Windows platform) gui tool (with asynchronous gui), that shows info about state of client/server Services and provides control of client/server Services; sm_file_send_w tool launches sm_file_send_ctrl for starting/stopping of client/server Services; sm_file_send_w also updates base parameters of client/server Services; sm_file_send_w communicates with client/server Services using separate socket connections (only on local WS, only address 127.0.0.1 is used by control connections); port of this connection (gui tool, client connection parameter) can be tuned via page "Common Settings"; port of this connection should be same as value in correspondent .xml file ( in sm_file_send_clns.xml or sm_file_send_srvs.xml); sm_file_send_w reads/writes parameters from/to sm_file_send_clns.xml or sm_file_send_srvs.xml directly, if client/server Services are stopped; i.e. if connection/connections to control port/ports isn't/aren't possible, sm_file_send_w reads/writes parameters from/to sm_file_send_clns.xml or sm_file_send_srvs.xml; sm_file_send_w creates SysTray icon and supports SysTray menu; sm_file_send_q (only Linux platform) gui tool (with asynchronous gui), that shows info about state of client/server Deamons and provides control of client/server Deamons; sm_file_send_q tool launches scripts (in dir: share/smansoft/scripts) run_clns_cu.sh, kill_clns_cu.sh, run_srvs_cu.sh, kill_srvs_cu.sh for for starting/stopping of client/server Daemons; i.e. user can update these scripts, if he needs to update this functionality; sm_file_send_q disables all control of client/server Daemons, if client/server Daemons are launched already and their $UID differ from $UID of sm_file_send_q; i.e., if user launches client/server Daemons manually, using run_clns_root.sh, run_srvs_root.sh and then launches sm_file_send_q without sudo, he can't control of client/server Daemons, using sm_file_send_q; sm_file_send_q also updates base parameters of client/server Daemons; sm_file_send_q communicates with client/server Daemons using separate socket connections (only on local WS, only address 127.0.0.1 is used by control connections); port of this connection (gui tool, client connection parameter) can be tuned via page "Common Settings"; port of this connection should be same as value in correspondent .xml file ( in sm_file_send_clns.xml or sm_file_send_srvs.xml); sm_file_send_q reads/writes parameters from/to sm_file_send_clns.xml or sm_file_send_srvs.xml directly, if client/server Daemons are stopped; i.e. if connection/connections to control port/ports isn't/aren't possible, sm_file_send_q reads/writes parameters from/to sm_file_send_clns.xml or sm_file_send_srvs.xml; sm_file_send_q creates SysTray icon and supports SysTray menu; sm_file_send_q is integrated into system menu (during installing, using script install_desktop.sh in dir: share/smansoft/scripts), when the Current Workspace Environment is KDE only (in current version); File Exchanger (file_exchanger) Tool is a free software distributed under the MIT. Read License.txt for more information about license. Please, send your notes and questions to mailto:info@smansoft.com . ----------------------------------------------------------------------------------------------- End of document -----------------