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.
- checksums.yaml +4 -4
- data/README.md +152 -28
- data/bin/{iftp → ftp_paradise_shell} +1 -1
- data/doc/README.gen +97 -15
- data/doc/todo/{TODO_FOR_FTP_PARADISE_PROJECT.md → todo_for_the_ftp_paradise_project.md} +0 -0
- data/ftp_paradise.gemspec +30 -39
- data/lib/ftp_paradise/base/base.rb +375 -0
- data/lib/ftp_paradise/colours/colours.rb +27 -27
- data/lib/ftp_paradise/colours/use_colours.rb +6 -1
- data/lib/ftp_paradise/configuration/configuration.rb +7 -4
- data/lib/ftp_paradise/connection/README.md +0 -0
- data/lib/ftp_paradise/connection/connection.rb +2782 -15
- data/lib/ftp_paradise/constants/constants.rb +91 -5
- data/lib/ftp_paradise/entry/entry.rb +42 -5
- data/lib/ftp_paradise/{connection → gui/gtk3/ftp_client}/constants.rb +33 -21
- data/lib/ftp_paradise/gui/{shared_code/ftp_paradise/ftp_paradise_module.rb → gtk3/ftp_client/ftp_client.rb} +658 -170
- data/lib/ftp_paradise/gui/gtk3/ftp_client/misc.rb +27 -0
- data/lib/ftp_paradise/project/project.rb +11 -15
- data/lib/ftp_paradise/requires/require_class_connection.rb +7 -0
- data/lib/ftp_paradise/requires/require_net_ftp.rb +7 -0
- data/lib/ftp_paradise/requires/require_the_ftp_paradise_project.rb +4 -3
- data/lib/ftp_paradise/requires/require_the_ftp_paradise_project_with_the_GUI_bindings.rb +1 -1
- data/lib/ftp_paradise/requires/require_the_toplevel_methods.rb +1 -0
- data/lib/ftp_paradise/{interactive_ftp → shell}/menu.rb +554 -448
- data/lib/ftp_paradise/shell/shell.rb +2321 -0
- data/lib/ftp_paradise/toplevel_methods/connect.rb +3 -0
- data/lib/ftp_paradise/toplevel_methods/dataset.rb +111 -0
- data/lib/ftp_paradise/toplevel_methods/file_related_actions.rb +4 -3
- data/lib/ftp_paradise/toplevel_methods/ftp_object.rb +6 -5
- data/lib/ftp_paradise/toplevel_methods/login_name.rb +6 -4
- data/lib/ftp_paradise/toplevel_methods/misc.rb +19 -0
- data/lib/ftp_paradise/toplevel_methods/opn.rb +1 -1
- data/lib/ftp_paradise/toplevel_methods/password.rb +4 -2
- data/lib/ftp_paradise/toplevel_methods/port.rb +4 -1
- data/lib/ftp_paradise/toplevel_methods/remote_url.rb +11 -5
- data/lib/ftp_paradise/toplevel_methods/upload_and_download.rb +1 -0
- data/lib/ftp_paradise/version/version.rb +6 -1
- data/lib/ftp_paradise/www/web_interface.cgi +1 -1
- data/lib/ftp_paradise/yaml/automatically_connect_on_startup_of_the_interactive_ftp_shell.yml +0 -0
- data/lib/ftp_paradise/yaml/debug.yml +0 -0
- data/lib/ftp_paradise/yaml/open_in_default_editor.yml +0 -0
- data/lib/ftp_paradise/yaml/show_full_names.yml +0 -0
- data/lib/ftp_paradise/yaml/use_colours.yml +0 -0
- data/test/testing_minimal_pure_net_ftp_example_to_connect.rb +13 -3
- metadata +52 -126
- data/lib/ftp_paradise/base/cliner.rb +0 -23
- data/lib/ftp_paradise/base/colours.rb +0 -83
- data/lib/ftp_paradise/base/prototype.rb +0 -171
- data/lib/ftp_paradise/base/reset.rb +0 -29
- data/lib/ftp_paradise/connection/data.rb +0 -164
- data/lib/ftp_paradise/connection/debug.rb +0 -78
- data/lib/ftp_paradise/connection/directory_handling.rb +0 -271
- data/lib/ftp_paradise/connection/do_login.rb +0 -108
- data/lib/ftp_paradise/connection/download.rb +0 -86
- data/lib/ftp_paradise/connection/file_handling.rb +0 -174
- data/lib/ftp_paradise/connection/ftp_object.rb +0 -21
- data/lib/ftp_paradise/connection/initialize.rb +0 -88
- data/lib/ftp_paradise/connection/initialize_a_new_net_ftp_object_with_this_url.rb +0 -20
- data/lib/ftp_paradise/connection/is_connected.rb +0 -46
- data/lib/ftp_paradise/connection/misc.rb +0 -474
- data/lib/ftp_paradise/connection/notify.rb +0 -71
- data/lib/ftp_paradise/connection/password.rb +0 -47
- data/lib/ftp_paradise/connection/port.rb +0 -33
- data/lib/ftp_paradise/connection/remote_pwd.rb +0 -72
- data/lib/ftp_paradise/connection/remote_url.rb +0 -164
- data/lib/ftp_paradise/connection/remove.rb +0 -143
- data/lib/ftp_paradise/connection/reset.rb +0 -78
- data/lib/ftp_paradise/connection/run.rb +0 -18
- data/lib/ftp_paradise/connection/set_array_available_hosts.rb +0 -27
- data/lib/ftp_paradise/connection/set_input.rb +0 -18
- data/lib/ftp_paradise/connection/show.rb +0 -153
- data/lib/ftp_paradise/connection/sync_ftp_object_onto_the_main_namespace.rb +0 -24
- data/lib/ftp_paradise/connection/transfer_mode.rb +0 -163
- data/lib/ftp_paradise/connection/upload.rb +0 -253
- data/lib/ftp_paradise/connection/use_default_dataset.rb +0 -40
- data/lib/ftp_paradise/connection/username.rb +0 -42
- data/lib/ftp_paradise/constants/misc.rb +0 -57
- data/lib/ftp_paradise/constants/namespace.rb +0 -14
- data/lib/ftp_paradise/constants/newline.rb +0 -14
- data/lib/ftp_paradise/constants/roebe.rb +0 -31
- data/lib/ftp_paradise/constants/roebe_ftp_constants.rb +0 -233
- data/lib/ftp_paradise/gui/gtk2/ftp_paradise.rb +0 -34
- data/lib/ftp_paradise/gui/gtk3/ftp_paradise.rb +0 -34
- data/lib/ftp_paradise/interactive_ftp/constants.rb +0 -103
- data/lib/ftp_paradise/interactive_ftp/directory_handling.rb +0 -216
- data/lib/ftp_paradise/interactive_ftp/help.rb +0 -50
- data/lib/ftp_paradise/interactive_ftp/initialize.rb +0 -27
- data/lib/ftp_paradise/interactive_ftp/interactive_ftp.rb +0 -998
- data/lib/ftp_paradise/interactive_ftp/main_loop.rb +0 -51
- data/lib/ftp_paradise/interactive_ftp/misc.rb +0 -208
- data/lib/ftp_paradise/interactive_ftp/mode.rb +0 -124
- data/lib/ftp_paradise/interactive_ftp/readline.rb +0 -113
- data/lib/ftp_paradise/interactive_ftp/remove.rb +0 -97
- data/lib/ftp_paradise/interactive_ftp/reset.rb +0 -90
- data/lib/ftp_paradise/interactive_ftp/run.rb +0 -22
- data/lib/ftp_paradise/interactive_ftp/show.rb +0 -184
- data/lib/ftp_paradise/interactive_ftp/upload.rb +0 -90
- data/lib/ftp_paradise/interactive_ftp/user_input.rb +0 -53
- data/lib/ftp_paradise/toplevel_methods/can_connect_to_remote_site.rb +0 -28
- data/lib/ftp_paradise/toplevel_methods/clear_user_dataset.rb +0 -28
- data/lib/ftp_paradise/toplevel_methods/data.rb +0 -31
- data/lib/ftp_paradise/toplevel_methods/determine_user_dataset_from_this_hash.rb +0 -37
@@ -6,14 +6,100 @@
|
|
6
6
|
# =========================================================================== #
|
7
7
|
module FtpParadise
|
8
8
|
|
9
|
+
require 'yaml'
|
9
10
|
require 'ftp_paradise/project/project.rb'
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
11
|
+
|
12
|
+
# ========================================================================= #
|
13
|
+
# === NAMESPACE
|
14
|
+
# ========================================================================= #
|
15
|
+
NAMESPACE = inspect
|
16
|
+
|
17
|
+
# ========================================================================= #
|
18
|
+
# === N
|
19
|
+
# ========================================================================= #
|
20
|
+
N = "\n"
|
21
|
+
|
22
|
+
# ========================================================================= #
|
23
|
+
# === SHALL_WE_DEBUG
|
24
|
+
# ========================================================================= #
|
25
|
+
SHALL_WE_DEBUG = false
|
26
|
+
|
27
|
+
# ========================================================================= #
|
28
|
+
# === ARRAY_HELP_OPTIONS
|
29
|
+
#
|
30
|
+
# This Array is only required in the interactive variant though.
|
31
|
+
# ========================================================================= #
|
32
|
+
ARRAY_HELP_OPTIONS = %w(
|
33
|
+
HELP --help help hel he h hlep
|
34
|
+
) # ,'?'
|
35
|
+
|
36
|
+
# ========================================================================= #
|
37
|
+
# === ARRAY_BINARY_FILES
|
38
|
+
#
|
39
|
+
# Just note down the extension names.
|
40
|
+
# ========================================================================= #
|
41
|
+
ARRAY_BINARY_FILES = %w(
|
42
|
+
pdf
|
43
|
+
docx
|
44
|
+
odt
|
45
|
+
doc
|
46
|
+
)
|
47
|
+
|
48
|
+
# ========================================================================= #
|
49
|
+
# === ARRAY_VALID_OPTIONS_FOR_EXITING_THE_SHELL
|
50
|
+
# ========================================================================= #
|
51
|
+
ARRAY_VALID_OPTIONS_FOR_EXITING_THE_SHELL = %w(
|
52
|
+
q
|
53
|
+
quit
|
54
|
+
exit
|
55
|
+
break
|
56
|
+
)
|
57
|
+
|
58
|
+
# ========================================================================= #
|
59
|
+
# === FtpParadise::FILE_AUTOMATICALLY_CONNECT_ON_STARTUP_OF_THE_INTERACTIVE_FTP_SHELL
|
60
|
+
# ========================================================================= #
|
61
|
+
FILE_AUTOMATICALLY_CONNECT_ON_STARTUP_OF_THE_INTERACTIVE_FTP_SHELL =
|
62
|
+
"#{PROJECT_YAML_DIRECTORY}automatically_connect_on_startup_of_the_interactive_ftp_shell.yml"
|
63
|
+
|
64
|
+
# =========================================================================== #
|
65
|
+
# === HOME_DIRECTORY_OF_USER_X
|
66
|
+
#
|
67
|
+
# This is also only useful on my home setup.
|
68
|
+
# =========================================================================== #
|
69
|
+
HOME_DIRECTORY_OF_USER_X = '/home/x/'
|
70
|
+
|
71
|
+
# =========================================================================== #
|
72
|
+
# === FILE_ROEBE_FTP
|
73
|
+
#
|
74
|
+
# This constant specifies to where I keep track of my ftp-dataset, for
|
75
|
+
# the remote websites I use. This is thus not useful for other people
|
76
|
+
# to know. :D
|
77
|
+
#
|
78
|
+
# In theory you could change this if you use a similar .yml file.
|
79
|
+
#
|
80
|
+
# This will, on my home directory, expand to:
|
81
|
+
#
|
82
|
+
# /home/x/data/personal/yaml/ftp/roebe_ftp.yml
|
83
|
+
#
|
84
|
+
# =========================================================================== #
|
85
|
+
FILE_ROEBE_FTP =
|
86
|
+
"#{HOME_DIRECTORY_OF_USER_X}data/personal/yaml/ftp/roebe_ftp.yml"
|
87
|
+
|
88
|
+
# ========================================================================= #
|
89
|
+
# === FtpParadise.my_ftp_file?
|
90
|
+
#
|
91
|
+
# Feedback where my custom ftp file is.
|
92
|
+
# ========================================================================= #
|
93
|
+
def self.my_ftp_file?
|
94
|
+
FILE_ROEBE_FTP
|
95
|
+
end; self.instance_eval { alias my_yaml_file my_ftp_file? } # === FtpParadise.my_yaml_file
|
14
96
|
|
15
97
|
end
|
16
98
|
|
17
99
|
if __FILE__ == $PROGRAM_NAME
|
18
|
-
puts
|
100
|
+
alias e puts
|
101
|
+
include FtpParadise
|
102
|
+
e FtpParadise::FILE_AUTOMATICALLY_CONNECT_ON_STARTUP_OF_THE_INTERACTIVE_FTP_SHELL
|
103
|
+
e HOME_DIRECTORY_OF_USER_X
|
104
|
+
e FILE_ROEBE_FTP
|
19
105
|
end
|
@@ -33,8 +33,16 @@ class Entry # === FtpParadise::Entry
|
|
33
33
|
|
34
34
|
# ========================================================================= #
|
35
35
|
# === FtpParadise::Entry::DEFAULT_INPUT_FOR_THE_ENTRY_CALLED_RAW
|
36
|
+
#
|
37
|
+
# This line is mostly for testing purposes.
|
38
|
+
#
|
39
|
+
# Another example for this may be as follows:
|
40
|
+
#
|
41
|
+
# "-rw----r-- 1 18284 bplaced 269000 Mar 14 2019 basic_virology.pdf"
|
42
|
+
#
|
36
43
|
# ========================================================================= #
|
37
|
-
DEFAULT_INPUT_FOR_THE_ENTRY_CALLED_RAW =
|
44
|
+
DEFAULT_INPUT_FOR_THE_ENTRY_CALLED_RAW =
|
45
|
+
'drwxr-xr-x 2 330 330 2048 Oct 25 2019 .'
|
38
46
|
|
39
47
|
# ========================================================================= #
|
40
48
|
# === initialize
|
@@ -111,6 +119,20 @@ class Entry # === FtpParadise::Entry
|
|
111
119
|
@directory = true
|
112
120
|
@file = false
|
113
121
|
@device = false
|
122
|
+
# ======================================================================= #
|
123
|
+
# === @store_in_this_encoding
|
124
|
+
#
|
125
|
+
# The next variable was added on 19.07.2022. We want to be able to
|
126
|
+
# control what encoding is used.
|
127
|
+
# ======================================================================= #
|
128
|
+
@store_in_this_encoding = 'UTF-8'
|
129
|
+
end
|
130
|
+
|
131
|
+
# ========================================================================= #
|
132
|
+
# === do_we_have_to_change_the_encoding?
|
133
|
+
# ========================================================================= #
|
134
|
+
def do_we_have_to_change_the_encoding?
|
135
|
+
!@basename.encoding.to_s.include?(@store_in_this_encoding)
|
114
136
|
end
|
115
137
|
|
116
138
|
# ========================================================================= #
|
@@ -155,6 +177,9 @@ class Entry # === FtpParadise::Entry
|
|
155
177
|
|
156
178
|
# ========================================================================= #
|
157
179
|
# === name
|
180
|
+
#
|
181
|
+
# This is essentially the filename of the remote file or directory at
|
182
|
+
# hand.
|
158
183
|
# ========================================================================= #
|
159
184
|
def name
|
160
185
|
@basename
|
@@ -162,6 +187,13 @@ class Entry # === FtpParadise::Entry
|
|
162
187
|
alias name? name # === name?
|
163
188
|
alias filename? name # === filename?
|
164
189
|
|
190
|
+
# ========================================================================= #
|
191
|
+
# === encoding?
|
192
|
+
# ========================================================================= #
|
193
|
+
def encoding?
|
194
|
+
@basename.encoding.to_s
|
195
|
+
end
|
196
|
+
|
165
197
|
# ========================================================================= #
|
166
198
|
# === determine_timestamp
|
167
199
|
# ========================================================================= #
|
@@ -203,6 +235,9 @@ class Entry # === FtpParadise::Entry
|
|
203
235
|
def determine_basename
|
204
236
|
if @splitted
|
205
237
|
@basename = @splitted.last
|
238
|
+
if do_we_have_to_change_the_encoding?
|
239
|
+
@basename.force_encoding(@store_in_this_encoding) # To avoid ASCII-8BIT encoding.
|
240
|
+
end
|
206
241
|
else
|
207
242
|
@basename = raw
|
208
243
|
end
|
@@ -283,11 +318,13 @@ end; end
|
|
283
318
|
|
284
319
|
if __FILE__ == $PROGRAM_NAME
|
285
320
|
alias e puts
|
286
|
-
array = [
|
287
|
-
"
|
288
|
-
|
289
|
-
|
321
|
+
array = [
|
322
|
+
"-rw----r-- 1 18284 bplaced 661 Jun 18 2017 .bash_profile",
|
323
|
+
"-rw----r-- 1 18284 bplaced 25666 Jan 20 2019 PR\xDCFUNGSFRAGEN.md",
|
324
|
+
"-rw----r-- 1 18284 bplaced 298 May 26 2018 Welcome to bplaced.txt",
|
325
|
+
]
|
290
326
|
array.map! {|line|
|
327
|
+
e 'Encoding is: '+line.to_s.encoding.to_s
|
291
328
|
FtpParadise::Entry.new(line)
|
292
329
|
}
|
293
330
|
pp array
|
@@ -2,45 +2,57 @@
|
|
2
2
|
# Encoding: UTF-8
|
3
3
|
# frozen_string_literal: true
|
4
4
|
# =========================================================================== #
|
5
|
-
# require 'ftp_paradise/
|
5
|
+
# require 'ftp_paradise/gui/gtk3/ftp_client/constants.rb'
|
6
6
|
# =========================================================================== #
|
7
|
+
require 'gtk_paradise/require_gtk3'
|
8
|
+
|
7
9
|
module FtpParadise
|
8
10
|
|
9
|
-
|
11
|
+
module GUI
|
12
|
+
|
13
|
+
module Gtk
|
14
|
+
|
15
|
+
class FtpClient < ::Gtk::Box # === FtpParadise::GUI::Gtk::FtpClient
|
10
16
|
|
11
17
|
# ========================================================================= #
|
12
|
-
# ===
|
18
|
+
# === TITLE
|
13
19
|
# ========================================================================= #
|
14
|
-
|
20
|
+
TITLE = 'FTP Client'
|
15
21
|
|
16
22
|
# ========================================================================= #
|
17
|
-
# ===
|
23
|
+
# === FTP_MAIN_ICON
|
18
24
|
# ========================================================================= #
|
19
|
-
|
25
|
+
FTP_MAIN_ICON = HOME_DIRECTORY_OF_USER_X+'data/images/PC/FTP/FTP.png'
|
20
26
|
|
21
27
|
# ========================================================================= #
|
22
|
-
# ===
|
28
|
+
# === WIDTH
|
23
29
|
# ========================================================================= #
|
24
|
-
|
30
|
+
WIDTH = '92% or minimum 1800px'
|
25
31
|
|
26
32
|
# ========================================================================= #
|
27
|
-
# ===
|
33
|
+
# === HEIGHT
|
28
34
|
# ========================================================================= #
|
29
|
-
|
35
|
+
HEIGHT = '80% or minimum 1000px'
|
30
36
|
|
31
37
|
# ========================================================================= #
|
32
|
-
# ===
|
38
|
+
# === USE_THIS_FONT
|
33
39
|
# ========================================================================= #
|
34
|
-
|
40
|
+
USE_THIS_FONT = :dejavu_condensed_18
|
35
41
|
|
36
42
|
# ========================================================================= #
|
37
|
-
# ===
|
38
|
-
#
|
39
|
-
|
40
|
-
|
41
|
-
#
|
42
|
-
#
|
43
|
-
# ========================================================================= #
|
44
|
-
|
43
|
+
# === SMALLER_FONT
|
44
|
+
# ========================================================================= #
|
45
|
+
SMALLER_FONT = :dejavu_condensed_15
|
46
|
+
|
47
|
+
# ========================================================================= #
|
48
|
+
# === MY_TEMP
|
49
|
+
# ========================================================================= #
|
50
|
+
if ENV['MY_TEMP']
|
51
|
+
MY_TEMP = ENV['MY_TEMP'].to_s+'/'
|
52
|
+
elsif File.directory?('/home/Temp/')
|
53
|
+
MY_TEMP = '/home/Temp/'
|
54
|
+
else
|
55
|
+
MY_TEMP = '/tmp/'
|
56
|
+
end
|
45
57
|
|
46
|
-
end; end
|
58
|
+
end; end; end; end
|