ftp_paradise 1.4.5 → 1.5.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +155 -28
  3. data/bin/{iftp → ftp_paradise_shell} +1 -1
  4. data/doc/README.gen +97 -15
  5. data/doc/todo/{TODO_FOR_FTP_PARADISE_PROJECT.md → todo_for_the_ftp_paradise_project.md} +11 -1
  6. data/ftp_paradise.gemspec +30 -39
  7. data/lib/ftp_paradise/base/base.rb +375 -0
  8. data/lib/ftp_paradise/colours/colours.rb +27 -27
  9. data/lib/ftp_paradise/colours/use_colours.rb +6 -1
  10. data/lib/ftp_paradise/configuration/configuration.rb +7 -4
  11. data/lib/ftp_paradise/connection/README.md +0 -0
  12. data/lib/ftp_paradise/connection/connection.rb +2782 -15
  13. data/lib/ftp_paradise/constants/constants.rb +91 -5
  14. data/lib/ftp_paradise/entry/entry.rb +42 -5
  15. data/lib/ftp_paradise/{connection → gui/gtk3/ftp_client}/constants.rb +33 -21
  16. data/lib/ftp_paradise/gui/{shared_code/ftp_paradise/ftp_paradise_module.rb → gtk3/ftp_client/ftp_client.rb} +658 -170
  17. data/lib/ftp_paradise/gui/gtk3/ftp_client/misc.rb +27 -0
  18. data/lib/ftp_paradise/project/project.rb +11 -15
  19. data/lib/ftp_paradise/requires/require_class_connection.rb +7 -0
  20. data/lib/ftp_paradise/requires/require_net_ftp.rb +7 -0
  21. data/lib/ftp_paradise/requires/require_the_ftp_paradise_project.rb +4 -3
  22. data/lib/ftp_paradise/requires/require_the_ftp_paradise_project_with_the_GUI_bindings.rb +1 -1
  23. data/lib/ftp_paradise/requires/require_the_toplevel_methods.rb +1 -0
  24. data/lib/ftp_paradise/{interactive_ftp → shell}/menu.rb +564 -449
  25. data/lib/ftp_paradise/shell/shell.rb +2321 -0
  26. data/lib/ftp_paradise/toplevel_methods/connect.rb +3 -0
  27. data/lib/ftp_paradise/toplevel_methods/dataset.rb +111 -0
  28. data/lib/ftp_paradise/toplevel_methods/file_related_actions.rb +4 -3
  29. data/lib/ftp_paradise/toplevel_methods/ftp_object.rb +6 -5
  30. data/lib/ftp_paradise/toplevel_methods/login_name.rb +6 -4
  31. data/lib/ftp_paradise/toplevel_methods/misc.rb +19 -0
  32. data/lib/ftp_paradise/toplevel_methods/opn.rb +1 -1
  33. data/lib/ftp_paradise/toplevel_methods/password.rb +4 -2
  34. data/lib/ftp_paradise/toplevel_methods/port.rb +4 -1
  35. data/lib/ftp_paradise/toplevel_methods/remote_url.rb +11 -5
  36. data/lib/ftp_paradise/toplevel_methods/upload_and_download.rb +1 -0
  37. data/lib/ftp_paradise/version/version.rb +6 -1
  38. data/lib/ftp_paradise/www/web_interface.cgi +1 -1
  39. data/lib/ftp_paradise/yaml/automatically_connect_on_startup_of_the_interactive_ftp_shell.yml +0 -0
  40. data/lib/ftp_paradise/yaml/debug.yml +0 -0
  41. data/lib/ftp_paradise/yaml/open_in_default_editor.yml +0 -0
  42. data/lib/ftp_paradise/yaml/show_full_names.yml +0 -0
  43. data/lib/ftp_paradise/yaml/use_colours.yml +0 -0
  44. data/test/testing_minimal_pure_net_ftp_example_to_connect.rb +13 -3
  45. metadata +52 -126
  46. data/lib/ftp_paradise/base/cliner.rb +0 -23
  47. data/lib/ftp_paradise/base/colours.rb +0 -83
  48. data/lib/ftp_paradise/base/prototype.rb +0 -171
  49. data/lib/ftp_paradise/base/reset.rb +0 -29
  50. data/lib/ftp_paradise/connection/data.rb +0 -164
  51. data/lib/ftp_paradise/connection/debug.rb +0 -78
  52. data/lib/ftp_paradise/connection/directory_handling.rb +0 -271
  53. data/lib/ftp_paradise/connection/do_login.rb +0 -108
  54. data/lib/ftp_paradise/connection/download.rb +0 -86
  55. data/lib/ftp_paradise/connection/file_handling.rb +0 -174
  56. data/lib/ftp_paradise/connection/ftp_object.rb +0 -21
  57. data/lib/ftp_paradise/connection/initialize.rb +0 -88
  58. data/lib/ftp_paradise/connection/initialize_a_new_net_ftp_object_with_this_url.rb +0 -20
  59. data/lib/ftp_paradise/connection/is_connected.rb +0 -46
  60. data/lib/ftp_paradise/connection/misc.rb +0 -474
  61. data/lib/ftp_paradise/connection/notify.rb +0 -71
  62. data/lib/ftp_paradise/connection/password.rb +0 -47
  63. data/lib/ftp_paradise/connection/port.rb +0 -33
  64. data/lib/ftp_paradise/connection/remote_pwd.rb +0 -72
  65. data/lib/ftp_paradise/connection/remote_url.rb +0 -164
  66. data/lib/ftp_paradise/connection/remove.rb +0 -143
  67. data/lib/ftp_paradise/connection/reset.rb +0 -78
  68. data/lib/ftp_paradise/connection/run.rb +0 -18
  69. data/lib/ftp_paradise/connection/set_array_available_hosts.rb +0 -27
  70. data/lib/ftp_paradise/connection/set_input.rb +0 -18
  71. data/lib/ftp_paradise/connection/show.rb +0 -153
  72. data/lib/ftp_paradise/connection/sync_ftp_object_onto_the_main_namespace.rb +0 -24
  73. data/lib/ftp_paradise/connection/transfer_mode.rb +0 -163
  74. data/lib/ftp_paradise/connection/upload.rb +0 -253
  75. data/lib/ftp_paradise/connection/use_default_dataset.rb +0 -40
  76. data/lib/ftp_paradise/connection/username.rb +0 -42
  77. data/lib/ftp_paradise/constants/misc.rb +0 -57
  78. data/lib/ftp_paradise/constants/namespace.rb +0 -14
  79. data/lib/ftp_paradise/constants/newline.rb +0 -14
  80. data/lib/ftp_paradise/constants/roebe.rb +0 -31
  81. data/lib/ftp_paradise/constants/roebe_ftp_constants.rb +0 -233
  82. data/lib/ftp_paradise/gui/gtk2/ftp_paradise.rb +0 -34
  83. data/lib/ftp_paradise/gui/gtk3/ftp_paradise.rb +0 -34
  84. data/lib/ftp_paradise/interactive_ftp/constants.rb +0 -103
  85. data/lib/ftp_paradise/interactive_ftp/directory_handling.rb +0 -216
  86. data/lib/ftp_paradise/interactive_ftp/help.rb +0 -50
  87. data/lib/ftp_paradise/interactive_ftp/initialize.rb +0 -27
  88. data/lib/ftp_paradise/interactive_ftp/interactive_ftp.rb +0 -998
  89. data/lib/ftp_paradise/interactive_ftp/main_loop.rb +0 -51
  90. data/lib/ftp_paradise/interactive_ftp/misc.rb +0 -208
  91. data/lib/ftp_paradise/interactive_ftp/mode.rb +0 -124
  92. data/lib/ftp_paradise/interactive_ftp/readline.rb +0 -113
  93. data/lib/ftp_paradise/interactive_ftp/remove.rb +0 -97
  94. data/lib/ftp_paradise/interactive_ftp/reset.rb +0 -90
  95. data/lib/ftp_paradise/interactive_ftp/run.rb +0 -22
  96. data/lib/ftp_paradise/interactive_ftp/show.rb +0 -184
  97. data/lib/ftp_paradise/interactive_ftp/upload.rb +0 -90
  98. data/lib/ftp_paradise/interactive_ftp/user_input.rb +0 -53
  99. data/lib/ftp_paradise/toplevel_methods/can_connect_to_remote_site.rb +0 -28
  100. data/lib/ftp_paradise/toplevel_methods/clear_user_dataset.rb +0 -28
  101. data/lib/ftp_paradise/toplevel_methods/data.rb +0 -31
  102. data/lib/ftp_paradise/toplevel_methods/determine_user_dataset_from_this_hash.rb +0 -37
@@ -1,164 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # Encoding: UTF-8
3
- # frozen_string_literal: true
4
- # =========================================================================== #
5
- # require 'ftp_paradise/connection/data.rb'
6
- # =========================================================================== #
7
- module FtpParadise
8
-
9
- class Connection
10
-
11
- require 'ftp_paradise/constants/roebe.rb'
12
-
13
- # ========================================================================= #
14
- # === set_data (all in one, set_data tag)
15
- #
16
- # This method sets:
17
- #
18
- # - host
19
- # - user name
20
- # - port and
21
- # - password
22
- #
23
- # This method is thus a nifty little convenience method. You can pass
24
- # a hash to it too, which is the recommended way to use this method.
25
- #
26
- # You can also use an Array (with 4 elements), in which case we will
27
- # process it one after the other. The reason for this procedure is
28
- # because we can also use yaml files that way, that also use the
29
- # exact order of elements.
30
- #
31
- # If you add a new entry to the case menu below, also add this to
32
- # ARRAY_AVAILABLE_HOSTS, please. That Array can be found in the
33
- # file 'constants/roebe_ftp_constants.rb'.
34
- # ========================================================================= #
35
- def set_data(
36
- i = 'default'
37
- ) # set the default here.
38
- if debug?
39
- opnn; e 'We will debug next, as the @debug variable was set to true.'
40
- pp i
41
- end
42
- # ======================================================================= #
43
- # === Handle Hash as input first
44
- # ======================================================================= #
45
- if i.is_a? Hash # Hash is treated differently.
46
-
47
- # ===================================================================== #
48
- # === :host
49
- # ===================================================================== #
50
- if i.has_key? :host
51
- set_host i.fetch(:host)
52
- elsif i.has_key? :remote_host
53
- set_host i.fetch(:remote_host)
54
- elsif i.has_key? :to # :to is an alias to :host.
55
- set_host i.fetch(:to)
56
- end
57
-
58
- # ===================================================================== #
59
- # === :user_name
60
- # ===================================================================== #
61
- if i.has_key? :user_name
62
- set_user_name i.fetch(:user_name)
63
- elsif i.has_key? :login_name
64
- set_user_name i.fetch(:login_name)
65
- end
66
-
67
- # ===================================================================== #
68
- # === :password
69
- # ===================================================================== #
70
- if i.has_key? :password
71
- set_password i.fetch(:password)
72
- elsif i.has_key? :login_password
73
- set_password i.fetch(:login_password)
74
- end
75
-
76
- # ===================================================================== #
77
- # === :port
78
- # ===================================================================== #
79
- if i.has_key? :port
80
- set_port i.fetch(:port)
81
- end
82
- # ======================================================================= #
83
- # === Handle Array as input next
84
- # ======================================================================= #
85
- elsif i.is_a? Array # Example-Array: ["ftp.byethost33.com", "b33_14144659", "1aaaaaa", 21]
86
- set_host i.first
87
- set_user_name i[1]
88
- set_password i[2]
89
- set_port i[3]
90
- # ======================================================================= #
91
- # === Else, use simple toggle commands, such as 1,2,3,4,5 and so forth.
92
- # ======================================================================= #
93
- else # In the following case menu you can toggle your FTP.
94
- case i.to_s # Work on strings only. Assumes shortcuts.
95
- # ===================================================================== #
96
- # === shevy
97
- #
98
- # This defaults to my home system.
99
- # ===================================================================== #
100
- when '6',
101
- /shevy/i,
102
- 'square',
103
- 'square7',
104
- 'bplaced',
105
- 'podserver',
106
- 'default',
107
- 'top' # Current default.
108
- _ = FILE_ROEBE_FTP
109
- if File.exist? _
110
- data = YAML.load_file(_)['podserver'] # 'bplaced'
111
- set_host data['url']
112
- set_user_name data['user_name']
113
- this_password = data['password']
114
- this_password.chop! if this_password.end_with? '_'
115
- set_password this_password
116
- set_port data['port']
117
- end
118
- # ===================================================================== #
119
- # === a1
120
- # ===================================================================== #
121
- when '1',
122
- 'a1',
123
- 'a1_ftp' # A1 FTP host. No longer in use but still kept.
124
- set_host A1.first
125
- set_user_name A1[1]
126
- set_password A1[2]
127
- set_port A1[3]
128
- # ===================================================================== #
129
- # === zymix
130
- # ===================================================================== #
131
- when '2',
132
- 'zymix',
133
- 'standard'
134
- set_host ZYMIX.first
135
- set_user_name ZYMIX[1]
136
- set_password ZYMIX[2]
137
- set_port ZYMIX[3]
138
- # ===================================================================== #
139
- # === uniwien
140
- # ===================================================================== #
141
- when '3',
142
- 'univie',
143
- 'uniwien' # Uni Wien FTP Account.
144
- set_host UNIVIE.first
145
- set_user_name UNIVIE[1]
146
- set_password UNIVIE[2]
147
- set_port UNIVIE[3]
148
- # ===================================================================== #
149
- # === byte
150
- # ===================================================================== #
151
- when '4',
152
- 'byte',
153
- 'bytehost'
154
- set_host BYTEHOST.first
155
- set_user_name BYTEHOST[1]
156
- set_password BYTEHOST[2]
157
- set_port BYTEHOST[3]
158
- else
159
- set_data(:default) # Go back to default again if not found.
160
- end
161
- end
162
- end
163
-
164
- end; end
@@ -1,78 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # Encoding: UTF-8
3
- # frozen_string_literal: true
4
- # =========================================================================== #
5
- # require 'ftp_paradise/connection/debug.rb'
6
- # =========================================================================== #
7
- module FtpParadise
8
-
9
- class Connection
10
-
11
- # ========================================================================= #
12
- # === set_debug
13
- # ========================================================================= #
14
- def set_debug(i = SHALL_WE_DEBUG)
15
- @internal_hash[:debug] = i
16
- end
17
-
18
- # ========================================================================= #
19
- # === enable_debug_mode
20
- #
21
- # When the debug mode is set to true, then all traffic to and from
22
- # the server is written to $stdout. By default, this will NOT
23
- # be the case.
24
- # ========================================================================= #
25
- def enable_debug_mode
26
- ftp_object?.debug_mode = true
27
- end
28
-
29
- # ========================================================================= #
30
- # === enable_debug
31
- #
32
- # Set the @debug variable to true, and also invoke enable_debug_mode().
33
- # ========================================================================= #
34
- def enable_debug
35
- enable_debug_mode
36
- set_debug(true)
37
- end
38
-
39
- # ========================================================================= #
40
- # === debug?
41
- # ========================================================================= #
42
- def debug?
43
- @internal_hash[:debug]
44
- end
45
-
46
- # ========================================================================= #
47
- # === disable_debug
48
- # ========================================================================= #
49
- def disable_debug
50
- ftp_object?.debug_mode = false
51
- @internal_hash[:debug] = false
52
- end
53
-
54
- # ========================================================================= #
55
- # === debug (debug tag)
56
- #
57
- # This method can be used for some debugging output.
58
- # ========================================================================= #
59
- def debug(
60
- shall_we_debug = debug?
61
- )
62
- cliner {
63
- pp ftp?
64
- show_host_user_name_port_and_password
65
- update_file_listing
66
- if shall_we_debug
67
- opnn; e 'File Listing:'
68
- show_file_listing
69
- end
70
- if remote_file_listing?.empty?
71
- opnn; e 'No file could be found. The remote directory '\
72
- 'is most likely empty.'
73
- end
74
- } if shall_we_debug
75
- end; alias feedback debug # === feedback
76
- alias report debug # === report
77
-
78
- end; end
@@ -1,271 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # Encoding: UTF-8
3
- # frozen_string_literal: true
4
- # =========================================================================== #
5
- # require 'ftp_paradise/connection/directory_handling.rb'
6
- # =========================================================================== #
7
- module FtpParadise
8
-
9
- class Connection
10
-
11
- require 'ftp_paradise/connection/remote_pwd.rb'
12
- require 'ftp_paradise/connection/file_handling.rb'
13
-
14
- # ========================================================================= #
15
- # === report_current_remote_dir
16
- #
17
- # Gives you the current dir.
18
- # ========================================================================= #
19
- def report_current_remote_dir(
20
- be_verbose = be_verbose?
21
- )
22
- begin
23
- if be_verbose
24
- opnn; e 'The remote directory is:'
25
- e " #{sdir(return_remote_pwd)}"
26
- end
27
- rescue Exception => error
28
- opnn; e error.class
29
- opnn; e error
30
- end
31
- end; alias report_remote_directory report_current_remote_dir # === report_remote_directory
32
- alias dir? report_current_remote_dir # === dir?
33
- alias report_remote_pwd report_current_remote_dir # === report_remote_pwd
34
-
35
- # ========================================================================= #
36
- # === remote_chdir (cd tag, chdir tag)
37
- #
38
- # This method allows us to cd to another remote directory, on the
39
- # remote FTP server (our main connection).
40
- #
41
- # The method must be able to check whether we are connected to the
42
- # remote host.
43
- # ========================================================================= #
44
- def remote_chdir(
45
- i,
46
- be_verbose = be_verbose?
47
- )
48
- i = i.dup if i.frozen?
49
- # ======================================================================= #
50
- # Sanitize odd entries ending with ':'
51
- # ======================================================================= #
52
- i[-1,1] = '/' if i.end_with? ':'
53
- i = rds("#{i}/") # <- Always ensure that a '/' is the last character.
54
- if be_verbose
55
- notify_the_user_about(i, __method__)
56
- end
57
- if is_connected?
58
- # ===================================================================== #
59
- # If we cd to a non-existing target, the exception Net::FTPPermError
60
- # will be raised.
61
- # ===================================================================== #
62
- begin
63
- ftp_object?.chdir(i)
64
- update_remote_file_listing
65
- # ===================================================================== #
66
- # The user may have insufficient permissions:
67
- # ===================================================================== #
68
- rescue Net::FTPPermError => error
69
- pp error
70
- rescue Net::ReadTimeout => error
71
- opnn; e 'An error was encountered in the method '\
72
- 'remote_chdir().'
73
- opnn; e 'The error-class was Net::ReadTimeout.'
74
- e
75
- opnn; e 'The specific error will be displayed next.'
76
- e
77
- pp error
78
- end
79
- else
80
- opnn; e 'We are not connected to a remote host right now.'
81
- opnn; e 'Thus we can not change the directory.'
82
- end
83
- report_current_remote_dir if be_verbose # right now mandatory
84
- end; alias rcd remote_chdir # === rcd
85
- alias remote_cd remote_chdir # === remote_cd
86
- alias chdir remote_chdir # === chdir
87
- alias cd remote_chdir # === cd
88
- alias chdir remote_chdir # === chdir
89
- alias rcd remote_chdir # === rcd
90
- alias change_directory remote_chdir # === change_directory
91
- alias change_remote_directory remote_chdir # === change_remote_directory
92
- alias cd_into_this_remote_directory remote_chdir # === cd_into_this_remote_directory
93
- alias remote_change_directory remote_chdir # === remote_change_directory
94
-
95
- # ========================================================================= #
96
- # === return_remote_directories
97
- #
98
- # Give us a list of (remote) directories - only directories, not
99
- # files.
100
- #
101
- # An Array will be returned as a result.
102
- # ========================================================================= #
103
- def return_remote_directories
104
- _ = []
105
- update_file_listing # Populate the file listing anew, so we will always get proper results back.
106
- raw_listing?.each {|entry|
107
- entry = FtpParadise::Entry.new(entry)
108
- _ << rds(entry.return_name) if entry.is_a_directory?
109
- }
110
- # ======================================================================= #
111
- # Directories must end with '/'. Ensure this to be the case next.
112
- # ======================================================================= #
113
- _.map! {|entry|
114
- entry << '/' unless entry.end_with? '/'
115
- entry
116
- }
117
- return _
118
- end; alias directories? return_remote_directories # === directories?
119
- alias return_directories return_remote_directories # === return_directories
120
-
121
- # ========================================================================= #
122
- # === return_remote_directory_content
123
- #
124
- # This method will return ALL remote entries, no matter if file or
125
- # directory.
126
- # ========================================================================= #
127
- def return_remote_directory_content
128
- raw_entries = raw_entries?
129
- if raw_entries.nil?
130
- populate_raw_entries
131
- raw_entries = raw_entries?
132
- end
133
- if raw_entries
134
- _ = raw_entries.reject {|line|
135
- line.empty?
136
- }.map {|entry|
137
- FtpParadise::Entry.new(entry).name?
138
- }
139
- end
140
- return _
141
- end; alias array_file_listing? return_remote_directory_content # === array_file_listing?
142
- alias array_file_listing return_remote_directory_content # === array_file_listing
143
- alias remote_directory_content return_remote_directory_content # === remote_directory_content
144
- alias list? return_remote_directory_content # === list?
145
-
146
- # ========================================================================= #
147
- # === is_a_directory?
148
- #
149
- # This method queries whether the given input is a (remote) directory.
150
- # For this to work, the given input must obviously exist as file or
151
- # directory.
152
- # ========================================================================= #
153
- def is_a_directory?(i)
154
- update_file_listing
155
- candidates = file_listing_as_entries?.select {|entry|
156
- entry.is_a_directory?
157
- }.map(&:last)
158
- candidates.include? i
159
- end; alias is_directory? is_a_directory? # === is_directory?
160
- alias is_a_directory? is_a_directory? # === is_a_directory?
161
- alias this_remote_directory_exists? is_a_directory? # === this_remote_directory_exists?
162
- alias is_dir? is_a_directory? # === is_dir?
163
-
164
- # ========================================================================= #
165
- # === remote_directory_is_empty?
166
- #
167
- # This method will return a Boolean - true if the remote directory
168
- # is empty, and false otherwise.
169
- # ========================================================================= #
170
- def remote_directory_is_empty?
171
- _ = return_remote_directory_content
172
- _.reject! {|entry|
173
- (entry == '.') or (entry == '..')
174
- }
175
- _.empty?
176
- end
177
-
178
- # ========================================================================= #
179
- # === create_this_remote_directory (mkdir tag)
180
- #
181
- # This method will attempt to create a remote directory.
182
- #
183
- # A Net::FTPPermError may result if the permission does not allow for
184
- # that action.
185
- # ========================================================================= #
186
- def create_this_remote_directory(
187
- i, be_verbose = be_verbose?
188
- )
189
- if i.is_a? Array
190
- i.each {|entry| create_this_remote_directory(entry, be_verbose) }
191
- else
192
- i = rds(i+'/')
193
- if be_verbose
194
- notify_the_user_about(i, __method__)
195
- if is_directory?(i)
196
- opnn; e swarn('Warning - the remote directory ')+
197
- sdir(i)+swarn(' already exists.')
198
- opnn; e swarn('We thus can not create a new directory.')
199
- end
200
- end
201
- begin
202
- ftp_object?.mkdir(i)
203
- rescue Net::FTPConnectionError
204
- opnn; e 'Not connected - is the network down/available?'
205
- rescue Net::FTPPermError
206
- opnn; e "Net::FTPPermError: Can not create the remote "\
207
- "directory `#{remote_path?}#{sdir(i)}`"
208
- opnn; e 'as it - or a file with the same name - already exists.'
209
- end
210
- end
211
- end; alias mkdir create_this_remote_directory # === mkdir
212
- alias rmkdir create_this_remote_directory # === rmkdir
213
- alias remote_mkdir create_this_remote_directory # === remote_mkdir
214
- alias create_directory create_this_remote_directory # === create_directory
215
- alias create_these_remote_directories create_this_remote_directory # === create_these_remote_directories
216
- alias remote_create_directory create_this_remote_directory # === remote_create_directory
217
- alias create_remote_directory create_this_remote_directory # === create_remote_directory
218
-
219
- # ========================================================================= #
220
- # === sanitize_remote_directory_content
221
- #
222
- # The purpose of this method is to clean up the remote dataset.
223
- #
224
- # Keep in mind that the output comes in something like:
225
- #
226
- # "-rw-rw-rw- 1 web netscape 6820 May 30 2011 AppendToCookbook.rb"
227
- # "drwxrwxrwx 2 web netscape 8192 Oct 29 2007 CSS"
228
- # "-rw-rw-rw- 1 web netscape 10548 May 30 2011 Chained.rb"
229
- # "-rw-r--r-- 1 330 330 237904 Jun 9 14:24 11.03.2003_UniWien_Biologie_EinfuehrungInDieMikrobiologie.jpg",
230
- #
231
- # This should contain all the information that is needed.
232
- # ========================================================================= #
233
- def sanitize_remote_directory_content
234
- _ = []
235
- raw_entries?.each { |e|
236
- next if e.empty?
237
- entry = FtpParadise::Entry.new(e)
238
- filesize = entry.filesize?
239
- timestamp = entry.parsed_timestamp?
240
- # ===================================================================== #
241
- # === Exclude 3 entries next
242
- # ===================================================================== #
243
- next if e.include? 'total' or
244
- entry.name? == '.' or
245
- entry.name? == '..' # Batch next.
246
- # ===================================================================== #
247
- # === Build up the final Array
248
- #
249
- # Our Array will have four entries:
250
- #
251
- # (1) Filename
252
- # (2) File or Directory (String)
253
- # (3) Filesize
254
- # (4) Timestamp
255
- #
256
- # ===================================================================== #
257
- _ << [ rds(entry.filename?), entry.file_or_directory, filesize, timestamp ]
258
- }
259
- @internal_hash[:sanitized_remote_directory_content] = _ #.compact
260
- end
261
-
262
- # ========================================================================= #
263
- # === sanitized_remote_directory_content?
264
- # ========================================================================= #
265
- def sanitized_remote_directory_content?
266
- update_remote_file_listing
267
- sanitize_remote_directory_content
268
- @internal_hash[:sanitized_remote_directory_content]
269
- end
270
-
271
- end; end
@@ -1,108 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # Encoding: UTF-8
3
- # frozen_string_literal: true
4
- # =========================================================================== #
5
- # require 'ftp_paradise/connection/do_login.rb'
6
- # =========================================================================== #
7
- module FtpParadise
8
-
9
- class Connection
10
-
11
- require 'ftp_paradise/toplevel_methods/remote_url.rb'
12
-
13
- require 'ftp_paradise/connection/initialize_a_new_net_ftp_object_with_this_url.rb'
14
- require 'ftp_paradise/connection/is_connected.rb'
15
- require 'ftp_paradise/connection/password.rb'
16
- require 'ftp_paradise/connection/sync_ftp_object_onto_the_main_namespace.rb'
17
-
18
- # ========================================================================= #
19
- # === do_login
20
- #
21
- # This method is responsible for the login-action.
22
- #
23
- # The method signature for the net-ftp class' .login() is:
24
- #
25
- # login(user = "anonymous", passwd = nil, acct = nil)
26
- #
27
- # This method here accepts a Hash as first argument.
28
- #
29
- # For official information about .login(), see here:
30
- #
31
- # https://ruby-doc.org/stdlib/libdoc/net/ftp/rdoc/Net/FTP.html#method-i-login
32
- #
33
- # ========================================================================= #
34
- def do_login(
35
- to_this_url = nil, # The remote URL.
36
- use_this_as_username = username?, # The login-name.
37
- use_this_as_password = password?, # The password for that user.
38
- be_verbose = be_verbose?
39
- )
40
- if to_this_url.nil?
41
- to_this_url = FtpParadise.remote_url?
42
- elsif to_this_url.is_a? Hash
43
- end
44
- # ======================================================================= #
45
- # Rescue nil-passwords here.
46
- # ======================================================================= #
47
- if use_this_as_password.to_s.empty?
48
- use_this_as_password = set_password(:try_to_use_a_default_password)
49
- end
50
- if be_verbose
51
- # ===================================================================== #
52
- # Display some info to the user here.
53
- # ===================================================================== #
54
- e; cliner
55
- opnn; e "Using the URL #{royalblue(to_this_url)} (remote FTP host)."
56
- e
57
- e " Username: #{slateblue(use_this_as_username)}"
58
- e " Password: #{slateblue(use_this_as_password)}"
59
- e
60
- report_transfer_mode_in_use
61
- e
62
- cliner
63
- end
64
- if ftp_object?.nil? and !to_this_url.nil?
65
- initialize_a_new_net_ftp_object_with_this_url(to_this_url)
66
- end
67
- use_this_as_username = use_this_as_username.to_s
68
- # ======================================================================= #
69
- # The following code must be rescued because the login() method
70
- # may fail in various ways.
71
- # ======================================================================= #
72
- begin
73
- ftp_object?.login(
74
- use_this_as_username,
75
- use_this_as_password
76
- )
77
- # =================================================================== #
78
- # Next, assign towards the toplevel reference to the ftp-connection.
79
- # =================================================================== #
80
- sync_ftp_object_onto_the_main_namespace if ftp_object?
81
- if be_verbose and is_connected?
82
- e
83
- cliner {
84
- e "- #{sfancy('Successfully')} logged into "\
85
- "the remote FTP host at `#{simp(to_this_url)}`"
86
- }
87
- end
88
- rescue Net::FTPPermError => error
89
- opnn; e "We could not connect and login to `#{sfancy(to_this_url)}`."
90
- opnn; e 'It may be that you lack the proper permissions.'
91
- opnn; e 'This may happen because the user/password combination was'
92
- opnn; e 'incorrect. User and password combination will be shown next:'
93
- show_user_and_password
94
- opnn; e "Feedbacking that error next, of class #{error.class.to_s}:"
95
- opnn; e orange(error.to_s)
96
- rescue Net::FTPConnectionError => error
97
- opnn; e 'We do not seem to be connected. An error happened.'
98
- pp error
99
- pp error.class
100
- end
101
- end; alias do_connect do_login # === do_connect
102
- alias connect_to do_login # === connect_to
103
- alias connect do_login # === connect
104
- alias login do_login # === login
105
- alias login_to do_login # === login_to
106
- alias reconnect do_login # === reconnect
107
-
108
- end; end