net-ssh 0.6.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+ !]