ftp_paradise 1.4.5 → 1.5.3

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.

Potentially problematic release.


This version of ftp_paradise might be problematic. Click here for more details.

Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +152 -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} +0 -0
  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 +554 -448
  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