UNPKG

node-red-contrib-lftp

Version:

A node-red node that supports FTP(s) and SFTP file transfer

216 lines (205 loc) 8.34 kB
<script type="text/x-red" data-help-name="lftp-config"> <p>lftp config</p> <p>help available <a href="https://github.com/Atinux/node-ftps#usage">here</a></p> <p>additional commands details <a href="http://lftp.yar.ru/lftp-man.html">here</a></p> <p>For self-signed certs use <code>set ssl:verify-certificate no;</code></p> <p>For ssh host verification use <code>set sftp:auto-confirm yes;</code></p> <p>To disable cache use <code>cache off;</code></p> </script> <script type="text/x-red" data-help-name="lftp-command"> <p>lftp command</p> <p>execute lftp commands</p> </script> <script type="text/x-red" data-template-name="lftp-config"> <div class="form-row"> <label for="node-config-input-protocol"><i class="fa fa-wrench"></i> Protocol</label> <select type="text" id="node-config-input-protocol"> <option value="ftp">FTP</option> <option value="ftps">FTPS</option> <option value="sftp">SFTP</option> </select> </div> <div class="form-row"> <label for="node-config-input-host"><i class="fa fa-bookmark"></i> Host</label> <input type="text" id="node-config-input-host" placeholder="localhost" style="width: 40%;" /> <label for="node-config-input-port" style="margin-left: 10px; width: 35px; "> Port</label> <input type="text" id="node-config-input-port" placeholder="21" style="width:45px"> </div> <div class="form-row"> <label for="node-config-input-username"><i class="fa fa-user"></i> Username</label> <input type="text" id="node-config-input-username" placeholder="anonymous" /> </div> <div class="form-row"> <label for="node-input-requiresPassword"><i class="fa fa-key"></i> Requires Password</label> <input type="checkbox" id="node-input-requriesPassword" placeholder="once" style="width: 10%; vertical-align: top;"> </div> <div class="form-row"> <label for="node-config-input-password"><i class="fa fa-lock"></i> Password</label> <input type="password" id="node-config-input-password"> </div> <div class="form-row"> <label for="node-config-input-retries"><i class="fa fa-clock-o"></i> Retries</label> <input type="text" id="node-config-input-retries" placeholder="2"> </div> <div class="form-row"> <label for="node-config-input-timeout"><i class="fa fa-clock-o"></i> Timeout</label> <input type="text" id="node-config-input-timeout" placeholder="10"> </div> <div class="form-row"> <label for="node-config-input-retryInterval"><i class="fa fa-clock-o"></i> Retry Interval</label> <input type="text" id="node-config-input-retryInterval" placeholder="5"> </div> <div class="form-row"> <label for="node-config-input-retryMultiplier"><i class="fa fa-clock-o"></i> Retry Multiplier</label> <input type="text" id="node-config-input-retryMultiplier" placeholder="1"> </div> <div class="form-row"> <label for="node-config-input-additionalLftpCommands" style="width: 20%; vertical-align: top;"> Additional Commands</label> <input type="text" id="node-config-input-additionalLftpCommands" style="width: 35%; vertical-align: top;"> </div> </script> <script type="text/javascript"> RED.nodes.registerType("lftp-config", { category: "config", color: "BurlyWood", defaults: { host: { value: "localhost", required: true }, // protocol is added on beginning of host, ex : sftp://domain.com in this case protocol: { value: "ftp" }, // port is added to the end of the host, ex: sftp://domain.com:22 in this case port: { value: 21 }, escape: { value: true }, retries: { value: 2 }, timeout: { value: 10 }, retryInterval: { value: 5 }, retryMultiplier: { value: 1 }, requiresPassword: { value: true }, additionalLftpCommands: { value: "" } }, credentials: { username: { type: "text" }, password: { type: "password" } }, label: function() { return this.host; } }); </script> <script type="text/x-red" data-template-name="lftp-command"> <div class="form-row"> <label for="node-input-server"><i class="fa fa-user"></i> Add new FTP Server</label> <input type="text" id="node-input-server"> </div> <div class="form-row"> <label for="node-input-operation"><i class="fa fa-wrench"></i> Operation</label> <select type="text" id="node-input-operation"> <option value="list">list</option> <option value="get">get</option> <option value="put">put</option> <option value="delete">delete</option> <option value="rmdir">rmdir</option> <option value="rmrf">rmrf</option> <option value="move">move</option> <option value="raw">raw</option> <option value="">- set by msg.operation -</option> </select> </div> <div class="form-row input-workdir-row hidden"> <label for="node-input-workdir"><i class="fa fa-folder-open"></i> Working Directory</label> <input type="text" id="node-input-workdir" placeholder="Working Directory"> </div> <div class="form-row input-filename-row hidden"> <label for="node-input-filename"><i class="fa fa-file"></i> Filename</label> <input type="text" id="node-input-filename" placeholder="Filename"> </div> <div class="form-row input-targetFilename-row hidden"> <label for="node-input-targetFilename"><i class="fa fa-file"></i> Target Filename</label> <input type="text" id="node-input-targetFilename" placeholder="Filename"> </div> <div class="form-row input-savedir-row hidden"> <label for="node-input-savedir"><i class="fa fa-folder-open"></i> Save Directory</label> <input type="text" id="node-input-savedir" placeholder="Save Directory"> </div> <div class="form-row input-localFilename-row hidden"> <label for="node-input-localFilename"><i class="fa fa-file"></i> Local Filename</label> <input type="text" id="node-input-localFilename" placeholder="Local Filename"> </div> <div class="form-row"> <label for="node-input-name"><i class="fa fa-tag"></i> Name</label> <input type="text" id="node-input-name" placeholder="Name"> </div> </script> <script type="text/javascript"> RED.nodes.registerType("lftp-command", { category: "storage-input", color: "BurlyWood", defaults: { server: { type: "lftp-config", required: true }, operation: { value: "list" }, filename: { value: "" }, targetFilename: { value: "" }, localFilename: { value: "" }, workdir: { value: "" }, savedir: { value: "" }, name: { value: "" } }, inputs: 1, outputs: 1, icon: "file.png", label: function() { var server = RED.nodes.node(this.server); return this.name || "lftp"; }, labelStyle: function() { return this.name ? "node_label_italic" : ""; }, oneditprepare: function() { var savedir = $(".input-savedir-row"); var filename = $(".input-filename-row"); var targetFilename = $(".input-targetFilename-row"); var localFilename = $(".input-localFilename-row"); var workdir = $(".input-workdir-row"); $("#node-input-operation").change(function() { var id = $("#node-input-operation option:selected").val(); console.log(id); if (id == "list") { workdir.show(); filename.hide(); targetFilename.hide(); savedir.hide(); localFilename.hide(); } else if (id == "put") { workdir.show(); filename.show(); targetFilename.hide(); savedir.hide(); localFilename.hide(); } else if (id == "get") { workdir.show(); filename.show(); targetFilename.hide(); savedir.hide(); localFilename.hide(); } else if (id == "delete" || id == "rmdir" || id == "rmrf") { workdir.show(); filename.show(); targetFilename.hide(); savedir.hide(); localFilename.hide(); } else if (id == "move") { workdir.show(); filename.show(); targetFilename.show(); savedir.hide(); localFilename.hide(); } else { workdir.hide(); filename.hide(); targetFilename.hide(); savedir.hide(); localFilename.hide(); } }); } }); </script>