Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/Remmina/remminadoc.gitlab.io.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntenore Gatta <antenore@simbiosi.org>2021-01-04 11:13:17 +0300
committerAntenore Gatta <antenore@simbiosi.org>2021-01-04 11:13:17 +0300
commited73e2c112d5242dbc59096082062517aa6421a3 (patch)
tree894c57009c12c22b499fec634744add3141daf81 /public/remmina__ssh_8h_source.html
parentb8d4f04ca7b0e4ad9799bbe3b56284222b5fb570 (diff)
Automatic doc build by remmina-ci
Diffstat (limited to 'public/remmina__ssh_8h_source.html')
-rw-r--r--public/remmina__ssh_8h_source.html2
1 files changed, 1 insertions, 1 deletions
diff --git a/public/remmina__ssh_8h_source.html b/public/remmina__ssh_8h_source.html
index c24844a8f..d61fec70a 100644
--- a/public/remmina__ssh_8h_source.html
+++ b/public/remmina__ssh_8h_source.html
@@ -86,7 +86,7 @@ $(document).ready(function(){initNavTree('remmina__ssh_8h_source.html','');});
<div class="title">remmina_ssh.h</div> </div>
</div><!--header-->
<div class="contents">
-<a href="remmina__ssh_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * Copyright (C) 2009-2011 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Copyright (C) 2014-2015 Antenore Gatta, Fabio Castelli, Giovanni Panozzo</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Copyright (C) 2016-2020 Antenore Gatta, Giovanni Panozzo</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * along with this program; if not, write to the Free Software</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * In addition, as a special exception, the copyright holders give</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * permission to link the code of portions of this program with the</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * OpenSSL library under certain conditions as described in each</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * including the two.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * You must obey the GNU General Public License in all respects</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * for all of the code used other than OpenSSL. * If you modify</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * file(s) with this exception, you may extend this exception to your</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> * version of the file(s), but you are not obligated to do so. * If you</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * do not wish to do so, delete this exception statement from your</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * version. * If you delete this exception statement from all source</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> * files in the program, then also delete it here.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &quot;config.h&quot;</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#define LIBSSH_STATIC 1</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#include &lt;libssh/libssh.h&gt;</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#include &lt;libssh/callbacks.h&gt;</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#include &lt;libssh/sftp.h&gt;</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#include &lt;pthread.h&gt;</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__file_8h.html">remmina_file.h</a>&quot;</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="rcw_8h.html">rcw.h</a>&quot;</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;G_BEGIN_DECLS</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment">/*-----------------------------------------------------------------------------*</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment">* SSH Base *</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment">*-----------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor">#define REMMINA_SSH(a) ((RemminaSSH *)a)</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html"> 59</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___remmina_s_s_h.html">_RemminaSSH</a> {</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3"> 60</a></span>&#160; ssh_session <a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#aa8e75d0a635b3390100218bee6b49378"> 61</a></span>&#160; ssh_callbacks <a class="code" href="struct___remmina_s_s_h.html#aa8e75d0a635b3390100218bee6b49378">callback</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d"> 62</a></span>&#160; gboolean <a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b"> 64</a></span>&#160; gchar * <a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc"> 65</a></span>&#160; gint <a class="code" href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc">port</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb"> 66</a></span>&#160; gchar * <a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03"> 67</a></span>&#160; gint <a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89"> 68</a></span>&#160; gchar * <a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e"> 69</a></span>&#160; gchar * <a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#a0b35a5a573abb5e8b8a27a91434a00a5"> 71</a></span>&#160; gchar * <a class="code" href="struct___remmina_s_s_h.html#a0b35a5a573abb5e8b8a27a91434a00a5">charset</a>;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#a345d41b54490dd39e35280122d22feed"> 72</a></span>&#160; <span class="keyword">const</span> gchar * <a class="code" href="struct___remmina_s_s_h.html#a345d41b54490dd39e35280122d22feed">kex_algorithms</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#a0b3e071eb2c6011efdcea3f65f8e7fa0"> 73</a></span>&#160; gchar * <a class="code" href="struct___remmina_s_s_h.html#a0b3e071eb2c6011efdcea3f65f8e7fa0">ciphers</a>;</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#a69e209a1ee77d6dfe5d87961e2a50a6a"> 74</a></span>&#160; gchar * <a class="code" href="struct___remmina_s_s_h.html#a69e209a1ee77d6dfe5d87961e2a50a6a">hostkeytypes</a>;</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#ac03e015f09baa46d4a9a118c606736af"> 75</a></span>&#160; gchar * <a class="code" href="struct___remmina_s_s_h.html#ac03e015f09baa46d4a9a118c606736af">proxycommand</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#a62e6a209747daa65061273243e830ae9"> 76</a></span>&#160; gint <a class="code" href="struct___remmina_s_s_h.html#a62e6a209747daa65061273243e830ae9">stricthostkeycheck</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#ab017331f59fceff63bb33ff00d088870"> 77</a></span>&#160; <span class="keyword">const</span> gchar * <a class="code" href="struct___remmina_s_s_h.html#ab017331f59fceff63bb33ff00d088870">compression</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed"> 79</a></span>&#160; gchar * <a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#a547feb6e46dfb8e37a4eb338c17d7b52"> 81</a></span>&#160; pthread_mutex_t <a class="code" href="struct___remmina_s_s_h.html#a547feb6e46dfb8e37a4eb338c17d7b52">ssh_mutex</a>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529"> 83</a></span>&#160; gchar * <a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6"> 85</a></span>&#160; gboolean <a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602"> 86</a></span>&#160; gchar * <a class="code" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602">tunnel_entrance_host</a>;</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#a76ed92539dfe749a24a3a3b99f3a644f"> 87</a></span>&#160; gint <a class="code" href="struct___remmina_s_s_h.html#a76ed92539dfe749a24a3a3b99f3a644f">tunnel_entrance_port</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;} <a class="code" href="remmina__ssh_8h.html#af0f6d172a5ceae64f62ad54883666ccc">RemminaSSH</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;gchar *<a class="code" href="remmina__ssh_8h.html#a72a58e416c4eeb9d17eaf76360ebee42">remmina_ssh_identity_path</a>(<span class="keyword">const</span> gchar *<span class="keywordtype">id</span>);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment">/* Auto-detect commonly used private key identities */</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;gchar *<a class="code" href="remmina__ssh_8h.html#ab6d8bdad543b3caead2b2b0339484798">remmina_ssh_find_identity</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment">/* Initialize the ssh object */</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;gboolean <a class="code" href="remmina__ssh_8h.html#a6815a78f65795cbc6795ca1c59e73102">remmina_ssh_init_from_file</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh, <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, gboolean <a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a>);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment">/* Initialize the SSH session */</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;gboolean <a class="code" href="remmina__ssh_8h.html#a624b8ac30ddcd00ebda0b51d504f5a33">remmina_ssh_init_session</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment">/* Authenticate SSH session */</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1"> 105</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1">remmina_ssh_auth_result</a> {</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ae5b80d959def61ac57ee6a919ca87266"> 106</a></span>&#160; <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ae5b80d959def61ac57ee6a919ca87266">REMMINA_SSH_AUTH_SUCCESS</a>,</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f"> 107</a></span>&#160; <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>,</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1aa554c8cad3a99ccb8cf3a48ed9e219ea"> 108</a></span>&#160; <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1aa554c8cad3a99ccb8cf3a48ed9e219ea">REMMINA_SSH_AUTH_USERCANCEL</a>,</div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735"> 109</a></span>&#160; <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>,</div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ad56c3878c4a651b51fdb3d0e8b9cebd7"> 110</a></span>&#160; <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ad56c3878c4a651b51fdb3d0e8b9cebd7">REMMINA_SSH_AUTH_RECONNECT</a></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;};</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="keyword">enum</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1">remmina_ssh_auth_result</a> <a class="code" href="remmina__ssh_8h.html#aad84c6609cb431d48121ae5e0902441b">remmina_ssh_auth</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh, <span class="keyword">const</span> gchar *<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="keyword">enum</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1">remmina_ssh_auth_result</a> <a class="code" href="remmina__ssh_8h.html#acf69725720378340e1a51c87e7638a7f">remmina_ssh_auth_gui</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="comment">/* Error handling */</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="preprocessor">#define remmina_ssh_has_error(ssh) (((RemminaSSH *)ssh)-&gt;error != NULL)</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__ssh_8h.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh, <span class="keyword">const</span> gchar *fmt);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__ssh_8h.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh, <span class="keyword">const</span> gchar *fmt, ...);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="comment">/* Converts a string to/from UTF-8, or simply duplicate it if no conversion */</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;gchar *<a class="code" href="remmina__ssh_8h.html#a09bd4aee40b6e8d6ba8ffaa84dc95330">remmina_ssh_convert</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh, <span class="keyword">const</span> gchar *from);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;gchar *<a class="code" href="remmina__ssh_8h.html#aeccf94afb57bcad37b4241d45fcb3fea">remmina_ssh_unconvert</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh, <span class="keyword">const</span> gchar *from);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__ssh_8h.html#acdb9f57d2f9b47913715a8d8a0ea0c02">remmina_ssh_free</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment">/*-----------------------------------------------------------------------------*</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="comment">* SSH Tunnel *</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment">*-----------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#a3f84b047e47b96a0475ac9e9fa60b286"> 131</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___remmina_s_s_h_tunnel.html">_RemminaSSHTunnel</a> <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a>;</div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#afd166711167c39b8c1f6e8be3eb0c4e0"> 132</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span>_RemminaSSHTunnelBuffer <a class="code" href="remmina__ssh_8h.html#afd166711167c39b8c1f6e8be3eb0c4e0">RemminaSSHTunnelBuffer</a>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#a5b2c22bb155eee623a0a1f22293c4924"> 134</a></span>&#160;<span class="keyword">typedef</span> gboolean (*<a class="code" href="remmina__ssh_8h.html#a5b2c22bb155eee623a0a1f22293c4924">RemminaSSHTunnelCallback</a>) (<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *, gpointer);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="keyword">enum</span> {</div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#a458e651af6690959efa2afb96be7d609a78cac65c66c1f72592488c7c5728ea14"> 137</a></span>&#160; <a class="code" href="remmina__ssh_8h.html#a458e651af6690959efa2afb96be7d609a78cac65c66c1f72592488c7c5728ea14">REMMINA_SSH_TUNNEL_OPEN</a>,</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#a458e651af6690959efa2afb96be7d609a57b0a0c05bcbc57fc8bc384524803a91"> 138</a></span>&#160; <a class="code" href="remmina__ssh_8h.html#a458e651af6690959efa2afb96be7d609a57b0a0c05bcbc57fc8bc384524803a91">REMMINA_SSH_TUNNEL_X11</a>,</div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#a458e651af6690959efa2afb96be7d609afbca41cd7b252c2594e1d53cd081b326"> 139</a></span>&#160; <a class="code" href="remmina__ssh_8h.html#a458e651af6690959efa2afb96be7d609afbca41cd7b252c2594e1d53cd081b326">REMMINA_SSH_TUNNEL_XPORT</a>,</div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#a458e651af6690959efa2afb96be7d609ae14c0d50235951946ca18866a1329459"> 140</a></span>&#160; <a class="code" href="remmina__ssh_8h.html#a458e651af6690959efa2afb96be7d609ae14c0d50235951946ca18866a1329459">REMMINA_SSH_TUNNEL_REVERSE</a></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;};</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html"> 144</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct___remmina_s_s_h_tunnel.html">_RemminaSSHTunnel</a> {</div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#ad9887ee0673a2b0b03b091746ae02d23"> 145</a></span>&#160; <a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> <a class="code" href="struct___remmina_s_s_h_tunnel.html#ad9887ee0673a2b0b03b091746ae02d23">ssh</a>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#ac86d0d359e5d97d8d60fac69c9af69df"> 147</a></span>&#160; gint <a class="code" href="struct___remmina_s_s_h_tunnel.html#ac86d0d359e5d97d8d60fac69c9af69df">tunnel_type</a>;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4"> 149</a></span>&#160; ssh_channel * <a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>;</div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3"> 150</a></span>&#160; gint * <a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>;</div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1"> 151</a></span>&#160; <a class="code" href="remmina__ssh_8h.html#afd166711167c39b8c1f6e8be3eb0c4e0">RemminaSSHTunnelBuffer</a> ** <a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>;</div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513"> 152</a></span>&#160; gint <a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a>;</div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#a6a184c6ca8fa267012d86986dac396c6"> 153</a></span>&#160; gint <a class="code" href="struct___remmina_s_s_h_tunnel.html#a6a184c6ca8fa267012d86986dac396c6">max_channels</a>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#a069b886ad870cb318693fe1022179b3d"> 155</a></span>&#160; ssh_channel <a class="code" href="struct___remmina_s_s_h_tunnel.html#a069b886ad870cb318693fe1022179b3d">x11_channel</a>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd"> 157</a></span>&#160; pthread_t <a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a>;</div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd"> 158</a></span>&#160; gboolean <a class="code" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd">running</a>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#a155d773294b0671aac4e710e97d90047"> 160</a></span>&#160; gchar * <a class="code" href="struct___remmina_s_s_h_tunnel.html#a155d773294b0671aac4e710e97d90047">buffer</a>;</div><div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#a88ae4fb816713bd90d8e452b5e7ef0bb"> 161</a></span>&#160; gint <a class="code" href="struct___remmina_s_s_h_tunnel.html#a88ae4fb816713bd90d8e452b5e7ef0bb">buffer_len</a>;</div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#a37244b9fafd3ab48c0f11ad0b8cfdf91"> 162</a></span>&#160; ssh_channel * <a class="code" href="struct___remmina_s_s_h_tunnel.html#a37244b9fafd3ab48c0f11ad0b8cfdf91">channels_out</a>;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69"> 164</a></span>&#160; gint <a class="code" href="struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69">server_sock</a>;</div><div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#a4d61f0c0926686f8451dcf49d2d857da"> 165</a></span>&#160; gchar * <a class="code" href="struct___remmina_s_s_h_tunnel.html#a4d61f0c0926686f8451dcf49d2d857da">dest</a>;</div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#ad883561d61ee8d32d2201e642b0ab9cc"> 166</a></span>&#160; gint <a class="code" href="struct___remmina_s_s_h_tunnel.html#ad883561d61ee8d32d2201e642b0ab9cc">port</a>;</div><div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#ae41b6af92643cfbcd3e13275f4281260"> 167</a></span>&#160; gint <a class="code" href="struct___remmina_s_s_h_tunnel.html#ae41b6af92643cfbcd3e13275f4281260">localport</a>;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#af670e0b0960c3e71e9f0b8b797ef9c28"> 169</a></span>&#160; gint <a class="code" href="struct___remmina_s_s_h_tunnel.html#af670e0b0960c3e71e9f0b8b797ef9c28">remotedisplay</a>;</div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#a6fa916d3736cb8e2a0e6541f608c209b"> 170</a></span>&#160; gboolean <a class="code" href="struct___remmina_s_s_h_tunnel.html#a6fa916d3736cb8e2a0e6541f608c209b">bindlocalhost</a>;</div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#a071153b511500c3faa6804ebd76aeba1"> 171</a></span>&#160; gchar * <a class="code" href="struct___remmina_s_s_h_tunnel.html#a071153b511500c3faa6804ebd76aeba1">localdisplay</a>;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div><div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#a8066492c4a0181f1b39b2fb2098fb56d"> 173</a></span>&#160; <a class="code" href="remmina__ssh_8h.html#a5b2c22bb155eee623a0a1f22293c4924">RemminaSSHTunnelCallback</a> <a class="code" href="struct___remmina_s_s_h_tunnel.html#a8066492c4a0181f1b39b2fb2098fb56d">init_func</a>;</div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#aa904bb1d9f643f6fde2b0eea4a8b1660"> 174</a></span>&#160; <a class="code" href="remmina__ssh_8h.html#a5b2c22bb155eee623a0a1f22293c4924">RemminaSSHTunnelCallback</a> <a class="code" href="struct___remmina_s_s_h_tunnel.html#aa904bb1d9f643f6fde2b0eea4a8b1660">connect_func</a>;</div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c"> 175</a></span>&#160; <a class="code" href="remmina__ssh_8h.html#a5b2c22bb155eee623a0a1f22293c4924">RemminaSSHTunnelCallback</a> <a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>;</div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#a6f2cd8a2535e180e7bd428e84030ffb6"> 176</a></span>&#160; gpointer <a class="code" href="struct___remmina_s_s_h_tunnel.html#a6f2cd8a2535e180e7bd428e84030ffb6">callback_data</a>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#a1e1f1bfaec497b1365ea70ebe795d778"> 178</a></span>&#160; <a class="code" href="remmina__ssh_8h.html#a5b2c22bb155eee623a0a1f22293c4924">RemminaSSHTunnelCallback</a> <a class="code" href="struct___remmina_s_s_h_tunnel.html#a1e1f1bfaec497b1365ea70ebe795d778">destroy_func</a>;</div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#a33ae9b7cd8cb3dcd85223017dfd13795"> 179</a></span>&#160; gpointer <a class="code" href="struct___remmina_s_s_h_tunnel.html#a33ae9b7cd8cb3dcd85223017dfd13795">destroy_func_callback_data</a>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;};</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="comment">/* Create a new SSH Tunnel session and connects to the SSH server */</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *<a class="code" href="remmina__ssh_8h.html#abf04fd329ab77bbd4f6aa1cb1eaa349d">remmina_ssh_tunnel_new_from_file</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="comment">/* Open the tunnel. A new thread will be started and listen on a local port.</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;<span class="comment"> * dest: The host:port of the remote destination</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="comment"> * local_port: The listening local port for the tunnel</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;gboolean <a class="code" href="remmina__ssh_8h.html#a52b3f47eac79f2781ba81d61505f4f53">remmina_ssh_tunnel_open</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, <span class="keyword">const</span> gchar *host, gint <a class="code" href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc">port</a>, gint local_port);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="comment">/* Cancel accepting any incoming tunnel request.</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="comment"> * Typically called after the connection has already been establish.</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__ssh_8h.html#ae9f52b1a3a545acae8c93007e20ec909">remmina_ssh_tunnel_cancel_accept</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="comment">/* Accept the X11 tunnel. A new thread will be started and connect to local display.</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="comment"> * cmd: The remote X11 application to be executed</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;gboolean <a class="code" href="remmina__ssh_8h.html#ac6d58beb4df141c6353e897c39748146">remmina_ssh_tunnel_x11</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, <span class="keyword">const</span> gchar *cmd);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="comment">/* start X Port Forwarding */</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;gboolean <a class="code" href="remmina__ssh_8h.html#aba49db2ced40e21e8adfad69dcfda2c4">remmina_ssh_tunnel_xport</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, gboolean bindlocalhost);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="comment">/* start reverse tunnel. A new thread will be started and waiting for incoming connection.</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="comment"> * port: the port listening on the remote server side.</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="comment"> * local_port: the port listening on the local side. When connection on the server side comes</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="comment"> * in, it will connect to the local port and create the tunnel. The caller should</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="comment"> * start listening on the local port before calling it or in connect_func callback.</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;gboolean <a class="code" href="remmina__ssh_8h.html#ae47c8270267b02b9c0ff5b36074101c2">remmina_ssh_tunnel_reverse</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, gint <a class="code" href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc">port</a>, gint local_port);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="comment">/* Tells if the tunnel is terminated after start */</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;gboolean <a class="code" href="remmina__ssh_8h.html#aeb20d31243a4d30e469a34fe01684e38">remmina_ssh_tunnel_terminated</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;<span class="comment">/* Free the tunnel */</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;<span class="comment">/*-----------------------------------------------------------------------------*</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="comment">* SSH sFTP *</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="comment">*-----------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="struct___remmina_s_f_t_p.html"> 223</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___remmina_s_f_t_p.html">_RemminaSFTP</a> {</div><div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="struct___remmina_s_f_t_p.html#a7dab48a7603f1dd6671a8dd1efe1958e"> 224</a></span>&#160; <a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> <a class="code" href="struct___remmina_s_f_t_p.html#a7dab48a7603f1dd6671a8dd1efe1958e">ssh</a>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="struct___remmina_s_f_t_p.html#adef92bcfa7b9a86debf0531d0239a5df"> 226</a></span>&#160; sftp_session <a class="code" href="struct___remmina_s_f_t_p.html#adef92bcfa7b9a86debf0531d0239a5df">sftp_sess</a>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;} <a class="code" href="remmina__ssh_8h.html#a8853669690f71506f9fe04ff08e2eaca">RemminaSFTP</a>;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="comment">/* Create a new SFTP session object from RemminaFile */</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<a class="code" href="struct___remmina_s_f_t_p.html">RemminaSFTP</a> *<a class="code" href="remmina__ssh_8h.html#a3d7138d9cbbe44aea15440436ce85d6e">remmina_sftp_new_from_file</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="comment">/* Create a new SFTP session object from existing SSH session */</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<a class="code" href="struct___remmina_s_f_t_p.html">RemminaSFTP</a> *<a class="code" href="remmina__ssh_8h.html#a1500d65d1f0751812f237c1cb4d15188">remmina_sftp_new_from_ssh</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="comment">/* open the SFTP session, assuming the session already authenticated */</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;gboolean <a class="code" href="remmina__ssh_8h.html#a1e09b32044c240a7dce0ad8afcbf0ff2">remmina_sftp_open</a>(<a class="code" href="struct___remmina_s_f_t_p.html">RemminaSFTP</a> *sftp);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="comment">/* Free the SFTP session */</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__ssh_8h.html#aaaf171c31b73f06f1026239253d9f6b9">remmina_sftp_free</a>(<a class="code" href="struct___remmina_s_f_t_p.html">RemminaSFTP</a> *sftp);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="comment">/*-----------------------------------------------------------------------------*</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="comment">* SSH Shell *</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="comment">*-----------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#a4c56936cde97775b102a3e7b48fe5a01"> 244</a></span>&#160;<span class="keyword">typedef</span> void (*<a class="code" href="remmina__ssh_8h.html#a4c56936cde97775b102a3e7b48fe5a01">RemminaSSHExitFunc</a>) (gpointer data);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;</div><div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_shell.html"> 246</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___remmina_s_s_h_shell.html">_RemminaSSHShell</a> {</div><div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_shell.html#af347a2bbe1bf439695d181387042b098"> 247</a></span>&#160; <a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> <a class="code" href="struct___remmina_s_s_h_shell.html#af347a2bbe1bf439695d181387042b098">ssh</a>;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;</div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_shell.html#ab02f57e79ea0ba35f8a3788ef01a707f"> 249</a></span>&#160; gint <a class="code" href="struct___remmina_s_s_h_shell.html#ab02f57e79ea0ba35f8a3788ef01a707f">master</a>;</div><div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6"> 250</a></span>&#160; gint <a class="code" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6">slave</a>;</div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_shell.html#a2d56befd61e28b83f90fe3eff0e6dfe7"> 251</a></span>&#160; gchar * <a class="code" href="struct___remmina_s_s_h_shell.html#a2d56befd61e28b83f90fe3eff0e6dfe7">exec</a>;</div><div class="line"><a name="l00252"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_shell.html#a878854125f24a8de520ec91066d0d226"> 252</a></span>&#160; pthread_t <a class="code" href="struct___remmina_s_s_h_shell.html#a878854125f24a8de520ec91066d0d226">thread</a>;</div><div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_shell.html#a7c546634f855c217faa75ab4d4c7c2e2"> 253</a></span>&#160; ssh_channel <a class="code" href="struct___remmina_s_s_h_shell.html#a7c546634f855c217faa75ab4d4c7c2e2">channel</a>;</div><div class="line"><a name="l00254"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_shell.html#a6b2e8c1d9705b4c5b64a0e07a1159e80"> 254</a></span>&#160; gboolean <a class="code" href="struct___remmina_s_s_h_shell.html#a6b2e8c1d9705b4c5b64a0e07a1159e80">closed</a>;</div><div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_shell.html#a88090ecb372853a19640c883f5bf606a"> 255</a></span>&#160; <a class="code" href="remmina__ssh_8h.html#a4c56936cde97775b102a3e7b48fe5a01">RemminaSSHExitFunc</a> <a class="code" href="struct___remmina_s_s_h_shell.html#a88090ecb372853a19640c883f5bf606a">exit_callback</a>;</div><div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_shell.html#adedb04066148973fed2de9f04b80286d"> 256</a></span>&#160; gpointer <a class="code" href="struct___remmina_s_s_h_shell.html#adedb04066148973fed2de9f04b80286d">user_data</a>;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;} <a class="code" href="remmina__ssh_8h.html#a1dd627c6195e879ba5ca12f5d590b10d">RemminaSSHShell</a>;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="comment">/* Create a new SSH Shell session object from RemminaFile */</span></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *<a class="code" href="remmina__ssh_8h.html#a30412e0b4302f5ae0b9be2749390a48d">remmina_ssh_shell_new_from_file</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="comment">/* Create a new SSH Shell session object from existing SSH session */</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *<a class="code" href="remmina__ssh_8h.html#ae0792ddb4adcaafefc1a4604cefdd8f4">remmina_ssh_shell_new_from_ssh</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="comment">/* open the SSH Shell, assuming the session already authenticated */</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;gboolean <a class="code" href="remmina__ssh_8h.html#a1c095a955af21b3ed9952ba2ea94691b">remmina_ssh_shell_open</a>(<a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *shell, <a class="code" href="remmina__ssh_8h.html#a4c56936cde97775b102a3e7b48fe5a01">RemminaSSHExitFunc</a> exit_callback, gpointer data);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="comment">/* Change the SSH Shell terminal size */</span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__ssh_8h.html#ac2d3f3b6550e4d1fe4caabe1df6af508">remmina_ssh_shell_set_size</a>(<a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *shell, gint columns, gint rows);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="comment">/* Free the SFTP session */</span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__ssh_8h.html#a316f97b879e147ec52967344f6ad1d84">remmina_ssh_shell_free</a>(<a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *shell);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;G_END_DECLS</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="preprocessor">#define RemminaSSH void</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;<span class="preprocessor">#define RemminaSSHTunnel void</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;<span class="preprocessor">#define RemminaSFTP void</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;<span class="preprocessor">#define RemminaSSHShell void</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;<span class="keyword">typedef</span> void (*<a class="code" href="remmina__ssh_8h.html#a5b2c22bb155eee623a0a1f22293c4924">RemminaSSHTunnelCallback</a>)(void);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* HAVE_LIBSSH */</span><span class="preprocessor"></span></div><div class="ttc" id="struct___remmina_s_s_h_tunnel_html"><div class="ttname"><a href="struct___remmina_s_s_h_tunnel.html">_RemminaSSHTunnel</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00144">remmina_ssh.h:144</a></div></div>
+<a href="remmina__ssh_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * Copyright (C) 2009-2011 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Copyright (C) 2014-2015 Antenore Gatta, Fabio Castelli, Giovanni Panozzo</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Copyright (C) 2016-2021 Antenore Gatta, Giovanni Panozzo</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * along with this program; if not, write to the Free Software</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * In addition, as a special exception, the copyright holders give</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * permission to link the code of portions of this program with the</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * OpenSSL library under certain conditions as described in each</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * including the two.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * You must obey the GNU General Public License in all respects</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * for all of the code used other than OpenSSL. * If you modify</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * file(s) with this exception, you may extend this exception to your</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> * version of the file(s), but you are not obligated to do so. * If you</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * do not wish to do so, delete this exception statement from your</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * version. * If you delete this exception statement from all source</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> * files in the program, then also delete it here.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &quot;config.h&quot;</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#define LIBSSH_STATIC 1</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#include &lt;libssh/libssh.h&gt;</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#include &lt;libssh/callbacks.h&gt;</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#include &lt;libssh/sftp.h&gt;</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#include &lt;pthread.h&gt;</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__file_8h.html">remmina_file.h</a>&quot;</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="rcw_8h.html">rcw.h</a>&quot;</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;G_BEGIN_DECLS</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment">/*-----------------------------------------------------------------------------*</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment">* SSH Base *</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment">*-----------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor">#define REMMINA_SSH(a) ((RemminaSSH *)a)</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html"> 59</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___remmina_s_s_h.html">_RemminaSSH</a> {</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3"> 60</a></span>&#160; ssh_session <a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#aa8e75d0a635b3390100218bee6b49378"> 61</a></span>&#160; ssh_callbacks <a class="code" href="struct___remmina_s_s_h.html#aa8e75d0a635b3390100218bee6b49378">callback</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d"> 62</a></span>&#160; gboolean <a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b"> 64</a></span>&#160; gchar * <a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc"> 65</a></span>&#160; gint <a class="code" href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc">port</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb"> 66</a></span>&#160; gchar * <a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03"> 67</a></span>&#160; gint <a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89"> 68</a></span>&#160; gchar * <a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e"> 69</a></span>&#160; gchar * <a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#a0b35a5a573abb5e8b8a27a91434a00a5"> 71</a></span>&#160; gchar * <a class="code" href="struct___remmina_s_s_h.html#a0b35a5a573abb5e8b8a27a91434a00a5">charset</a>;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#a345d41b54490dd39e35280122d22feed"> 72</a></span>&#160; <span class="keyword">const</span> gchar * <a class="code" href="struct___remmina_s_s_h.html#a345d41b54490dd39e35280122d22feed">kex_algorithms</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#a0b3e071eb2c6011efdcea3f65f8e7fa0"> 73</a></span>&#160; gchar * <a class="code" href="struct___remmina_s_s_h.html#a0b3e071eb2c6011efdcea3f65f8e7fa0">ciphers</a>;</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#a69e209a1ee77d6dfe5d87961e2a50a6a"> 74</a></span>&#160; gchar * <a class="code" href="struct___remmina_s_s_h.html#a69e209a1ee77d6dfe5d87961e2a50a6a">hostkeytypes</a>;</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#ac03e015f09baa46d4a9a118c606736af"> 75</a></span>&#160; gchar * <a class="code" href="struct___remmina_s_s_h.html#ac03e015f09baa46d4a9a118c606736af">proxycommand</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#a62e6a209747daa65061273243e830ae9"> 76</a></span>&#160; gint <a class="code" href="struct___remmina_s_s_h.html#a62e6a209747daa65061273243e830ae9">stricthostkeycheck</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#ab017331f59fceff63bb33ff00d088870"> 77</a></span>&#160; <span class="keyword">const</span> gchar * <a class="code" href="struct___remmina_s_s_h.html#ab017331f59fceff63bb33ff00d088870">compression</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed"> 79</a></span>&#160; gchar * <a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#a547feb6e46dfb8e37a4eb338c17d7b52"> 81</a></span>&#160; pthread_mutex_t <a class="code" href="struct___remmina_s_s_h.html#a547feb6e46dfb8e37a4eb338c17d7b52">ssh_mutex</a>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529"> 83</a></span>&#160; gchar * <a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6"> 85</a></span>&#160; gboolean <a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602"> 86</a></span>&#160; gchar * <a class="code" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602">tunnel_entrance_host</a>;</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h.html#a76ed92539dfe749a24a3a3b99f3a644f"> 87</a></span>&#160; gint <a class="code" href="struct___remmina_s_s_h.html#a76ed92539dfe749a24a3a3b99f3a644f">tunnel_entrance_port</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;} <a class="code" href="remmina__ssh_8h.html#af0f6d172a5ceae64f62ad54883666ccc">RemminaSSH</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;gchar *<a class="code" href="remmina__ssh_8h.html#a72a58e416c4eeb9d17eaf76360ebee42">remmina_ssh_identity_path</a>(<span class="keyword">const</span> gchar *<span class="keywordtype">id</span>);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment">/* Auto-detect commonly used private key identities */</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;gchar *<a class="code" href="remmina__ssh_8h.html#ab6d8bdad543b3caead2b2b0339484798">remmina_ssh_find_identity</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment">/* Initialize the ssh object */</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;gboolean <a class="code" href="remmina__ssh_8h.html#a6815a78f65795cbc6795ca1c59e73102">remmina_ssh_init_from_file</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh, <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, gboolean <a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a>);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment">/* Initialize the SSH session */</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;gboolean <a class="code" href="remmina__ssh_8h.html#a624b8ac30ddcd00ebda0b51d504f5a33">remmina_ssh_init_session</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment">/* Authenticate SSH session */</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1"> 105</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1">remmina_ssh_auth_result</a> {</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ae5b80d959def61ac57ee6a919ca87266"> 106</a></span>&#160; <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ae5b80d959def61ac57ee6a919ca87266">REMMINA_SSH_AUTH_SUCCESS</a>,</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f"> 107</a></span>&#160; <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>,</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1aa554c8cad3a99ccb8cf3a48ed9e219ea"> 108</a></span>&#160; <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1aa554c8cad3a99ccb8cf3a48ed9e219ea">REMMINA_SSH_AUTH_USERCANCEL</a>,</div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735"> 109</a></span>&#160; <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>,</div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ad56c3878c4a651b51fdb3d0e8b9cebd7"> 110</a></span>&#160; <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ad56c3878c4a651b51fdb3d0e8b9cebd7">REMMINA_SSH_AUTH_RECONNECT</a></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;};</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="keyword">enum</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1">remmina_ssh_auth_result</a> <a class="code" href="remmina__ssh_8h.html#aad84c6609cb431d48121ae5e0902441b">remmina_ssh_auth</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh, <span class="keyword">const</span> gchar *<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="keyword">enum</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1">remmina_ssh_auth_result</a> <a class="code" href="remmina__ssh_8h.html#acf69725720378340e1a51c87e7638a7f">remmina_ssh_auth_gui</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="comment">/* Error handling */</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="preprocessor">#define remmina_ssh_has_error(ssh) (((RemminaSSH *)ssh)-&gt;error != NULL)</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__ssh_8h.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh, <span class="keyword">const</span> gchar *fmt);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__ssh_8h.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh, <span class="keyword">const</span> gchar *fmt, ...);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="comment">/* Converts a string to/from UTF-8, or simply duplicate it if no conversion */</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;gchar *<a class="code" href="remmina__ssh_8h.html#a09bd4aee40b6e8d6ba8ffaa84dc95330">remmina_ssh_convert</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh, <span class="keyword">const</span> gchar *from);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;gchar *<a class="code" href="remmina__ssh_8h.html#aeccf94afb57bcad37b4241d45fcb3fea">remmina_ssh_unconvert</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh, <span class="keyword">const</span> gchar *from);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__ssh_8h.html#acdb9f57d2f9b47913715a8d8a0ea0c02">remmina_ssh_free</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment">/*-----------------------------------------------------------------------------*</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="comment">* SSH Tunnel *</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment">*-----------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#a3f84b047e47b96a0475ac9e9fa60b286"> 131</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___remmina_s_s_h_tunnel.html">_RemminaSSHTunnel</a> <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a>;</div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#afd166711167c39b8c1f6e8be3eb0c4e0"> 132</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span>_RemminaSSHTunnelBuffer <a class="code" href="remmina__ssh_8h.html#afd166711167c39b8c1f6e8be3eb0c4e0">RemminaSSHTunnelBuffer</a>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#a5b2c22bb155eee623a0a1f22293c4924"> 134</a></span>&#160;<span class="keyword">typedef</span> gboolean (*<a class="code" href="remmina__ssh_8h.html#a5b2c22bb155eee623a0a1f22293c4924">RemminaSSHTunnelCallback</a>) (<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *, gpointer);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="keyword">enum</span> {</div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#a458e651af6690959efa2afb96be7d609a78cac65c66c1f72592488c7c5728ea14"> 137</a></span>&#160; <a class="code" href="remmina__ssh_8h.html#a458e651af6690959efa2afb96be7d609a78cac65c66c1f72592488c7c5728ea14">REMMINA_SSH_TUNNEL_OPEN</a>,</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#a458e651af6690959efa2afb96be7d609a57b0a0c05bcbc57fc8bc384524803a91"> 138</a></span>&#160; <a class="code" href="remmina__ssh_8h.html#a458e651af6690959efa2afb96be7d609a57b0a0c05bcbc57fc8bc384524803a91">REMMINA_SSH_TUNNEL_X11</a>,</div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#a458e651af6690959efa2afb96be7d609afbca41cd7b252c2594e1d53cd081b326"> 139</a></span>&#160; <a class="code" href="remmina__ssh_8h.html#a458e651af6690959efa2afb96be7d609afbca41cd7b252c2594e1d53cd081b326">REMMINA_SSH_TUNNEL_XPORT</a>,</div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#a458e651af6690959efa2afb96be7d609ae14c0d50235951946ca18866a1329459"> 140</a></span>&#160; <a class="code" href="remmina__ssh_8h.html#a458e651af6690959efa2afb96be7d609ae14c0d50235951946ca18866a1329459">REMMINA_SSH_TUNNEL_REVERSE</a></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;};</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html"> 144</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct___remmina_s_s_h_tunnel.html">_RemminaSSHTunnel</a> {</div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#ad9887ee0673a2b0b03b091746ae02d23"> 145</a></span>&#160; <a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> <a class="code" href="struct___remmina_s_s_h_tunnel.html#ad9887ee0673a2b0b03b091746ae02d23">ssh</a>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#ac86d0d359e5d97d8d60fac69c9af69df"> 147</a></span>&#160; gint <a class="code" href="struct___remmina_s_s_h_tunnel.html#ac86d0d359e5d97d8d60fac69c9af69df">tunnel_type</a>;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4"> 149</a></span>&#160; ssh_channel * <a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>;</div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3"> 150</a></span>&#160; gint * <a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>;</div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1"> 151</a></span>&#160; <a class="code" href="remmina__ssh_8h.html#afd166711167c39b8c1f6e8be3eb0c4e0">RemminaSSHTunnelBuffer</a> ** <a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>;</div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513"> 152</a></span>&#160; gint <a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a>;</div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#a6a184c6ca8fa267012d86986dac396c6"> 153</a></span>&#160; gint <a class="code" href="struct___remmina_s_s_h_tunnel.html#a6a184c6ca8fa267012d86986dac396c6">max_channels</a>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#a069b886ad870cb318693fe1022179b3d"> 155</a></span>&#160; ssh_channel <a class="code" href="struct___remmina_s_s_h_tunnel.html#a069b886ad870cb318693fe1022179b3d">x11_channel</a>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd"> 157</a></span>&#160; pthread_t <a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a>;</div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd"> 158</a></span>&#160; gboolean <a class="code" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd">running</a>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#a155d773294b0671aac4e710e97d90047"> 160</a></span>&#160; gchar * <a class="code" href="struct___remmina_s_s_h_tunnel.html#a155d773294b0671aac4e710e97d90047">buffer</a>;</div><div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#a88ae4fb816713bd90d8e452b5e7ef0bb"> 161</a></span>&#160; gint <a class="code" href="struct___remmina_s_s_h_tunnel.html#a88ae4fb816713bd90d8e452b5e7ef0bb">buffer_len</a>;</div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#a37244b9fafd3ab48c0f11ad0b8cfdf91"> 162</a></span>&#160; ssh_channel * <a class="code" href="struct___remmina_s_s_h_tunnel.html#a37244b9fafd3ab48c0f11ad0b8cfdf91">channels_out</a>;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69"> 164</a></span>&#160; gint <a class="code" href="struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69">server_sock</a>;</div><div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#a4d61f0c0926686f8451dcf49d2d857da"> 165</a></span>&#160; gchar * <a class="code" href="struct___remmina_s_s_h_tunnel.html#a4d61f0c0926686f8451dcf49d2d857da">dest</a>;</div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#ad883561d61ee8d32d2201e642b0ab9cc"> 166</a></span>&#160; gint <a class="code" href="struct___remmina_s_s_h_tunnel.html#ad883561d61ee8d32d2201e642b0ab9cc">port</a>;</div><div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#ae41b6af92643cfbcd3e13275f4281260"> 167</a></span>&#160; gint <a class="code" href="struct___remmina_s_s_h_tunnel.html#ae41b6af92643cfbcd3e13275f4281260">localport</a>;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#af670e0b0960c3e71e9f0b8b797ef9c28"> 169</a></span>&#160; gint <a class="code" href="struct___remmina_s_s_h_tunnel.html#af670e0b0960c3e71e9f0b8b797ef9c28">remotedisplay</a>;</div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#a6fa916d3736cb8e2a0e6541f608c209b"> 170</a></span>&#160; gboolean <a class="code" href="struct___remmina_s_s_h_tunnel.html#a6fa916d3736cb8e2a0e6541f608c209b">bindlocalhost</a>;</div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#a071153b511500c3faa6804ebd76aeba1"> 171</a></span>&#160; gchar * <a class="code" href="struct___remmina_s_s_h_tunnel.html#a071153b511500c3faa6804ebd76aeba1">localdisplay</a>;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div><div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#a8066492c4a0181f1b39b2fb2098fb56d"> 173</a></span>&#160; <a class="code" href="remmina__ssh_8h.html#a5b2c22bb155eee623a0a1f22293c4924">RemminaSSHTunnelCallback</a> <a class="code" href="struct___remmina_s_s_h_tunnel.html#a8066492c4a0181f1b39b2fb2098fb56d">init_func</a>;</div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#aa904bb1d9f643f6fde2b0eea4a8b1660"> 174</a></span>&#160; <a class="code" href="remmina__ssh_8h.html#a5b2c22bb155eee623a0a1f22293c4924">RemminaSSHTunnelCallback</a> <a class="code" href="struct___remmina_s_s_h_tunnel.html#aa904bb1d9f643f6fde2b0eea4a8b1660">connect_func</a>;</div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c"> 175</a></span>&#160; <a class="code" href="remmina__ssh_8h.html#a5b2c22bb155eee623a0a1f22293c4924">RemminaSSHTunnelCallback</a> <a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>;</div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#a6f2cd8a2535e180e7bd428e84030ffb6"> 176</a></span>&#160; gpointer <a class="code" href="struct___remmina_s_s_h_tunnel.html#a6f2cd8a2535e180e7bd428e84030ffb6">callback_data</a>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#a1e1f1bfaec497b1365ea70ebe795d778"> 178</a></span>&#160; <a class="code" href="remmina__ssh_8h.html#a5b2c22bb155eee623a0a1f22293c4924">RemminaSSHTunnelCallback</a> <a class="code" href="struct___remmina_s_s_h_tunnel.html#a1e1f1bfaec497b1365ea70ebe795d778">destroy_func</a>;</div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_tunnel.html#a33ae9b7cd8cb3dcd85223017dfd13795"> 179</a></span>&#160; gpointer <a class="code" href="struct___remmina_s_s_h_tunnel.html#a33ae9b7cd8cb3dcd85223017dfd13795">destroy_func_callback_data</a>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;};</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="comment">/* Create a new SSH Tunnel session and connects to the SSH server */</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *<a class="code" href="remmina__ssh_8h.html#abf04fd329ab77bbd4f6aa1cb1eaa349d">remmina_ssh_tunnel_new_from_file</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="comment">/* Open the tunnel. A new thread will be started and listen on a local port.</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;<span class="comment"> * dest: The host:port of the remote destination</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="comment"> * local_port: The listening local port for the tunnel</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;gboolean <a class="code" href="remmina__ssh_8h.html#a52b3f47eac79f2781ba81d61505f4f53">remmina_ssh_tunnel_open</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, <span class="keyword">const</span> gchar *host, gint <a class="code" href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc">port</a>, gint local_port);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="comment">/* Cancel accepting any incoming tunnel request.</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="comment"> * Typically called after the connection has already been establish.</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__ssh_8h.html#ae9f52b1a3a545acae8c93007e20ec909">remmina_ssh_tunnel_cancel_accept</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="comment">/* Accept the X11 tunnel. A new thread will be started and connect to local display.</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="comment"> * cmd: The remote X11 application to be executed</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;gboolean <a class="code" href="remmina__ssh_8h.html#ac6d58beb4df141c6353e897c39748146">remmina_ssh_tunnel_x11</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, <span class="keyword">const</span> gchar *cmd);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="comment">/* start X Port Forwarding */</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;gboolean <a class="code" href="remmina__ssh_8h.html#aba49db2ced40e21e8adfad69dcfda2c4">remmina_ssh_tunnel_xport</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, gboolean bindlocalhost);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="comment">/* start reverse tunnel. A new thread will be started and waiting for incoming connection.</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="comment"> * port: the port listening on the remote server side.</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="comment"> * local_port: the port listening on the local side. When connection on the server side comes</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="comment"> * in, it will connect to the local port and create the tunnel. The caller should</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="comment"> * start listening on the local port before calling it or in connect_func callback.</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;gboolean <a class="code" href="remmina__ssh_8h.html#ae47c8270267b02b9c0ff5b36074101c2">remmina_ssh_tunnel_reverse</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, gint <a class="code" href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc">port</a>, gint local_port);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="comment">/* Tells if the tunnel is terminated after start */</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;gboolean <a class="code" href="remmina__ssh_8h.html#aeb20d31243a4d30e469a34fe01684e38">remmina_ssh_tunnel_terminated</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;<span class="comment">/* Free the tunnel */</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;<span class="comment">/*-----------------------------------------------------------------------------*</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="comment">* SSH sFTP *</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="comment">*-----------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="struct___remmina_s_f_t_p.html"> 223</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___remmina_s_f_t_p.html">_RemminaSFTP</a> {</div><div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="struct___remmina_s_f_t_p.html#a7dab48a7603f1dd6671a8dd1efe1958e"> 224</a></span>&#160; <a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> <a class="code" href="struct___remmina_s_f_t_p.html#a7dab48a7603f1dd6671a8dd1efe1958e">ssh</a>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="struct___remmina_s_f_t_p.html#adef92bcfa7b9a86debf0531d0239a5df"> 226</a></span>&#160; sftp_session <a class="code" href="struct___remmina_s_f_t_p.html#adef92bcfa7b9a86debf0531d0239a5df">sftp_sess</a>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;} <a class="code" href="remmina__ssh_8h.html#a8853669690f71506f9fe04ff08e2eaca">RemminaSFTP</a>;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="comment">/* Create a new SFTP session object from RemminaFile */</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<a class="code" href="struct___remmina_s_f_t_p.html">RemminaSFTP</a> *<a class="code" href="remmina__ssh_8h.html#a3d7138d9cbbe44aea15440436ce85d6e">remmina_sftp_new_from_file</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="comment">/* Create a new SFTP session object from existing SSH session */</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<a class="code" href="struct___remmina_s_f_t_p.html">RemminaSFTP</a> *<a class="code" href="remmina__ssh_8h.html#a1500d65d1f0751812f237c1cb4d15188">remmina_sftp_new_from_ssh</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="comment">/* open the SFTP session, assuming the session already authenticated */</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;gboolean <a class="code" href="remmina__ssh_8h.html#a1e09b32044c240a7dce0ad8afcbf0ff2">remmina_sftp_open</a>(<a class="code" href="struct___remmina_s_f_t_p.html">RemminaSFTP</a> *sftp);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="comment">/* Free the SFTP session */</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__ssh_8h.html#aaaf171c31b73f06f1026239253d9f6b9">remmina_sftp_free</a>(<a class="code" href="struct___remmina_s_f_t_p.html">RemminaSFTP</a> *sftp);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="comment">/*-----------------------------------------------------------------------------*</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="comment">* SSH Shell *</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="comment">*-----------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#a4c56936cde97775b102a3e7b48fe5a01"> 244</a></span>&#160;<span class="keyword">typedef</span> void (*<a class="code" href="remmina__ssh_8h.html#a4c56936cde97775b102a3e7b48fe5a01">RemminaSSHExitFunc</a>) (gpointer data);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;</div><div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_shell.html"> 246</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___remmina_s_s_h_shell.html">_RemminaSSHShell</a> {</div><div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_shell.html#af347a2bbe1bf439695d181387042b098"> 247</a></span>&#160; <a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> <a class="code" href="struct___remmina_s_s_h_shell.html#af347a2bbe1bf439695d181387042b098">ssh</a>;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;</div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_shell.html#ab02f57e79ea0ba35f8a3788ef01a707f"> 249</a></span>&#160; gint <a class="code" href="struct___remmina_s_s_h_shell.html#ab02f57e79ea0ba35f8a3788ef01a707f">master</a>;</div><div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6"> 250</a></span>&#160; gint <a class="code" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6">slave</a>;</div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_shell.html#a2d56befd61e28b83f90fe3eff0e6dfe7"> 251</a></span>&#160; gchar * <a class="code" href="struct___remmina_s_s_h_shell.html#a2d56befd61e28b83f90fe3eff0e6dfe7">exec</a>;</div><div class="line"><a name="l00252"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_shell.html#a878854125f24a8de520ec91066d0d226"> 252</a></span>&#160; pthread_t <a class="code" href="struct___remmina_s_s_h_shell.html#a878854125f24a8de520ec91066d0d226">thread</a>;</div><div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_shell.html#a7c546634f855c217faa75ab4d4c7c2e2"> 253</a></span>&#160; ssh_channel <a class="code" href="struct___remmina_s_s_h_shell.html#a7c546634f855c217faa75ab4d4c7c2e2">channel</a>;</div><div class="line"><a name="l00254"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_shell.html#a6b2e8c1d9705b4c5b64a0e07a1159e80"> 254</a></span>&#160; gboolean <a class="code" href="struct___remmina_s_s_h_shell.html#a6b2e8c1d9705b4c5b64a0e07a1159e80">closed</a>;</div><div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_shell.html#a88090ecb372853a19640c883f5bf606a"> 255</a></span>&#160; <a class="code" href="remmina__ssh_8h.html#a4c56936cde97775b102a3e7b48fe5a01">RemminaSSHExitFunc</a> <a class="code" href="struct___remmina_s_s_h_shell.html#a88090ecb372853a19640c883f5bf606a">exit_callback</a>;</div><div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="struct___remmina_s_s_h_shell.html#adedb04066148973fed2de9f04b80286d"> 256</a></span>&#160; gpointer <a class="code" href="struct___remmina_s_s_h_shell.html#adedb04066148973fed2de9f04b80286d">user_data</a>;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;} <a class="code" href="remmina__ssh_8h.html#a1dd627c6195e879ba5ca12f5d590b10d">RemminaSSHShell</a>;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="comment">/* Create a new SSH Shell session object from RemminaFile */</span></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *<a class="code" href="remmina__ssh_8h.html#a30412e0b4302f5ae0b9be2749390a48d">remmina_ssh_shell_new_from_file</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="comment">/* Create a new SSH Shell session object from existing SSH session */</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *<a class="code" href="remmina__ssh_8h.html#ae0792ddb4adcaafefc1a4604cefdd8f4">remmina_ssh_shell_new_from_ssh</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="comment">/* open the SSH Shell, assuming the session already authenticated */</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;gboolean <a class="code" href="remmina__ssh_8h.html#a1c095a955af21b3ed9952ba2ea94691b">remmina_ssh_shell_open</a>(<a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *shell, <a class="code" href="remmina__ssh_8h.html#a4c56936cde97775b102a3e7b48fe5a01">RemminaSSHExitFunc</a> exit_callback, gpointer data);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="comment">/* Change the SSH Shell terminal size */</span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__ssh_8h.html#ac2d3f3b6550e4d1fe4caabe1df6af508">remmina_ssh_shell_set_size</a>(<a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *shell, gint columns, gint rows);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="comment">/* Free the SFTP session */</span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__ssh_8h.html#a316f97b879e147ec52967344f6ad1d84">remmina_ssh_shell_free</a>(<a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *shell);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;G_END_DECLS</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="preprocessor">#define RemminaSSH void</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;<span class="preprocessor">#define RemminaSSHTunnel void</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;<span class="preprocessor">#define RemminaSFTP void</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;<span class="preprocessor">#define RemminaSSHShell void</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;<span class="keyword">typedef</span> void (*<a class="code" href="remmina__ssh_8h.html#a5b2c22bb155eee623a0a1f22293c4924">RemminaSSHTunnelCallback</a>)(void);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* HAVE_LIBSSH */</span><span class="preprocessor"></span></div><div class="ttc" id="struct___remmina_s_s_h_tunnel_html"><div class="ttname"><a href="struct___remmina_s_s_h_tunnel.html">_RemminaSSHTunnel</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00144">remmina_ssh.h:144</a></div></div>
<div class="ttc" id="remmina__ssh_8h_html_a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f"><div class="ttname"><a href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00107">remmina_ssh.h:107</a></div></div>
<div class="ttc" id="remmina__ssh_8h_html_afd166711167c39b8c1f6e8be3eb0c4e0"><div class="ttname"><a href="remmina__ssh_8h.html#afd166711167c39b8c1f6e8be3eb0c4e0">RemminaSSHTunnelBuffer</a></div><div class="ttdeci">struct _RemminaSSHTunnelBuffer RemminaSSHTunnelBuffer</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00132">remmina_ssh.h:132</a></div></div>
<div class="ttc" id="struct___remmina_s_s_h_tunnel_html_a4d61f0c0926686f8451dcf49d2d857da"><div class="ttname"><a href="struct___remmina_s_s_h_tunnel.html#a4d61f0c0926686f8451dcf49d2d857da">_RemminaSSHTunnel::dest</a></div><div class="ttdeci">gchar * dest</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00165">remmina_ssh.h:165</a></div></div>