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.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +155 -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} +11 -1
  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 +564 -449
  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