ftp_paradise 1.4.5
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.
- checksums.yaml +7 -0
- data/README.md +319 -0
- data/bin/create_remote_directory +9 -0
- data/bin/ftp_get +17 -0
- data/bin/ftp_gtk3 +7 -0
- data/bin/ftp_upload +42 -0
- data/bin/ftp_upload_binary +18 -0
- data/bin/iftp +7 -0
- data/bin/remote_remove +28 -0
- data/doc/README.gen +302 -0
- data/doc/todo/TODO_FOR_FTP_PARADISE_PROJECT.md +79 -0
- data/ftp_paradise.gemspec +122 -0
- data/lib/ftp_paradise.rb +5 -0
- data/lib/ftp_paradise/base/cliner.rb +23 -0
- data/lib/ftp_paradise/base/colours.rb +83 -0
- data/lib/ftp_paradise/base/prototype.rb +171 -0
- data/lib/ftp_paradise/base/reset.rb +29 -0
- data/lib/ftp_paradise/colours/colours.rb +141 -0
- data/lib/ftp_paradise/colours/use_colours.rb +76 -0
- data/lib/ftp_paradise/configuration/configuration.rb +49 -0
- data/lib/ftp_paradise/connection/README.md +1 -0
- data/lib/ftp_paradise/connection/connection.rb +35 -0
- data/lib/ftp_paradise/connection/constants.rb +46 -0
- data/lib/ftp_paradise/connection/data.rb +164 -0
- data/lib/ftp_paradise/connection/debug.rb +78 -0
- data/lib/ftp_paradise/connection/directory_handling.rb +271 -0
- data/lib/ftp_paradise/connection/do_login.rb +108 -0
- data/lib/ftp_paradise/connection/download.rb +86 -0
- data/lib/ftp_paradise/connection/file_handling.rb +174 -0
- data/lib/ftp_paradise/connection/ftp_object.rb +21 -0
- data/lib/ftp_paradise/connection/initialize.rb +88 -0
- data/lib/ftp_paradise/connection/initialize_a_new_net_ftp_object_with_this_url.rb +20 -0
- data/lib/ftp_paradise/connection/is_connected.rb +46 -0
- data/lib/ftp_paradise/connection/misc.rb +474 -0
- data/lib/ftp_paradise/connection/notify.rb +71 -0
- data/lib/ftp_paradise/connection/password.rb +47 -0
- data/lib/ftp_paradise/connection/port.rb +33 -0
- data/lib/ftp_paradise/connection/remote_pwd.rb +72 -0
- data/lib/ftp_paradise/connection/remote_url.rb +164 -0
- data/lib/ftp_paradise/connection/remove.rb +143 -0
- data/lib/ftp_paradise/connection/reset.rb +78 -0
- data/lib/ftp_paradise/connection/run.rb +18 -0
- data/lib/ftp_paradise/connection/set_array_available_hosts.rb +27 -0
- data/lib/ftp_paradise/connection/set_input.rb +18 -0
- data/lib/ftp_paradise/connection/show.rb +153 -0
- data/lib/ftp_paradise/connection/sync_ftp_object_onto_the_main_namespace.rb +24 -0
- data/lib/ftp_paradise/connection/transfer_mode.rb +163 -0
- data/lib/ftp_paradise/connection/upload.rb +253 -0
- data/lib/ftp_paradise/connection/use_default_dataset.rb +40 -0
- data/lib/ftp_paradise/connection/username.rb +42 -0
- data/lib/ftp_paradise/constants/constants.rb +19 -0
- data/lib/ftp_paradise/constants/misc.rb +57 -0
- data/lib/ftp_paradise/constants/namespace.rb +14 -0
- data/lib/ftp_paradise/constants/newline.rb +14 -0
- data/lib/ftp_paradise/constants/roebe.rb +31 -0
- data/lib/ftp_paradise/constants/roebe_ftp_constants.rb +233 -0
- data/lib/ftp_paradise/entry/entry.rb +300 -0
- data/lib/ftp_paradise/gui/gtk2/ftp_paradise.rb +34 -0
- data/lib/ftp_paradise/gui/gtk3/ftp_paradise.rb +34 -0
- data/lib/ftp_paradise/gui/shared_code/ftp_paradise/ftp_paradise_module.rb +709 -0
- data/lib/ftp_paradise/images/connection_image.png +0 -0
- data/lib/ftp_paradise/interactive_ftp/constants.rb +103 -0
- data/lib/ftp_paradise/interactive_ftp/directory_handling.rb +216 -0
- data/lib/ftp_paradise/interactive_ftp/help.rb +50 -0
- data/lib/ftp_paradise/interactive_ftp/initialize.rb +27 -0
- data/lib/ftp_paradise/interactive_ftp/interactive_ftp.rb +998 -0
- data/lib/ftp_paradise/interactive_ftp/main_loop.rb +51 -0
- data/lib/ftp_paradise/interactive_ftp/menu.rb +786 -0
- data/lib/ftp_paradise/interactive_ftp/misc.rb +208 -0
- data/lib/ftp_paradise/interactive_ftp/mode.rb +124 -0
- data/lib/ftp_paradise/interactive_ftp/readline.rb +113 -0
- data/lib/ftp_paradise/interactive_ftp/remove.rb +97 -0
- data/lib/ftp_paradise/interactive_ftp/reset.rb +90 -0
- data/lib/ftp_paradise/interactive_ftp/run.rb +22 -0
- data/lib/ftp_paradise/interactive_ftp/show.rb +184 -0
- data/lib/ftp_paradise/interactive_ftp/upload.rb +90 -0
- data/lib/ftp_paradise/interactive_ftp/user_input.rb +53 -0
- data/lib/ftp_paradise/project/project.rb +64 -0
- data/lib/ftp_paradise/requires/common_basic_requires.rb +14 -0
- data/lib/ftp_paradise/requires/common_external_requires.rb +9 -0
- data/lib/ftp_paradise/requires/require_the_constants.rb +7 -0
- data/lib/ftp_paradise/requires/require_the_ftp_paradise_project.rb +18 -0
- data/lib/ftp_paradise/requires/require_the_ftp_paradise_project_with_the_GUI_bindings.rb +10 -0
- data/lib/ftp_paradise/requires/require_the_toplevel_methods.rb +24 -0
- data/lib/ftp_paradise/toplevel_methods/can_connect_to_remote_site.rb +28 -0
- data/lib/ftp_paradise/toplevel_methods/clear_user_dataset.rb +28 -0
- data/lib/ftp_paradise/toplevel_methods/connect.rb +50 -0
- data/lib/ftp_paradise/toplevel_methods/data.rb +31 -0
- data/lib/ftp_paradise/toplevel_methods/determine_user_dataset_from_this_hash.rb +37 -0
- data/lib/ftp_paradise/toplevel_methods/directory_related_actions.rb +33 -0
- data/lib/ftp_paradise/toplevel_methods/e.rb +16 -0
- data/lib/ftp_paradise/toplevel_methods/file_related_actions.rb +49 -0
- data/lib/ftp_paradise/toplevel_methods/ftp_object.rb +270 -0
- data/lib/ftp_paradise/toplevel_methods/is_on_roebe.rb +20 -0
- data/lib/ftp_paradise/toplevel_methods/login_name.rb +49 -0
- data/lib/ftp_paradise/toplevel_methods/misc.rb +16 -0
- data/lib/ftp_paradise/toplevel_methods/opn.rb +24 -0
- data/lib/ftp_paradise/toplevel_methods/password.rb +50 -0
- data/lib/ftp_paradise/toplevel_methods/port.rb +41 -0
- data/lib/ftp_paradise/toplevel_methods/rds.rb +18 -0
- data/lib/ftp_paradise/toplevel_methods/remote_url.rb +57 -0
- data/lib/ftp_paradise/toplevel_methods/time.rb +45 -0
- data/lib/ftp_paradise/toplevel_methods/upload_and_download.rb +108 -0
- data/lib/ftp_paradise/version/version.rb +19 -0
- data/lib/ftp_paradise/www/public/css/style.css +3 -0
- data/lib/ftp_paradise/www/sinatra_web_interface.rb +242 -0
- data/lib/ftp_paradise/www/views/index.slim +3 -0
- data/lib/ftp_paradise/www/views/layout.slim +11 -0
- data/lib/ftp_paradise/www/web_interface.cgi +34 -0
- data/lib/ftp_paradise/yaml/automatically_connect_on_startup_of_the_interactive_ftp_shell.yml +1 -0
- data/lib/ftp_paradise/yaml/debug.yml +1 -0
- data/lib/ftp_paradise/yaml/open_in_default_editor.yml +1 -0
- data/lib/ftp_paradise/yaml/show_full_names.yml +1 -0
- data/lib/ftp_paradise/yaml/use_colours.yml +1 -0
- data/test/testing_ftp_paradise.rb +94 -0
- data/test/testing_minimal_pure_net_ftp_example_to_connect.rb +28 -0
- data/test/testing_the_ftp_connection_component.rb +70 -0
- data/test/testing_upload_a_local_directory.rb +10 -0
- metadata +336 -0
@@ -0,0 +1,71 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'ftp_paradise/connection/notify.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module FtpParadise
|
8
|
+
|
9
|
+
class Connection
|
10
|
+
|
11
|
+
# ========================================================================= #
|
12
|
+
# === notify_the_user_about
|
13
|
+
#
|
14
|
+
# This method is a general "user notifier". It will notify the user
|
15
|
+
# about doing certain actions within the FtpParadise project.
|
16
|
+
# ========================================================================= #
|
17
|
+
def notify_the_user_about(
|
18
|
+
i, method
|
19
|
+
)
|
20
|
+
case method
|
21
|
+
# ======================================================================= #
|
22
|
+
# === :set_transfer_mode
|
23
|
+
# ======================================================================= #
|
24
|
+
when :set_transfer_mode
|
25
|
+
opnn; e "Setting mode to #{orange(i.to_s)} now."
|
26
|
+
# ======================================================================= #
|
27
|
+
# === :remove_remote_files
|
28
|
+
# ======================================================================= #
|
29
|
+
when :remove_remote_files
|
30
|
+
opnn; e "Deleting the remote file `#{sdir(i)}` now."
|
31
|
+
# ======================================================================= #
|
32
|
+
# === :upload_binary_file
|
33
|
+
# ======================================================================= #
|
34
|
+
when :upload_binary_file
|
35
|
+
opnn; e 'Now trying to upload the binary file `'+sfile(i)+'`'
|
36
|
+
opnn; e 'to the remote host `'+sfancy(remote_host?)+'`.'
|
37
|
+
# ======================================================================= #
|
38
|
+
# === :create_this_remote_directory
|
39
|
+
# ======================================================================= #
|
40
|
+
when :create_this_remote_directory
|
41
|
+
opnn; e 'Creating the remote directory `'+sdir(i)+'` now.'
|
42
|
+
# ======================================================================= #
|
43
|
+
# === :remote_cd
|
44
|
+
# ======================================================================= #
|
45
|
+
when :remote_cd
|
46
|
+
opnn; e 'Trying to remote-change directory into `'+sdir(i)+'`.'
|
47
|
+
# ======================================================================= #
|
48
|
+
# === :download_this_remote_file
|
49
|
+
# ======================================================================= #
|
50
|
+
when :download_this_remote_file
|
51
|
+
opnn; e "Downloading the remote file `#{sdir(i)}` now."
|
52
|
+
# ======================================================================= #
|
53
|
+
# === :upload_this_text_file
|
54
|
+
# ======================================================================= #
|
55
|
+
when :upload_this_text_file
|
56
|
+
opnn; e 'Uploading the local text file `'+sfile(i)+'` to '\
|
57
|
+
'the remote host at `'+sfancy(remote_pwd?)+'`.'
|
58
|
+
# ======================================================================= #
|
59
|
+
# === :create_remote_file
|
60
|
+
# ======================================================================= #
|
61
|
+
when :create_remote_file
|
62
|
+
opnn; e 'Creating the remote file `'+sdir(i)+'` now.'
|
63
|
+
# ======================================================================= #
|
64
|
+
# === :remove_remote_directory
|
65
|
+
# ======================================================================= #
|
66
|
+
when :remove_remote_directory
|
67
|
+
opnn; e 'Removing the remote directory `'+sdir(i)+'` now.'
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
end; end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'ftp_paradise/connection/password.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module FtpParadise
|
8
|
+
|
9
|
+
class Connection
|
10
|
+
|
11
|
+
require 'ftp_paradise/toplevel_methods/password.rb'
|
12
|
+
|
13
|
+
# ========================================================================= #
|
14
|
+
# === password?
|
15
|
+
# ========================================================================= #
|
16
|
+
def password?
|
17
|
+
::FtpParadise.password?.to_s
|
18
|
+
end; alias password password? # === password
|
19
|
+
|
20
|
+
# ========================================================================= #
|
21
|
+
# === set_password
|
22
|
+
#
|
23
|
+
# Use only this method when attempting to modify the @password.
|
24
|
+
#
|
25
|
+
# This @ivar keeps track of the password we will use.
|
26
|
+
# ========================================================================= #
|
27
|
+
def set_password(
|
28
|
+
i = :try_to_use_a_default_password
|
29
|
+
)
|
30
|
+
case i
|
31
|
+
when :try_to_use_a_default_password,
|
32
|
+
:default
|
33
|
+
if FtpParadise::RoebeFtpConstants::BPLACED
|
34
|
+
_ = FtpParadise::RoebeFtpConstants::BPLACED[2]
|
35
|
+
_.chop! if _.end_with? '_'
|
36
|
+
i = _
|
37
|
+
end
|
38
|
+
when :anonymous
|
39
|
+
i = nil
|
40
|
+
else
|
41
|
+
i = i.to_s
|
42
|
+
end
|
43
|
+
::FtpParadise.set_password(i)
|
44
|
+
i # Return the password here as well, so that we can use it for assignments.
|
45
|
+
end; alias password= set_password # === password=
|
46
|
+
|
47
|
+
end; end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'ftp_paradise/connection/port.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module FtpParadise
|
8
|
+
|
9
|
+
class Connection
|
10
|
+
|
11
|
+
require 'ftp_paradise/toplevel_methods/port.rb'
|
12
|
+
require 'ftp_paradise/connection/ftp_object.rb'
|
13
|
+
|
14
|
+
# ========================================================================= #
|
15
|
+
# === set_port
|
16
|
+
#
|
17
|
+
# Use this method to set the port. The port will be stored on the
|
18
|
+
# toplevel-"namespace".
|
19
|
+
# ========================================================================= #
|
20
|
+
def set_port(
|
21
|
+
i = DEFAULT_PORT
|
22
|
+
)
|
23
|
+
FtpParadise.set_port(i)
|
24
|
+
end
|
25
|
+
|
26
|
+
# ========================================================================= #
|
27
|
+
# === port?
|
28
|
+
# ========================================================================= #
|
29
|
+
def port?
|
30
|
+
FtpParadise.port?.to_s
|
31
|
+
end; alias port port? # === port
|
32
|
+
|
33
|
+
end; end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'ftp_paradise/connection/remote_pwd.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module FtpParadise
|
8
|
+
|
9
|
+
class Connection
|
10
|
+
|
11
|
+
require 'ftp_paradise/connection/remote_url.rb'
|
12
|
+
|
13
|
+
# ========================================================================= #
|
14
|
+
# === remote_pwd
|
15
|
+
# ========================================================================= #
|
16
|
+
def remote_pwd
|
17
|
+
ftp_object?.pwd
|
18
|
+
end; alias rpwd remote_pwd # === rpwd
|
19
|
+
alias getdir remote_pwd # === getdir
|
20
|
+
|
21
|
+
# ========================================================================= #
|
22
|
+
# === return_remote_pwd
|
23
|
+
#
|
24
|
+
# This method will return the (remote) pwd, including the remote working
|
25
|
+
# directory - including the subpath..
|
26
|
+
#
|
27
|
+
# This method will ensure that a trailing '/' will be returned here.
|
28
|
+
#
|
29
|
+
# The official documentation can be seen here:
|
30
|
+
# https://ruby-doc.org/stdlib/libdoc/net/ftp/rdoc/Net/FTP.html#method-i-pwd
|
31
|
+
# ========================================================================= #
|
32
|
+
def return_remote_pwd
|
33
|
+
begin
|
34
|
+
if is_connected?
|
35
|
+
remote_pwd = remote_url?.dup
|
36
|
+
# ===================================================================== #
|
37
|
+
# Need to safeguard, in the event that we are not connected to a
|
38
|
+
# remote FTP server.
|
39
|
+
# ===================================================================== #
|
40
|
+
remote_pwd << ftp_object?.pwd.to_s if ftp_object?
|
41
|
+
remote_pwd << '/'
|
42
|
+
return rds(remote_pwd)
|
43
|
+
else
|
44
|
+
opnn; e 'No FTP connection is open.'
|
45
|
+
''
|
46
|
+
end
|
47
|
+
rescue Net::FTPReplyError
|
48
|
+
opnn; e 'Error Net::FTPReplyError received. May be due to user interrupting.'
|
49
|
+
opnn; e 'Exiting now at once either way.'
|
50
|
+
exit
|
51
|
+
rescue SystemExit, Interrupt
|
52
|
+
opnn; e 'User requested to exit, thus exiting now.'
|
53
|
+
exit
|
54
|
+
end
|
55
|
+
end; alias pwd? return_remote_pwd # === pwd?
|
56
|
+
alias pwd return_remote_pwd # === pwd (pwd tag)
|
57
|
+
alias getdir return_remote_pwd # === get_dir
|
58
|
+
alias remote_pwd return_remote_pwd # === remote_pwd
|
59
|
+
alias remote_pwd? return_remote_pwd # === remote_pwd?
|
60
|
+
alias connected_to? return_remote_pwd # === connected_to?
|
61
|
+
alias remote? return_remote_pwd # === remote?
|
62
|
+
alias base_dir? return_remote_pwd # === base_dir?
|
63
|
+
alias remote_directory? return_remote_pwd # === remote_directory?
|
64
|
+
alias remote_dir? return_remote_pwd # === remote_dir?
|
65
|
+
alias remote_path? return_remote_pwd # === remote_path?
|
66
|
+
alias return_subdirectory return_remote_pwd # === return_subdirectory
|
67
|
+
alias current_directory return_remote_pwd # === current_directory
|
68
|
+
alias return_remote_dir return_remote_pwd # === return_remote_dir
|
69
|
+
alias get_remote_dir return_remote_pwd # === get_remote_dir
|
70
|
+
alias remote_host? return_remote_pwd # === remote_host?
|
71
|
+
|
72
|
+
end; end
|
@@ -0,0 +1,164 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'ftp_paradise/connection/remote_url.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module FtpParadise
|
8
|
+
|
9
|
+
class Connection
|
10
|
+
|
11
|
+
require 'ftp_paradise/toplevel_methods/remote_url.rb'
|
12
|
+
|
13
|
+
# ========================================================================= #
|
14
|
+
# === remote_url?
|
15
|
+
#
|
16
|
+
# This method is guaranteed to return a String.
|
17
|
+
# ========================================================================= #
|
18
|
+
def remote_url?
|
19
|
+
begin
|
20
|
+
return FtpParadise.remote_url?.to_s
|
21
|
+
rescue Interrupt
|
22
|
+
exit # User interrupted, so we exit as requested.
|
23
|
+
rescue Exception => error
|
24
|
+
opnn; e 'We did encounter an error in the method '+
|
25
|
+
simp(__method__.to_s)
|
26
|
+
opnn; pp error
|
27
|
+
return error.to_s # Return that exception.
|
28
|
+
end
|
29
|
+
end; alias remote_host? remote_url? # === remote_host?
|
30
|
+
alias remote_url remote_url? # === remote_url
|
31
|
+
alias url? remote_url? # === url?
|
32
|
+
alias host? remote_url? # === host?
|
33
|
+
alias host remote_url? # === host
|
34
|
+
|
35
|
+
# ========================================================================= #
|
36
|
+
# === set_remote_url
|
37
|
+
#
|
38
|
+
# This method will do some sanitizing before it sets a proper and
|
39
|
+
# valid hostname. Remember to keep the 'default' entry at the
|
40
|
+
# current main FTP host you use.
|
41
|
+
# ========================================================================= #
|
42
|
+
def set_remote_url(
|
43
|
+
i = :default,
|
44
|
+
be_verbose = true
|
45
|
+
)
|
46
|
+
i = :default? if i.nil?
|
47
|
+
if i.is_a? Hash # Handle Hash as input here.
|
48
|
+
if i.has_key?(:to)
|
49
|
+
i = i[:to]
|
50
|
+
end
|
51
|
+
end
|
52
|
+
# ======================================================================= #
|
53
|
+
# The next block is mostly for my custom constants.
|
54
|
+
# You can simply pass in your own Hash.
|
55
|
+
# ======================================================================= #
|
56
|
+
case i # Do some sanitizing. This is a String here. (case tag)
|
57
|
+
# ======================================================================= #
|
58
|
+
# === shevy
|
59
|
+
# ======================================================================= #
|
60
|
+
when /^-?-?shevy$/i,
|
61
|
+
'default'
|
62
|
+
set_data(PODSERVER)
|
63
|
+
i = PODSERVER.first
|
64
|
+
# ======================================================================= #
|
65
|
+
# === bplaced
|
66
|
+
# ======================================================================= #
|
67
|
+
when /^-?-?bplaced$/i
|
68
|
+
set_data(BPLACED)
|
69
|
+
i = BPLACED.first
|
70
|
+
# ======================================================================= #
|
71
|
+
# === ?
|
72
|
+
# ======================================================================= #
|
73
|
+
when '?'
|
74
|
+
feedback_login_hosts
|
75
|
+
# ======================================================================= #
|
76
|
+
# === uniwien_homepage
|
77
|
+
# ======================================================================= #
|
78
|
+
when /^uniwien_?homepage/
|
79
|
+
set_data(UNIWIEN_HOMEPAGE)
|
80
|
+
i = UNIWIEN_HOMEPAGE.first
|
81
|
+
# ======================================================================= #
|
82
|
+
# === unet
|
83
|
+
# ======================================================================= #
|
84
|
+
when 'unet','uni',
|
85
|
+
'uniftp'
|
86
|
+
set_data(UNIVIE)
|
87
|
+
i = UNIVIE.first
|
88
|
+
# ======================================================================= #
|
89
|
+
# === a1
|
90
|
+
# ======================================================================= #
|
91
|
+
when /^a1/
|
92
|
+
set_data(A1)
|
93
|
+
i = A1.first
|
94
|
+
# ======================================================================= #
|
95
|
+
# === byte
|
96
|
+
# ======================================================================= #
|
97
|
+
when /^byte/ # This also includese bytehost.
|
98
|
+
set_data(BYTEHOST)
|
99
|
+
i = BYTEHOST.first
|
100
|
+
# ======================================================================= #
|
101
|
+
# === zerofees
|
102
|
+
# ======================================================================= #
|
103
|
+
when 'ZEROFEES','zero','ZERO'
|
104
|
+
set_data(ZEROFEES)
|
105
|
+
i = ZEROFEES.first
|
106
|
+
# ======================================================================= #
|
107
|
+
# === ucoz
|
108
|
+
# ======================================================================= #
|
109
|
+
when 'ucoz','UCOZ','LAST',/tanriel/i,
|
110
|
+
'last'
|
111
|
+
set_data(UCOZ)
|
112
|
+
i = UCOZ.first
|
113
|
+
end
|
114
|
+
case i.to_s
|
115
|
+
# ======================================================================= #
|
116
|
+
# === shevy
|
117
|
+
# ======================================================================= #
|
118
|
+
when 'shevy','5','default' # Current default entry.
|
119
|
+
i = SQUARE7.first
|
120
|
+
# ======================================================================= #
|
121
|
+
# === a1
|
122
|
+
# ======================================================================= #
|
123
|
+
when '1','a1'
|
124
|
+
i = A1.first
|
125
|
+
# ======================================================================= #
|
126
|
+
# === unet
|
127
|
+
# ======================================================================= #
|
128
|
+
when '2','unet','uni','uniftp'
|
129
|
+
i = UNIVIE.first
|
130
|
+
# ======================================================================= #
|
131
|
+
# === geas
|
132
|
+
# ======================================================================= #
|
133
|
+
when '3','geas'
|
134
|
+
i = GEAS.first
|
135
|
+
# ======================================================================= #
|
136
|
+
# === byte
|
137
|
+
# ======================================================================= #
|
138
|
+
when '4','byte'
|
139
|
+
i = BYTEHOST.first
|
140
|
+
end
|
141
|
+
i = i.to_s # Need a String here.
|
142
|
+
# ======================================================================= #
|
143
|
+
# === Provide more information to the user
|
144
|
+
# ======================================================================= #
|
145
|
+
if debug?
|
146
|
+
opnn; e "The remote URL was set to: #{sfancy(i)}"
|
147
|
+
end
|
148
|
+
if be_verbose
|
149
|
+
e "Setting url to #{sfancy(i)} now."
|
150
|
+
end
|
151
|
+
FtpParadise.set_remote_url(i)
|
152
|
+
# ======================================================================= #
|
153
|
+
# And we will always initialize a new ftp-object as well, whenever
|
154
|
+
# we call this method:
|
155
|
+
# ======================================================================= #
|
156
|
+
initialize_a_new_net_ftp_object_with_this_remote_url(i)
|
157
|
+
end; alias set_this_host set_remote_url # === set_this_host
|
158
|
+
alias set_host set_remote_url # === set_host
|
159
|
+
alias set_url set_remote_url # === set_url
|
160
|
+
alias host= set_remote_url # === host=
|
161
|
+
alias url= set_remote_url # === url=
|
162
|
+
alias set_remote_host set_remote_url # === set_remote_host
|
163
|
+
|
164
|
+
end; end
|
@@ -0,0 +1,143 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'ftp_paradise/connection/remove.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module FtpParadise
|
8
|
+
|
9
|
+
class Connection
|
10
|
+
|
11
|
+
# ========================================================================= #
|
12
|
+
# === remove (remove tag)
|
13
|
+
# ========================================================================= #
|
14
|
+
def remove(i)
|
15
|
+
if i.is_a? Array
|
16
|
+
i.each {|entry| remove(entry) }
|
17
|
+
else
|
18
|
+
if is_a_directory?(i)
|
19
|
+
remove_remote_directory(i)
|
20
|
+
elsif is_a_file?(i)
|
21
|
+
remove_remote_file(i, be_verbose?)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# ========================================================================= #
|
27
|
+
# === remove_remote_file
|
28
|
+
#
|
29
|
+
# Remove a (remote) file, via the delete() method of the FTP protocol.
|
30
|
+
#
|
31
|
+
# Note that this method will only delete files.
|
32
|
+
#
|
33
|
+
# The official documentation for the Ruby-FTP delete() method can be
|
34
|
+
# found here:
|
35
|
+
#
|
36
|
+
# https://www.ruby-doc.org/stdlib/libdoc/net/ftp/rdoc/Net/FTP.html#method-i-delete
|
37
|
+
#
|
38
|
+
# ========================================================================= #
|
39
|
+
def remove_remote_file(
|
40
|
+
i,
|
41
|
+
be_verbose = be_verbose?
|
42
|
+
)
|
43
|
+
case be_verbose
|
44
|
+
when :be_verbose
|
45
|
+
be_verbose = true
|
46
|
+
end
|
47
|
+
if i.is_a? Array
|
48
|
+
i.each {|entry| remove_remote_file(entry, be_verbose) }
|
49
|
+
else
|
50
|
+
if does_this_remote_file_exist?(File.basename(i))
|
51
|
+
i = File.basename(i)
|
52
|
+
if i =~ /^\d+$/ # if is a number
|
53
|
+
update_file_listing
|
54
|
+
_ = return_remote_file_listing[i.to_i - 1].first
|
55
|
+
_ = File.basename(_)
|
56
|
+
e "Performing a substitution of #{sfancy(i)}"\
|
57
|
+
" to #{simp(_)}."
|
58
|
+
i = _
|
59
|
+
end
|
60
|
+
if be_verbose
|
61
|
+
notify_the_user_about(i, __method__)
|
62
|
+
end
|
63
|
+
ftp_object?.delete(i)
|
64
|
+
update_file_listing
|
65
|
+
return i # Also return the file that was deleted.
|
66
|
+
else
|
67
|
+
opnn; e "No remote file called `#{sfile(i)}` was "\
|
68
|
+
"found at `#{sfancy(remote_pwd)}`."
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end; alias remote_remove remove_remote_file # === remote_remove
|
72
|
+
alias remote_remove_files remove_remote_file # === remote_remove_files
|
73
|
+
alias remote_remove_file remove_remote_file # === remote_remove_files
|
74
|
+
alias delete remove_remote_file # === delete
|
75
|
+
alias remove_file remove_remote_file # === remove_file
|
76
|
+
alias rm_file remove_remote_file # === rm_file
|
77
|
+
alias rmfile remove_remote_file # === rmfile
|
78
|
+
|
79
|
+
# ========================================================================= #
|
80
|
+
# === original_delete
|
81
|
+
#
|
82
|
+
# This method will remove the file, without doing any additional
|
83
|
+
# checks.
|
84
|
+
# ========================================================================= #
|
85
|
+
def original_delete(i)
|
86
|
+
ftp_object?.delete(i)
|
87
|
+
end
|
88
|
+
|
89
|
+
# ========================================================================= #
|
90
|
+
# === remove_remote_directory
|
91
|
+
#
|
92
|
+
# This method will remove a remote directory. For this to work, as
|
93
|
+
# operation, the remote directory has to exist.
|
94
|
+
#
|
95
|
+
# This operation may fail e. g. when the remote directory is not empty.
|
96
|
+
# This explains why we attempt to rescue some errors.
|
97
|
+
# ========================================================================= #
|
98
|
+
def remove_remote_directory(
|
99
|
+
i,
|
100
|
+
be_verbose = be_verbose?,
|
101
|
+
force_remove = false
|
102
|
+
)
|
103
|
+
case force_remove
|
104
|
+
when :force_remove
|
105
|
+
force_remove = true
|
106
|
+
when :do_not_force_remove
|
107
|
+
force_remove = false
|
108
|
+
end
|
109
|
+
if i.is_a? Array
|
110
|
+
i.each {|entry| remove_remote_directory(entry, be_verbose) }
|
111
|
+
else
|
112
|
+
if be_verbose
|
113
|
+
notify_the_user_about(i, __method__)
|
114
|
+
end
|
115
|
+
if is_a_directory? i
|
116
|
+
begin
|
117
|
+
ftp_object?.rmdir(i)
|
118
|
+
rescue Net::FTPPermError => error
|
119
|
+
opnn; e swarn('We could not remove the remote directory at ')+
|
120
|
+
sdir(i)+swarn(' as it is not empty.')
|
121
|
+
pp error
|
122
|
+
if force_remove
|
123
|
+
opnn; e 'We will now try to enter into this directory'
|
124
|
+
opnn; e 'and then remove all files of that directory.'
|
125
|
+
rcd(this_dir)
|
126
|
+
update_file_listing
|
127
|
+
all_remote_files?.each {|file| remove(file) } # Now it should be removed.
|
128
|
+
rcd('..') # Go back again.
|
129
|
+
rmdir(i, be_verbose, :do_not_force_remove) # But we won't force again, to avoid recursive loops.
|
130
|
+
opnn; e "The remote directory at #{sdir(i)} has been removed."
|
131
|
+
end
|
132
|
+
end
|
133
|
+
else
|
134
|
+
if be_verbose
|
135
|
+
opnn; e "The given input #{sfancy(i)} is not a directory."
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end; alias rmdir remove_remote_directory # === rmdir
|
140
|
+
alias remove_these_remote_directories remove_remote_directory # === remove_these_remote_directories
|
141
|
+
alias remove_directory remove_remote_directory # === remove_directory
|
142
|
+
|
143
|
+
end; end
|