flnews_post_proc 1.7 → 1.40
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 +4 -4
- data/README.md +28 -35
- data/bin/flnews_post_proc +12 -56
- data/doc/html/flnews_post_proc.html +364 -52
- data/doc/{fr/html/flnews_post_proc.html → html/flnews_post_proc_fr.html} +19 -22
- data/doc/man/flnews_post_proc.1.gz +0 -0
- data/doc/man/flnews_post_proc_fr.1.gz +0 -0
- data/doc/pdf/flnews_post_proc.pdf +0 -0
- data/doc/pdf/flnews_post_proc_fr.pdf +0 -0
- data/doc/rst/flnews_post_proc.rst +26 -28
- data/doc/{fr/rst/flnews_post_proc.rst → rst/flnews_post_proc_fr.rst} +18 -21
- data/lib/basic_logging.rb +8 -40
- data/lib/body.rb +35 -129
- data/lib/configuration.rb +8 -15
- data/lib/flnews_post_proc.conf +6 -7
- data/lib/flnews_post_proc.rb +4 -5
- data/lib/headers.rb +13 -37
- data/lib/newsgroups.rb +17 -35
- data/lib/override.rb +2 -2
- data/lib/ruby_dlg +83 -86
- data/lib/version.rb +2 -3
- data/lib/whiptail_dlg +2 -7
- data/lib/yad_dlg +11 -12
- data/lib/zenity_dlg +7 -8
- metadata +9 -30
- data/doc/fr/man/flnews_post_proc.1.gz +0 -0
- data/doc/fr/pdf/flnews_post_proc.pdf +0 -0
- data/lib/_quoting_style_regexp +0 -2
data/lib/flnews_post_proc.conf
CHANGED
@@ -70,7 +70,7 @@ GROUP_INTROS:
|
|
70
70
|
GROUP_SIGS:
|
71
71
|
.*de.test: "newsgroup_hook .*de.test\r\nMit Zeilenumbruch"
|
72
72
|
.*fr.test: "newsgroup_hook .*fr.test\r\n2ème ligne, « guillemets »"
|
73
|
-
de.*:
|
73
|
+
de.*: Geh Kaffee kochen
|
74
74
|
fr.*: "« Ton ordinateur de rêve ? » – « Le bleue. »\r\n "
|
75
75
|
|
76
76
|
# CUSTOM_HEADERS
|
@@ -86,13 +86,13 @@ GROUP_SIGS:
|
|
86
86
|
CUSTOM_HEADERS:
|
87
87
|
- "X-Post-Processor: flnews_post_proc"
|
88
88
|
|
89
|
-
#
|
89
|
+
# XNAY_GROUPS:
|
90
90
|
# The newsgroups, where a header X-No-Archive: YES shall be set.
|
91
91
|
# CONTENT: a dash and space, then a String, containing the name of the group
|
92
92
|
# or a regexp.
|
93
93
|
# DEFAULT: empty
|
94
94
|
# EXAMPLE: - "alt.test"
|
95
|
-
|
95
|
+
XNAY_GROUPS:
|
96
96
|
- ".*.test"
|
97
97
|
|
98
98
|
# DEBUG_LOG:
|
@@ -145,17 +145,16 @@ REFERENCE_FORMAT: " ➤%s"
|
|
145
145
|
# try to correct URLs. Even if URLs are identified as such, only a few
|
146
146
|
# manipulations are attempted :
|
147
147
|
# * Angular brackets '<' and '>' are added, if missing
|
148
|
-
# -----> handling <news:/> is disabled
|
149
148
|
# * Article-references are prepended with "news:", if missing
|
150
149
|
# * Slashes are added, if they are found missing after "http(s):"
|
151
150
|
# ATTN! The program is unable to discern "mailto:" and "news:" references. If
|
152
151
|
# neither is given, but '@' is present, "news:" is automatically prepended.
|
153
|
-
#
|
152
|
+
#
|
154
153
|
# If the variable is not set, a value 'yes' is assumed.
|
155
154
|
# CONTENT: One of YES, yes, NO, no, and other variations of case.
|
156
|
-
# DEFAULT:
|
155
|
+
# DEFAULT: yes
|
157
156
|
# Example: ... I let you guess.
|
158
|
-
VFY_URLS:
|
157
|
+
VFY_URLS: YES
|
159
158
|
|
160
159
|
# OVERRIDE_CONFIG
|
161
160
|
# A Boolean constant. You can choose to override the following
|
data/lib/flnews_post_proc.rb
CHANGED
@@ -15,7 +15,6 @@
|
|
15
15
|
|
16
16
|
require 'yaml'
|
17
17
|
require 'ostruct'
|
18
|
-
|
19
18
|
# --needs the Diffy gem
|
20
19
|
require 'diffy'
|
21
20
|
|
@@ -30,10 +29,11 @@ $LN = "\r\n"
|
|
30
29
|
# The main application class.
|
31
30
|
# Does it.
|
32
31
|
class PostProcessor
|
32
|
+
# class-level configuration object
|
33
|
+
@@config = Configuration.instance
|
33
34
|
include BasicLogging
|
34
35
|
|
35
36
|
def initialize(article_text)
|
36
|
-
@config = Configuration.instance
|
37
37
|
# for simplicity.
|
38
38
|
# separate the headers and the body.
|
39
39
|
debug ' initializing headers'
|
@@ -55,9 +55,8 @@ class PostProcessor
|
|
55
55
|
body.handle_references
|
56
56
|
body.set_signature(newsgroups.signature)
|
57
57
|
|
58
|
-
# verify and eventually correct
|
59
|
-
|
60
|
-
body.handle_uris
|
58
|
+
# verify and eventually correct URLs
|
59
|
+
body.handle_urls
|
61
60
|
|
62
61
|
# get the headers and the body as a string.
|
63
62
|
# Assemble.
|
data/lib/headers.rb
CHANGED
@@ -20,41 +20,22 @@ require_relative 'newsgroups'
|
|
20
20
|
# an object of this class represents the headers of a news-article
|
21
21
|
|
22
22
|
class Headers
|
23
|
+
# class-level configuration object
|
24
|
+
@@config = Configuration.instance
|
23
25
|
include BasicLogging
|
24
26
|
|
25
27
|
# read the headers from the article
|
26
28
|
def initialize(article_text)
|
27
29
|
|
28
|
-
@config = Configuration.instance
|
29
30
|
line = nil
|
30
31
|
# transform the article to an array.
|
31
32
|
debug('before split, article_text is : ' << article_text)
|
32
33
|
line_array = article_text.split($LN)
|
33
|
-
|
34
|
-
# Emsure that all three headers are present.
|
35
|
-
missing_header = ['From:', 'Newsgroups:', 'Message-ID:'].detect{|h| ! line_array.any?{|l| l.match(h) } }
|
36
|
-
if(missing_header)
|
37
|
-
msg = "Input does not look like a news-article, no #{missing_header.delete(':')}; aborting."
|
38
|
-
STDERR.puts msg
|
39
|
-
error(msg)
|
40
|
-
exit false
|
41
|
-
end
|
42
|
-
|
43
34
|
debug('after split, line_array is : ' << line_array.inspect)
|
44
35
|
# find the first empty line
|
45
36
|
end_index = line_array.index {|ele| ele.strip == ''}
|
46
37
|
# keep the preceding lines.
|
47
|
-
|
48
|
-
@lines = line_array.slice!(0, end_index)
|
49
|
-
rescue Exception => ex
|
50
|
-
msg = 'ERROR: cannot split the input into lines: ' << self.class.name << ': ' << ex.message
|
51
|
-
# console
|
52
|
-
STDERR.puts msg
|
53
|
-
# log
|
54
|
-
error(msg)
|
55
|
-
exit false
|
56
|
-
end
|
57
|
-
|
38
|
+
@lines = line_array.slice!(0, end_index)
|
58
39
|
debug('headers: ' << @lines.to_s)
|
59
40
|
|
60
41
|
# headername: headervalue
|
@@ -74,13 +55,9 @@ class Headers
|
|
74
55
|
error ("Cannot match a header in line " << l << "(" << ex.message << ")")
|
75
56
|
exit false;
|
76
57
|
end
|
77
|
-
# Consider the two following fixes as preliminary until proven.
|
78
|
-
# Getting older, this kind of problem occupies me a lot more than
|
79
|
-
# it should.
|
80
|
-
#
|
81
58
|
# value is all after the first colon
|
82
59
|
# BUGGY: val = l.match(/:(.*)/)[1].strip
|
83
|
-
# BUGFIX 3/2024
|
60
|
+
# BUGFIX 3/2024
|
84
61
|
val = l.match(/:(.*)/)[1].lstrip
|
85
62
|
else # start_with?(' ')
|
86
63
|
# a wrapped value is not devided
|
@@ -118,16 +95,15 @@ class Headers
|
|
118
95
|
|
119
96
|
# Modify headers, if need be.
|
120
97
|
def update()
|
121
|
-
|
122
|
-
debug('
|
123
|
-
if
|
124
|
-
@headers["X-No-Archive".to_sym] =
|
125
|
-
@headers["Archive".to_sym] = 'no'
|
98
|
+
xnay = @newsgroups.xnay
|
99
|
+
debug('xnay should be set now : ' << xnay.to_s)
|
100
|
+
if xnay
|
101
|
+
@headers["X-No-Archive".to_sym] = xnay
|
126
102
|
end
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
103
|
+
ch = @@config.CUSTOM_HEADERS
|
104
|
+
debug('setting custom headers : ' << ch.inspect)
|
105
|
+
if @@config.CUSTOM_HEADERS
|
106
|
+
@@config.CUSTOM_HEADERS.each do |pair|
|
131
107
|
ch = pair.split(':')
|
132
108
|
hn = ch[0].strip
|
133
109
|
hv = ch[1].strip
|
@@ -167,6 +143,6 @@ class Headers
|
|
167
143
|
end
|
168
144
|
|
169
145
|
attr_reader :lines, :newsgroups
|
170
|
-
|
146
|
+
|
171
147
|
end
|
172
148
|
# EOF
|
data/lib/newsgroups.rb
CHANGED
@@ -20,23 +20,24 @@ require_relative 'configuration'
|
|
20
20
|
require_relative 'basic_logging'
|
21
21
|
|
22
22
|
class Newsgroups
|
23
|
-
|
23
|
+
# class-level configuration object
|
24
|
+
@@config = Configuration.instance
|
24
25
|
include BasicLogging
|
26
|
+
|
25
27
|
def initialize(groups)
|
26
|
-
@config = Configuration.instance
|
27
28
|
@groups = groups.split(',')
|
28
|
-
debug('set signature, intro,
|
29
|
+
debug('set signature, intro, xnay')
|
29
30
|
# set details for this post
|
30
31
|
if @groups.size == 1
|
31
32
|
set_signature
|
32
33
|
set_intro
|
33
|
-
|
34
|
+
set_xnay
|
34
35
|
end
|
35
36
|
end
|
36
37
|
|
37
|
-
def
|
38
|
-
debug('returning ' <<( @
|
39
|
-
return @
|
38
|
+
def xnay
|
39
|
+
debug('returning ' <<( @xnay ? @xnay : ' nil ') )
|
40
|
+
return @xnay ? @xnay : nil
|
40
41
|
end
|
41
42
|
attr_reader :signature, :intro, :groups
|
42
43
|
|
@@ -49,7 +50,7 @@ class Newsgroups
|
|
49
50
|
# only one group.
|
50
51
|
group = @groups[0]
|
51
52
|
# all configured intro-lines.
|
52
|
-
gintros =
|
53
|
+
gintros = @@config.GROUP_INTROS
|
53
54
|
|
54
55
|
if gintros && gintros.respond_to?(:to_hash)
|
55
56
|
# find the intro for the group.
|
@@ -82,7 +83,6 @@ class Newsgroups
|
|
82
83
|
warned ||= true
|
83
84
|
# ... and silently marry them to \r
|
84
85
|
text.gsub!($~[0],$~[1] + "\r\n")
|
85
|
-
text.gsub!("\n ", "\n")
|
86
86
|
# Luxury you can afford.
|
87
87
|
end # \n
|
88
88
|
text
|
@@ -93,7 +93,7 @@ class Newsgroups
|
|
93
93
|
@signature = nil
|
94
94
|
# 1 group
|
95
95
|
group = @groups[0]
|
96
|
-
gsigs =
|
96
|
+
gsigs = @@config.GROUP_SIGS
|
97
97
|
|
98
98
|
if gsigs && gsigs.respond_to?(:to_hash)
|
99
99
|
# find the signature for the group
|
@@ -109,16 +109,11 @@ class Newsgroups
|
|
109
109
|
sm = group.match(rg)
|
110
110
|
debug('signature for group(s) ' << g << ': ' << s) if sm
|
111
111
|
if sm
|
112
|
-
@signature = s
|
112
|
+
@signature = correct_linebreaks(s)
|
113
113
|
end # if sm
|
114
114
|
end # if no signature
|
115
115
|
end # gsigs.each
|
116
116
|
end # gsigs for group?
|
117
|
-
if(@signature && @signature.strip.start_with?('/') )
|
118
|
-
debug('picking signature from file ' << @signature)
|
119
|
-
@signature = pick_sig(@signature)
|
120
|
-
end
|
121
|
-
@signature = correct_linebreaks(@signature) if @signature
|
122
117
|
else # gsigs and is hash?
|
123
118
|
msg = "Cannot read the signatures from the configuration."
|
124
119
|
msg << "\nPlease verify that GROUP_SIGS is set."
|
@@ -126,26 +121,13 @@ class Newsgroups
|
|
126
121
|
end
|
127
122
|
end
|
128
123
|
|
129
|
-
#
|
130
|
-
def
|
131
|
-
|
132
|
-
|
133
|
-
numSigs = allSigs.length
|
134
|
-
|
135
|
-
srand(Time.now.nsec)
|
136
|
-
return allSigs[rand(numSigs)]
|
137
|
-
else
|
138
|
-
error 'cannot read signature from file ' << file
|
139
|
-
end
|
140
|
-
end
|
141
|
-
|
142
|
-
# define the no_archive header.
|
143
|
-
def set_no_archive
|
144
|
-
@no_archive = nil
|
145
|
-
xgs = @config.NO_ARCHIVE_GROUPS
|
124
|
+
# define the xnay header.
|
125
|
+
def set_xnay
|
126
|
+
@xnay = nil
|
127
|
+
xgs = @@config.XNAY_GROUPS
|
146
128
|
if xgs && !xgs.empty? && xgs.detect {|g| @groups[0].match(g) }
|
147
|
-
debug("setting
|
148
|
-
@
|
129
|
+
debug("setting XNAY")
|
130
|
+
@xnay = 'YES'
|
149
131
|
end
|
150
132
|
end
|
151
133
|
end
|
data/lib/override.rb
CHANGED
@@ -40,7 +40,7 @@ class OverrideDlg
|
|
40
40
|
@@LIBDIR = File::dirname(__FILE__)
|
41
41
|
# The configuration variables that can be unset.
|
42
42
|
# This class instance variable is exposed via a getter.
|
43
|
-
@cvars = [:GROUP_SIGS, :CUSTOM_HEADERS, :
|
43
|
+
@cvars = [:GROUP_SIGS, :CUSTOM_HEADERS, :XNAY_GROUPS, :VFY_URLS, :DEBUG_LOG]
|
44
44
|
|
45
45
|
# ... here
|
46
46
|
# For the record: this is rather cool.
|
@@ -66,7 +66,7 @@ class OverrideDlg
|
|
66
66
|
# display a dialog and return the new options.
|
67
67
|
def show
|
68
68
|
if(@executables && !@executables.empty?)
|
69
|
-
debug('found executables ' << @executables.join(', '))
|
69
|
+
debug('found executables ' << @executables.join(', ') )
|
70
70
|
opts = nil
|
71
71
|
begin
|
72
72
|
if has?(YAD)
|
data/lib/ruby_dlg
CHANGED
@@ -35,25 +35,27 @@ def wait_for_user()
|
|
35
35
|
end
|
36
36
|
return char
|
37
37
|
end
|
38
|
-
if !ARGV.empty? && ARGV.length > 0
|
39
|
-
ofl = nil
|
40
|
-
begin
|
41
|
-
ofl = File.open(ARGV[0], 'w+')
|
42
|
-
puts 'writing to ' << ARGV[0]
|
43
|
-
rescue Exception => ex
|
44
|
-
puts red ('cannot open ' << ARGV[1])
|
45
|
-
puts ex.message
|
46
|
-
puts 'hit any key to exit'
|
47
|
-
wait_for_user
|
48
|
-
exit false
|
49
|
-
end
|
50
38
|
|
51
|
-
|
52
|
-
|
53
|
-
|
39
|
+
|
40
|
+
ofl = nil
|
41
|
+
begin
|
42
|
+
ofl = File.open(ARGV[0], 'w+') if ARGV.length > 0
|
43
|
+
puts 'writing to ' << ARGV[0]
|
44
|
+
rescue Exception => ex
|
45
|
+
puts red ('cannot open ' << ARGV[1])
|
46
|
+
puts 'hit any key to exit'
|
47
|
+
wait_for_user
|
48
|
+
exit false
|
49
|
+
end
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
opt_array = []
|
54
|
+
message = ''
|
55
|
+
menu ||= %=
|
54
56
|
1 Unset Signature GROUP_SIGS
|
55
57
|
2 Unset Custom headers CUSTOM_HEADERS
|
56
|
-
3 Unset No
|
58
|
+
3 Unset X-No-Archive XNAY_GROUPS
|
57
59
|
4 Do not correct URLs VFY_URLS
|
58
60
|
5 Disable log DEBUG_LOG
|
59
61
|
––––––––––––––––––––––––––––––––––––––––––––––
|
@@ -61,79 +63,74 @@ if !ARGV.empty? && ARGV.length > 0
|
|
61
63
|
––––––––––––––––––––––––––––––––––––––––––––––
|
62
64
|
0 Okay, use settings.
|
63
65
|
––––––––––––––––––––––––––––––––––––––––––––––––
|
64
|
-
{bold("Esc, Ctrl+C and 'q'")} terminate the Post-processor
|
66
|
+
#{bold("Esc, Ctrl+C and 'q'")} terminate the Post-processor
|
65
67
|
and no changes will be applied.
|
66
68
|
=
|
67
69
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
end
|
70
|
+
loop do
|
71
|
+
system 'clear'
|
72
|
+
puts yellow(menu)
|
73
|
+
puts cyan(message)
|
74
|
+
option = wait_for_user - 48
|
75
|
+
case option
|
76
|
+
# Esc, Ctrl+C, 'q'
|
77
|
+
when -21, -45, 65
|
78
|
+
puts red('Aborting. Bye.')
|
79
|
+
ofl.write 'exit'
|
80
|
+
ofl.close
|
81
|
+
exit true
|
82
|
+
when 0
|
83
|
+
puts green('Applying changes.') if !opt_array.empty?
|
84
|
+
# write the list of variables to unset (others remain)
|
85
|
+
ofl.write opt_array.join(' ')
|
86
|
+
ofl.close
|
87
|
+
exit true
|
88
|
+
|
89
|
+
# toggle options
|
90
|
+
# ADD option to the option array, if it should be *removed*
|
91
|
+
# from the configuration, else remove it from the array.
|
92
|
+
when 1
|
93
|
+
active = !opt_array.include?(:GROUP_SIGS)
|
94
|
+
opt_array << :GROUP_SIGS if active
|
95
|
+
opt_array.delete(:GROUP_SIGS) if !active
|
96
|
+
|
97
|
+
message = "Signature #{active ? 'unset' : 'as configured'}!"
|
98
|
+
menu.sub!("Unset Signature", "Set Signature ") if active
|
99
|
+
menu.sub!("Set Signature ", "Unset Signature") if !active
|
100
|
+
when 2
|
101
|
+
active = !opt_array.include?(:CUSTOM_HEADERS)
|
102
|
+
opt_array << :CUSTOM_HEADERS if active
|
103
|
+
opt_array.delete(:CUSTOM_HEADERS) if !active
|
104
|
+
|
105
|
+
message = "Custom headers #{active ? 'removed' : 'are added'}!"
|
106
|
+
menu.sub!("Unset Custom headers", "Add Custom headers ") if active
|
107
|
+
menu.sub!("Add Custom headers ", "Unset Custom headers") if !active
|
108
|
+
when 3
|
109
|
+
active = !opt_array.include?(:XNAY_GROUPS)
|
110
|
+
opt_array << :XNAY_GROUPS if active
|
111
|
+
opt_array.delete(:XNAY_GROUPS) if !active
|
112
|
+
|
113
|
+
message = "X-No-Archive #{active ? 'removed' : 'is added'}!"
|
114
|
+
menu.sub!("Unset X-No-Archive", "Add X-No-Archive ") if active
|
115
|
+
menu.sub!("Add X-No-Archive ", "Unset X-No-Archive") if !active
|
116
|
+
when 4
|
117
|
+
active = !opt_array.include?(:VFY_URLS)
|
118
|
+
opt_array << :VFY_URLS if active
|
119
|
+
opt_array.delete(:VFY_URLS) if !active
|
120
|
+
|
121
|
+
message = "URLS will #{active ? 'not ' : ''}" << "be verified!"
|
122
|
+
menu.sub!("Do not correct URLs", "Correct URLs ") if active
|
123
|
+
menu.sub!("Correct URLs ", "Do not correct URLs") if !active
|
124
|
+
when 5
|
125
|
+
active = !opt_array.include?(:DEBUG_LOG)
|
126
|
+
opt_array << :DEBUG_LOG if active
|
127
|
+
opt_array.delete(:DEBUG_LOG) if !active
|
128
|
+
|
129
|
+
message = "Log is #{ active ? 'not ' : ''} " << "written!"
|
130
|
+
menu.sub!("Disable log", "Enable log ") if active
|
131
|
+
menu.sub!("Enable log ", "Disable log") if !active
|
132
|
+
when 6
|
133
|
+
message = "Summary of " << bold('disabled') << " options: " << opt_array.join(' ')
|
133
134
|
end
|
134
|
-
else # ARGV
|
135
|
-
puts red('missing file argument')
|
136
|
-
exit false
|
137
135
|
end
|
138
136
|
|
139
|
-
|
data/lib/version.rb
CHANGED
@@ -14,9 +14,8 @@
|
|
14
14
|
=end
|
15
15
|
|
16
16
|
PROGNAME = 'flnews_post_proc'
|
17
|
-
PROGVERSION = "1.
|
17
|
+
PROGVERSION = "1.40"
|
18
18
|
AUTHORS = "Michael Uplawski"
|
19
19
|
EMAIL = "michael.uplawski@uplawski.eu"
|
20
20
|
YEARS = "2023 - 2024"
|
21
|
-
SUMMARY = "
|
22
|
-
|
21
|
+
SUMMARY = "Moved the override-dialog scripts from the executables directory to lib"
|
data/lib/whiptail_dlg
CHANGED
@@ -16,11 +16,6 @@
|
|
16
16
|
# The main difficulty arises from the fact that positive defaults
|
17
17
|
# are negated, while a checklist wants to give positive results.
|
18
18
|
|
19
|
-
if [ $# -eq 0 ]
|
20
|
-
then
|
21
|
-
echo "ERROR: file-argument missing"
|
22
|
-
exit 1
|
23
|
-
fi
|
24
19
|
OUTFILE="$1"
|
25
20
|
|
26
21
|
# empty the file
|
@@ -30,10 +25,10 @@ TITLE="Override post-processor configuration"
|
|
30
25
|
CHECKTITLE="Deselect to disable. Esc or Cancel close the dialog and no changes will be applied."
|
31
26
|
|
32
27
|
# These are the configuration variables which can be unset.
|
33
|
-
VARS=(GROUP_SIGS CUSTOM_HEADERS
|
28
|
+
VARS=(GROUP_SIGS CUSTOM_HEADERS XNAY_GROUPS VFY_URLS DEBUG_LOG)
|
34
29
|
|
35
30
|
# Checklist options
|
36
|
-
options=(GROUP_SIGS 'Signatures' ON CUSTOM_HEADERS 'Custom headers' ON
|
31
|
+
options=(GROUP_SIGS 'Signatures' ON CUSTOM_HEADERS 'Custom headers' ON XNAY_GROUPS 'X-No-Archive' ON VFY_URLS 'Correct URLs' ON DEBUG_LOG 'Log' ON)
|
37
32
|
|
38
33
|
# show dialog and store results
|
39
34
|
result=$(whiptail --title "$TITLE" --checklist "$CHECKTITLE" 13 55 5 "${options[@]}" 3>&1 1>&2 2>&3)
|
data/lib/yad_dlg
CHANGED
@@ -18,17 +18,16 @@ TITLE="Override post-processor configuration"
|
|
18
18
|
# unset.
|
19
19
|
GROUP_SIGS=1
|
20
20
|
CUSTOM_HEADERS=2
|
21
|
-
|
22
|
-
|
23
|
-
DEBUG_LOG=
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
--field="Log":CHK 'true')
|
21
|
+
XNAY_GROUPS=3
|
22
|
+
VFY_URLS=4
|
23
|
+
DEBUG_LOG=5
|
24
|
+
CONF=($(yad --item-separator=" " --title "$TITLE" --image="" --window-icon="" --form \
|
25
|
+
--field="Uncheck to disable options\n<b>Esc and Cancel</b> terminate the post-processor.":LBL ""\
|
26
|
+
--field="Signature":CHK 'true' \
|
27
|
+
--field="Custom-headers":CHK 'true' \
|
28
|
+
--field="XNAY":CHK 'true' \
|
29
|
+
--field="URL Correction":CHK 'true' \
|
30
|
+
--field="Log":CHK 'true'))
|
32
31
|
|
33
32
|
if [ $? == 0 ]
|
34
33
|
then
|
@@ -39,7 +38,7 @@ then
|
|
39
38
|
# echo ${C_ARR[@]}
|
40
39
|
# <-------------
|
41
40
|
|
42
|
-
for i in GROUP_SIGS CUSTOM_HEADERS
|
41
|
+
for i in GROUP_SIGS CUSTOM_HEADERS XNAY_GROUPS VFY_URLS DEBUG_LOG
|
43
42
|
do
|
44
43
|
if [ 'FALSE' == "${C_ARR[$i]}" ]
|
45
44
|
then
|
data/lib/zenity_dlg
CHANGED
@@ -17,12 +17,12 @@ TITLE="Override post-processor configuration"
|
|
17
17
|
# The options are the configuration variables which can be unset.
|
18
18
|
|
19
19
|
CONF=$(zenity --title "$TITLE" --text "Deselect options to disable.\n<b>Esc and Cancel</b> terminate the post-processor."\
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
20
|
+
--height 450 --list --checklist --column 'set' --column 'Option' --column '' \
|
21
|
+
TRUE GROUP_SIGS Signature\
|
22
|
+
TRUE CUSTOM_HEADERS "Custom Headers"\
|
23
|
+
TRUE XNAY_GROUPS "X-No-Archive"\
|
24
|
+
TRUE VFY_URLS "Correct URLs"\
|
25
|
+
TRUE DEBUG_LOG Log)
|
26
26
|
|
27
27
|
if [ $? == 0 ]
|
28
28
|
then
|
@@ -33,8 +33,7 @@ then
|
|
33
33
|
# echo ${C_ARR[@]}
|
34
34
|
# <-------------
|
35
35
|
|
36
|
-
|
37
|
-
for c in GROUP_SIGS CUSTOM_HEADERS NO_ARCHIVE_GROUPS DEBUG_LOG
|
36
|
+
for c in GROUP_SIGS CUSTOM_HEADERS XNAY_GROUPS VFY_URLS DEBUG_LOG
|
38
37
|
do
|
39
38
|
# disable only the options which are missing in
|
40
39
|
# the Zenity return value
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flnews_post_proc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '1.
|
4
|
+
version: '1.40'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Uplawski
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-04-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: diffy
|
@@ -30,27 +30,7 @@ dependencies:
|
|
30
30
|
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: 3.4.2
|
33
|
-
-
|
34
|
-
name: ruby-filemagic
|
35
|
-
requirement: !ruby/object:Gem::Requirement
|
36
|
-
requirements:
|
37
|
-
- - "~>"
|
38
|
-
- !ruby/object:Gem::Version
|
39
|
-
version: '0.7'
|
40
|
-
- - ">="
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
version: 0.7.3
|
43
|
-
type: :runtime
|
44
|
-
prerelease: false
|
45
|
-
version_requirements: !ruby/object:Gem::Requirement
|
46
|
-
requirements:
|
47
|
-
- - "~>"
|
48
|
-
- !ruby/object:Gem::Version
|
49
|
-
version: '0.7'
|
50
|
-
- - ">="
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
version: 0.7.3
|
53
|
-
description: Post-processor for Usenet-articles created in flnews
|
33
|
+
description: Post-processor for Usenet-articles created in FLNews
|
54
34
|
email: michael.uplawski@uplawski.eu
|
55
35
|
executables:
|
56
36
|
- flnews_post_proc
|
@@ -59,16 +39,15 @@ extra_rdoc_files: []
|
|
59
39
|
files:
|
60
40
|
- README.md
|
61
41
|
- bin/flnews_post_proc
|
62
|
-
- doc/fr/html/flnews_post_proc.html
|
63
|
-
- doc/fr/man/flnews_post_proc.1.gz
|
64
|
-
- doc/fr/pdf/flnews_post_proc.pdf
|
65
|
-
- doc/fr/rst/flnews_post_proc.rst
|
66
42
|
- doc/html/flnews_post_proc.html
|
43
|
+
- doc/html/flnews_post_proc_fr.html
|
67
44
|
- doc/license.txt
|
68
45
|
- doc/man/flnews_post_proc.1.gz
|
46
|
+
- doc/man/flnews_post_proc_fr.1.gz
|
69
47
|
- doc/pdf/flnews_post_proc.pdf
|
48
|
+
- doc/pdf/flnews_post_proc_fr.pdf
|
70
49
|
- doc/rst/flnews_post_proc.rst
|
71
|
-
-
|
50
|
+
- doc/rst/flnews_post_proc_fr.rst
|
72
51
|
- lib/basic_logging.rb
|
73
52
|
- lib/body.rb
|
74
53
|
- lib/color_output.rb
|
@@ -102,8 +81,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
102
81
|
- !ruby/object:Gem::Version
|
103
82
|
version: '0'
|
104
83
|
requirements: []
|
105
|
-
rubygems_version: 3.
|
84
|
+
rubygems_version: 3.4.20
|
106
85
|
signing_key:
|
107
86
|
specification_version: 4
|
108
|
-
summary:
|
87
|
+
summary: Moved the override-dialog scripts from the executables directory to lib
|
109
88
|
test_files: []
|
Binary file
|