net-ssh 0.6.0 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (166) hide show
  1. data/doc/manual-html/chapter-1.html +59 -24
  2. data/doc/manual-html/chapter-2.html +116 -77
  3. data/doc/manual-html/chapter-3.html +80 -41
  4. data/doc/manual-html/chapter-4.html +111 -71
  5. data/doc/manual-html/chapter-5.html +267 -155
  6. data/doc/manual-html/chapter-6.html +211 -75
  7. data/doc/manual-html/chapter-7.html +331 -0
  8. data/doc/manual-html/index.html +39 -13
  9. data/doc/manual-html/{manual.css → stylesheets/manual.css} +81 -8
  10. data/doc/manual-html/stylesheets/ruby.css +17 -0
  11. data/doc/manual/chapter.erb +20 -0
  12. data/doc/manual/manual.rb +80 -9
  13. data/doc/manual/manual.yml +12 -2
  14. data/doc/manual/page.erb +1 -1
  15. data/doc/manual/parts/channels_callbacks.txt +11 -11
  16. data/doc/manual/parts/channels_loop.txt +6 -6
  17. data/doc/manual/parts/channels_open.txt +9 -9
  18. data/doc/manual/parts/exec_channels.txt +15 -15
  19. data/doc/manual/parts/exec_open.txt +17 -18
  20. data/doc/manual/parts/exec_popen3.txt +18 -18
  21. data/doc/manual/parts/forward_direct.txt +16 -16
  22. data/doc/manual/parts/forward_intro.txt +7 -7
  23. data/doc/manual/parts/forward_local.txt +9 -9
  24. data/doc/manual/parts/forward_remote.txt +9 -9
  25. data/doc/manual/parts/intro_getting.txt +11 -11
  26. data/doc/manual/parts/proxy_http.txt +27 -27
  27. data/doc/manual/parts/proxy_socks.txt +17 -17
  28. data/doc/manual/parts/session_key.txt +13 -14
  29. data/doc/manual/parts/session_options.txt +14 -14
  30. data/doc/manual/parts/session_session.txt +9 -9
  31. data/doc/manual/parts/session_start.txt +27 -27
  32. data/doc/manual/parts/shells_channels.txt +72 -0
  33. data/doc/manual/parts/shells_clients.txt +51 -0
  34. data/doc/manual/parts/shells_intro.txt +7 -0
  35. data/doc/manual/parts/shells_shell.txt +50 -0
  36. data/doc/manual/parts/shells_sync.txt +42 -0
  37. data/doc/manual/{manual.css → stylesheets/manual.css} +81 -8
  38. data/doc/manual/stylesheets/ruby.css +17 -0
  39. data/examples/channel-demo.rb +1 -1
  40. data/examples/port-forward.rb +1 -1
  41. data/examples/process-demo.rb +1 -1
  42. data/examples/remote-net-port-forward.rb +1 -1
  43. data/examples/remote-port-forward.rb +1 -1
  44. data/examples/shell-demo.rb +46 -0
  45. data/examples/ssh-client.rb +67 -0
  46. data/examples/sync-shell-demo.rb +69 -0
  47. data/examples/tail-demo.rb +1 -1
  48. data/lib/net/ssh.rb +1 -1
  49. data/lib/net/ssh/connection/channel.rb +61 -7
  50. data/lib/net/ssh/connection/constants.rb +1 -1
  51. data/lib/net/ssh/connection/driver.rb +61 -8
  52. data/lib/net/ssh/connection/services.rb +1 -1
  53. data/lib/net/ssh/connection/term.rb +1 -1
  54. data/lib/net/ssh/errors.rb +1 -1
  55. data/lib/net/ssh/proxy/errors.rb +1 -1
  56. data/lib/net/ssh/proxy/http.rb +1 -1
  57. data/lib/net/ssh/proxy/socks4.rb +1 -1
  58. data/lib/net/ssh/proxy/socks5.rb +1 -1
  59. data/lib/net/ssh/service/forward/driver.rb +1 -1
  60. data/lib/net/ssh/service/forward/local-network-handler.rb +1 -1
  61. data/lib/net/ssh/service/forward/remote-network-handler.rb +1 -1
  62. data/lib/net/ssh/service/forward/services.rb +1 -1
  63. data/lib/net/ssh/service/process/driver.rb +1 -1
  64. data/lib/net/ssh/service/process/open.rb +1 -1
  65. data/lib/net/ssh/service/process/popen3.rb +20 -2
  66. data/lib/net/ssh/service/process/services.rb +1 -1
  67. data/lib/net/ssh/service/services.rb +3 -1
  68. data/lib/net/ssh/service/shell/driver.rb +86 -0
  69. data/lib/net/ssh/service/shell/services.rb +54 -0
  70. data/lib/net/ssh/service/shell/shell.rb +213 -0
  71. data/lib/net/ssh/service/shell/sync.rb +114 -0
  72. data/lib/net/ssh/session.rb +9 -1
  73. data/lib/net/ssh/transport/algorithm-negotiator.rb +1 -1
  74. data/lib/net/ssh/transport/compress/compressor.rb +1 -1
  75. data/lib/net/ssh/transport/compress/decompressor.rb +1 -1
  76. data/lib/net/ssh/transport/compress/none-compressor.rb +1 -1
  77. data/lib/net/ssh/transport/compress/none-decompressor.rb +1 -1
  78. data/lib/net/ssh/transport/compress/services.rb +1 -1
  79. data/lib/net/ssh/transport/compress/zlib-compressor.rb +1 -1
  80. data/lib/net/ssh/transport/compress/zlib-decompressor.rb +1 -1
  81. data/lib/net/ssh/transport/constants.rb +1 -1
  82. data/lib/net/ssh/transport/errors.rb +1 -1
  83. data/lib/net/ssh/transport/identity-cipher.rb +1 -1
  84. data/lib/net/ssh/transport/kex/dh-gex.rb +1 -1
  85. data/lib/net/ssh/transport/kex/dh.rb +1 -1
  86. data/lib/net/ssh/transport/kex/services.rb +1 -1
  87. data/lib/net/ssh/transport/ossl/buffer-factory.rb +1 -1
  88. data/lib/net/ssh/transport/ossl/buffer.rb +1 -1
  89. data/lib/net/ssh/transport/ossl/cipher-factory.rb +1 -1
  90. data/lib/net/ssh/transport/ossl/digest-factory.rb +1 -1
  91. data/lib/net/ssh/transport/ossl/hmac-factory.rb +1 -1
  92. data/lib/net/ssh/transport/ossl/hmac/hmac.rb +1 -1
  93. data/lib/net/ssh/transport/ossl/hmac/md5-96.rb +1 -1
  94. data/lib/net/ssh/transport/ossl/hmac/md5.rb +1 -1
  95. data/lib/net/ssh/transport/ossl/hmac/none.rb +1 -1
  96. data/lib/net/ssh/transport/ossl/hmac/services.rb +1 -1
  97. data/lib/net/ssh/transport/ossl/hmac/sha1-96.rb +1 -1
  98. data/lib/net/ssh/transport/ossl/hmac/sha1.rb +1 -1
  99. data/lib/net/ssh/transport/ossl/key-factory.rb +5 -2
  100. data/lib/net/ssh/transport/ossl/services.rb +1 -1
  101. data/lib/net/ssh/transport/packet-stream.rb +1 -1
  102. data/lib/net/ssh/transport/services.rb +1 -1
  103. data/lib/net/ssh/transport/session.rb +10 -1
  104. data/lib/net/ssh/transport/version-negotiator.rb +1 -1
  105. data/lib/net/ssh/userauth/agent.rb +1 -1
  106. data/lib/net/ssh/userauth/constants.rb +1 -1
  107. data/lib/net/ssh/userauth/driver.rb +1 -1
  108. data/lib/net/ssh/userauth/methods/hostbased.rb +1 -1
  109. data/lib/net/ssh/userauth/methods/keyboard-interactive.rb +104 -0
  110. data/lib/net/ssh/userauth/methods/password.rb +1 -1
  111. data/lib/net/ssh/userauth/methods/publickey.rb +1 -1
  112. data/lib/net/ssh/userauth/methods/services.rb +28 -6
  113. data/lib/net/ssh/userauth/services.rb +8 -5
  114. data/lib/net/ssh/userauth/userkeys.rb +1 -1
  115. data/lib/net/ssh/util/buffer.rb +1 -1
  116. data/lib/net/ssh/util/openssl.rb +1 -1
  117. data/lib/net/ssh/util/prompter.rb +1 -1
  118. data/lib/net/ssh/version.rb +2 -2
  119. data/test/ALL-TESTS.rb +1 -1
  120. data/test/connection/tc_channel.rb +1 -1
  121. data/test/connection/tc_driver.rb +1 -1
  122. data/test/connection/tc_integration.rb +1 -1
  123. data/test/proxy/tc_http.rb +1 -1
  124. data/test/proxy/tc_socks4.rb +1 -1
  125. data/test/proxy/tc_socks5.rb +1 -1
  126. data/test/service/forward/tc_driver.rb +1 -1
  127. data/test/service/forward/tc_local_network_handler.rb +1 -1
  128. data/test/service/forward/tc_remote_network_handler.rb +1 -1
  129. data/test/service/process/tc_driver.rb +1 -1
  130. data/test/service/process/tc_integration.rb +1 -1
  131. data/test/service/process/tc_open.rb +1 -1
  132. data/test/service/process/tc_popen3.rb +13 -13
  133. data/test/tc_integration.rb +1 -1
  134. data/test/transport/compress/tc_none_compress.rb +1 -1
  135. data/test/transport/compress/tc_none_decompress.rb +1 -1
  136. data/test/transport/compress/tc_zlib_compress.rb +1 -1
  137. data/test/transport/compress/tc_zlib_decompress.rb +1 -1
  138. data/test/transport/kex/tc_dh.rb +2 -1
  139. data/test/transport/kex/tc_dh_gex.rb +1 -1
  140. data/test/transport/ossl/hmac/tc_hmac.rb +1 -1
  141. data/test/transport/ossl/hmac/tc_md5.rb +1 -1
  142. data/test/transport/ossl/hmac/tc_md5_96.rb +1 -1
  143. data/test/transport/ossl/hmac/tc_none.rb +1 -1
  144. data/test/transport/ossl/hmac/tc_sha1.rb +1 -1
  145. data/test/transport/ossl/hmac/tc_sha1_96.rb +1 -1
  146. data/test/transport/ossl/tc_buffer.rb +1 -1
  147. data/test/transport/ossl/tc_buffer_factory.rb +1 -1
  148. data/test/transport/ossl/tc_cipher_factory.rb +1 -1
  149. data/test/transport/ossl/tc_digest_factory.rb +1 -1
  150. data/test/transport/ossl/tc_hmac_factory.rb +1 -1
  151. data/test/transport/ossl/tc_key_factory.rb +1 -1
  152. data/test/transport/tc_algorithm_negotiator.rb +1 -1
  153. data/test/transport/tc_identity_cipher.rb +1 -1
  154. data/test/transport/tc_integration.rb +1 -1
  155. data/test/transport/tc_packet_stream.rb +1 -1
  156. data/test/transport/tc_session.rb +1 -1
  157. data/test/transport/tc_version_negotiator.rb +1 -1
  158. data/test/userauth/methods/tc_hostbased.rb +1 -1
  159. data/test/userauth/methods/tc_password.rb +1 -1
  160. data/test/userauth/methods/tc_publickey.rb +1 -1
  161. data/test/userauth/tc_agent.rb +1 -1
  162. data/test/userauth/tc_driver.rb +1 -1
  163. data/test/userauth/tc_integration.rb +15 -1
  164. data/test/userauth/tc_userkeys.rb +1 -1
  165. data/test/util/tc_buffer.rb +5 -5
  166. metadata +26 -6
@@ -1,7 +1,7 @@
1
1
  <html>
2
2
  <head>
3
3
  <title>Net::SSH Manual</title>
4
- <link type="text/css" rel="stylesheet" href="manual.css" />
4
+ <link type="text/css" rel="stylesheet" href="stylesheets/manual.css" />
5
5
  </head>
6
6
 
7
7
  <body>
@@ -14,8 +14,8 @@
14
14
  </div>
15
15
  </td><td valign='middle' align='right'>
16
16
  <div class="info">
17
- Net::SSH Version: <strong>0.6.0</strong><br />
18
- Manual Last Updated: <strong>2004-12-02 05:13 GMT</strong>
17
+ Net::SSH Version: <strong>0.9.0</strong><br />
18
+ Manual Last Updated: <strong>2005-01-11 21:39 GMT</strong>
19
19
  </div>
20
20
  </td></tr>
21
21
  </table>
@@ -110,36 +110,56 @@
110
110
 
111
111
  <li>
112
112
  <a href="chapter-5.html">
113
- Port Forwarding
113
+ User Shells
114
114
  </a>
115
115
 
116
116
  <ol type="1">
117
117
 
118
118
  <li><a href="chapter-5.html#s1">Introduction</a></li>
119
119
 
120
- <li><a href="chapter-5.html#s2">Local-to-Remote</a></li>
120
+ <li><a href="chapter-5.html#s2">Using Channels</a></li>
121
121
 
122
- <li><a href="chapter-5.html#s3">Remote-to-Local</a></li>
122
+ <li><a href="chapter-5.html#s3">Shell Service</a></li>
123
123
 
124
- <li><a href="chapter-5.html#s4">Direct Channels</a></li>
124
+ <li><a href="chapter-5.html#s4">SyncShell Service</a></li>
125
125
 
126
- <li><a href="chapter-5.html#s5">Remote-to-Local Handlers</a></li>
126
+ <li><a href="chapter-5.html#s5">Terminal Clients</a></li>
127
127
 
128
128
  </ol>
129
129
  </li>
130
130
 
131
131
  <li>
132
132
  <a href="chapter-6.html">
133
- Using Proxies
133
+ Port Forwarding
134
134
  </a>
135
135
 
136
136
  <ol type="1">
137
137
 
138
138
  <li><a href="chapter-6.html#s1">Introduction</a></li>
139
139
 
140
- <li><a href="chapter-6.html#s2"><span class="caps">HTTP</span></a></li>
140
+ <li><a href="chapter-6.html#s2">Local-to-Remote</a></li>
141
+
142
+ <li><a href="chapter-6.html#s3">Remote-to-Local</a></li>
143
+
144
+ <li><a href="chapter-6.html#s4">Direct Channels</a></li>
145
+
146
+ <li><a href="chapter-6.html#s5">Remote-to-Local Handlers</a></li>
147
+
148
+ </ol>
149
+ </li>
150
+
151
+ <li>
152
+ <a href="chapter-7.html">
153
+ Using Proxies
154
+ </a>
155
+
156
+ <ol type="1">
157
+
158
+ <li><a href="chapter-7.html#s1">Introduction</a></li>
159
+
160
+ <li><a href="chapter-7.html#s2"><span class="caps">HTTP</span></a></li>
141
161
 
142
- <li><a href="chapter-6.html#s3"><span class="caps">SOCKS</span></a></li>
162
+ <li><a href="chapter-7.html#s3"><span class="caps">SOCKS</span></a></li>
143
163
 
144
164
  </ol>
145
165
  </li>
@@ -196,14 +216,20 @@
196
216
  <table border='0' cellpadding='0' cellspacing='0' align='center'><tr><td>
197
217
  <ul>
198
218
 
199
- <li>New Net::SSH Version</li>
219
+ <li>Next/Previous links on each chapter for easier navigation</li>
220
+
221
+ <li>Shell service</li>
222
+
223
+ <li>Enhancements to the channel and connection interfaces</li>
224
+
225
+ <li>Keyboard-interactive authentication method</li>
200
226
 
201
227
  </ul>
202
228
  </table>
203
229
 
204
230
 
205
231
  <p class="copyright">
206
- Copyright &copy; 2004
232
+ Copyright &copy; 20042005
207
233
  Jamis Buck
208
234
  (<a href="mailto:jgb3@email.byu.edu">jgb3@email.byu.edu</a>)
209
235
  </p>
@@ -107,12 +107,6 @@ a:hover {
107
107
  text-align: justify;
108
108
  }
109
109
 
110
- #content pre {
111
- background: #FFE;
112
- border: 1px dotted #AAA;
113
- padding: 1em;
114
- }
115
-
116
110
  #content h1 {
117
111
  background: #005;
118
112
  color: #FFF;
@@ -186,7 +180,86 @@ a:hover {
186
180
  text-align: center;
187
181
  }
188
182
 
189
- table.list td {
190
- border-bottom: 1px dotted #005;
183
+ table.list {
184
+ margin: 2em;
185
+ border: 1px solid black;
186
+ background: #FFD;
187
+ padding: 0px;
188
+ border-spacing: 0px;
189
+ }
190
+
191
+ table.list th {
192
+ border-bottom: 1px solid #005;
191
193
  padding-bottom: 5px;
194
+ background: #008;
195
+ color: white;
196
+ padding: 0.5em;
197
+ text-align: left;
198
+ }
199
+
200
+ table.list td {
201
+ padding: 0.2em;
202
+ text-align: left;
203
+ vertical-align: top;
204
+ border-bottom: 1px solid;
205
+ }
206
+
207
+ .prevnext {
208
+ padding: 0.5em 1em 0.5em 1em;
209
+ background: #557;
210
+ color: #FFF;
211
+ font-size: small;
212
+ font-weight: bold;
213
+ border: 1px solid #000;
214
+ }
215
+
216
+ .prevnext a {
217
+ color: #FF0;
218
+ }
219
+
220
+ .top .prevnext {
221
+ margin: 0 0 1em 0;
222
+ text-align: left;
223
+ }
224
+
225
+ .bottom .prevnext {
226
+ margin: 1em 0 0 0;
227
+ text-align: right;
228
+ }
229
+
230
+ .figure {
231
+ border: 1px solid black;
232
+ line-height: normal;
233
+ background: #FFD;
234
+ margin: 2em;
235
+ }
236
+
237
+ .figure .caption {
238
+ background: #008;
239
+ color: white;
240
+ font-weight: bold;
241
+ font-size: small;
242
+ padding: 4px 24px 4px 8px;
243
+ margin-left: -4px;
244
+ border: 1px dotted #77F;
245
+ }
246
+
247
+ .figure .body {
248
+ padding-left: 1em;
249
+ }
250
+
251
+ .figure pre {
252
+ padding: 0px;
253
+ background: transparent;
254
+ border: none;
255
+ font-size: small;
256
+ font-family: mono;
257
+ }
258
+
259
+ .figure .lineno {
260
+ text-align: right;
261
+ color: #B00;
262
+ font-family: mono;
263
+ font-size: small;
264
+ padding-right: 1em;
192
265
  }
@@ -0,0 +1,17 @@
1
+ .ruby .normal {}
2
+ .ruby .comment { color: #005; font-style: italic; }
3
+ .ruby .keyword { color: #A00; font-weight: bold; }
4
+ .ruby .method { color: #077; }
5
+ .ruby .class { color: #074; }
6
+ .ruby .module { color: #050; }
7
+ .ruby .punct { color: #447; font-weight: bold; }
8
+ .ruby .symbol { color: #099; }
9
+ .ruby .string { color: #944; }
10
+ .ruby .char { color: #F07; }
11
+ .ruby .ident { color: #004; }
12
+ .ruby .constant { color: #07F; }
13
+ .ruby .regex { color: #B66; }
14
+ .ruby .number { color: #D55; }
15
+ .ruby .attribute { color: #377; }
16
+ .ruby .global { color: #3B7; }
17
+ .ruby .expr { color: #227; }
@@ -1,3 +1,13 @@
1
+ <div class="top"><div class="prevnext">
2
+ <% if previous_chapter %>
3
+ <a href="chapter-<%= previous_chapter.index %>.html">Previous (<%= previous_chapter.index %>. <%= previous_chapter.title %>)</a> |
4
+ <% end %>
5
+ <a href="index.html">Up</a>
6
+ <% if next_chapter %>
7
+ | <a href="chapter-<%= next_chapter.index %>.html">Next (<%= next_chapter.index %>. <%= next_chapter.title %>)</a>
8
+ <% end %>
9
+ </div></div>
10
+
1
11
  <h1><%= object.index %>. <%= object.title %></h1>
2
12
 
3
13
  <% object.sections.each do |section|
@@ -16,3 +26,13 @@
16
26
  </div>
17
27
 
18
28
  <% end %>
29
+
30
+ <div class="bottom"><div class="prevnext">
31
+ <% if previous_chapter %>
32
+ <a href="chapter-<%= previous_chapter.index %>.html">Previous (<%= previous_chapter.index %>. <%= previous_chapter.title %>)</a> |
33
+ <% end %>
34
+ <a href="index.html">Up</a>
35
+ <% if next_chapter %>
36
+ | <a href="chapter-<%= next_chapter.index %>.html">Next (<%= next_chapter.index %>. <%= next_chapter.title %>)</a>
37
+ <% end %>
38
+ </div></div>
data/doc/manual/manual.rb CHANGED
@@ -11,6 +11,7 @@ require 'erb'
11
11
  require 'fileutils'
12
12
  require 'yaml'
13
13
  require 'redcloth'
14
+ require 'syntax/convertors/html'
14
15
 
15
16
  module Needle
16
17
  module Manual
@@ -100,10 +101,79 @@ module Needle
100
101
  def initialize( index, title, content )
101
102
  @index = index
102
103
  @title = RedCloth.new( title ).to_html.gsub( %r{</?p>}, "" ) if title
103
- @content = RedCloth.new( content || "" )
104
+ @content = FigureContainer.new( content || "" )
104
105
  end
105
106
  end
106
107
 
108
+ class FigureContainer
109
+ def initialize( content )
110
+ @content = content
111
+ @html = nil
112
+ end
113
+
114
+ def to_html
115
+ return @html if @html
116
+ extract_figures
117
+ convert_to_html
118
+ replace_figures
119
+ @html
120
+ end
121
+
122
+ private
123
+
124
+ Figure = Struct.new( :opts, :body )
125
+
126
+ def extract_figures
127
+ @figures = []
128
+ @content.gsub!( /^\[!figure( .*?)?\n(.*?)\n!\]$/m ) do
129
+ body = $2.strip
130
+ opts = Hash[*$1.strip.split(/,/).map{|p| p.split(/=/)}.flatten]
131
+ @figures << Figure.new( opts, body )
132
+ "====#{@figures.length-1}===="
133
+ end
134
+ end
135
+
136
+ def convert_to_html
137
+ @html = ( @content.length < 1 ? "" :
138
+ RedCloth.new( @content ).to_html )
139
+ end
140
+
141
+ def replace_figures
142
+ @html.gsub!( /<p>====(.*?)====<\/p>/ ) do
143
+ figure = @figures[$1.to_i]
144
+ lang = figure.opts["lang"]
145
+ caption = figure.opts["caption"] || "Figure"
146
+ caption << " [#{lang}]" if lang
147
+
148
+ body = figure.body
149
+
150
+ if lang
151
+ convertor = Syntax::Convertors::HTML.for_syntax( lang )
152
+
153
+ body = "<link rel='stylesheet' type='text/css' " +
154
+ "href='stylesheets/#{lang}.css' />" +
155
+ "<div class='#{lang}'>" +
156
+ convertor.convert( body ) +
157
+ "</div>"
158
+ end
159
+
160
+ if figure.opts["number"] && eval(figure.opts["number"])
161
+ line = 1
162
+ numbers = ""
163
+ body.each_line { numbers << "#{line}<br />"; line += 1 }
164
+ body = "<table border='0' cellpadding='0' cellspacing='0'>" +
165
+ "<tr><td class='lineno'>#{numbers}</td>" +
166
+ "<td width='100%'>#{body}</td></tr></table>"
167
+ end
168
+
169
+ "<div class='figure'>\n" +
170
+ "<span class='caption'>#{caption}</span>\n" +
171
+ "<div class='body'>#{body}</div>" +
172
+ "</div>"
173
+ end
174
+ end
175
+ end
176
+
107
177
  YAML.add_private_type( 'file' ) { |type_id, value| File.read( value ) rescue "" }
108
178
  YAML.add_private_type( 'eval' ) { |type_id, value| eval( value ) }
109
179
 
@@ -177,7 +247,7 @@ if __FILE__ == $0
177
247
  exit
178
248
  end
179
249
 
180
- Dir.mkdir output_path rescue nil
250
+ FileUtils.mkdir_p File.join( output_path, "stylesheets" )
181
251
 
182
252
  log_action "Loading manual.yml..."
183
253
  manual = Needle::Manual::Manual.load( 'manual.yml' )
@@ -200,11 +270,15 @@ if __FILE__ == $0
200
270
  template = File.open( "chapter.erb" ) { |file| ERB.new( file.read ) }
201
271
  template.filename = "chapter.erb"
202
272
 
203
- manual.chapters.each do |object|
273
+ manual.chapters.each_with_index do |object,index|
204
274
  log_action "Processing chapter ##{object.index}..."
275
+
276
+ previous_chapter = ( index < 1 ? nil : manual.chapters[index-1] )
277
+ next_chapter = manual.chapters[index+1]
278
+
205
279
  File.open( File.join( output_path, "chapter-#{object.index}.html" ), "w" ) do |file|
206
- guts = template.result
207
- file << page.result
280
+ guts = template.result( binding )
281
+ file << page.result( binding )
208
282
  end
209
283
  end
210
284
 
@@ -231,10 +305,7 @@ if __FILE__ == $0
231
305
  # end
232
306
 
233
307
  log_action "Copying style sheets..."
234
- FileUtils.cp Dir["*.css"], output_path
235
-
236
- log_action "Copying images..."
237
- FileUtils.cp Dir["img/*.jpg"], output_path
308
+ FileUtils.cp Dir["stylesheets/*.css"], File.join( output_path, "stylesheets" )
238
309
 
239
310
  log_action "Done!"
240
311
  end
@@ -6,7 +6,7 @@
6
6
  # http://creativecommons.org/licenses/by-sa/2.0/
7
7
 
8
8
  meta: !^meta
9
- copyright: 2004
9
+ copyright: 2004,2005
10
10
  author: Jamis Buck
11
11
  email: jgb3@email.byu.edu
12
12
 
@@ -23,7 +23,10 @@ product: !^product
23
23
  - Net::SSH Wiki: http://net-ssh.rubyforge.org/wiki/wiki.pl
24
24
 
25
25
  recent_updates:
26
- - "New Net::SSH Version"
26
+ - "Next/Previous links on each chapter for easier navigation"
27
+ - "Shell service"
28
+ - "Enhancements to the channel and connection interfaces"
29
+ - "Keyboard-interactive authentication method"
27
30
 
28
31
  chapters:
29
32
 
@@ -54,6 +57,13 @@ chapters:
54
57
  - "Using #process.open": !!file parts/exec_open.txt
55
58
  - "Using #process.popen3": !!file parts/exec_popen3.txt
56
59
 
60
+ - User Shells:
61
+ - Introduction: !!file parts/shells_intro.txt
62
+ - Using Channels: !!file parts/shells_channels.txt
63
+ - Shell Service: !!file parts/shells_shell.txt
64
+ - SyncShell Service: !!file parts/shells_sync.txt
65
+ - Terminal Clients: !!file parts/shells_clients.txt
66
+
57
67
  - Port Forwarding:
58
68
  - Introduction: !!file parts/forward_intro.txt
59
69
  - Local-to-Remote: !!file parts/forward_local.txt
data/doc/manual/page.erb CHANGED
@@ -1,7 +1,7 @@
1
1
  <html>
2
2
  <head>
3
3
  <title><%= manual.product.name %> Manual<% if object %> :: <%= object.page_title %><% end %></title>
4
- <link type="text/css" rel="stylesheet" href="manual.css" />
4
+ <link type="text/css" rel="stylesheet" href="stylesheets/manual.css" />
5
5
  </head>
6
6
 
7
7
  <body>
@@ -17,16 +17,16 @@ In general, you will never need to register callbacks for @on_failure@, @on_requ
17
17
 
18
18
  Following is an example of registering callbacks on a channel:
19
19
 
20
- <pre>
21
- Net::SSH.start( 'host' ) do |session|
22
- session.open_channel do |channel|
23
- channel.on_close do |ch|
24
- puts "channel closed successfully."
25
- end
26
- puts "closing channel..."
27
- channel.close
20
+ [!figure lang=ruby,caption=Registering callbacks on a channel,number=true
21
+ Net::SSH.start( 'host' ) do |session|
22
+ session.open_channel do |channel|
23
+ channel.on_close do |ch|
24
+ puts "channel closed successfully."
28
25
  end
29
-
30
- session.loop
26
+ puts "closing channel..."
27
+ channel.close
31
28
  end
32
- </pre>
29
+
30
+ session.loop
31
+ end
32
+ !]