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.
- checksums.yaml +4 -4
- data/README.md +155 -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} +11 -1
- 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 +564 -449
- 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
|