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
@@ -6,14 +6,100 @@
6
6
  # =========================================================================== #
7
7
  module FtpParadise
8
8
 
9
+ require 'yaml'
9
10
  require 'ftp_paradise/project/project.rb'
10
- require 'ftp_paradise/constants/misc.rb'
11
- require 'ftp_paradise/constants/namespace.rb'
12
- require 'ftp_paradise/constants/newline.rb'
13
- require 'ftp_paradise/constants/roebe_ftp_constants.rb'
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 FtpParadise::FILE_AUTOMATICALLY_CONNECT_ON_STARTUP_OF_THE_INTERACTIVE_FTP_SHELL
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 = 'drwxr-xr-x 2 330 330 2048 Oct 25 2019 .'
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 = ["-rw-r--r-- 1 0 2 0 Oct 29 19:23 DO NOT UPLOAD FILES HERE",
287
- "htdocs/",
288
- "-rw-r--r-- 1 22918231 22918231 9 Oct 29 19:32 test.md",
289
- "drwxr-xr-x 2 22918231 22918231 4096 Oct 30 10:59 test2"]
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/connection/constants.rb'
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
- class Connection
11
+ module GUI
12
+
13
+ module Gtk
14
+
15
+ class FtpClient < ::Gtk::Box # === FtpParadise::GUI::Gtk::FtpClient
10
16
 
11
17
  # ========================================================================= #
12
- # === NAMESPACE
18
+ # === TITLE
13
19
  # ========================================================================= #
14
- NAMESPACE = inspect
20
+ TITLE = 'FTP Client'
15
21
 
16
22
  # ========================================================================= #
17
- # === BE_VERBOSE
23
+ # === FTP_MAIN_ICON
18
24
  # ========================================================================= #
19
- BE_VERBOSE = true
25
+ FTP_MAIN_ICON = HOME_DIRECTORY_OF_USER_X+'data/images/PC/FTP/FTP.png'
20
26
 
21
27
  # ========================================================================= #
22
- # === DEFAULT_TRANSFER_MODE
28
+ # === WIDTH
23
29
  # ========================================================================= #
24
- DEFAULT_TRANSFER_MODE = :ascii # Which transfer mode to use by default.
30
+ WIDTH = '92% or minimum 1800px'
25
31
 
26
32
  # ========================================================================= #
27
- # === DEFAULT_PORT
33
+ # === HEIGHT
28
34
  # ========================================================================= #
29
- DEFAULT_PORT = 21
35
+ HEIGHT = '80% or minimum 1000px'
30
36
 
31
37
  # ========================================================================= #
32
- # === RUN_ALREADY
38
+ # === USE_THIS_FONT
33
39
  # ========================================================================= #
34
- RUN_ALREADY = true
40
+ USE_THIS_FONT = :dejavu_condensed_18
35
41
 
36
42
  # ========================================================================= #
37
- # === DEFAULT_USER_NAME
38
- #
39
- # In the past this was set to a String (the user name); but since as
40
- # of October 2018, it will default to nil, so that we really initialize
41
- # the whole project to a nil-state (as the default). This thus allows
42
- # us to determine whether this has been changed, aka initialized.
43
- # ========================================================================= #
44
- DEFAULT_USER_NAME = nil
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